aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/radeon/evergreen.c57
-rw-r--r--drivers/gpu/drm/radeon/radeon_asic.h8
-rw-r--r--drivers/gpu/drm/radeon/rv515.c13
3 files changed, 2 insertions, 76 deletions
diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c
index 8846bad45e6..314e2172a88 100644
--- a/drivers/gpu/drm/radeon/evergreen.c
+++ b/drivers/gpu/drm/radeon/evergreen.c
@@ -1019,24 +1019,8 @@ void evergreen_agp_enable(struct radeon_device *rdev)
1019 1019
1020void evergreen_mc_stop(struct radeon_device *rdev, struct evergreen_mc_save *save) 1020void evergreen_mc_stop(struct radeon_device *rdev, struct evergreen_mc_save *save)
1021{ 1021{
1022 save->vga_control[0] = RREG32(D1VGA_CONTROL);
1023 save->vga_control[1] = RREG32(D2VGA_CONTROL);
1024 save->vga_render_control = RREG32(VGA_RENDER_CONTROL); 1022 save->vga_render_control = RREG32(VGA_RENDER_CONTROL);
1025 save->vga_hdp_control = RREG32(VGA_HDP_CONTROL); 1023 save->vga_hdp_control = RREG32(VGA_HDP_CONTROL);
1026 save->crtc_control[0] = RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC0_REGISTER_OFFSET);
1027 save->crtc_control[1] = RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC1_REGISTER_OFFSET);
1028 if (rdev->num_crtc >= 4) {
1029 save->vga_control[2] = RREG32(EVERGREEN_D3VGA_CONTROL);
1030 save->vga_control[3] = RREG32(EVERGREEN_D4VGA_CONTROL);
1031 save->crtc_control[2] = RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC2_REGISTER_OFFSET);
1032 save->crtc_control[3] = RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC3_REGISTER_OFFSET);
1033 }
1034 if (rdev->num_crtc >= 6) {
1035 save->vga_control[4] = RREG32(EVERGREEN_D5VGA_CONTROL);
1036 save->vga_control[5] = RREG32(EVERGREEN_D6VGA_CONTROL);
1037 save->crtc_control[4] = RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC4_REGISTER_OFFSET);
1038 save->crtc_control[5] = RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC5_REGISTER_OFFSET);
1039 }
1040 1024
1041 /* Stop all video */ 1025 /* Stop all video */
1042 WREG32(VGA_RENDER_CONTROL, 0); 1026 WREG32(VGA_RENDER_CONTROL, 0);
@@ -1147,47 +1131,6 @@ void evergreen_mc_resume(struct radeon_device *rdev, struct evergreen_mc_save *s
1147 /* Unlock host access */ 1131 /* Unlock host access */
1148 WREG32(VGA_HDP_CONTROL, save->vga_hdp_control); 1132 WREG32(VGA_HDP_CONTROL, save->vga_hdp_control);
1149 mdelay(1); 1133 mdelay(1);
1150 /* Restore video state */
1151 WREG32(D1VGA_CONTROL, save->vga_control[0]);
1152 WREG32(D2VGA_CONTROL, save->vga_control[1]);
1153 if (rdev->num_crtc >= 4) {
1154 WREG32(EVERGREEN_D3VGA_CONTROL, save->vga_control[2]);
1155 WREG32(EVERGREEN_D4VGA_CONTROL, save->vga_control[3]);
1156 }
1157 if (rdev->num_crtc >= 6) {
1158 WREG32(EVERGREEN_D5VGA_CONTROL, save->vga_control[4]);
1159 WREG32(EVERGREEN_D6VGA_CONTROL, save->vga_control[5]);
1160 }
1161 WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC0_REGISTER_OFFSET, 1);
1162 WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC1_REGISTER_OFFSET, 1);
1163 if (rdev->num_crtc >= 4) {
1164 WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC2_REGISTER_OFFSET, 1);
1165 WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC3_REGISTER_OFFSET, 1);
1166 }
1167 if (rdev->num_crtc >= 6) {
1168 WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC4_REGISTER_OFFSET, 1);
1169 WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC5_REGISTER_OFFSET, 1);
1170 }
1171 WREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC0_REGISTER_OFFSET, save->crtc_control[0]);
1172 WREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC1_REGISTER_OFFSET, save->crtc_control[1]);
1173 if (rdev->num_crtc >= 4) {
1174 WREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC2_REGISTER_OFFSET, save->crtc_control[2]);
1175 WREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC3_REGISTER_OFFSET, save->crtc_control[3]);
1176 }
1177 if (rdev->num_crtc >= 6) {
1178 WREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC4_REGISTER_OFFSET, save->crtc_control[4]);
1179 WREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC5_REGISTER_OFFSET, save->crtc_control[5]);
1180 }
1181 WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC0_REGISTER_OFFSET, 0);
1182 WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC1_REGISTER_OFFSET, 0);
1183 if (rdev->num_crtc >= 4) {
1184 WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC2_REGISTER_OFFSET, 0);
1185 WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC3_REGISTER_OFFSET, 0);
1186 }
1187 if (rdev->num_crtc >= 6) {
1188 WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC4_REGISTER_OFFSET, 0);
1189 WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC5_REGISTER_OFFSET, 0);
1190 }
1191 WREG32(VGA_RENDER_CONTROL, save->vga_render_control); 1134 WREG32(VGA_RENDER_CONTROL, save->vga_render_control);
1192} 1135}
1193 1136
diff --git a/drivers/gpu/drm/radeon/radeon_asic.h b/drivers/gpu/drm/radeon/radeon_asic.h
index 3dedaa07aac..4d81e961239 100644
--- a/drivers/gpu/drm/radeon/radeon_asic.h
+++ b/drivers/gpu/drm/radeon/radeon_asic.h
@@ -253,13 +253,10 @@ void rs690_line_buffer_adjust(struct radeon_device *rdev,
253 * rv515 253 * rv515
254 */ 254 */
255struct rv515_mc_save { 255struct rv515_mc_save {
256 u32 d1vga_control;
257 u32 d2vga_control;
258 u32 vga_render_control; 256 u32 vga_render_control;
259 u32 vga_hdp_control; 257 u32 vga_hdp_control;
260 u32 d1crtc_control;
261 u32 d2crtc_control;
262}; 258};
259
263int rv515_init(struct radeon_device *rdev); 260int rv515_init(struct radeon_device *rdev);
264void rv515_fini(struct radeon_device *rdev); 261void rv515_fini(struct radeon_device *rdev);
265uint32_t rv515_mc_rreg(struct radeon_device *rdev, uint32_t reg); 262uint32_t rv515_mc_rreg(struct radeon_device *rdev, uint32_t reg);
@@ -387,11 +384,10 @@ void r700_cp_fini(struct radeon_device *rdev);
387 * evergreen 384 * evergreen
388 */ 385 */
389struct evergreen_mc_save { 386struct evergreen_mc_save {
390 u32 vga_control[6];
391 u32 vga_render_control; 387 u32 vga_render_control;
392 u32 vga_hdp_control; 388 u32 vga_hdp_control;
393 u32 crtc_control[6];
394}; 389};
390
395void evergreen_pcie_gart_tlb_flush(struct radeon_device *rdev); 391void evergreen_pcie_gart_tlb_flush(struct radeon_device *rdev);
396int evergreen_init(struct radeon_device *rdev); 392int evergreen_init(struct radeon_device *rdev);
397void evergreen_fini(struct radeon_device *rdev); 393void evergreen_fini(struct radeon_device *rdev);
diff --git a/drivers/gpu/drm/radeon/rv515.c b/drivers/gpu/drm/radeon/rv515.c
index 6613ee9ecca..d5f45b4c1be 100644
--- a/drivers/gpu/drm/radeon/rv515.c
+++ b/drivers/gpu/drm/radeon/rv515.c
@@ -281,12 +281,8 @@ int rv515_debugfs_ga_info_init(struct radeon_device *rdev)
281 281
282void rv515_mc_stop(struct radeon_device *rdev, struct rv515_mc_save *save) 282void rv515_mc_stop(struct radeon_device *rdev, struct rv515_mc_save *save)
283{ 283{
284 save->d1vga_control = RREG32(R_000330_D1VGA_CONTROL);
285 save->d2vga_control = RREG32(R_000338_D2VGA_CONTROL);
286 save->vga_render_control = RREG32(R_000300_VGA_RENDER_CONTROL); 284 save->vga_render_control = RREG32(R_000300_VGA_RENDER_CONTROL);
287 save->vga_hdp_control = RREG32(R_000328_VGA_HDP_CONTROL); 285 save->vga_hdp_control = RREG32(R_000328_VGA_HDP_CONTROL);
288 save->d1crtc_control = RREG32(R_006080_D1CRTC_CONTROL);
289 save->d2crtc_control = RREG32(R_006880_D2CRTC_CONTROL);
290 286
291 /* Stop all video */ 287 /* Stop all video */
292 WREG32(R_0068E8_D2CRTC_UPDATE_LOCK, 0); 288 WREG32(R_0068E8_D2CRTC_UPDATE_LOCK, 0);
@@ -311,15 +307,6 @@ void rv515_mc_resume(struct radeon_device *rdev, struct rv515_mc_save *save)
311 /* Unlock host access */ 307 /* Unlock host access */
312 WREG32(R_000328_VGA_HDP_CONTROL, save->vga_hdp_control); 308 WREG32(R_000328_VGA_HDP_CONTROL, save->vga_hdp_control);
313 mdelay(1); 309 mdelay(1);
314 /* Restore video state */
315 WREG32(R_000330_D1VGA_CONTROL, save->d1vga_control);
316 WREG32(R_000338_D2VGA_CONTROL, save->d2vga_control);
317 WREG32(R_0060E8_D1CRTC_UPDATE_LOCK, 1);
318 WREG32(R_0068E8_D2CRTC_UPDATE_LOCK, 1);
319 WREG32(R_006080_D1CRTC_CONTROL, save->d1crtc_control);
320 WREG32(R_006880_D2CRTC_CONTROL, save->d2crtc_control);
321 WREG32(R_0060E8_D1CRTC_UPDATE_LOCK, 0);
322 WREG32(R_0068E8_D2CRTC_UPDATE_LOCK, 0);
323 WREG32(R_000300_VGA_RENDER_CONTROL, save->vga_render_control); 310 WREG32(R_000300_VGA_RENDER_CONTROL, save->vga_render_control);
324} 311}
325 312