Commit 5037f8ac authored by Joonyoung Shim's avatar Joonyoung Shim Committed by Dave Airlie

drm: Add NULL check about irq functions

The struct drm_driver has some function pointers for irq. They are
gpu specific and some functions aren't essential things. This can
prevents creation of unnecessary dummy function for irq.
Signed-off-by: default avatarJoonyoung Shim <jy0922.shim@samsung.com>
Signed-off-by: default avatarKyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent e1c44acc
...@@ -291,11 +291,14 @@ static void drm_irq_vgaarb_nokms(void *cookie, bool state) ...@@ -291,11 +291,14 @@ static void drm_irq_vgaarb_nokms(void *cookie, bool state)
if (!dev->irq_enabled) if (!dev->irq_enabled)
return; return;
if (state) if (state) {
dev->driver->irq_uninstall(dev); if (dev->driver->irq_uninstall)
else { dev->driver->irq_uninstall(dev);
dev->driver->irq_preinstall(dev); } else {
dev->driver->irq_postinstall(dev); if (dev->driver->irq_preinstall)
dev->driver->irq_preinstall(dev);
if (dev->driver->irq_postinstall)
dev->driver->irq_postinstall(dev);
} }
} }
...@@ -338,7 +341,8 @@ int drm_irq_install(struct drm_device *dev) ...@@ -338,7 +341,8 @@ int drm_irq_install(struct drm_device *dev)
DRM_DEBUG("irq=%d\n", drm_dev_to_irq(dev)); DRM_DEBUG("irq=%d\n", drm_dev_to_irq(dev));
/* Before installing handler */ /* Before installing handler */
dev->driver->irq_preinstall(dev); if (dev->driver->irq_preinstall)
dev->driver->irq_preinstall(dev);
/* Install handler */ /* Install handler */
if (drm_core_check_feature(dev, DRIVER_IRQ_SHARED)) if (drm_core_check_feature(dev, DRIVER_IRQ_SHARED))
...@@ -363,7 +367,9 @@ int drm_irq_install(struct drm_device *dev) ...@@ -363,7 +367,9 @@ int drm_irq_install(struct drm_device *dev)
vga_client_register(dev->pdev, (void *)dev, drm_irq_vgaarb_nokms, NULL); vga_client_register(dev->pdev, (void *)dev, drm_irq_vgaarb_nokms, NULL);
/* After installing handler */ /* After installing handler */
ret = dev->driver->irq_postinstall(dev); if (dev->driver->irq_postinstall)
ret = dev->driver->irq_postinstall(dev);
if (ret < 0) { if (ret < 0) {
mutex_lock(&dev->struct_mutex); mutex_lock(&dev->struct_mutex);
dev->irq_enabled = 0; dev->irq_enabled = 0;
...@@ -416,7 +422,8 @@ int drm_irq_uninstall(struct drm_device *dev) ...@@ -416,7 +422,8 @@ int drm_irq_uninstall(struct drm_device *dev)
if (!drm_core_check_feature(dev, DRIVER_MODESET)) if (!drm_core_check_feature(dev, DRIVER_MODESET))
vga_client_register(dev->pdev, NULL, NULL, NULL); vga_client_register(dev->pdev, NULL, NULL, NULL);
dev->driver->irq_uninstall(dev); if (dev->driver->irq_uninstall)
dev->driver->irq_uninstall(dev);
free_irq(drm_dev_to_irq(dev), dev); free_irq(drm_dev_to_irq(dev), dev);
......
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