summaryrefslogtreecommitdiff
path: root/linux-core/drm_pm.c
diff options
context:
space:
mode:
Diffstat (limited to 'linux-core/drm_pm.c')
-rw-r--r--linux-core/drm_pm.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/linux-core/drm_pm.c b/linux-core/drm_pm.c
index 1a402196..f0dc4db6 100644
--- a/linux-core/drm_pm.c
+++ b/linux-core/drm_pm.c
@@ -67,6 +67,7 @@ static int shutdown(struct sys_device *sysdev)
return 0;
}
+static int sysdev_loaded = 0;
static struct sysdev_class drm_sysdev_class = {
set_kset_name("drm"),
.resume = drm_resume,
@@ -120,12 +121,17 @@ void drm_pm_takedown(drm_device_t *dev)
int drm_pm_init(void)
{
+ int rc;
DRM_DEBUG("\n");
- return sysdev_class_register(&drm_sysdev_class);
+
+ if (!(rc = sysdev_class_register(&drm_sysdev_class)))
+ sysdev_loaded = 1;
+ return rc;
}
void __exit drm_pm_exit(void)
{
DRM_DEBUG("\n");
- sysdev_class_unregister(&drm_sysdev_class);
+ if (sysdev_loaded)
+ sysdev_class_unregister(&drm_sysdev_class);
}