diff options
-rw-r--r-- | drivers/gpu/drm/radeon/r600.c | 99 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/rv770.c | 72 |
2 files changed, 39 insertions, 132 deletions
diff --git a/drivers/gpu/drm/radeon/r600.c b/drivers/gpu/drm/radeon/r600.c index 11fa801a2c52..cf4be70c5041 100644 --- a/drivers/gpu/drm/radeon/r600.c +++ b/drivers/gpu/drm/radeon/r600.c | |||
@@ -240,14 +240,9 @@ int r600_mc_wait_for_idle(struct radeon_device *rdev) | |||
240 | return -1; | 240 | return -1; |
241 | } | 241 | } |
242 | 242 | ||
243 | static void r600_mc_resume(struct radeon_device *rdev) | 243 | static void r600_mc_program(struct radeon_device *rdev) |
244 | { | 244 | { |
245 | u32 d1vga_control, d2vga_control; | 245 | struct rv515_mc_save save; |
246 | u32 vga_render_control, vga_hdp_control; | ||
247 | u32 d1crtc_control, d2crtc_control; | ||
248 | u32 new_d1grph_primary, new_d1grph_secondary; | ||
249 | u32 new_d2grph_primary, new_d2grph_secondary; | ||
250 | u64 old_vram_start; | ||
251 | u32 tmp; | 246 | u32 tmp; |
252 | int i, j; | 247 | int i, j; |
253 | 248 | ||
@@ -261,41 +256,12 @@ static void r600_mc_resume(struct radeon_device *rdev) | |||
261 | } | 256 | } |
262 | WREG32(HDP_REG_COHERENCY_FLUSH_CNTL, 0); | 257 | WREG32(HDP_REG_COHERENCY_FLUSH_CNTL, 0); |
263 | 258 | ||
264 | d1vga_control = RREG32(D1VGA_CONTROL); | 259 | rv515_mc_stop(rdev, &save); |
265 | d2vga_control = RREG32(D2VGA_CONTROL); | ||
266 | vga_render_control = RREG32(VGA_RENDER_CONTROL); | ||
267 | vga_hdp_control = RREG32(VGA_HDP_CONTROL); | ||
268 | d1crtc_control = RREG32(D1CRTC_CONTROL); | ||
269 | d2crtc_control = RREG32(D2CRTC_CONTROL); | ||
270 | old_vram_start = (u64)(RREG32(MC_VM_FB_LOCATION) & 0xFFFF) << 24; | ||
271 | new_d1grph_primary = RREG32(D1GRPH_PRIMARY_SURFACE_ADDRESS); | ||
272 | new_d1grph_secondary = RREG32(D1GRPH_SECONDARY_SURFACE_ADDRESS); | ||
273 | new_d1grph_primary += rdev->mc.vram_start - old_vram_start; | ||
274 | new_d1grph_secondary += rdev->mc.vram_start - old_vram_start; | ||
275 | new_d2grph_primary = RREG32(D2GRPH_PRIMARY_SURFACE_ADDRESS); | ||
276 | new_d2grph_secondary = RREG32(D2GRPH_SECONDARY_SURFACE_ADDRESS); | ||
277 | new_d2grph_primary += rdev->mc.vram_start - old_vram_start; | ||
278 | new_d2grph_secondary += rdev->mc.vram_start - old_vram_start; | ||
279 | |||
280 | /* Stop all video */ | ||
281 | WREG32(D1VGA_CONTROL, 0); | ||
282 | WREG32(D2VGA_CONTROL, 0); | ||
283 | WREG32(VGA_RENDER_CONTROL, 0); | ||
284 | WREG32(D1CRTC_UPDATE_LOCK, 1); | ||
285 | WREG32(D2CRTC_UPDATE_LOCK, 1); | ||
286 | WREG32(D1CRTC_CONTROL, 0); | ||
287 | WREG32(D2CRTC_CONTROL, 0); | ||
288 | WREG32(D1CRTC_UPDATE_LOCK, 0); | ||
289 | WREG32(D2CRTC_UPDATE_LOCK, 0); | ||
290 | |||
291 | mdelay(1); | ||
292 | if (r600_mc_wait_for_idle(rdev)) { | 260 | if (r600_mc_wait_for_idle(rdev)) { |
293 | printk(KERN_WARNING "[drm] MC not idle !\n"); | 261 | dev_warn(rdev->dev, "Wait for MC idle timedout !\n"); |
294 | } | 262 | } |
295 | 263 | /* Lockout access through VGA aperture (doesn't exist before R600) */ | |
296 | /* Lockout access through VGA aperture*/ | ||
297 | WREG32(VGA_HDP_CONTROL, VGA_MEMORY_DISABLE); | 264 | WREG32(VGA_HDP_CONTROL, VGA_MEMORY_DISABLE); |
298 | |||
299 | /* Update configuration */ | 265 | /* Update configuration */ |
300 | WREG32(MC_VM_SYSTEM_APERTURE_LOW_ADDR, rdev->mc.vram_start >> 12); | 266 | WREG32(MC_VM_SYSTEM_APERTURE_LOW_ADDR, rdev->mc.vram_start >> 12); |
301 | WREG32(MC_VM_SYSTEM_APERTURE_HIGH_ADDR, (rdev->mc.vram_end - 1) >> 12); | 267 | WREG32(MC_VM_SYSTEM_APERTURE_HIGH_ADDR, (rdev->mc.vram_end - 1) >> 12); |
@@ -315,31 +281,10 @@ static void r600_mc_resume(struct radeon_device *rdev) | |||
315 | WREG32(MC_VM_AGP_TOP, 0x0FFFFFFF); | 281 | WREG32(MC_VM_AGP_TOP, 0x0FFFFFFF); |
316 | WREG32(MC_VM_AGP_BOT, 0x0FFFFFFF); | 282 | WREG32(MC_VM_AGP_BOT, 0x0FFFFFFF); |
317 | } | 283 | } |
318 | WREG32(D1GRPH_PRIMARY_SURFACE_ADDRESS, new_d1grph_primary); | ||
319 | WREG32(D1GRPH_SECONDARY_SURFACE_ADDRESS, new_d1grph_secondary); | ||
320 | WREG32(D2GRPH_PRIMARY_SURFACE_ADDRESS, new_d2grph_primary); | ||
321 | WREG32(D2GRPH_SECONDARY_SURFACE_ADDRESS, new_d2grph_secondary); | ||
322 | WREG32(VGA_MEMORY_BASE_ADDRESS, rdev->mc.vram_start); | ||
323 | |||
324 | /* Unlock host access */ | ||
325 | WREG32(VGA_HDP_CONTROL, vga_hdp_control); | ||
326 | |||
327 | mdelay(1); | ||
328 | if (r600_mc_wait_for_idle(rdev)) { | 284 | if (r600_mc_wait_for_idle(rdev)) { |
329 | printk(KERN_WARNING "[drm] MC not idle !\n"); | 285 | dev_warn(rdev->dev, "Wait for MC idle timedout !\n"); |
330 | } | 286 | } |
331 | 287 | rv515_mc_resume(rdev, &save); | |
332 | /* Restore video state */ | ||
333 | WREG32(D1CRTC_UPDATE_LOCK, 1); | ||
334 | WREG32(D2CRTC_UPDATE_LOCK, 1); | ||
335 | WREG32(D1CRTC_CONTROL, d1crtc_control); | ||
336 | WREG32(D2CRTC_CONTROL, d2crtc_control); | ||
337 | WREG32(D1CRTC_UPDATE_LOCK, 0); | ||
338 | WREG32(D2CRTC_UPDATE_LOCK, 0); | ||
339 | WREG32(D1VGA_CONTROL, d1vga_control); | ||
340 | WREG32(D2VGA_CONTROL, d2vga_control); | ||
341 | WREG32(VGA_RENDER_CONTROL, vga_render_control); | ||
342 | |||
343 | /* we need to own VRAM, so turn off the VGA renderer here | 288 | /* we need to own VRAM, so turn off the VGA renderer here |
344 | * to stop it overwriting our objects */ | 289 | * to stop it overwriting our objects */ |
345 | rv515_vga_render_disable(rdev); | 290 | rv515_vga_render_disable(rdev); |
@@ -463,6 +408,7 @@ int r600_mc_init(struct radeon_device *rdev) | |||
463 | */ | 408 | */ |
464 | int r600_gpu_soft_reset(struct radeon_device *rdev) | 409 | int r600_gpu_soft_reset(struct radeon_device *rdev) |
465 | { | 410 | { |
411 | struct rv515_mc_save save; | ||
466 | u32 grbm_busy_mask = S_008010_VC_BUSY(1) | S_008010_VGT_BUSY_NO_DMA(1) | | 412 | u32 grbm_busy_mask = S_008010_VC_BUSY(1) | S_008010_VGT_BUSY_NO_DMA(1) | |
467 | S_008010_VGT_BUSY(1) | S_008010_TA03_BUSY(1) | | 413 | S_008010_VGT_BUSY(1) | S_008010_TA03_BUSY(1) | |
468 | S_008010_TC_BUSY(1) | S_008010_SX_BUSY(1) | | 414 | S_008010_TC_BUSY(1) | S_008010_SX_BUSY(1) | |
@@ -480,13 +426,21 @@ int r600_gpu_soft_reset(struct radeon_device *rdev) | |||
480 | S_008014_CB0_BUSY(1) | S_008014_CB1_BUSY(1) | | 426 | S_008014_CB0_BUSY(1) | S_008014_CB1_BUSY(1) | |
481 | S_008014_CB2_BUSY(1) | S_008014_CB3_BUSY(1); | 427 | S_008014_CB2_BUSY(1) | S_008014_CB3_BUSY(1); |
482 | u32 srbm_reset = 0; | 428 | u32 srbm_reset = 0; |
429 | u32 tmp; | ||
483 | 430 | ||
431 | dev_info(rdev->dev, "GPU softreset (R_008010_GRBM_STATUS=0x%08X " | ||
432 | "R_008014_GRBM_STATUS2=0x%08X)\n", RREG32(R_008010_GRBM_STATUS), | ||
433 | RREG32(R_008014_GRBM_STATUS2)); | ||
434 | rv515_mc_stop(rdev, &save); | ||
435 | if (r600_mc_wait_for_idle(rdev)) { | ||
436 | dev_warn(rdev->dev, "Wait for MC idle timedout !\n"); | ||
437 | } | ||
484 | /* Disable CP parsing/prefetching */ | 438 | /* Disable CP parsing/prefetching */ |
485 | WREG32(R_0086D8_CP_ME_CNTL, S_0086D8_CP_ME_HALT(0xff)); | 439 | WREG32(R_0086D8_CP_ME_CNTL, S_0086D8_CP_ME_HALT(0xff)); |
486 | /* Check if any of the rendering block is busy and reset it */ | 440 | /* Check if any of the rendering block is busy and reset it */ |
487 | if ((RREG32(R_008010_GRBM_STATUS) & grbm_busy_mask) || | 441 | if ((RREG32(R_008010_GRBM_STATUS) & grbm_busy_mask) || |
488 | (RREG32(R_008014_GRBM_STATUS2) & grbm2_busy_mask)) { | 442 | (RREG32(R_008014_GRBM_STATUS2) & grbm2_busy_mask)) { |
489 | WREG32(R_008020_GRBM_SOFT_RESET, S_008020_SOFT_RESET_CR(1) | | 443 | tmp = S_008020_SOFT_RESET_CR(1) | |
490 | S_008020_SOFT_RESET_DB(1) | | 444 | S_008020_SOFT_RESET_DB(1) | |
491 | S_008020_SOFT_RESET_CB(1) | | 445 | S_008020_SOFT_RESET_CB(1) | |
492 | S_008020_SOFT_RESET_PA(1) | | 446 | S_008020_SOFT_RESET_PA(1) | |
@@ -498,14 +452,18 @@ int r600_gpu_soft_reset(struct radeon_device *rdev) | |||
498 | S_008020_SOFT_RESET_TC(1) | | 452 | S_008020_SOFT_RESET_TC(1) | |
499 | S_008020_SOFT_RESET_TA(1) | | 453 | S_008020_SOFT_RESET_TA(1) | |
500 | S_008020_SOFT_RESET_VC(1) | | 454 | S_008020_SOFT_RESET_VC(1) | |
501 | S_008020_SOFT_RESET_VGT(1)); | 455 | S_008020_SOFT_RESET_VGT(1); |
456 | dev_info(rdev->dev, "R_008020_GRBM_SOFT_RESET=0x%08X\n", tmp); | ||
457 | WREG32(R_008020_GRBM_SOFT_RESET, tmp); | ||
502 | (void)RREG32(R_008020_GRBM_SOFT_RESET); | 458 | (void)RREG32(R_008020_GRBM_SOFT_RESET); |
503 | udelay(50); | 459 | udelay(50); |
504 | WREG32(R_008020_GRBM_SOFT_RESET, 0); | 460 | WREG32(R_008020_GRBM_SOFT_RESET, 0); |
505 | (void)RREG32(R_008020_GRBM_SOFT_RESET); | 461 | (void)RREG32(R_008020_GRBM_SOFT_RESET); |
506 | } | 462 | } |
507 | /* Reset CP (we always reset CP) */ | 463 | /* Reset CP (we always reset CP) */ |
508 | WREG32(R_008020_GRBM_SOFT_RESET, S_008020_SOFT_RESET_CP(1)); | 464 | tmp = S_008020_SOFT_RESET_CP(1); |
465 | dev_info(rdev->dev, "R_008020_GRBM_SOFT_RESET=0x%08X\n", tmp); | ||
466 | WREG32(R_008020_GRBM_SOFT_RESET, tmp); | ||
509 | (void)RREG32(R_008020_GRBM_SOFT_RESET); | 467 | (void)RREG32(R_008020_GRBM_SOFT_RESET); |
510 | udelay(50); | 468 | udelay(50); |
511 | WREG32(R_008020_GRBM_SOFT_RESET, 0); | 469 | WREG32(R_008020_GRBM_SOFT_RESET, 0); |
@@ -533,6 +491,7 @@ int r600_gpu_soft_reset(struct radeon_device *rdev) | |||
533 | srbm_reset |= S_000E60_SOFT_RESET_RLC(1); | 491 | srbm_reset |= S_000E60_SOFT_RESET_RLC(1); |
534 | if (G_000E50_SEM_BUSY(RREG32(R_000E50_SRBM_STATUS))) | 492 | if (G_000E50_SEM_BUSY(RREG32(R_000E50_SRBM_STATUS))) |
535 | srbm_reset |= S_000E60_SOFT_RESET_SEM(1); | 493 | srbm_reset |= S_000E60_SOFT_RESET_SEM(1); |
494 | dev_info(rdev->dev, "R_000E60_SRBM_SOFT_RESET=0x%08X\n", srbm_reset); | ||
536 | WREG32(R_000E60_SRBM_SOFT_RESET, srbm_reset); | 495 | WREG32(R_000E60_SRBM_SOFT_RESET, srbm_reset); |
537 | (void)RREG32(R_000E60_SRBM_SOFT_RESET); | 496 | (void)RREG32(R_000E60_SRBM_SOFT_RESET); |
538 | udelay(50); | 497 | udelay(50); |
@@ -540,6 +499,11 @@ int r600_gpu_soft_reset(struct radeon_device *rdev) | |||
540 | (void)RREG32(R_000E60_SRBM_SOFT_RESET); | 499 | (void)RREG32(R_000E60_SRBM_SOFT_RESET); |
541 | /* Wait a little for things to settle down */ | 500 | /* Wait a little for things to settle down */ |
542 | udelay(50); | 501 | udelay(50); |
502 | /* After reset we need to reinit the asic as GPU often endup in an | ||
503 | * incoherent state. | ||
504 | */ | ||
505 | atom_asic_init(rdev->mode_info.atom_context); | ||
506 | rv515_mc_resume(rdev, &save); | ||
543 | return 0; | 507 | return 0; |
544 | } | 508 | } |
545 | 509 | ||
@@ -1477,8 +1441,7 @@ int r600_startup(struct radeon_device *rdev) | |||
1477 | { | 1441 | { |
1478 | int r; | 1442 | int r; |
1479 | 1443 | ||
1480 | r600_gpu_reset(rdev); | 1444 | r600_mc_program(rdev); |
1481 | r600_mc_resume(rdev); | ||
1482 | r = r600_pcie_gart_enable(rdev); | 1445 | r = r600_pcie_gart_enable(rdev); |
1483 | if (r) | 1446 | if (r) |
1484 | return r; | 1447 | return r; |
@@ -1509,7 +1472,7 @@ int r600_resume(struct radeon_device *rdev) | |||
1509 | { | 1472 | { |
1510 | int r; | 1473 | int r; |
1511 | 1474 | ||
1512 | if (radeon_gpu_reset(rdev)) { | 1475 | if (r600_gpu_reset(rdev)) { |
1513 | /* FIXME: what do we want to do here ? */ | 1476 | /* FIXME: what do we want to do here ? */ |
1514 | } | 1477 | } |
1515 | /* post card */ | 1478 | /* post card */ |
diff --git a/drivers/gpu/drm/radeon/rv770.c b/drivers/gpu/drm/radeon/rv770.c index af20a8d48dca..a06e7497d49e 100644 --- a/drivers/gpu/drm/radeon/rv770.c +++ b/drivers/gpu/drm/radeon/rv770.c | |||
@@ -129,14 +129,9 @@ void rv770_pcie_gart_fini(struct radeon_device *rdev) | |||
129 | /* | 129 | /* |
130 | * MC | 130 | * MC |
131 | */ | 131 | */ |
132 | static void rv770_mc_resume(struct radeon_device *rdev) | 132 | static void rv770_mc_program(struct radeon_device *rdev) |
133 | { | 133 | { |
134 | u32 d1vga_control, d2vga_control; | 134 | struct rv515_mc_save save; |
135 | u32 vga_render_control, vga_hdp_control; | ||
136 | u32 d1crtc_control, d2crtc_control; | ||
137 | u32 new_d1grph_primary, new_d1grph_secondary; | ||
138 | u32 new_d2grph_primary, new_d2grph_secondary; | ||
139 | u64 old_vram_start; | ||
140 | u32 tmp; | 135 | u32 tmp; |
141 | int i, j; | 136 | int i, j; |
142 | 137 | ||
@@ -150,41 +145,12 @@ static void rv770_mc_resume(struct radeon_device *rdev) | |||
150 | } | 145 | } |
151 | WREG32(HDP_REG_COHERENCY_FLUSH_CNTL, 0); | 146 | WREG32(HDP_REG_COHERENCY_FLUSH_CNTL, 0); |
152 | 147 | ||
153 | d1vga_control = RREG32(D1VGA_CONTROL); | 148 | rv515_mc_stop(rdev, &save); |
154 | d2vga_control = RREG32(D2VGA_CONTROL); | ||
155 | vga_render_control = RREG32(VGA_RENDER_CONTROL); | ||
156 | vga_hdp_control = RREG32(VGA_HDP_CONTROL); | ||
157 | d1crtc_control = RREG32(D1CRTC_CONTROL); | ||
158 | d2crtc_control = RREG32(D2CRTC_CONTROL); | ||
159 | old_vram_start = (u64)(RREG32(MC_VM_FB_LOCATION) & 0xFFFF) << 24; | ||
160 | new_d1grph_primary = RREG32(D1GRPH_PRIMARY_SURFACE_ADDRESS); | ||
161 | new_d1grph_secondary = RREG32(D1GRPH_SECONDARY_SURFACE_ADDRESS); | ||
162 | new_d1grph_primary += rdev->mc.vram_start - old_vram_start; | ||
163 | new_d1grph_secondary += rdev->mc.vram_start - old_vram_start; | ||
164 | new_d2grph_primary = RREG32(D2GRPH_PRIMARY_SURFACE_ADDRESS); | ||
165 | new_d2grph_secondary = RREG32(D2GRPH_SECONDARY_SURFACE_ADDRESS); | ||
166 | new_d2grph_primary += rdev->mc.vram_start - old_vram_start; | ||
167 | new_d2grph_secondary += rdev->mc.vram_start - old_vram_start; | ||
168 | |||
169 | /* Stop all video */ | ||
170 | WREG32(D1VGA_CONTROL, 0); | ||
171 | WREG32(D2VGA_CONTROL, 0); | ||
172 | WREG32(VGA_RENDER_CONTROL, 0); | ||
173 | WREG32(D1CRTC_UPDATE_LOCK, 1); | ||
174 | WREG32(D2CRTC_UPDATE_LOCK, 1); | ||
175 | WREG32(D1CRTC_CONTROL, 0); | ||
176 | WREG32(D2CRTC_CONTROL, 0); | ||
177 | WREG32(D1CRTC_UPDATE_LOCK, 0); | ||
178 | WREG32(D2CRTC_UPDATE_LOCK, 0); | ||
179 | |||
180 | mdelay(1); | ||
181 | if (r600_mc_wait_for_idle(rdev)) { | 149 | if (r600_mc_wait_for_idle(rdev)) { |
182 | printk(KERN_WARNING "[drm] MC not idle !\n"); | 150 | dev_warn(rdev->dev, "Wait for MC idle timedout !\n"); |
183 | } | 151 | } |
184 | |||
185 | /* Lockout access through VGA aperture*/ | 152 | /* Lockout access through VGA aperture*/ |
186 | WREG32(VGA_HDP_CONTROL, VGA_MEMORY_DISABLE); | 153 | WREG32(VGA_HDP_CONTROL, VGA_MEMORY_DISABLE); |
187 | |||
188 | /* Update configuration */ | 154 | /* Update configuration */ |
189 | WREG32(MC_VM_SYSTEM_APERTURE_LOW_ADDR, rdev->mc.vram_start >> 12); | 155 | WREG32(MC_VM_SYSTEM_APERTURE_LOW_ADDR, rdev->mc.vram_start >> 12); |
190 | WREG32(MC_VM_SYSTEM_APERTURE_HIGH_ADDR, (rdev->mc.vram_end - 1) >> 12); | 156 | WREG32(MC_VM_SYSTEM_APERTURE_HIGH_ADDR, (rdev->mc.vram_end - 1) >> 12); |
@@ -204,31 +170,10 @@ static void rv770_mc_resume(struct radeon_device *rdev) | |||
204 | WREG32(MC_VM_AGP_TOP, 0x0FFFFFFF); | 170 | WREG32(MC_VM_AGP_TOP, 0x0FFFFFFF); |
205 | WREG32(MC_VM_AGP_BOT, 0x0FFFFFFF); | 171 | WREG32(MC_VM_AGP_BOT, 0x0FFFFFFF); |
206 | } | 172 | } |
207 | WREG32(D1GRPH_PRIMARY_SURFACE_ADDRESS, new_d1grph_primary); | ||
208 | WREG32(D1GRPH_SECONDARY_SURFACE_ADDRESS, new_d1grph_secondary); | ||
209 | WREG32(D2GRPH_PRIMARY_SURFACE_ADDRESS, new_d2grph_primary); | ||
210 | WREG32(D2GRPH_SECONDARY_SURFACE_ADDRESS, new_d2grph_secondary); | ||
211 | WREG32(VGA_MEMORY_BASE_ADDRESS, rdev->mc.vram_start); | ||
212 | |||
213 | /* Unlock host access */ | ||
214 | WREG32(VGA_HDP_CONTROL, vga_hdp_control); | ||
215 | |||
216 | mdelay(1); | ||
217 | if (r600_mc_wait_for_idle(rdev)) { | 173 | if (r600_mc_wait_for_idle(rdev)) { |
218 | printk(KERN_WARNING "[drm] MC not idle !\n"); | 174 | dev_warn(rdev->dev, "Wait for MC idle timedout !\n"); |
219 | } | 175 | } |
220 | 176 | rv515_mc_resume(rdev, &save); | |
221 | /* Restore video state */ | ||
222 | WREG32(D1CRTC_UPDATE_LOCK, 1); | ||
223 | WREG32(D2CRTC_UPDATE_LOCK, 1); | ||
224 | WREG32(D1CRTC_CONTROL, d1crtc_control); | ||
225 | WREG32(D2CRTC_CONTROL, d2crtc_control); | ||
226 | WREG32(D1CRTC_UPDATE_LOCK, 0); | ||
227 | WREG32(D2CRTC_UPDATE_LOCK, 0); | ||
228 | WREG32(D1VGA_CONTROL, d1vga_control); | ||
229 | WREG32(D2VGA_CONTROL, d2vga_control); | ||
230 | WREG32(VGA_RENDER_CONTROL, vga_render_control); | ||
231 | |||
232 | /* we need to own VRAM, so turn off the VGA renderer here | 177 | /* we need to own VRAM, so turn off the VGA renderer here |
233 | * to stop it overwriting our objects */ | 178 | * to stop it overwriting our objects */ |
234 | rv515_vga_render_disable(rdev); | 179 | rv515_vga_render_disable(rdev); |
@@ -861,8 +806,7 @@ static int rv770_startup(struct radeon_device *rdev) | |||
861 | { | 806 | { |
862 | int r; | 807 | int r; |
863 | 808 | ||
864 | radeon_gpu_reset(rdev); | 809 | rv770_mc_program(rdev); |
865 | rv770_mc_resume(rdev); | ||
866 | r = rv770_pcie_gart_enable(rdev); | 810 | r = rv770_pcie_gart_enable(rdev); |
867 | if (r) | 811 | if (r) |
868 | return r; | 812 | return r; |
@@ -893,7 +837,7 @@ int rv770_resume(struct radeon_device *rdev) | |||
893 | { | 837 | { |
894 | int r; | 838 | int r; |
895 | 839 | ||
896 | if (radeon_gpu_reset(rdev)) { | 840 | if (rv770_gpu_reset(rdev)) { |
897 | /* FIXME: what do we want to do here ? */ | 841 | /* FIXME: what do we want to do here ? */ |
898 | } | 842 | } |
899 | /* post card */ | 843 | /* post card */ |