Commit 53bf2a2b authored by Daniel Vetter's avatar Daniel Vetter

drm: inline drm_pci_set_unique

This is only used for drm versions 1.0, and kms drivers have never
been there. So we can appropriately restrict this to legacy and hence
pci devices and inline everything.

v2: Make the dummy function actually return something, caught by Wu
Fengguang's 0-day tester.

v3: Fix spelling in comment (Thierry)
Reviewed-by: default avatarThierry Reding <treding@nvidia.com>
Reviewed-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
parent b2a21aa2
...@@ -93,7 +93,8 @@ drm_unset_busid(struct drm_device *dev, ...@@ -93,7 +93,8 @@ drm_unset_busid(struct drm_device *dev,
* Copies the bus id from userspace into drm_device::unique, and verifies that * Copies the bus id from userspace into drm_device::unique, and verifies that
* it matches the device this DRM is attached to (EINVAL otherwise). Deprecated * it matches the device this DRM is attached to (EINVAL otherwise). Deprecated
* in interface version 1.1 and will return EBUSY when setversion has requested * in interface version 1.1 and will return EBUSY when setversion has requested
* version 1.1 or greater. * version 1.1 or greater. Also note that KMS is all version 1.1 and later and
* UMS was only ever supported on pci devices.
*/ */
int drm_setunique(struct drm_device *dev, void *data, int drm_setunique(struct drm_device *dev, void *data,
struct drm_file *file_priv) struct drm_file *file_priv)
...@@ -108,10 +109,13 @@ int drm_setunique(struct drm_device *dev, void *data, ...@@ -108,10 +109,13 @@ int drm_setunique(struct drm_device *dev, void *data,
if (!u->unique_len || u->unique_len > 1024) if (!u->unique_len || u->unique_len > 1024)
return -EINVAL; return -EINVAL;
if (!dev->driver->bus->set_unique) if (drm_core_check_feature(dev, DRIVER_MODESET))
return 0;
if (WARN_ON(!dev->pdev))
return -EINVAL; return -EINVAL;
ret = dev->driver->bus->set_unique(dev, master, u); ret = drm_pci_set_unique(dev, master, u);
if (ret) if (ret)
goto err; goto err;
......
...@@ -185,9 +185,9 @@ static int drm_pci_set_busid(struct drm_device *dev, struct drm_master *master) ...@@ -185,9 +185,9 @@ static int drm_pci_set_busid(struct drm_device *dev, struct drm_master *master)
return ret; return ret;
} }
static int drm_pci_set_unique(struct drm_device *dev, int drm_pci_set_unique(struct drm_device *dev,
struct drm_master *master, struct drm_master *master,
struct drm_unique *u) struct drm_unique *u)
{ {
int domain, bus, slot, func, ret; int domain, bus, slot, func, ret;
const char *bus_name; const char *bus_name;
...@@ -314,7 +314,6 @@ void drm_pci_agp_destroy(struct drm_device *dev) ...@@ -314,7 +314,6 @@ void drm_pci_agp_destroy(struct drm_device *dev)
static struct drm_bus drm_pci_bus = { static struct drm_bus drm_pci_bus = {
.get_name = drm_pci_get_name, .get_name = drm_pci_get_name,
.set_busid = drm_pci_set_busid, .set_busid = drm_pci_set_busid,
.set_unique = drm_pci_set_unique,
}; };
/** /**
...@@ -481,6 +480,13 @@ int drm_irq_by_busid(struct drm_device *dev, void *data, ...@@ -481,6 +480,13 @@ int drm_irq_by_busid(struct drm_device *dev, void *data,
{ {
return -EINVAL; return -EINVAL;
} }
int drm_pci_set_unique(struct drm_device *dev,
struct drm_master *master,
struct drm_unique *u)
{
return -EINVAL;
}
#endif #endif
EXPORT_SYMBOL(drm_pci_init); EXPORT_SYMBOL(drm_pci_init);
......
...@@ -728,8 +728,6 @@ struct drm_master { ...@@ -728,8 +728,6 @@ struct drm_master {
struct drm_bus { struct drm_bus {
const char *(*get_name)(struct drm_device *dev); const char *(*get_name)(struct drm_device *dev);
int (*set_busid)(struct drm_device *dev, struct drm_master *master); int (*set_busid)(struct drm_device *dev, struct drm_master *master);
int (*set_unique)(struct drm_device *dev, struct drm_master *master,
struct drm_unique *unique);
}; };
/** /**
...@@ -1511,6 +1509,9 @@ extern drm_dma_handle_t *drm_pci_alloc(struct drm_device *dev, size_t size, ...@@ -1511,6 +1509,9 @@ extern drm_dma_handle_t *drm_pci_alloc(struct drm_device *dev, size_t size,
size_t align); size_t align);
extern void __drm_pci_free(struct drm_device *dev, drm_dma_handle_t * dmah); extern void __drm_pci_free(struct drm_device *dev, drm_dma_handle_t * dmah);
extern void drm_pci_free(struct drm_device *dev, drm_dma_handle_t * dmah); extern void drm_pci_free(struct drm_device *dev, drm_dma_handle_t * dmah);
extern int drm_pci_set_unique(struct drm_device *dev,
struct drm_master *master,
struct drm_unique *u);
/* sysfs support (drm_sysfs.c) */ /* sysfs support (drm_sysfs.c) */
struct drm_sysfs_class; struct drm_sysfs_class;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment