aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/rs400.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/radeon/rs400.c')
-rw-r--r--drivers/gpu/drm/radeon/rs400.c27
1 files changed, 25 insertions, 2 deletions
diff --git a/drivers/gpu/drm/radeon/rs400.c b/drivers/gpu/drm/radeon/rs400.c
index 06b90c87f8f..b0ce84a20a6 100644
--- a/drivers/gpu/drm/radeon/rs400.c
+++ b/drivers/gpu/drm/radeon/rs400.c
@@ -410,6 +410,12 @@ static int rs400_startup(struct radeon_device *rdev)
410 if (r) 410 if (r)
411 return r; 411 return r;
412 412
413 r = radeon_fence_driver_start_ring(rdev, RADEON_RING_TYPE_GFX_INDEX);
414 if (r) {
415 dev_err(rdev->dev, "failed initializing CP fences (%d).\n", r);
416 return r;
417 }
418
413 /* Enable IRQ */ 419 /* Enable IRQ */
414 r100_irq_set(rdev); 420 r100_irq_set(rdev);
415 rdev->config.r300.hdp_cntl = RREG32(RADEON_HOST_PATH_CNTL); 421 rdev->config.r300.hdp_cntl = RREG32(RADEON_HOST_PATH_CNTL);
@@ -419,11 +425,18 @@ static int rs400_startup(struct radeon_device *rdev)
419 dev_err(rdev->dev, "failed initializing CP (%d).\n", r); 425 dev_err(rdev->dev, "failed initializing CP (%d).\n", r);
420 return r; 426 return r;
421 } 427 }
422 r = r100_ib_init(rdev); 428
429 r = radeon_ib_pool_start(rdev);
430 if (r)
431 return r;
432
433 r = r100_ib_test(rdev);
423 if (r) { 434 if (r) {
424 dev_err(rdev->dev, "failed initializing IB (%d).\n", r); 435 dev_err(rdev->dev, "failed testing IB (%d).\n", r);
436 rdev->accel_working = false;
425 return r; 437 return r;
426 } 438 }
439
427 return 0; 440 return 0;
428} 441}
429 442
@@ -447,11 +460,14 @@ int rs400_resume(struct radeon_device *rdev)
447 r300_clock_startup(rdev); 460 r300_clock_startup(rdev);
448 /* Initialize surface registers */ 461 /* Initialize surface registers */
449 radeon_surface_init(rdev); 462 radeon_surface_init(rdev);
463
464 rdev->accel_working = true;
450 return rs400_startup(rdev); 465 return rs400_startup(rdev);
451} 466}
452 467
453int rs400_suspend(struct radeon_device *rdev) 468int rs400_suspend(struct radeon_device *rdev)
454{ 469{
470 radeon_ib_pool_suspend(rdev);
455 r100_cp_disable(rdev); 471 r100_cp_disable(rdev);
456 radeon_wb_disable(rdev); 472 radeon_wb_disable(rdev);
457 r100_irq_disable(rdev); 473 r100_irq_disable(rdev);
@@ -530,7 +546,14 @@ int rs400_init(struct radeon_device *rdev)
530 if (r) 546 if (r)
531 return r; 547 return r;
532 r300_set_reg_safe(rdev); 548 r300_set_reg_safe(rdev);
549
550 r = radeon_ib_pool_init(rdev);
533 rdev->accel_working = true; 551 rdev->accel_working = true;
552 if (r) {
553 dev_err(rdev->dev, "IB initialization failed (%d).\n", r);
554 rdev->accel_working = false;
555 }
556
534 r = rs400_startup(rdev); 557 r = rs400_startup(rdev);
535 if (r) { 558 if (r) {
536 /* Somethings want wront with the accel init stop accel */ 559 /* Somethings want wront with the accel init stop accel */