mirror of
https://github.com/S3NEO/android_kernel_samsung_msm8226.git
synced 2024-11-07 03:47:13 +00:00
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: Joonyoung Shim <jy0922.shim@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
e1c44acc8c
commit
5037f8acf4
1 changed files with 15 additions and 8 deletions
|
@ -291,11 +291,14 @@ static void drm_irq_vgaarb_nokms(void *cookie, bool state)
|
|||
if (!dev->irq_enabled)
|
||||
return;
|
||||
|
||||
if (state)
|
||||
dev->driver->irq_uninstall(dev);
|
||||
else {
|
||||
dev->driver->irq_preinstall(dev);
|
||||
dev->driver->irq_postinstall(dev);
|
||||
if (state) {
|
||||
if (dev->driver->irq_uninstall)
|
||||
dev->driver->irq_uninstall(dev);
|
||||
} else {
|
||||
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)
|
|||
DRM_DEBUG("irq=%d\n", drm_dev_to_irq(dev));
|
||||
|
||||
/* Before installing handler */
|
||||
dev->driver->irq_preinstall(dev);
|
||||
if (dev->driver->irq_preinstall)
|
||||
dev->driver->irq_preinstall(dev);
|
||||
|
||||
/* Install handler */
|
||||
if (drm_core_check_feature(dev, DRIVER_IRQ_SHARED))
|
||||
|
@ -363,7 +367,9 @@ int drm_irq_install(struct drm_device *dev)
|
|||
vga_client_register(dev->pdev, (void *)dev, drm_irq_vgaarb_nokms, NULL);
|
||||
|
||||
/* After installing handler */
|
||||
ret = dev->driver->irq_postinstall(dev);
|
||||
if (dev->driver->irq_postinstall)
|
||||
ret = dev->driver->irq_postinstall(dev);
|
||||
|
||||
if (ret < 0) {
|
||||
mutex_lock(&dev->struct_mutex);
|
||||
dev->irq_enabled = 0;
|
||||
|
@ -416,7 +422,8 @@ int drm_irq_uninstall(struct drm_device *dev)
|
|||
if (!drm_core_check_feature(dev, DRIVER_MODESET))
|
||||
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);
|
||||
|
||||
|
|
Loading…
Reference in a new issue