Lines Matching refs:dev

101 int drm_irq_install(struct drm_device *dev, int irq)  in drm_irq_install()  argument
106 if (!drm_core_check_feature(dev, DRIVER_HAVE_IRQ)) in drm_irq_install()
113 if (!dev->dev_private) in drm_irq_install()
116 if (dev->irq_enabled) in drm_irq_install()
118 dev->irq_enabled = true; in drm_irq_install()
123 if (dev->driver->irq_preinstall) in drm_irq_install()
124 dev->driver->irq_preinstall(dev); in drm_irq_install()
127 if (drm_core_check_feature(dev, DRIVER_IRQ_SHARED)) in drm_irq_install()
130 ret = request_irq(irq, dev->driver->irq_handler, in drm_irq_install()
131 sh_flags, dev->driver->name, dev); in drm_irq_install()
134 dev->irq_enabled = false; in drm_irq_install()
139 if (dev->driver->irq_postinstall) in drm_irq_install()
140 ret = dev->driver->irq_postinstall(dev); in drm_irq_install()
143 dev->irq_enabled = false; in drm_irq_install()
145 if (drm_core_check_feature(dev, DRIVER_LEGACY)) in drm_irq_install()
146 vga_client_register(dev->pdev, NULL, NULL, NULL); in drm_irq_install()
148 free_irq(irq, dev); in drm_irq_install()
150 dev->irq = irq; in drm_irq_install()
173 int drm_irq_uninstall(struct drm_device *dev) in drm_irq_uninstall() argument
179 if (!drm_core_check_feature(dev, DRIVER_HAVE_IRQ)) in drm_irq_uninstall()
182 irq_enabled = dev->irq_enabled; in drm_irq_uninstall()
183 dev->irq_enabled = false; in drm_irq_uninstall()
191 if (dev->num_crtcs) { in drm_irq_uninstall()
192 spin_lock_irqsave(&dev->vbl_lock, irqflags); in drm_irq_uninstall()
193 for (i = 0; i < dev->num_crtcs; i++) { in drm_irq_uninstall()
194 struct drm_vblank_crtc *vblank = &dev->vblank[i]; in drm_irq_uninstall()
199 WARN_ON(drm_core_check_feature(dev, DRIVER_MODESET)); in drm_irq_uninstall()
201 drm_vblank_disable_and_save(dev, i); in drm_irq_uninstall()
204 spin_unlock_irqrestore(&dev->vbl_lock, irqflags); in drm_irq_uninstall()
210 DRM_DEBUG("irq=%d\n", dev->irq); in drm_irq_uninstall()
213 if (drm_core_check_feature(dev, DRIVER_LEGACY)) in drm_irq_uninstall()
214 vga_client_register(dev->pdev, NULL, NULL, NULL); in drm_irq_uninstall()
217 if (dev->driver->irq_uninstall) in drm_irq_uninstall()
218 dev->driver->irq_uninstall(dev); in drm_irq_uninstall()
220 free_irq(dev->irq, dev); in drm_irq_uninstall()
226 int drm_legacy_irq_control(struct drm_device *dev, void *data, in drm_legacy_irq_control() argument
236 if (!drm_core_check_feature(dev, DRIVER_HAVE_IRQ)) in drm_legacy_irq_control()
238 if (!drm_core_check_feature(dev, DRIVER_LEGACY)) in drm_legacy_irq_control()
241 if (WARN_ON(!dev->pdev)) in drm_legacy_irq_control()
246 irq = dev->pdev->irq; in drm_legacy_irq_control()
248 if (dev->if_version < DRM_IF_VERSION(1, 2) && in drm_legacy_irq_control()
251 mutex_lock(&dev->struct_mutex); in drm_legacy_irq_control()
252 ret = drm_irq_install(dev, irq); in drm_legacy_irq_control()
253 mutex_unlock(&dev->struct_mutex); in drm_legacy_irq_control()
257 mutex_lock(&dev->struct_mutex); in drm_legacy_irq_control()
258 ret = drm_irq_uninstall(dev); in drm_legacy_irq_control()
259 mutex_unlock(&dev->struct_mutex); in drm_legacy_irq_control()