From: Daniel Vetter <daniel.vetter@ffwll.ch> To: DRI Development <dri-devel@lists.freedesktop.org> Cc: Daniel Vetter <daniel.vetter@ffwll.ch> Subject: [PATCH 39/50] drm: pass the irq explicitly to drm_irq_install Date: Wed, 11 Dec 2013 11:35:00 +0100 [thread overview] Message-ID: <1386758111-3446-40-git-send-email-daniel.vetter@ffwll.ch> (raw) In-Reply-To: <1386758111-3446-1-git-send-email-daniel.vetter@ffwll.ch> Unfortunately this requires a drm-wide change, and I didn't see a sane way around that. Luckily it's fairly simple, we just need to inline the respective get_irq implementation from either drm_pci.c or drm_platform.c. With that we can now also remove drm_dev_to_irq from drm_irq.c. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> --- Documentation/DocBook/drm.tmpl | 10 +--------- drivers/gpu/drm/armada/armada_drv.c | 2 +- drivers/gpu/drm/drm_irq.c | 13 +++---------- drivers/gpu/drm/gma500/psb_drv.c | 2 +- drivers/gpu/drm/i915/i915_dma.c | 2 +- drivers/gpu/drm/i915/i915_drv.c | 4 ++-- drivers/gpu/drm/i915/i915_gem.c | 2 +- drivers/gpu/drm/msm/msm_drv.c | 2 +- drivers/gpu/drm/qxl/qxl_irq.c | 2 +- drivers/gpu/drm/radeon/radeon_irq_kms.c | 2 +- drivers/gpu/drm/shmobile/shmob_drm_drv.c | 2 +- drivers/gpu/drm/tilcdc/tilcdc_drv.c | 2 +- drivers/gpu/drm/vmwgfx/vmwgfx_drv.c | 2 +- include/drm/drmP.h | 2 +- 14 files changed, 17 insertions(+), 32 deletions(-) diff --git a/Documentation/DocBook/drm.tmpl b/Documentation/DocBook/drm.tmpl index ed1d6d289022..f716c650af88 100644 --- a/Documentation/DocBook/drm.tmpl +++ b/Documentation/DocBook/drm.tmpl @@ -328,21 +328,13 @@ char *date;</synopsis> <sect4> <title>Managed IRQ Registration</title> <para> - Both the <function>drm_irq_install</function> and - <function>drm_irq_uninstall</function> functions get the device IRQ by - calling <function>drm_dev_to_irq</function>. This inline function will - call a bus-specific operation to retrieve the IRQ number. For platform - devices, <function>platform_get_irq</function>(..., 0) is used to - retrieve the IRQ number. - </para> - <para> <function>drm_irq_install</function> starts by calling the <methodname>irq_preinstall</methodname> driver operation. The operation is optional and must make sure that the interrupt will not get fired by clearing all pending interrupt flags or disabling the interrupt. </para> <para> - The IRQ will then be requested by a call to + The passed-in IRQ will then be requested by a call to <function>request_irq</function>. If the DRIVER_IRQ_SHARED driver feature flag is set, a shared (IRQF_SHARED) IRQ handler will be requested. diff --git a/drivers/gpu/drm/armada/armada_drv.c b/drivers/gpu/drm/armada/armada_drv.c index 069f64533ac3..7d6d1ad4fcc9 100644 --- a/drivers/gpu/drm/armada/armada_drv.c +++ b/drivers/gpu/drm/armada/armada_drv.c @@ -181,7 +181,7 @@ static int armada_drm_load(struct drm_device *dev, unsigned long flags) if (ret) goto err_kms; - ret = drm_irq_install(dev); + ret = drm_irq_install(dev, platform_get_irq(dev->platformdev, 0)); if (ret) goto err_kms; diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c index 24c6590bb33e..c1d1d909d24e 100644 --- a/drivers/gpu/drm/drm_irq.c +++ b/drivers/gpu/drm/drm_irq.c @@ -233,11 +233,6 @@ static void drm_irq_vgaarb_nokms(void *cookie, bool state) } } -static inline int drm_dev_to_irq(struct drm_device *dev) -{ - return dev->driver->bus->get_irq(dev); -} - /** * Install IRQ handler. * @@ -247,14 +242,12 @@ static inline int drm_dev_to_irq(struct drm_device *dev) * \c irq_preinstall() and \c irq_postinstall() functions * before and after the installation. */ -int drm_irq_install(struct drm_device *dev) +int drm_irq_install(struct drm_device *dev, int irq) { - int ret, irq; + int ret; unsigned long sh_flags = 0; char *irqname; - irq = drm_dev_to_irq(dev); - if (!drm_core_check_feature(dev, DRIVER_HAVE_IRQ)) return -EINVAL; @@ -400,7 +393,7 @@ int drm_control(struct drm_device *dev, void *data, return -EINVAL; mutex_lock(&dev->struct_mutex); - ret = drm_irq_install(dev); + ret = drm_irq_install(dev, irq); mutex_unlock(&dev->struct_mutex); return ret; diff --git a/drivers/gpu/drm/gma500/psb_drv.c b/drivers/gpu/drm/gma500/psb_drv.c index 1199180667c9..d00382632c7e 100644 --- a/drivers/gpu/drm/gma500/psb_drv.c +++ b/drivers/gpu/drm/gma500/psb_drv.c @@ -387,7 +387,7 @@ static int psb_driver_load(struct drm_device *dev, unsigned long chipset) PSB_WVDC32(0xFFFFFFFF, PSB_INT_MASK_R); spin_unlock_irqrestore(&dev_priv->irqmask_lock, irqflags); - drm_irq_install(dev); + drm_irq_install(dev, dev->pdev->irq); dev->vblank_disable_allowed = true; diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c index 2babb597d23c..c9101bde96be 100644 --- a/drivers/gpu/drm/i915/i915_dma.c +++ b/drivers/gpu/drm/i915/i915_dma.c @@ -1317,7 +1317,7 @@ static int i915_load_modeset_init(struct drm_device *dev) if (ret) goto cleanup_vga_switcheroo; - ret = drm_irq_install(dev); + ret = drm_irq_install(dev, dev->pdev->irq); if (ret) goto cleanup_gem_stolen; diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c index 95541d1e5b43..f92855ba08f3 100644 --- a/drivers/gpu/drm/i915/i915_drv.c +++ b/drivers/gpu/drm/i915/i915_drv.c @@ -644,7 +644,7 @@ static int __i915_drm_thaw(struct drm_device *dev, bool restore_gtt_mappings) mutex_unlock(&dev->struct_mutex); /* We need working interrupts for modeset enabling ... */ - drm_irq_install(dev); + drm_irq_install(dev, dev->pdev->irq); intel_modeset_init_hw(dev); @@ -805,7 +805,7 @@ int i915_reset(struct drm_device *dev) * being false when they shouldn't be able to. */ drm_irq_uninstall(dev); - drm_irq_install(dev); + drm_irq_install(dev, dev->pdev->irq); intel_hpd_init(dev); } else { mutex_unlock(&dev->struct_mutex); diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index b8c500bf56b7..c7b51d0972dc 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c @@ -4544,7 +4544,7 @@ i915_gem_entervt_ioctl(struct drm_device *dev, void *data, BUG_ON(!list_empty(&dev_priv->gtt.base.active_list)); - ret = drm_irq_install(dev); + ret = drm_irq_install(dev, dev->pdev->irq); if (ret) goto cleanup_ringbuffer; mutex_unlock(&dev->struct_mutex); diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c index 28b57eb6f9a1..233246641ae9 100644 --- a/drivers/gpu/drm/msm/msm_drv.c +++ b/drivers/gpu/drm/msm/msm_drv.c @@ -228,7 +228,7 @@ static int msm_load(struct drm_device *dev, unsigned long flags) } pm_runtime_get_sync(dev->dev); - ret = drm_irq_install(dev); + ret = drm_irq_install(dev, platform_get_irq(dev->platformdev, 0)); pm_runtime_put_sync(dev->dev); if (ret < 0) { dev_err(dev->dev, "failed to install IRQ handler\n"); diff --git a/drivers/gpu/drm/qxl/qxl_irq.c b/drivers/gpu/drm/qxl/qxl_irq.c index 28f84b4fce32..34d6a85e9023 100644 --- a/drivers/gpu/drm/qxl/qxl_irq.c +++ b/drivers/gpu/drm/qxl/qxl_irq.c @@ -87,7 +87,7 @@ int qxl_irq_init(struct qxl_device *qdev) atomic_set(&qdev->irq_received_cursor, 0); atomic_set(&qdev->irq_received_io_cmd, 0); qdev->irq_received_error = 0; - ret = drm_irq_install(qdev->ddev); + ret = drm_irq_install(qdev->ddev, qdev->ddev->pdev->irq); qdev->ram_header->int_mask = QXL_INTERRUPT_MASK; if (unlikely(ret != 0)) { DRM_ERROR("Failed installing irq: %d\n", ret); diff --git a/drivers/gpu/drm/radeon/radeon_irq_kms.c b/drivers/gpu/drm/radeon/radeon_irq_kms.c index 089c9ffb0aa9..16807afab362 100644 --- a/drivers/gpu/drm/radeon/radeon_irq_kms.c +++ b/drivers/gpu/drm/radeon/radeon_irq_kms.c @@ -287,7 +287,7 @@ int radeon_irq_kms_init(struct radeon_device *rdev) INIT_WORK(&rdev->reset_work, radeon_irq_reset_work_func); rdev->irq.installed = true; - r = drm_irq_install(rdev->ddev); + r = drm_irq_install(rdev->ddev, rdev->ddev->pdev->irq); if (r) { rdev->irq.installed = false; flush_work(&rdev->hotplug_work); diff --git a/drivers/gpu/drm/shmobile/shmob_drm_drv.c b/drivers/gpu/drm/shmobile/shmob_drm_drv.c index c839c9c89efb..82c84c7fd4f6 100644 --- a/drivers/gpu/drm/shmobile/shmob_drm_drv.c +++ b/drivers/gpu/drm/shmobile/shmob_drm_drv.c @@ -185,7 +185,7 @@ static int shmob_drm_load(struct drm_device *dev, unsigned long flags) goto done; } - ret = drm_irq_install(dev); + ret = drm_irq_install(dev, platform_get_irq(dev->platformdev, 0)); if (ret < 0) { dev_err(&pdev->dev, "failed to install IRQ handler\n"); goto done; diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c index 0c22b6ca7fd2..4fad1efbce03 100644 --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c @@ -268,7 +268,7 @@ static int tilcdc_load(struct drm_device *dev, unsigned long flags) } pm_runtime_get_sync(dev->dev); - ret = drm_irq_install(dev); + ret = drm_irq_install(dev, platform_get_irq(dev->platformdev, 0)); pm_runtime_put_sync(dev->dev); if (ret < 0) { dev_err(dev->dev, "failed to install IRQ handler\n"); diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c index c7a549694e59..5066cc7d477b 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c @@ -704,7 +704,7 @@ static int vmw_driver_load(struct drm_device *dev, unsigned long chipset) } if (dev_priv->capabilities & SVGA_CAP_IRQMASK) { - ret = drm_irq_install(dev); + ret = drm_irq_install(dev, dev->pdev->irq); if (ret != 0) { DRM_ERROR("Failed installing irq: %d\n", ret); goto out_no_irq; diff --git a/include/drm/drmP.h b/include/drm/drmP.h index 0219ceae5270..1633a89fb6ad 100644 --- a/include/drm/drmP.h +++ b/include/drm/drmP.h @@ -1362,7 +1362,7 @@ extern void drm_core_reclaim_buffers(struct drm_device *dev, /* IRQ support (drm_irq.h) */ extern int drm_control(struct drm_device *dev, void *data, struct drm_file *file_priv); -extern int drm_irq_install(struct drm_device *dev); +extern int drm_irq_install(struct drm_device *dev, int irq); extern int drm_irq_uninstall(struct drm_device *dev); extern int drm_vblank_init(struct drm_device *dev, int num_crtcs); -- 1.8.4.3
next prev parent reply other threads:[~2013-12-11 10:35 UTC|newest] Thread overview: 79+ messages / expand[flat|nested] mbox.gz Atom feed top 2013-12-11 10:34 [PATCH 00/50] more drm de-midlayering Daniel Vetter 2013-12-11 10:34 ` [PATCH 01/50] drm/rcar: call drm_put_dev directly in the ->remove hook Daniel Vetter 2013-12-11 10:34 ` [PATCH 02/50] drm/exynos: call drm_put_dev directly from ->remove Daniel Vetter 2013-12-11 10:34 ` [PATCH 03/50] drm/imx: directly call drm_put_dev in ->remove Daniel Vetter 2013-12-11 10:34 ` [PATCH 04/50] drm/tilcdc: call drm_put_dev directly from ->remove Daniel Vetter 2013-12-11 19:39 ` Rob Clark 2013-12-11 10:34 ` [PATCH 05/50] drm/omap: call drm_put_dev directly in ->remove Daniel Vetter 2013-12-11 12:02 ` Rob Clark 2013-12-11 13:20 ` [PATCH] " Daniel Vetter 2013-12-11 19:35 ` Rob Clark 2013-12-11 10:34 ` [PATCH 06/50] drm/shmob: call drm_put_dev directly from ->remove hook Daniel Vetter 2013-12-11 12:21 ` Laurent Pinchart 2013-12-11 10:34 ` [PATCH 07/50] drm/armada: directly call drm_put_dev in ->remove Daniel Vetter 2013-12-11 10:34 ` [PATCH 08/50] drm/msm: call drm_put_dev directly " Daniel Vetter 2013-12-11 19:38 ` Rob Clark 2013-12-11 10:34 ` [PATCH 09/50] drm: rip out drm_platform_exit Daniel Vetter 2013-12-11 10:34 ` [PATCH 10/50] drm: restrict the device list for shadow attached drivers Daniel Vetter 2013-12-11 10:34 ` [PATCH 11/50] drm/bufs: remove handling of _DRM_GEM mappings Daniel Vetter 2013-12-11 10:34 ` [PATCH 12/50] drm: kill DRIVER_REQUIRE_AGP Daniel Vetter 2013-12-11 10:34 ` [PATCH 13/50] drm: ->agp_init can't fail Daniel Vetter 2013-12-11 10:34 ` [PATCH 14/50] drm: rip out drm_core_has_AGP Daniel Vetter 2013-12-11 10:34 ` [PATCH 15/50] drm: remove agp_init() bus callback Daniel Vetter 2013-12-11 10:34 ` [PATCH 16/50] drm: inline drm_agp_destroy Daniel Vetter 2013-12-11 10:34 ` [PATCH 17/50] drm: kill the ->agp_destroy callback Daniel Vetter 2013-12-11 10:34 ` [PATCH 18/50] drm: remove global_mutex locking around agp_init Daniel Vetter 2013-12-11 10:34 ` [PATCH 19/50] drm: rip out DRM_AGP_MEM and DRM_AGP_KERN Daniel Vetter 2013-12-11 10:34 ` [PATCH 20/50] drm: Kill DRM_HZ Daniel Vetter 2013-12-11 10:34 ` [PATCH 21/50] drm: Kill DRM_IRQ_ARGS Daniel Vetter 2013-12-11 10:34 ` [PATCH 22/50] drm: Kill DRM_WAKUP and DRM_INIT_WAITQUEUE Daniel Vetter 2013-12-11 10:34 ` [PATCH 23/50] drm: Kill DRM_COPY_(TO|FROM)_USER Daniel Vetter 2013-12-11 10:34 ` [PATCH 24/50] drm: Kill DRM_*MEMORYBARRIER Daniel Vetter 2013-12-11 10:34 ` [PATCH 25/50] drm: Kill DRM_SUSER Daniel Vetter 2013-12-11 10:34 ` [PATCH 26/50] drm/gma500: Remove dead code Daniel Vetter 2013-12-11 10:46 ` Patrik Jakobsson 2013-12-11 10:34 ` [PATCH 27/50] drm/irq: Replace DRM_WAIT_ON with wait_event Daniel Vetter 2013-12-11 10:34 ` [PATCH 28/50] drm: Remove DRM_WAIT_ON from all drivers Daniel Vetter 2013-12-18 1:39 ` Dave Airlie 2013-12-18 8:25 ` Daniel Vetter 2013-12-18 9:37 ` Thomas Hellstrom 2013-12-11 10:34 ` [PATCH 29/50] drm/irq: simplify irq checks in drm_wait_vblank Daniel Vetter 2013-12-12 11:29 ` Thierry Reding 2013-12-12 12:51 ` Daniel Vetter 2013-12-16 10:30 ` [PATCH] " Daniel Vetter 2013-12-16 11:18 ` Thierry Reding 2013-12-11 10:34 ` [PATCH 30/50] drm/pci: fold in irq_by_busid support Daniel Vetter 2013-12-11 10:34 ` [PATCH 31/50] drm/irq: drm_control is a legacy ioctl, so pci devices only Daniel Vetter 2013-12-11 10:34 ` [PATCH 32/50] drm/irq: remove cargo-culted locking from irq_install/unistall Daniel Vetter 2013-12-11 10:34 ` [PATCH 33/50] drm: remove drm_dev_to_irq from drivers Daniel Vetter 2013-12-11 10:34 ` [PATCH 34/50] drm: kill drm_bus->bus_type Daniel Vetter 2013-12-11 10:34 ` [PATCH 35/50] drm: Rip out totally bogus vga_switcheroo->can_switch locking Daniel Vetter 2013-12-11 10:34 ` [PATCH 36/50] drm: rename dev->count_lock to dev->buf_lock Daniel Vetter 2013-12-12 11:33 ` Thierry Reding 2013-12-12 12:52 ` Daniel Vetter 2013-12-16 10:29 ` [PATCH] " Daniel Vetter 2013-12-16 11:17 ` Thierry Reding 2013-12-11 10:34 ` [PATCH 37/50] drm/irq: track the irq installed in drm_irq_install in dev->irq Daniel Vetter 2013-12-16 10:29 ` [PATCH] " Daniel Vetter 2013-12-16 11:17 ` Thierry Reding 2013-12-11 10:34 ` [PATCH 38/50] drm/irq: Look up the pci irq directly in the drm_control ioctl Daniel Vetter 2013-12-11 10:35 ` Daniel Vetter [this message] 2013-12-11 10:35 ` [PATCH 40/50] drm: remove bus->get_irq implementations Daniel Vetter 2013-12-11 10:35 ` [PATCH 41/50] drm: inline drm_pci_set_unique Daniel Vetter 2013-12-11 10:35 ` [PATCH 42/50] drm: rip out dev->devname Daniel Vetter 2013-12-11 10:35 ` [PATCH 43/50] drm: remove drm_bus->get_name Daniel Vetter 2013-12-11 10:35 ` [PATCH 44/50] drm: Remove dev->kdriver Daniel Vetter 2013-12-11 10:35 ` [PATCH 45/50] drm/<drivers>: don't set driver->dev_priv_size to 0 Daniel Vetter 2014-01-10 15:25 ` Damien Lespiau 2013-12-11 10:35 ` [PATCH 46/50] drm: store the gem vma offset manager in a typed pointer Daniel Vetter 2013-12-11 10:53 ` David Herrmann 2013-12-11 13:24 ` [PATCH 1/2] " Daniel Vetter 2013-12-11 13:24 ` [PATCH 2/2] drm/gma500: Remove unused function declaration Daniel Vetter 2013-12-11 16:04 ` Patrik Jakobsson 2013-12-18 1:04 ` [PATCH 1/2] drm: store the gem vma offset manager in a typed pointer Dave Airlie 2013-12-18 1:22 ` Rob Clark 2013-12-11 10:35 ` [PATCH 47/50] drm: rip out dev->ioctl_count tracking Daniel Vetter 2013-12-11 10:35 ` [PATCH 48/50] drm: Kill file_priv->ioctl_count tracking Daniel Vetter 2013-12-11 10:35 ` [PATCH 49/50] drm: remove dev->vma_count Daniel Vetter 2013-12-11 10:35 ` [PATCH 50/50] drm: use memdup_user() as a cleanup Daniel Vetter 2013-12-12 18:08 ` [PATCH 00/50] more drm de-midlayering Jakob Bornecrantz
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1386758111-3446-40-git-send-email-daniel.vetter@ffwll.ch \ --to=daniel.vetter@ffwll.ch \ --cc=dri-devel@lists.freedesktop.org \ --subject='Re: [PATCH 39/50] drm: pass the irq explicitly to drm_irq_install' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.