Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/qxl: Convert to Linux IRQ interfaces

Drop the DRM IRQ midlayer in favor of Linux IRQ interfaces. DRM's
IRQ helpers are mostly useful for UMS drivers. Modern KMS drivers
don't benefit from using it.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Acked-by: Sam Ravnborg <sam@ravnborg.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20210706074735.8849-1-tzimmermann@suse.de

+5 -6
-1
drivers/gpu/drm/qxl/qxl_drv.c
··· 283 283 .gem_prime_import_sg_table = qxl_gem_prime_import_sg_table, 284 284 .fops = &qxl_fops, 285 285 .ioctls = qxl_ioctls, 286 - .irq_handler = qxl_irq_handler, 287 286 .name = DRIVER_NAME, 288 287 .desc = DRIVER_DESC, 289 288 .date = DRIVER_DATE,
-1
drivers/gpu/drm/qxl/qxl_drv.h
··· 437 437 438 438 /* qxl_irq.c */ 439 439 int qxl_irq_init(struct qxl_device *qdev); 440 - irqreturn_t qxl_irq_handler(int irq, void *arg); 441 440 442 441 void qxl_debugfs_add_files(struct qxl_device *qdev, 443 442 struct drm_info_list *files,
+5 -4
drivers/gpu/drm/qxl/qxl_irq.c
··· 25 25 26 26 #include <linux/pci.h> 27 27 28 - #include <drm/drm_irq.h> 28 + #include <drm/drm_drv.h> 29 29 30 30 #include "qxl_drv.h" 31 31 32 - irqreturn_t qxl_irq_handler(int irq, void *arg) 32 + static irqreturn_t qxl_irq_handler(int irq, void *arg) 33 33 { 34 34 struct drm_device *dev = (struct drm_device *) arg; 35 35 struct qxl_device *qdev = to_qxl(dev); ··· 81 81 82 82 int qxl_irq_init(struct qxl_device *qdev) 83 83 { 84 - struct pci_dev *pdev = to_pci_dev(qdev->ddev.dev); 84 + struct drm_device *ddev = &qdev->ddev; 85 + struct pci_dev *pdev = to_pci_dev(ddev->dev); 85 86 int ret; 86 87 87 88 init_waitqueue_head(&qdev->display_event); ··· 96 95 atomic_set(&qdev->irq_received_cursor, 0); 97 96 atomic_set(&qdev->irq_received_io_cmd, 0); 98 97 qdev->irq_received_error = 0; 99 - ret = drm_irq_install(&qdev->ddev, pdev->irq); 98 + ret = request_irq(pdev->irq, qxl_irq_handler, IRQF_SHARED, ddev->driver->name, ddev); 100 99 qdev->ram_header->int_mask = QXL_INTERRUPT_MASK; 101 100 if (unlikely(ret != 0)) { 102 101 DRM_ERROR("Failed installing irq: %d\n", ret);