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

Commit bb0f1b5c authored by Daniel Vetter's avatar Daniel Vetter
Browse files

drm: pass the irq explicitly to drm_irq_install



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.

Reviewed-by: default avatarThierry Reding <treding@nvidia.com>
Reviewed-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
parent a319c1a4
Loading
Loading
Loading
Loading
+1 −9
Original line number Diff line number Diff line
@@ -341,14 +341,6 @@ char *date;</synopsis>
        </para>
        <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
@@ -356,7 +348,7 @@ char *date;</synopsis>
            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.
+1 −1
Original line number Diff line number Diff line
@@ -173,7 +173,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;

+3 −10
Original line number Diff line number Diff line
@@ -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;

@@ -399,7 +392,7 @@ int drm_control(struct drm_device *dev, void *data,
		    ctl->irq != irq)
			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;
+1 −1
Original line number Diff line number Diff line
@@ -354,7 +354,7 @@ static int psb_driver_load(struct drm_device *dev, unsigned long flags)
	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;
	dev->max_vblank_count = 0xffffff; /* only 24 bits of frame count */
+1 −1
Original line number Diff line number Diff line
@@ -1327,7 +1327,7 @@ static int i915_load_modeset_init(struct drm_device *dev)

	intel_power_domains_init_hw(dev_priv);

	ret = drm_irq_install(dev);
	ret = drm_irq_install(dev, dev->pdev->irq);
	if (ret)
		goto cleanup_gem_stolen;

Loading