aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/drm_pci.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/drm_pci.c')
-rw-r--r--drivers/gpu/drm/drm_pci.c39
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:
280EXPORT_SYMBOL(drm_get_pci_dev); 280EXPORT_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 */
296int drm_pci_init(struct drm_driver *driver, struct pci_driver *pdriver) 291int 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}
327EXPORT_SYMBOL(drm_legacy_pci_init);
332 328
333int drm_pcie_get_speed_cap_mask(struct drm_device *dev, u32 *mask) 329int 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
393int drm_pci_init(struct drm_driver *driver, struct pci_driver *pdriver)
394{
395 return -1;
396}
397
398void drm_pci_agp_destroy(struct drm_device *dev) {} 389void drm_pci_agp_destroy(struct drm_device *dev) {}
399 390
400int drm_irq_by_busid(struct drm_device *dev, void *data, 391int 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
407EXPORT_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 */
421void drm_pci_exit(struct drm_driver *driver, struct pci_driver *pdriver) 406void 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}
437EXPORT_SYMBOL(drm_pci_exit); 422EXPORT_SYMBOL(drm_legacy_pci_exit);