[Intel-gfx] [RFC PATCH v2 4/8] drm/i915: Add support for enabling/disabling hdmi audio interrupts

Pierre-Louis Bossart pierre-louis.bossart at linux.intel.com
Thu Oct 13 19:41:09 UTC 2016


>> +/* Added for HDMI Audio */
>> +int i915_enable_hdmi_audio_int(struct drm_i915_private *dev_priv)
>> +{
>> +	unsigned long irqflags;
>> +	u32 imr, int_bit;
>> +	int pipe = -1;
>> +
>> +	spin_lock_irqsave(&dev_priv->irq_lock, irqflags);
>> +
>> +	imr = I915_READ(VLV_IMR);
>> +
>> +	if (IS_CHERRYVIEW(&dev_priv->drm)) {
>> +		pipe = PIPE_C;
>> +		int_bit = (pipe ? (I915_LPE_PIPE_B_INTERRUPT >>
>> +					((pipe - 1) * 9)) :
>> +					I915_LPE_PIPE_A_INTERRUPT);
>
> Either parametrize the I915_LPE_PIPE_INTERRUPT macro, or just have eg. a
> switch here.

ok

>
> But the bigger issue here is the mess with selecting the right bit. I
> assume it should either depend on the pipe or port. I can't figure out
> what is going on here.
>
> And actually I don't understand why we even need this function. The
> irqchip should take care to unmask all the interrupts when the audio
> device does its request_irq.

agree, it's not clear to me either. I'll work with Jerome to figure out 
if/how this can be removed.


>> @@ -3364,6 +3425,14 @@ static void vlv_display_irq_postinstall(struct drm_i915_private *dev_priv)
>>
>>  	WARN_ON(dev_priv->irq_mask != ~0);
>>
>> +	if (IS_LPE_AUDIO_ENABLED(dev_priv)) {
>> +		u32 val = (I915_LPE_PIPE_A_INTERRUPT |
>> +			I915_LPE_PIPE_B_INTERRUPT |
>> +			I915_LPE_PIPE_C_INTERRUPT);
>
> 'val' seems like a rather pointless local variable.
>
>> +
>> +		enable_mask |= val;

indeed, will fix.



More information about the Intel-gfx mailing list