Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 10631d72 authored by Daniel Vetter's avatar Daniel Vetter
Browse files

drm/pci: Deprecate drm_pci_init/exit completely



The magic switching between proper pci driver and shadow-attach isn't
useful anymore since there's no ums+kms drivers left. Let's split this
up properly, calling pci_register_driver for kms drivers and renaming
the shadow-attach init to drm_legacy_pci_init/exit.

Acked-by: default avatarThierry Reding <treding@nvidia.com>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170524145212.27837-6-daniel.vetter@ffwll.ch
parent 5c484cee
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -816,7 +816,7 @@ static int __init amdgpu_init(void)
	driver->num_ioctls = amdgpu_max_kms_ioctl;
	amdgpu_register_atpx_handler();
	/* let modprobe override vga console setting */
	return drm_pci_init(driver, pdriver);
	return pci_register_driver(pdriver);

error_sched:
	amdgpu_fence_slab_fini();
@@ -831,7 +831,7 @@ static int __init amdgpu_init(void)
static void __exit amdgpu_exit(void)
{
	amdgpu_amdkfd_fini();
	drm_pci_exit(driver, pdriver);
	pci_unregister_driver(pdriver);
	amdgpu_unregister_atpx_handler();
	amdgpu_sync_fini();
	amd_sched_fence_slab_fini();
+2 −2
Original line number Diff line number Diff line
@@ -220,11 +220,11 @@ static int __init ast_init(void)

	if (ast_modeset == 0)
		return -EINVAL;
	return drm_pci_init(&driver, &ast_pci_driver);
	return pci_register_driver(&ast_pci_driver);
}
static void __exit ast_exit(void)
{
	drm_pci_exit(&driver, &ast_pci_driver);
	pci_unregister_driver(&ast_pci_driver);
}

module_init(ast_init);
+2 −2
Original line number Diff line number Diff line
@@ -223,12 +223,12 @@ static int __init bochs_init(void)
	if (bochs_modeset == 0)
		return -EINVAL;

	return drm_pci_init(&bochs_driver, &bochs_pci_driver);
	return pci_register_driver(&bochs_pci_driver);
}

static void __exit bochs_exit(void)
{
	drm_pci_exit(&bochs_driver, &bochs_pci_driver);
	pci_unregister_driver(&bochs_pci_driver);
}

module_init(bochs_init);
+2 −2
Original line number Diff line number Diff line
@@ -165,12 +165,12 @@ static int __init cirrus_init(void)

	if (cirrus_modeset == 0)
		return -EINVAL;
	return drm_pci_init(&driver, &cirrus_pci_driver);
	return pci_register_driver(&cirrus_pci_driver);
}

static void __exit cirrus_exit(void)
{
	drm_pci_exit(&driver, &cirrus_pci_driver);
	pci_unregister_driver(&cirrus_pci_driver);
}

module_init(cirrus_init);
+12 −27
Original line number Diff line number Diff line
@@ -280,20 +280,15 @@ int drm_get_pci_dev(struct pci_dev *pdev, const struct pci_device_id *ent,
EXPORT_SYMBOL(drm_get_pci_dev);

/**
 * drm_pci_init - Register matching PCI devices with the DRM subsystem
 * drm_legacy_pci_init - shadow-attach a legacy DRM PCI driver
 * @driver: DRM device driver
 * @pdriver: PCI device driver
 *
 * Initializes a drm_device structures, registering the stubs and initializing
 * the AGP device.
 *
 * NOTE: This function is deprecated. Modern modesetting drm drivers should use
 * pci_register_driver() directly, this function only provides shadow-binding
 * support for old legacy drivers on top of that core pci function.
 * This is only used by legacy dri1 drivers and deprecated.
 *
 * Return: 0 on success or a negative error code on failure.
 */
int drm_pci_init(struct drm_driver *driver, struct pci_driver *pdriver)
int drm_legacy_pci_init(struct drm_driver *driver, struct pci_driver *pdriver)
{
	struct pci_dev *pdev = NULL;
	const struct pci_device_id *pid;
@@ -301,8 +296,8 @@ int drm_pci_init(struct drm_driver *driver, struct pci_driver *pdriver)

	DRM_DEBUG("\n");

	if (!(driver->driver_features & DRIVER_LEGACY))
		return pci_register_driver(pdriver);
	if (WARN_ON(!(driver->driver_features & DRIVER_LEGACY)))
		return -EINVAL;

	/* If not using KMS, fall back to stealth mode manual scanning. */
	INIT_LIST_HEAD(&driver->legacy_dev_list);
@@ -329,6 +324,7 @@ int drm_pci_init(struct drm_driver *driver, struct pci_driver *pdriver)
	}
	return 0;
}
EXPORT_SYMBOL(drm_legacy_pci_init);

int drm_pcie_get_speed_cap_mask(struct drm_device *dev, u32 *mask)
{
@@ -390,11 +386,6 @@ EXPORT_SYMBOL(drm_pcie_get_max_link_width);

#else

int drm_pci_init(struct drm_driver *driver, struct pci_driver *pdriver)
{
	return -1;
}

void drm_pci_agp_destroy(struct drm_device *dev) {}

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,
}
#endif

EXPORT_SYMBOL(drm_pci_init);

/**
 * drm_pci_exit - Unregister matching PCI devices from the DRM subsystem
 * drm_legacy_pci_exit - unregister shadow-attach legacy DRM driver
 * @driver: DRM device driver
 * @pdriver: PCI device driver
 *
 * Unregisters one or more devices matched by a PCI driver from the DRM
 * subsystem.
 *
 * NOTE: This function is deprecated. Modern modesetting drm drivers should use
 * pci_unregister_driver() directly, this function only provides shadow-binding
 * support for old legacy drivers on top of that core pci function.
 * Unregister a DRM driver shadow-attached through drm_legacy_pci_init(). This
 * is deprecated and only used by dri1 drivers.
 */
void drm_pci_exit(struct drm_driver *driver, struct pci_driver *pdriver)
void drm_legacy_pci_exit(struct drm_driver *driver, struct pci_driver *pdriver)
{
	struct drm_device *dev, *tmp;
	DRM_DEBUG("\n");

	if (!(driver->driver_features & DRIVER_LEGACY)) {
		pci_unregister_driver(pdriver);
		WARN_ON(1);
	} else {
		list_for_each_entry_safe(dev, tmp, &driver->legacy_dev_list,
					 legacy_dev_list) {
@@ -434,4 +419,4 @@ void drm_pci_exit(struct drm_driver *driver, struct pci_driver *pdriver)
	}
	DRM_INFO("Module unloaded\n");
}
EXPORT_SYMBOL(drm_pci_exit);
EXPORT_SYMBOL(drm_legacy_pci_exit);
Loading