drm_head_t primary; /**< primary screen head */
struct sys_device sysdev; /**< Power Management device structure */
- int sysdev_registered; /**< Whether the device has been registered */
} drm_device_t;
static __inline__ int drm_core_check_feature(struct drm_device *dev,
{
int rc;
+ if (atomic_read(&sysdev_loaded) == -1)
+ return 0;
+
DRM_DEBUG("\n");
dev->sysdev.id = dev->primary.minor;
#else
rc = sysdev_register(&dev->sysdev);
#endif
- if (!rc)
- dev->sysdev_registered = 1;
return rc;
}
*/
void drm_pm_takedown(drm_device_t *dev)
{
+ if (atomic_read(&sysdev_loaded) == -1)
+ return;
+
DRM_DEBUG("\n");
- if(dev->sysdev_registered) {
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,4)
- sys_device_unregister(&dev->sysdev);
+ sys_device_unregister(&dev->sysdev);
#else
- sysdev_unregister(&dev->sysdev);
+ sysdev_unregister(&dev->sysdev);
#endif
- }
}
int drm_pm_init(void)