Commit 48bd8580 authored by Thomas Zimmermann's avatar Thomas Zimmermann

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: default avatarThomas Zimmermann <tzimmermann@suse.de>
Acked-by: default avatarSam Ravnborg <sam@ravnborg.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20210706074735.8849-1-tzimmermann@suse.de
parent 27da370e
...@@ -283,7 +283,6 @@ static struct drm_driver qxl_driver = { ...@@ -283,7 +283,6 @@ static struct drm_driver qxl_driver = {
.gem_prime_import_sg_table = qxl_gem_prime_import_sg_table, .gem_prime_import_sg_table = qxl_gem_prime_import_sg_table,
.fops = &qxl_fops, .fops = &qxl_fops,
.ioctls = qxl_ioctls, .ioctls = qxl_ioctls,
.irq_handler = qxl_irq_handler,
.name = DRIVER_NAME, .name = DRIVER_NAME,
.desc = DRIVER_DESC, .desc = DRIVER_DESC,
.date = DRIVER_DATE, .date = DRIVER_DATE,
......
...@@ -437,7 +437,6 @@ void qxl_gem_prime_vunmap(struct drm_gem_object *obj, ...@@ -437,7 +437,6 @@ void qxl_gem_prime_vunmap(struct drm_gem_object *obj,
/* qxl_irq.c */ /* qxl_irq.c */
int qxl_irq_init(struct qxl_device *qdev); int qxl_irq_init(struct qxl_device *qdev);
irqreturn_t qxl_irq_handler(int irq, void *arg);
void qxl_debugfs_add_files(struct qxl_device *qdev, void qxl_debugfs_add_files(struct qxl_device *qdev,
struct drm_info_list *files, struct drm_info_list *files,
......
...@@ -25,11 +25,11 @@ ...@@ -25,11 +25,11 @@
#include <linux/pci.h> #include <linux/pci.h>
#include <drm/drm_irq.h> #include <drm/drm_drv.h>
#include "qxl_drv.h" #include "qxl_drv.h"
irqreturn_t qxl_irq_handler(int irq, void *arg) static irqreturn_t qxl_irq_handler(int irq, void *arg)
{ {
struct drm_device *dev = (struct drm_device *) arg; struct drm_device *dev = (struct drm_device *) arg;
struct qxl_device *qdev = to_qxl(dev); struct qxl_device *qdev = to_qxl(dev);
...@@ -81,7 +81,8 @@ static void qxl_client_monitors_config_work_func(struct work_struct *work) ...@@ -81,7 +81,8 @@ static void qxl_client_monitors_config_work_func(struct work_struct *work)
int qxl_irq_init(struct qxl_device *qdev) int qxl_irq_init(struct qxl_device *qdev)
{ {
struct pci_dev *pdev = to_pci_dev(qdev->ddev.dev); struct drm_device *ddev = &qdev->ddev;
struct pci_dev *pdev = to_pci_dev(ddev->dev);
int ret; int ret;
init_waitqueue_head(&qdev->display_event); init_waitqueue_head(&qdev->display_event);
...@@ -95,7 +96,7 @@ int qxl_irq_init(struct qxl_device *qdev) ...@@ -95,7 +96,7 @@ int qxl_irq_init(struct qxl_device *qdev)
atomic_set(&qdev->irq_received_cursor, 0); atomic_set(&qdev->irq_received_cursor, 0);
atomic_set(&qdev->irq_received_io_cmd, 0); atomic_set(&qdev->irq_received_io_cmd, 0);
qdev->irq_received_error = 0; qdev->irq_received_error = 0;
ret = drm_irq_install(&qdev->ddev, pdev->irq); ret = request_irq(pdev->irq, qxl_irq_handler, IRQF_SHARED, ddev->driver->name, ddev);
qdev->ram_header->int_mask = QXL_INTERRUPT_MASK; qdev->ram_header->int_mask = QXL_INTERRUPT_MASK;
if (unlikely(ret != 0)) { if (unlikely(ret != 0)) {
DRM_ERROR("Failed installing irq: %d\n", ret); DRM_ERROR("Failed installing irq: %d\n", ret);
......
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