[Intel-gfx] [PATCH v2 1/7] drm/i915: Refactor gmch hpd irq handling
Chris Wilson
chris at chris-wilson.co.uk
Tue Apr 1 10:11:56 CEST 2014
On Tue, Apr 01, 2014 at 10:54:36AM +0300, ville.syrjala at linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
>
> Pull all the gmch platform hotplug interrupt handling into one
> function.
>
> v2: Move the IIR check to the caller
> s/drm_i915_private_t/struct drm_i915_private/
>
> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
With the addition of the comment before the posting-read,
Reviewed-by: Chris Wilson <chris at chris-wilson.co.uk>
> ---
> drivers/gpu/drm/i915/i915_irq.c | 69 ++++++++++++++++++-----------------------
> 1 file changed, 30 insertions(+), 39 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
> index 0858189..361e9b3 100644
> --- a/drivers/gpu/drm/i915/i915_irq.c
> +++ b/drivers/gpu/drm/i915/i915_irq.c
> @@ -1647,6 +1647,29 @@ static void valleyview_pipestat_irq_handler(struct drm_device *dev, u32 iir)
> gmbus_irq_handler(dev);
> }
>
> +static void i9xx_hpd_irq_handler(struct drm_device *dev)
> +{
> + struct drm_i915_private *dev_priv = dev->dev_private;
> + u32 hotplug_status = I915_READ(PORT_HOTPLUG_STAT);
> +
> + if (IS_G4X(dev)) {
> + u32 hotplug_trigger = hotplug_status & HOTPLUG_INT_STATUS_G4X;
> +
> + intel_hpd_irq_handler(dev, hotplug_trigger, hpd_status_g4x);
> + } else {
> + u32 hotplug_trigger = hotplug_status & HOTPLUG_INT_STATUS_I915;
> +
> + intel_hpd_irq_handler(dev, hotplug_trigger, hpd_status_i915);
> + }
> +
> + if ((IS_G4X(dev) || IS_VALLEYVIEW(dev)) &&
> + hotplug_status & DP_AUX_CHANNEL_MASK_INT_STATUS_G4X)
> + dp_aux_irq_handler(dev);
> +
> + I915_WRITE(PORT_HOTPLUG_STAT, hotplug_status);
/* Make sure hotplug status is cleared before we clear IIR,
* or else we may miss hotplug events.
*/
> + POSTING_READ(PORT_HOTPLUG_STAT);
> +}
-Chris
--
Chris Wilson, Intel Open Source Technology Centre
More information about the Intel-gfx
mailing list