Make sysdev class only register when fbdev detected
parent
5b0e93de32
commit
2b845f25c5
|
@ -339,6 +339,9 @@ int drm_init(struct drm_driver *driver,
|
||||||
if (!drm_fb_loaded)
|
if (!drm_fb_loaded)
|
||||||
pci_register_driver(&driver->pci_driver);
|
pci_register_driver(&driver->pci_driver);
|
||||||
else {
|
else {
|
||||||
|
if ((rc = drm_pm_init()))
|
||||||
|
return rc;
|
||||||
|
|
||||||
for (i = 0; pciidlist[i].vendor != 0; i++) {
|
for (i = 0; pciidlist[i].vendor != 0; i++) {
|
||||||
pid = &pciidlist[i];
|
pid = &pciidlist[i];
|
||||||
|
|
||||||
|
@ -352,6 +355,7 @@ int drm_init(struct drm_driver *driver,
|
||||||
pci_dev_get(pdev);
|
pci_dev_get(pdev);
|
||||||
if ((rc = drm_get_dev(pdev, &pciidlist[i], driver))) {
|
if ((rc = drm_get_dev(pdev, &pciidlist[i], driver))) {
|
||||||
pci_dev_put(pdev);
|
pci_dev_put(pdev);
|
||||||
|
drm_pm_exit();
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -515,17 +519,12 @@ static int __init drm_core_init(void)
|
||||||
goto err_p3;
|
goto err_p3;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((ret = drm_pm_init()))
|
|
||||||
goto err_p4;
|
|
||||||
|
|
||||||
drm_mem_init();
|
drm_mem_init();
|
||||||
|
|
||||||
DRM_INFO("Initialized %s %d.%d.%d %s\n",
|
DRM_INFO("Initialized %s %d.%d.%d %s\n",
|
||||||
CORE_NAME,
|
CORE_NAME,
|
||||||
CORE_MAJOR, CORE_MINOR, CORE_PATCHLEVEL, CORE_DATE);
|
CORE_MAJOR, CORE_MINOR, CORE_PATCHLEVEL, CORE_DATE);
|
||||||
return 0;
|
return 0;
|
||||||
err_p4:
|
|
||||||
remove_proc_entry("dri", NULL);
|
|
||||||
err_p3:
|
err_p3:
|
||||||
drm_sysfs_destroy(drm_class);
|
drm_sysfs_destroy(drm_class);
|
||||||
err_p2:
|
err_p2:
|
||||||
|
|
|
@ -67,6 +67,7 @@ static int shutdown(struct sys_device *sysdev)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int sysdev_loaded = 0;
|
||||||
static struct sysdev_class drm_sysdev_class = {
|
static struct sysdev_class drm_sysdev_class = {
|
||||||
set_kset_name("drm"),
|
set_kset_name("drm"),
|
||||||
.resume = drm_resume,
|
.resume = drm_resume,
|
||||||
|
@ -120,12 +121,17 @@ void drm_pm_takedown(drm_device_t *dev)
|
||||||
|
|
||||||
int drm_pm_init(void)
|
int drm_pm_init(void)
|
||||||
{
|
{
|
||||||
|
int rc;
|
||||||
DRM_DEBUG("\n");
|
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)
|
void __exit drm_pm_exit(void)
|
||||||
{
|
{
|
||||||
DRM_DEBUG("\n");
|
DRM_DEBUG("\n");
|
||||||
sysdev_class_unregister(&drm_sysdev_class);
|
if (sysdev_loaded)
|
||||||
|
sysdev_class_unregister(&drm_sysdev_class);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue