Commit 915b4d11 authored by David Herrmann's avatar David Herrmann Committed by Dave Airlie

drm: add driver->set_busid() callback

One step closer to dropping all the drm_bus_* code:
Add a driver->set_busid() callback and make all drivers use the generic
helpers. Nouveau is the only driver that uses two different bus-types with
the same drm_driver. This is totally broken if both buses are available on
the same machine (unlikely, but lets be safe). Therefore, we create two
different drivers for each platform during module_init() and set the
set_busid() callback respectively.
Signed-off-by: default avatarDavid Herrmann <dh.herrmann@gmail.com>
Reviewed-by: default avatarThierry Reding <treding@nvidia.com>
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent 1e444be0
...@@ -308,6 +308,7 @@ static struct drm_driver armada_drm_driver = { ...@@ -308,6 +308,7 @@ static struct drm_driver armada_drm_driver = {
.postclose = NULL, .postclose = NULL,
.lastclose = armada_drm_lastclose, .lastclose = armada_drm_lastclose,
.unload = armada_drm_unload, .unload = armada_drm_unload,
.set_busid = drm_platform_set_busid,
.get_vblank_counter = drm_vblank_count, .get_vblank_counter = drm_vblank_count,
.enable_vblank = armada_drm_enable_vblank, .enable_vblank = armada_drm_enable_vblank,
.disable_vblank = armada_drm_disable_vblank, .disable_vblank = armada_drm_disable_vblank,
......
...@@ -199,6 +199,7 @@ static struct drm_driver driver = { ...@@ -199,6 +199,7 @@ static struct drm_driver driver = {
.load = ast_driver_load, .load = ast_driver_load,
.unload = ast_driver_unload, .unload = ast_driver_unload,
.set_busid = drm_pci_set_busid,
.fops = &ast_fops, .fops = &ast_fops,
.name = DRIVER_NAME, .name = DRIVER_NAME,
......
...@@ -82,6 +82,7 @@ static struct drm_driver bochs_driver = { ...@@ -82,6 +82,7 @@ static struct drm_driver bochs_driver = {
.driver_features = DRIVER_GEM | DRIVER_MODESET, .driver_features = DRIVER_GEM | DRIVER_MODESET,
.load = bochs_load, .load = bochs_load,
.unload = bochs_unload, .unload = bochs_unload,
.set_busid = drm_pci_set_busid,
.fops = &bochs_fops, .fops = &bochs_fops,
.name = "bochs-drm", .name = "bochs-drm",
.desc = "bochs dispi vga interface (qemu stdvga)", .desc = "bochs dispi vga interface (qemu stdvga)",
......
...@@ -128,6 +128,7 @@ static struct drm_driver driver = { ...@@ -128,6 +128,7 @@ static struct drm_driver driver = {
.driver_features = DRIVER_MODESET | DRIVER_GEM, .driver_features = DRIVER_MODESET | DRIVER_GEM,
.load = cirrus_driver_load, .load = cirrus_driver_load,
.unload = cirrus_driver_unload, .unload = cirrus_driver_unload,
.set_busid = drm_pci_set_busid,
.fops = &cirrus_driver_fops, .fops = &cirrus_driver_fops,
.name = DRIVER_NAME, .name = DRIVER_NAME,
.desc = DRIVER_DESC, .desc = DRIVER_DESC,
......
...@@ -244,7 +244,13 @@ static int drm_set_busid(struct drm_device *dev, struct drm_file *file_priv) ...@@ -244,7 +244,13 @@ static int drm_set_busid(struct drm_device *dev, struct drm_file *file_priv)
if (master->unique != NULL) if (master->unique != NULL)
drm_unset_busid(dev, master); drm_unset_busid(dev, master);
if (dev->driver->bus && dev->driver->bus->set_busid) { if (dev->driver->set_busid) {
ret = dev->driver->set_busid(dev, master);
if (ret) {
drm_unset_busid(dev, master);
return ret;
}
} else if (dev->driver->bus && dev->driver->bus->set_busid) {
ret = dev->driver->bus->set_busid(dev, master); ret = dev->driver->bus->set_busid(dev, master);
if (ret) { if (ret) {
drm_unset_busid(dev, master); drm_unset_busid(dev, master);
......
...@@ -127,7 +127,7 @@ static int drm_get_pci_domain(struct drm_device *dev) ...@@ -127,7 +127,7 @@ static int drm_get_pci_domain(struct drm_device *dev)
return pci_domain_nr(dev->pdev->bus); return pci_domain_nr(dev->pdev->bus);
} }
static int drm_pci_set_busid(struct drm_device *dev, struct drm_master *master) int drm_pci_set_busid(struct drm_device *dev, struct drm_master *master)
{ {
master->unique = kasprintf(GFP_KERNEL, "pci:%04x:%02x:%02x.%d", master->unique = kasprintf(GFP_KERNEL, "pci:%04x:%02x:%02x.%d",
drm_get_pci_domain(dev), drm_get_pci_domain(dev),
...@@ -140,6 +140,7 @@ static int drm_pci_set_busid(struct drm_device *dev, struct drm_master *master) ...@@ -140,6 +140,7 @@ static int drm_pci_set_busid(struct drm_device *dev, struct drm_master *master)
master->unique_len = strlen(master->unique); master->unique_len = strlen(master->unique);
return 0; return 0;
} }
EXPORT_SYMBOL(drm_pci_set_busid);
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,
......
...@@ -68,7 +68,7 @@ static int drm_get_platform_dev(struct platform_device *platdev, ...@@ -68,7 +68,7 @@ static int drm_get_platform_dev(struct platform_device *platdev,
return ret; return ret;
} }
static int drm_platform_set_busid(struct drm_device *dev, struct drm_master *master) int drm_platform_set_busid(struct drm_device *dev, struct drm_master *master)
{ {
int id; int id;
...@@ -84,6 +84,7 @@ static int drm_platform_set_busid(struct drm_device *dev, struct drm_master *mas ...@@ -84,6 +84,7 @@ static int drm_platform_set_busid(struct drm_device *dev, struct drm_master *mas
master->unique_len = strlen(master->unique); master->unique_len = strlen(master->unique);
return 0; return 0;
} }
EXPORT_SYMBOL(drm_platform_set_busid);
static struct drm_bus drm_platform_bus = { static struct drm_bus drm_platform_bus = {
.set_busid = drm_platform_set_busid, .set_busid = drm_platform_set_busid,
......
...@@ -330,6 +330,7 @@ static struct drm_driver exynos_drm_driver = { ...@@ -330,6 +330,7 @@ static struct drm_driver exynos_drm_driver = {
.preclose = exynos_drm_preclose, .preclose = exynos_drm_preclose,
.lastclose = exynos_drm_lastclose, .lastclose = exynos_drm_lastclose,
.postclose = exynos_drm_postclose, .postclose = exynos_drm_postclose,
.set_busid = drm_platform_set_busid,
.get_vblank_counter = drm_vblank_count, .get_vblank_counter = drm_vblank_count,
.enable_vblank = exynos_drm_crtc_enable_vblank, .enable_vblank = exynos_drm_crtc_enable_vblank,
.disable_vblank = exynos_drm_crtc_disable_vblank, .disable_vblank = exynos_drm_crtc_disable_vblank,
......
...@@ -476,6 +476,7 @@ static struct drm_driver driver = { ...@@ -476,6 +476,7 @@ static struct drm_driver driver = {
.unload = psb_driver_unload, .unload = psb_driver_unload,
.lastclose = psb_driver_lastclose, .lastclose = psb_driver_lastclose,
.preclose = psb_driver_preclose, .preclose = psb_driver_preclose,
.set_busid = drm_pci_set_busid,
.num_ioctls = ARRAY_SIZE(psb_ioctls), .num_ioctls = ARRAY_SIZE(psb_ioctls),
.device_is_agp = psb_driver_device_is_agp, .device_is_agp = psb_driver_device_is_agp,
......
...@@ -63,6 +63,7 @@ static struct drm_driver driver = { ...@@ -63,6 +63,7 @@ static struct drm_driver driver = {
.load = i810_driver_load, .load = i810_driver_load,
.lastclose = i810_driver_lastclose, .lastclose = i810_driver_lastclose,
.preclose = i810_driver_preclose, .preclose = i810_driver_preclose,
.set_busid = drm_pci_set_busid,
.device_is_agp = i810_driver_device_is_agp, .device_is_agp = i810_driver_device_is_agp,
.dma_quiescent = i810_driver_dma_quiescent, .dma_quiescent = i810_driver_dma_quiescent,
.ioctls = i810_ioctls, .ioctls = i810_ioctls,
......
...@@ -1593,6 +1593,7 @@ static struct drm_driver driver = { ...@@ -1593,6 +1593,7 @@ static struct drm_driver driver = {
.lastclose = i915_driver_lastclose, .lastclose = i915_driver_lastclose,
.preclose = i915_driver_preclose, .preclose = i915_driver_preclose,
.postclose = i915_driver_postclose, .postclose = i915_driver_postclose,
.set_busid = drm_pci_set_busid,
/* Used in place of i915_pm_ops for non-DRIVER_MODESET */ /* Used in place of i915_pm_ops for non-DRIVER_MODESET */
.suspend = i915_suspend, .suspend = i915_suspend,
......
...@@ -64,6 +64,7 @@ static struct drm_driver driver = { ...@@ -64,6 +64,7 @@ static struct drm_driver driver = {
.load = mga_driver_load, .load = mga_driver_load,
.unload = mga_driver_unload, .unload = mga_driver_unload,
.lastclose = mga_driver_lastclose, .lastclose = mga_driver_lastclose,
.set_busid = drm_pci_set_busid,
.dma_quiescent = mga_driver_dma_quiescent, .dma_quiescent = mga_driver_dma_quiescent,
.device_is_agp = mga_driver_device_is_agp, .device_is_agp = mga_driver_device_is_agp,
.get_vblank_counter = mga_get_vblank_counter, .get_vblank_counter = mga_get_vblank_counter,
......
...@@ -91,6 +91,7 @@ static struct drm_driver driver = { ...@@ -91,6 +91,7 @@ static struct drm_driver driver = {
.driver_features = DRIVER_GEM | DRIVER_MODESET, .driver_features = DRIVER_GEM | DRIVER_MODESET,
.load = mgag200_driver_load, .load = mgag200_driver_load,
.unload = mgag200_driver_unload, .unload = mgag200_driver_unload,
.set_busid = drm_pci_set_busid,
.fops = &mgag200_driver_fops, .fops = &mgag200_driver_fops,
.name = DRIVER_NAME, .name = DRIVER_NAME,
.desc = DRIVER_DESC, .desc = DRIVER_DESC,
......
...@@ -836,6 +836,7 @@ static struct drm_driver msm_driver = { ...@@ -836,6 +836,7 @@ static struct drm_driver msm_driver = {
.open = msm_open, .open = msm_open,
.preclose = msm_preclose, .preclose = msm_preclose,
.lastclose = msm_lastclose, .lastclose = msm_lastclose,
.set_busid = drm_platform_set_busid,
.irq_handler = msm_irq, .irq_handler = msm_irq,
.irq_preinstall = msm_irq_preinstall, .irq_preinstall = msm_irq_preinstall,
.irq_postinstall = msm_irq_postinstall, .irq_postinstall = msm_irq_postinstall,
......
...@@ -73,7 +73,9 @@ MODULE_PARM_DESC(runpm, "disable (0), force enable (1), optimus only default (-1 ...@@ -73,7 +73,9 @@ MODULE_PARM_DESC(runpm, "disable (0), force enable (1), optimus only default (-1
int nouveau_runtime_pm = -1; int nouveau_runtime_pm = -1;
module_param_named(runpm, nouveau_runtime_pm, int, 0400); module_param_named(runpm, nouveau_runtime_pm, int, 0400);
static struct drm_driver driver; static struct drm_driver driver_stub;
static struct drm_driver driver_pci;
static struct drm_driver driver_platform;
static u64 static u64
nouveau_pci_name(struct pci_dev *pdev) nouveau_pci_name(struct pci_dev *pdev)
...@@ -322,7 +324,7 @@ static int nouveau_drm_probe(struct pci_dev *pdev, ...@@ -322,7 +324,7 @@ static int nouveau_drm_probe(struct pci_dev *pdev,
pci_set_master(pdev); pci_set_master(pdev);
ret = drm_get_pci_dev(pdev, pent, &driver); ret = drm_get_pci_dev(pdev, pent, &driver_pci);
if (ret) { if (ret) {
nouveau_object_ref(NULL, (struct nouveau_object **)&device); nouveau_object_ref(NULL, (struct nouveau_object **)&device);
return ret; return ret;
...@@ -855,7 +857,7 @@ nouveau_driver_fops = { ...@@ -855,7 +857,7 @@ nouveau_driver_fops = {
}; };
static struct drm_driver static struct drm_driver
driver = { driver_stub = {
.driver_features = .driver_features =
DRIVER_USE_AGP | DRIVER_USE_AGP |
DRIVER_GEM | DRIVER_MODESET | DRIVER_PRIME | DRIVER_RENDER, DRIVER_GEM | DRIVER_MODESET | DRIVER_PRIME | DRIVER_RENDER,
...@@ -1061,7 +1063,7 @@ nouveau_platform_device_create_(struct platform_device *pdev, int size, ...@@ -1061,7 +1063,7 @@ nouveau_platform_device_create_(struct platform_device *pdev, int size,
if (err) if (err)
return ERR_PTR(err); return ERR_PTR(err);
drm = drm_dev_alloc(&driver, &pdev->dev); drm = drm_dev_alloc(&driver_platform, &pdev->dev);
if (!drm) { if (!drm) {
err = -ENOMEM; err = -ENOMEM;
goto err_free; goto err_free;
...@@ -1086,6 +1088,11 @@ EXPORT_SYMBOL(nouveau_platform_device_create_); ...@@ -1086,6 +1088,11 @@ EXPORT_SYMBOL(nouveau_platform_device_create_);
static int __init static int __init
nouveau_drm_init(void) nouveau_drm_init(void)
{ {
driver_pci = driver_stub;
driver_pci.set_busid = drm_pci_set_busid;
driver_platform = driver_stub;
driver_platform.set_busid = drm_platform_set_busid;
if (nouveau_modeset == -1) { if (nouveau_modeset == -1) {
#ifdef CONFIG_VGA_CONSOLE #ifdef CONFIG_VGA_CONSOLE
if (vgacon_text_force()) if (vgacon_text_force())
...@@ -1097,7 +1104,7 @@ nouveau_drm_init(void) ...@@ -1097,7 +1104,7 @@ nouveau_drm_init(void)
return 0; return 0;
nouveau_register_dsm_handler(); nouveau_register_dsm_handler();
return drm_pci_init(&driver, &nouveau_drm_pci_driver); return drm_pci_init(&driver_pci, &nouveau_drm_pci_driver);
} }
static void __exit static void __exit
...@@ -1106,7 +1113,7 @@ nouveau_drm_exit(void) ...@@ -1106,7 +1113,7 @@ nouveau_drm_exit(void)
if (!nouveau_modeset) if (!nouveau_modeset)
return; return;
drm_pci_exit(&driver, &nouveau_drm_pci_driver); drm_pci_exit(&driver_pci, &nouveau_drm_pci_driver);
nouveau_unregister_dsm_handler(); nouveau_unregister_dsm_handler();
} }
......
...@@ -629,6 +629,7 @@ static struct drm_driver omap_drm_driver = { ...@@ -629,6 +629,7 @@ static struct drm_driver omap_drm_driver = {
.lastclose = dev_lastclose, .lastclose = dev_lastclose,
.preclose = dev_preclose, .preclose = dev_preclose,
.postclose = dev_postclose, .postclose = dev_postclose,
.set_busid = drm_platform_set_busid,
.get_vblank_counter = drm_vblank_count, .get_vblank_counter = drm_vblank_count,
.enable_vblank = omap_irq_enable_vblank, .enable_vblank = omap_irq_enable_vblank,
.disable_vblank = omap_irq_disable_vblank, .disable_vblank = omap_irq_disable_vblank,
......
...@@ -235,6 +235,8 @@ static struct drm_driver qxl_driver = { ...@@ -235,6 +235,8 @@ static struct drm_driver qxl_driver = {
.enable_vblank = qxl_noop_enable_vblank, .enable_vblank = qxl_noop_enable_vblank,
.disable_vblank = qxl_noop_disable_vblank, .disable_vblank = qxl_noop_disable_vblank,
.set_busid = drm_pci_set_busid,
.dumb_create = qxl_mode_dumb_create, .dumb_create = qxl_mode_dumb_create,
.dumb_map_offset = qxl_mode_dumb_mmap, .dumb_map_offset = qxl_mode_dumb_mmap,
.dumb_destroy = drm_gem_dumb_destroy, .dumb_destroy = drm_gem_dumb_destroy,
......
...@@ -62,6 +62,7 @@ static struct drm_driver driver = { ...@@ -62,6 +62,7 @@ static struct drm_driver driver = {
.load = r128_driver_load, .load = r128_driver_load,
.preclose = r128_driver_preclose, .preclose = r128_driver_preclose,
.lastclose = r128_driver_lastclose, .lastclose = r128_driver_lastclose,
.set_busid = drm_pci_set_busid,
.get_vblank_counter = r128_get_vblank_counter, .get_vblank_counter = r128_get_vblank_counter,
.enable_vblank = r128_enable_vblank, .enable_vblank = r128_enable_vblank,
.disable_vblank = r128_disable_vblank, .disable_vblank = r128_disable_vblank,
......
...@@ -328,6 +328,7 @@ static struct drm_driver driver_old = { ...@@ -328,6 +328,7 @@ static struct drm_driver driver_old = {
.preclose = radeon_driver_preclose, .preclose = radeon_driver_preclose,
.postclose = radeon_driver_postclose, .postclose = radeon_driver_postclose,
.lastclose = radeon_driver_lastclose, .lastclose = radeon_driver_lastclose,
.set_busid = drm_pci_set_busid,
.unload = radeon_driver_unload, .unload = radeon_driver_unload,
.suspend = radeon_suspend, .suspend = radeon_suspend,
.resume = radeon_resume, .resume = radeon_resume,
...@@ -551,6 +552,7 @@ static struct drm_driver kms_driver = { ...@@ -551,6 +552,7 @@ static struct drm_driver kms_driver = {
.preclose = radeon_driver_preclose_kms, .preclose = radeon_driver_preclose_kms,
.postclose = radeon_driver_postclose_kms, .postclose = radeon_driver_postclose_kms,
.lastclose = radeon_driver_lastclose_kms, .lastclose = radeon_driver_lastclose_kms,
.set_busid = drm_pci_set_busid,
.unload = radeon_driver_unload_kms, .unload = radeon_driver_unload_kms,
.get_vblank_counter = radeon_get_vblank_counter_kms, .get_vblank_counter = radeon_get_vblank_counter_kms,
.enable_vblank = radeon_enable_vblank_kms, .enable_vblank = radeon_enable_vblank_kms,
......
...@@ -158,6 +158,7 @@ static struct drm_driver rcar_du_driver = { ...@@ -158,6 +158,7 @@ static struct drm_driver rcar_du_driver = {
.unload = rcar_du_unload, .unload = rcar_du_unload,
.preclose = rcar_du_preclose, .preclose = rcar_du_preclose,
.lastclose = rcar_du_lastclose, .lastclose = rcar_du_lastclose,
.set_busid = drm_platform_set_busid,
.get_vblank_counter = drm_vblank_count, .get_vblank_counter = drm_vblank_count,
.enable_vblank = rcar_du_enable_vblank, .enable_vblank = rcar_du_enable_vblank,
.disable_vblank = rcar_du_disable_vblank, .disable_vblank = rcar_du_disable_vblank,
......
...@@ -57,6 +57,7 @@ static struct drm_driver driver = { ...@@ -57,6 +57,7 @@ static struct drm_driver driver = {
.preclose = savage_reclaim_buffers, .preclose = savage_reclaim_buffers,
.lastclose = savage_driver_lastclose, .lastclose = savage_driver_lastclose,
.unload = savage_driver_unload, .unload = savage_driver_unload,
.set_busid = drm_pci_set_busid,
.ioctls = savage_ioctls, .ioctls = savage_ioctls,
.dma_ioctl = savage_bci_buffers, .dma_ioctl = savage_bci_buffers,
.fops = &savage_driver_fops, .fops = &savage_driver_fops,
......
...@@ -267,6 +267,7 @@ static struct drm_driver shmob_drm_driver = { ...@@ -267,6 +267,7 @@ static struct drm_driver shmob_drm_driver = {
.load = shmob_drm_load, .load = shmob_drm_load,
.unload = shmob_drm_unload, .unload = shmob_drm_unload,
.preclose = shmob_drm_preclose, .preclose = shmob_drm_preclose,
.set_busid = drm_platform_set_busid,
.irq_handler = shmob_drm_irq, .irq_handler = shmob_drm_irq,
.get_vblank_counter = drm_vblank_count, .get_vblank_counter = drm_vblank_count,
.enable_vblank = shmob_drm_enable_vblank, .enable_vblank = shmob_drm_enable_vblank,
......
...@@ -108,6 +108,7 @@ static struct drm_driver driver = { ...@@ -108,6 +108,7 @@ static struct drm_driver driver = {
.open = sis_driver_open, .open = sis_driver_open,
.preclose = sis_reclaim_buffers_locked, .preclose = sis_reclaim_buffers_locked,
.postclose = sis_driver_postclose, .postclose = sis_driver_postclose,
.set_busid = drm_pci_set_busid,
.dma_quiescent = sis_idle, .dma_quiescent = sis_idle,
.lastclose = sis_lastclose, .lastclose = sis_lastclose,
.ioctls = sis_ioctls, .ioctls = sis_ioctls,
......
...@@ -55,6 +55,7 @@ static const struct file_operations tdfx_driver_fops = { ...@@ -55,6 +55,7 @@ static const struct file_operations tdfx_driver_fops = {
}; };
static struct drm_driver driver = { static struct drm_driver driver = {
.set_busid = drm_pci_set_busid,
.fops = &tdfx_driver_fops, .fops = &tdfx_driver_fops,
.name = DRIVER_NAME, .name = DRIVER_NAME,
.desc = DRIVER_DESC, .desc = DRIVER_DESC,
......
...@@ -502,6 +502,7 @@ static struct drm_driver tilcdc_driver = { ...@@ -502,6 +502,7 @@ static struct drm_driver tilcdc_driver = {
.unload = tilcdc_unload, .unload = tilcdc_unload,
.preclose = tilcdc_preclose, .preclose = tilcdc_preclose,
.lastclose = tilcdc_lastclose, .lastclose = tilcdc_lastclose,
.set_busid = drm_platform_set_busid,
.irq_handler = tilcdc_irq, .irq_handler = tilcdc_irq,
.irq_preinstall = tilcdc_irq_preinstall, .irq_preinstall = tilcdc_irq_preinstall,
.irq_postinstall = tilcdc_irq_postinstall, .irq_postinstall = tilcdc_irq_postinstall,
......
...@@ -34,6 +34,11 @@ MODULE_DEVICE_TABLE(usb, id_table); ...@@ -34,6 +34,11 @@ MODULE_DEVICE_TABLE(usb, id_table);
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
static int udl_driver_set_busid(struct drm_device *d, struct drm_master *m)
{
return 0;
}
static int udl_usb_probe(struct usb_interface *interface, static int udl_usb_probe(struct usb_interface *interface,
const struct usb_device_id *id) const struct usb_device_id *id)
{ {
...@@ -75,6 +80,7 @@ static struct drm_driver driver = { ...@@ -75,6 +80,7 @@ static struct drm_driver driver = {
.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_PRIME, .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_PRIME,
.load = udl_driver_load, .load = udl_driver_load,
.unload = udl_driver_unload, .unload = udl_driver_unload,
.set_busid = udl_driver_set_busid,
/* gem hooks */ /* gem hooks */
.gem_free_object = udl_gem_free_object, .gem_free_object = udl_gem_free_object,
......
...@@ -79,6 +79,7 @@ static struct drm_driver driver = { ...@@ -79,6 +79,7 @@ static struct drm_driver driver = {
.open = via_driver_open, .open = via_driver_open,
.preclose = via_reclaim_buffers_locked, .preclose = via_reclaim_buffers_locked,
.postclose = via_driver_postclose, .postclose = via_driver_postclose,
.set_busid = drm_pci_set_busid,
.context_dtor = via_final_context, .context_dtor = via_final_context,
.get_vblank_counter = via_get_vblank_counter, .get_vblank_counter = via_get_vblank_counter,
.enable_vblank = via_enable_vblank, .enable_vblank = via_enable_vblank,
......
...@@ -1418,6 +1418,7 @@ static struct drm_driver driver = { ...@@ -1418,6 +1418,7 @@ static struct drm_driver driver = {
.open = vmw_driver_open, .open = vmw_driver_open,
.preclose = vmw_preclose, .preclose = vmw_preclose,
.postclose = vmw_postclose, .postclose = vmw_postclose,
.set_busid = drm_pci_set_busid,
.dumb_create = vmw_dumb_create, .dumb_create = vmw_dumb_create,
.dumb_map_offset = vmw_dumb_map_offset, .dumb_map_offset = vmw_dumb_map_offset,
......
...@@ -528,6 +528,7 @@ static struct drm_driver imx_drm_driver = { ...@@ -528,6 +528,7 @@ static struct drm_driver imx_drm_driver = {
.unload = imx_drm_driver_unload, .unload = imx_drm_driver_unload,
.lastclose = imx_drm_driver_lastclose, .lastclose = imx_drm_driver_lastclose,
.preclose = imx_drm_driver_preclose, .preclose = imx_drm_driver_preclose,
.set_busid = drm_platform_set_busid,
.gem_free_object = drm_gem_cma_free_object, .gem_free_object = drm_gem_cma_free_object,
.gem_vm_ops = &drm_gem_cma_vm_ops, .gem_vm_ops = &drm_gem_cma_vm_ops,
.dumb_create = drm_gem_cma_dumb_create, .dumb_create = drm_gem_cma_dumb_create,
......
...@@ -627,6 +627,7 @@ struct drm_driver { ...@@ -627,6 +627,7 @@ struct drm_driver {
int (*dma_ioctl) (struct drm_device *dev, void *data, struct drm_file *file_priv); int (*dma_ioctl) (struct drm_device *dev, void *data, struct drm_file *file_priv);
int (*dma_quiescent) (struct drm_device *); int (*dma_quiescent) (struct drm_device *);
int (*context_dtor) (struct drm_device *dev, int context); int (*context_dtor) (struct drm_device *dev, int context);
int (*set_busid)(struct drm_device *dev, struct drm_master *master);
/** /**
* get_vblank_counter - get raw hardware vblank counter * get_vblank_counter - get raw hardware vblank counter
...@@ -1498,6 +1499,7 @@ extern void drm_pci_exit(struct drm_driver *driver, struct pci_driver *pdriver); ...@@ -1498,6 +1499,7 @@ extern void drm_pci_exit(struct drm_driver *driver, struct pci_driver *pdriver);
extern int drm_get_pci_dev(struct pci_dev *pdev, extern int drm_get_pci_dev(struct pci_dev *pdev,
const struct pci_device_id *ent, const struct pci_device_id *ent,
struct drm_driver *driver); struct drm_driver *driver);
extern int drm_pci_set_busid(struct drm_device *dev, struct drm_master *master);
#define DRM_PCIE_SPEED_25 1 #define DRM_PCIE_SPEED_25 1
#define DRM_PCIE_SPEED_50 2 #define DRM_PCIE_SPEED_50 2
...@@ -1507,6 +1509,7 @@ extern int drm_pcie_get_speed_cap_mask(struct drm_device *dev, u32 *speed_mask); ...@@ -1507,6 +1509,7 @@ extern int drm_pcie_get_speed_cap_mask(struct drm_device *dev, u32 *speed_mask);
/* platform section */ /* platform section */
extern int drm_platform_init(struct drm_driver *driver, struct platform_device *platform_device); extern int drm_platform_init(struct drm_driver *driver, struct platform_device *platform_device);
extern int drm_platform_set_busid(struct drm_device *d, struct drm_master *m);
/* returns true if currently okay to sleep */ /* returns true if currently okay to sleep */
static __inline__ bool drm_can_sleep(void) static __inline__ bool drm_can_sleep(void)
......
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