aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/radeon_device.c
diff options
context:
space:
mode:
authorJerome Glisse <jglisse@redhat.com>2009-09-10 15:46:48 -0400
committerDave Airlie <airlied@redhat.com>2009-09-11 01:53:59 -0400
commit6cf8a3f58806f12b975a89cfd7edf01566ff80a0 (patch)
tree5c940fa2e6651b7157744758cf008fb2d578db83 /drivers/gpu/drm/radeon/radeon_device.c
parent923f6848e1686059ef8d272d1fca4d3577911a41 (diff)
drm/radeon/kms: move modeset init outside of GPU init
We are splitting GPU & modeset init so that it's easier to abord only remaining GPU init when somethings fails. We want to always provide enough funcionalities to get fbcon and a shadowfb X working. Only acceptable error during initialization are memory allocation failure or io mapping failure. Signed-off-by: Jerome Glisse <jglisse@redhat.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_device.c')
-rw-r--r--drivers/gpu/drm/radeon/radeon_device.c20
1 files changed, 3 insertions, 17 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c
index bf6939497e15..72f6262ea73b 100644
--- a/drivers/gpu/drm/radeon/radeon_device.c
+++ b/drivers/gpu/drm/radeon/radeon_device.c
@@ -469,9 +469,6 @@ void radeon_combios_fini(struct radeon_device *rdev)
469{ 469{
470} 470}
471 471
472int radeon_modeset_init(struct radeon_device *rdev);
473void radeon_modeset_fini(struct radeon_device *rdev);
474
475 472
476/* 473/*
477 * Radeon device. 474 * Radeon device.
@@ -481,7 +478,7 @@ int radeon_device_init(struct radeon_device *rdev,
481 struct pci_dev *pdev, 478 struct pci_dev *pdev,
482 uint32_t flags) 479 uint32_t flags)
483{ 480{
484 int r, ret = 0; 481 int r;
485 int dma_bits; 482 int dma_bits;
486 483
487 DRM_INFO("radeon: Initializing kernel modesetting.\n"); 484 DRM_INFO("radeon: Initializing kernel modesetting.\n");
@@ -660,33 +657,22 @@ int radeon_device_init(struct radeon_device *rdev,
660 return r; 657 return r;
661 } 658 }
662 } 659 }
663 ret = r;
664 }
665 r = radeon_modeset_init(rdev);
666 if (r) {
667 return r;
668 }
669 if (!ret) {
670 DRM_INFO("radeon: kernel modesetting successfully initialized.\n");
671 } 660 }
661 DRM_INFO("radeon: kernel modesetting successfully initialized.\n");
672 if (radeon_testing) { 662 if (radeon_testing) {
673 radeon_test_moves(rdev); 663 radeon_test_moves(rdev);
674 } 664 }
675 if (radeon_benchmarking) { 665 if (radeon_benchmarking) {
676 radeon_benchmark(rdev); 666 radeon_benchmark(rdev);
677 } 667 }
678 return ret; 668 return 0;
679} 669}
680 670
681void radeon_device_fini(struct radeon_device *rdev) 671void radeon_device_fini(struct radeon_device *rdev)
682{ 672{
683 if (rdev == NULL || rdev->rmmio == NULL) {
684 return;
685 }
686 DRM_INFO("radeon: finishing device.\n"); 673 DRM_INFO("radeon: finishing device.\n");
687 rdev->shutdown = true; 674 rdev->shutdown = true;
688 /* Order matter so becarefull if you rearrange anythings */ 675 /* Order matter so becarefull if you rearrange anythings */
689 radeon_modeset_fini(rdev);
690 if (!rdev->new_init_path) { 676 if (!rdev->new_init_path) {
691 radeon_ib_pool_fini(rdev); 677 radeon_ib_pool_fini(rdev);
692 radeon_cp_fini(rdev); 678 radeon_cp_fini(rdev);