drm: Add support for platform devices to register as DRM devices
Allow platform devices without PCI resources to be DRM devices. [airlied: fixup warnings with dev pointers] Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
committed by
Dave Airlie
parent
01d73a6967
commit
dcdb167402
@@ -57,6 +57,9 @@ int drm_irq_by_busid(struct drm_device *dev, void *data,
|
||||
{
|
||||
struct drm_irq_busid *p = data;
|
||||
|
||||
if (drm_core_check_feature(dev, DRIVER_USE_PLATFORM_DEVICE))
|
||||
return -EINVAL;
|
||||
|
||||
if (!drm_core_check_feature(dev, DRIVER_HAVE_IRQ))
|
||||
return -EINVAL;
|
||||
|
||||
@@ -211,7 +214,7 @@ int drm_irq_install(struct drm_device *dev)
|
||||
if (!drm_core_check_feature(dev, DRIVER_HAVE_IRQ))
|
||||
return -EINVAL;
|
||||
|
||||
if (dev->pdev->irq == 0)
|
||||
if (drm_dev_to_irq(dev) == 0)
|
||||
return -EINVAL;
|
||||
|
||||
mutex_lock(&dev->struct_mutex);
|
||||
@@ -229,7 +232,7 @@ int drm_irq_install(struct drm_device *dev)
|
||||
dev->irq_enabled = 1;
|
||||
mutex_unlock(&dev->struct_mutex);
|
||||
|
||||
DRM_DEBUG("irq=%d\n", dev->pdev->irq);
|
||||
DRM_DEBUG("irq=%d\n", drm_dev_to_irq(dev));
|
||||
|
||||
/* Before installing handler */
|
||||
dev->driver->irq_preinstall(dev);
|
||||
@@ -302,14 +305,14 @@ int drm_irq_uninstall(struct drm_device * dev)
|
||||
if (!irq_enabled)
|
||||
return -EINVAL;
|
||||
|
||||
DRM_DEBUG("irq=%d\n", dev->pdev->irq);
|
||||
DRM_DEBUG("irq=%d\n", drm_dev_to_irq(dev));
|
||||
|
||||
if (!drm_core_check_feature(dev, DRIVER_MODESET))
|
||||
vga_client_register(dev->pdev, NULL, NULL, NULL);
|
||||
|
||||
dev->driver->irq_uninstall(dev);
|
||||
|
||||
free_irq(dev->pdev->irq, dev);
|
||||
free_irq(drm_dev_to_irq(dev), dev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -341,7 +344,7 @@ int drm_control(struct drm_device *dev, void *data,
|
||||
if (drm_core_check_feature(dev, DRIVER_MODESET))
|
||||
return 0;
|
||||
if (dev->if_version < DRM_IF_VERSION(1, 2) &&
|
||||
ctl->irq != dev->pdev->irq)
|
||||
ctl->irq != drm_dev_to_irq(dev))
|
||||
return -EINVAL;
|
||||
return drm_irq_install(dev);
|
||||
case DRM_UNINST_HANDLER:
|
||||
@@ -651,7 +654,7 @@ int drm_wait_vblank(struct drm_device *dev, void *data,
|
||||
int ret = 0;
|
||||
unsigned int flags, seq, crtc;
|
||||
|
||||
if ((!dev->pdev->irq) || (!dev->irq_enabled))
|
||||
if ((!drm_dev_to_irq(dev)) || (!dev->irq_enabled))
|
||||
return -EINVAL;
|
||||
|
||||
if (vblwait->request.type & _DRM_VBLANK_SIGNAL)
|
||||
|
Reference in New Issue
Block a user