diff options
Diffstat (limited to 'drivers/gpu/drm/drm_pci.c')
-rw-r--r-- | drivers/gpu/drm/drm_pci.c | 39 |
1 files changed, 12 insertions, 27 deletions
diff --git a/drivers/gpu/drm/drm_pci.c b/drivers/gpu/drm/drm_pci.c index ad31d95e77c9..1235c9877d6f 100644 --- a/drivers/gpu/drm/drm_pci.c +++ b/drivers/gpu/drm/drm_pci.c | |||
@@ -280,20 +280,15 @@ err_free: | |||
280 | EXPORT_SYMBOL(drm_get_pci_dev); | 280 | EXPORT_SYMBOL(drm_get_pci_dev); |
281 | 281 | ||
282 | /** | 282 | /** |
283 | * drm_pci_init - Register matching PCI devices with the DRM subsystem | 283 | * drm_legacy_pci_init - shadow-attach a legacy DRM PCI driver |
284 | * @driver: DRM device driver | 284 | * @driver: DRM device driver |
285 | * @pdriver: PCI device driver | 285 | * @pdriver: PCI device driver |
286 | * | 286 | * |
287 | * Initializes a drm_device structures, registering the stubs and initializing | 287 | * This is only used by legacy dri1 drivers and deprecated. |
288 | * the AGP device. | ||
289 | * | ||
290 | * NOTE: This function is deprecated. Modern modesetting drm drivers should use | ||
291 | * pci_register_driver() directly, this function only provides shadow-binding | ||
292 | * support for old legacy drivers on top of that core pci function. | ||
293 | * | 288 | * |
294 | * Return: 0 on success or a negative error code on failure. | 289 | * Return: 0 on success or a negative error code on failure. |
295 | */ | 290 | */ |
296 | int drm_pci_init(struct drm_driver *driver, struct pci_driver *pdriver) | 291 | int drm_legacy_pci_init(struct drm_driver *driver, struct pci_driver *pdriver) |
297 | { | 292 | { |
298 | struct pci_dev *pdev = NULL; | 293 | struct pci_dev *pdev = NULL; |
299 | const struct pci_device_id *pid; | 294 | const struct pci_device_id *pid; |
@@ -301,8 +296,8 @@ int drm_pci_init(struct drm_driver *driver, struct pci_driver *pdriver) | |||
301 | 296 | ||
302 | DRM_DEBUG("\n"); | 297 | DRM_DEBUG("\n"); |
303 | 298 | ||
304 | if (!(driver->driver_features & DRIVER_LEGACY)) | 299 | if (WARN_ON(!(driver->driver_features & DRIVER_LEGACY))) |
305 | return pci_register_driver(pdriver); | 300 | return -EINVAL; |
306 | 301 | ||
307 | /* If not using KMS, fall back to stealth mode manual scanning. */ | 302 | /* If not using KMS, fall back to stealth mode manual scanning. */ |
308 | INIT_LIST_HEAD(&driver->legacy_dev_list); | 303 | INIT_LIST_HEAD(&driver->legacy_dev_list); |
@@ -329,6 +324,7 @@ int drm_pci_init(struct drm_driver *driver, struct pci_driver *pdriver) | |||
329 | } | 324 | } |
330 | return 0; | 325 | return 0; |
331 | } | 326 | } |
327 | EXPORT_SYMBOL(drm_legacy_pci_init); | ||
332 | 328 | ||
333 | int drm_pcie_get_speed_cap_mask(struct drm_device *dev, u32 *mask) | 329 | int drm_pcie_get_speed_cap_mask(struct drm_device *dev, u32 *mask) |
334 | { | 330 | { |
@@ -390,11 +386,6 @@ EXPORT_SYMBOL(drm_pcie_get_max_link_width); | |||
390 | 386 | ||
391 | #else | 387 | #else |
392 | 388 | ||
393 | int drm_pci_init(struct drm_driver *driver, struct pci_driver *pdriver) | ||
394 | { | ||
395 | return -1; | ||
396 | } | ||
397 | |||
398 | void drm_pci_agp_destroy(struct drm_device *dev) {} | 389 | void drm_pci_agp_destroy(struct drm_device *dev) {} |
399 | 390 | ||
400 | int drm_irq_by_busid(struct drm_device *dev, void *data, | 391 | int drm_irq_by_busid(struct drm_device *dev, void *data, |
@@ -404,27 +395,21 @@ int drm_irq_by_busid(struct drm_device *dev, void *data, | |||
404 | } | 395 | } |
405 | #endif | 396 | #endif |
406 | 397 | ||
407 | EXPORT_SYMBOL(drm_pci_init); | ||
408 | |||
409 | /** | 398 | /** |
410 | * drm_pci_exit - Unregister matching PCI devices from the DRM subsystem | 399 | * drm_legacy_pci_exit - unregister shadow-attach legacy DRM driver |
411 | * @driver: DRM device driver | 400 | * @driver: DRM device driver |
412 | * @pdriver: PCI device driver | 401 | * @pdriver: PCI device driver |
413 | * | 402 | * |
414 | * Unregisters one or more devices matched by a PCI driver from the DRM | 403 | * Unregister a DRM driver shadow-attached through drm_legacy_pci_init(). This |
415 | * subsystem. | 404 | * is deprecated and only used by dri1 drivers. |
416 | * | ||
417 | * NOTE: This function is deprecated. Modern modesetting drm drivers should use | ||
418 | * pci_unregister_driver() directly, this function only provides shadow-binding | ||
419 | * support for old legacy drivers on top of that core pci function. | ||
420 | */ | 405 | */ |
421 | void drm_pci_exit(struct drm_driver *driver, struct pci_driver *pdriver) | 406 | void drm_legacy_pci_exit(struct drm_driver *driver, struct pci_driver *pdriver) |
422 | { | 407 | { |
423 | struct drm_device *dev, *tmp; | 408 | struct drm_device *dev, *tmp; |
424 | DRM_DEBUG("\n"); | 409 | DRM_DEBUG("\n"); |
425 | 410 | ||
426 | if (!(driver->driver_features & DRIVER_LEGACY)) { | 411 | if (!(driver->driver_features & DRIVER_LEGACY)) { |
427 | pci_unregister_driver(pdriver); | 412 | WARN_ON(1); |
428 | } else { | 413 | } else { |
429 | list_for_each_entry_safe(dev, tmp, &driver->legacy_dev_list, | 414 | list_for_each_entry_safe(dev, tmp, &driver->legacy_dev_list, |
430 | legacy_dev_list) { | 415 | legacy_dev_list) { |
@@ -434,4 +419,4 @@ void drm_pci_exit(struct drm_driver *driver, struct pci_driver *pdriver) | |||
434 | } | 419 | } |
435 | DRM_INFO("Module unloaded\n"); | 420 | DRM_INFO("Module unloaded\n"); |
436 | } | 421 | } |
437 | EXPORT_SYMBOL(drm_pci_exit); | 422 | EXPORT_SYMBOL(drm_legacy_pci_exit); |