aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/radeon_kms.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_kms.c')
-rw-r--r--drivers/gpu/drm/radeon/radeon_kms.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_kms.c b/drivers/gpu/drm/radeon/radeon_kms.c
index 8a7f87f17c13..83b8d8aa71c0 100644
--- a/drivers/gpu/drm/radeon/radeon_kms.c
+++ b/drivers/gpu/drm/radeon/radeon_kms.c
@@ -50,6 +50,7 @@ int radeon_driver_unload_kms(struct drm_device *dev)
50 50
51 if (rdev == NULL) 51 if (rdev == NULL)
52 return 0; 52 return 0;
53 radeon_acpi_fini(rdev);
53 radeon_modeset_fini(rdev); 54 radeon_modeset_fini(rdev);
54 radeon_device_fini(rdev); 55 radeon_device_fini(rdev);
55 kfree(rdev); 56 kfree(rdev);
@@ -102,11 +103,6 @@ int radeon_driver_load_kms(struct drm_device *dev, unsigned long flags)
102 goto out; 103 goto out;
103 } 104 }
104 105
105 /* Call ACPI methods */
106 acpi_status = radeon_acpi_init(rdev);
107 if (acpi_status)
108 dev_dbg(&dev->pdev->dev, "Error during ACPI methods call\n");
109
110 /* Again modeset_init should fail only on fatal error 106 /* Again modeset_init should fail only on fatal error
111 * otherwise it should provide enough functionalities 107 * otherwise it should provide enough functionalities
112 * for shadowfb to run 108 * for shadowfb to run
@@ -114,6 +110,17 @@ int radeon_driver_load_kms(struct drm_device *dev, unsigned long flags)
114 r = radeon_modeset_init(rdev); 110 r = radeon_modeset_init(rdev);
115 if (r) 111 if (r)
116 dev_err(&dev->pdev->dev, "Fatal error during modeset init\n"); 112 dev_err(&dev->pdev->dev, "Fatal error during modeset init\n");
113
114 /* Call ACPI methods: require modeset init
115 * but failure is not fatal
116 */
117 if (!r) {
118 acpi_status = radeon_acpi_init(rdev);
119 if (acpi_status)
120 dev_dbg(&dev->pdev->dev,
121 "Error during ACPI methods call\n");
122 }
123
117out: 124out:
118 if (r) 125 if (r)
119 radeon_driver_unload_kms(dev); 126 radeon_driver_unload_kms(dev);