diff options
Diffstat (limited to 'linux-core')
-rw-r--r-- | linux-core/drm_drv.c | 2 | ||||
-rw-r--r-- | linux-core/drm_stub.c | 20 |
2 files changed, 11 insertions, 11 deletions
diff --git a/linux-core/drm_drv.c b/linux-core/drm_drv.c index 3cc8da02..81ec1c76 100644 --- a/linux-core/drm_drv.c +++ b/linux-core/drm_drv.c @@ -318,7 +318,7 @@ MODULE_PARM(drm_opts, "s"); * Expands the \c DRIVER_PREINIT and \c DRIVER_POST_INIT macros before and * after the initialization for driver customization. */ -int __devinit drm_init(struct pci_driver *driver, +int drm_init(struct pci_driver *driver, struct pci_device_id *pciidlist, struct drm_driver_fn *driver_fn) { diff --git a/linux-core/drm_stub.c b/linux-core/drm_stub.c index 6f4753dd..ed4cd19b 100644 --- a/linux-core/drm_stub.c +++ b/linux-core/drm_stub.c @@ -166,8 +166,13 @@ int drm_probe(struct pci_dev *pdev, const struct pci_device_id *ent, return -ENOMEM; *minors = (drm_minor_t) { - .dev = dev,.class = DRM_MINOR_PRIMARY}; + .dev = dev,.class = DRM_MINOR_PRIMARY}; dev->minor = minor; + if (!drm_fb_loaded) { + pci_set_drvdata(pdev, dev); + pci_request_regions(pdev, DRIVER_NAME); + pci_enable_device(pdev); + } if ((ret = fill_in_dev(dev, pdev, ent, driver_fn))) { printk(KERN_ERR "DRM: Fill_in_dev failed.\n"); goto err_g1; @@ -179,11 +184,6 @@ int drm_probe(struct pci_dev *pdev, const struct pci_device_id *ent, "DRM: Failed to initialize /proc/dri.\n"); goto err_g1; } - if (!drm_fb_loaded) { - pci_set_drvdata(pdev, dev); - pci_request_regions(pdev, DRIVER_NAME); - pci_enable_device(pdev); - } dev_class = drm_sysfs_device_add(drm_class, MKDEV(DRM_MAJOR, minor), @@ -202,16 +202,16 @@ int drm_probe(struct pci_dev *pdev, const struct pci_device_id *ent, } DRM_ERROR("out of minors\n"); return -ENOMEM; - err_g2: +err_g2: + drm_proc_cleanup(minor, drm_proc_root, minors->dev_root); +err_g1: if (!drm_fb_loaded) { pci_set_drvdata(pdev, NULL); pci_release_regions(pdev); pci_disable_device(pdev); } - drm_proc_cleanup(minor, drm_proc_root, minors->dev_root); - err_g1: *minors = (drm_minor_t) { - .dev = NULL,.class = DRM_MINOR_FREE}; + .dev = NULL,.class = DRM_MINOR_FREE}; drm_free(dev, sizeof(*dev), DRM_MEM_STUB); return ret; } |