Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1ff49481 authored by Daniel Vetter's avatar Daniel Vetter
Browse files

drm/irq: Ditch DRIVER_IRQ_SHARED



This is only used by drm_irq_install(), which is an optional helper.
For legacy pci devices this is required (due to interrupt sharing without
msi/msi-x), and just making this the default exactly matches the behaviour
of all existing drivers using the drm_irq_install() helpers. In case that
ever becomes wrong drivers can roll their own irq handling, as many
drivers already do (for other reasons like needing a threaded interrupt
handler, or having an entire pile of different interrupt sources).

v2: Rebase

v3: Improve commit message (Emil)

Cc: Sam Ravnborg <sam@ravnborg.org>
Reviewed-by: default avatarEmil Velikov <emil.velikov@collabora.com>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190129104248.26607-3-daniel.vetter@ffwll.ch
parent 0e2a933b
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1189,7 +1189,7 @@ amdgpu_get_crtc_scanout_position(struct drm_device *dev, unsigned int pipe,
static struct drm_driver kms_driver = {
	.driver_features =
	    DRIVER_USE_AGP | DRIVER_ATOMIC |
	    DRIVER_IRQ_SHARED | DRIVER_GEM |
	    DRIVER_GEM |
	    DRIVER_PRIME | DRIVER_RENDER | DRIVER_MODESET | DRIVER_SYNCOBJ,
	.load = amdgpu_driver_load_kms,
	.open = amdgpu_driver_open_kms,
+2 −2
Original line number Diff line number Diff line
@@ -120,8 +120,8 @@ int drm_irq_install(struct drm_device *dev, int irq)
	if (dev->driver->irq_preinstall)
		dev->driver->irq_preinstall(dev);

	/* Install handler */
	if (drm_core_check_feature(dev, DRIVER_IRQ_SHARED))
	/* PCI devices require shared interrupts. */
	if (dev->pdev)
		sh_flags = IRQF_SHARED;

	ret = request_irq(irq, dev->driver->irq_handler,
+1 −2
Original line number Diff line number Diff line
@@ -468,8 +468,7 @@ static const struct file_operations psb_gem_fops = {
};

static struct drm_driver driver = {
	.driver_features = DRIVER_IRQ_SHARED | \
			   DRIVER_MODESET | DRIVER_GEM,
	.driver_features = DRIVER_MODESET | DRIVER_GEM,
	.load = psb_driver_load,
	.unload = psb_driver_unload,
	.lastclose = drm_fb_helper_lastclose,
+1 −1
Original line number Diff line number Diff line
@@ -3209,7 +3209,7 @@ static struct drm_driver driver = {
	 * deal with them for Intel hardware.
	 */
	.driver_features =
	    DRIVER_IRQ_SHARED | DRIVER_GEM | DRIVER_PRIME |
	    DRIVER_GEM | DRIVER_PRIME |
	    DRIVER_RENDER | DRIVER_MODESET | DRIVER_ATOMIC | DRIVER_SYNCOBJ,
	.release = i915_driver_release,
	.open = i915_driver_open,
+1 −1
Original line number Diff line number Diff line
@@ -57,7 +57,7 @@ static const struct file_operations mga_driver_fops = {
static struct drm_driver driver = {
	.driver_features =
	    DRIVER_USE_AGP | DRIVER_PCI_DMA | DRIVER_LEGACY |
	    DRIVER_HAVE_DMA | DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED,
	    DRIVER_HAVE_DMA | DRIVER_HAVE_IRQ,
	.dev_priv_size = sizeof(drm_mga_buf_priv_t),
	.load = mga_driver_load,
	.unload = mga_driver_unload,
Loading