diff mbox

[V2,1/1] drm/i915/audio: apply SKL codec wake up patch to BXT

Message ID 1447944288-28499-1-git-send-email-han.lu@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

han.lu@intel.com Nov. 19, 2015, 2:44 p.m. UTC
From: "Lu, Han" <han.lu@intel.com>

For SKL we added a commit 632f3ab95fe2 ("drm/i915/audio: add codec wakeup
override enabled/disable callback"), in order to enable codec wakeup
override signal, to allow re-enumeration of the controller on SKL after
resume from low power state.
In SKL, HDMI/DP codec and PCH HD Audio Controller are in different power
wells, so it's necessary to reset display audio codecs when power well on,
otherwise display audio codecs will disappear when resume from low power
state.
Reset steps when power on:
    enable codec wakeup -> azx_init_chip() -> disable codec wakeup
Since the power well design did not change from SKL to BXT, we need to
apply the workaround to BXT also.

v2: add explanation

Signed-off-by: Lu, Han <han.lu@intel.com>

Comments

Daniel Vetter Nov. 19, 2015, 3:55 p.m. UTC | #1
On Thu, Nov 19, 2015 at 10:44:48PM +0800, han.lu@intel.com wrote:
> From: "Lu, Han" <han.lu@intel.com>
> 
> For SKL we added a commit 632f3ab95fe2 ("drm/i915/audio: add codec wakeup
> override enabled/disable callback"), in order to enable codec wakeup
> override signal, to allow re-enumeration of the controller on SKL after
> resume from low power state.
> In SKL, HDMI/DP codec and PCH HD Audio Controller are in different power
> wells, so it's necessary to reset display audio codecs when power well on,
> otherwise display audio codecs will disappear when resume from low power
> state.
> Reset steps when power on:
>     enable codec wakeup -> azx_init_chip() -> disable codec wakeup
> Since the power well design did not change from SKL to BXT, we need to
> apply the workaround to BXT also.
> 
> v2: add explanation
> 
> Signed-off-by: Lu, Han <han.lu@intel.com>
> 
> diff --git a/drivers/gpu/drm/i915/intel_audio.c b/drivers/gpu/drm/i915/intel_audio.c
> index 63d4706..8310bf3 100644
> --- a/drivers/gpu/drm/i915/intel_audio.c
> +++ b/drivers/gpu/drm/i915/intel_audio.c
> @@ -591,7 +591,8 @@ static void i915_audio_component_codec_wake_override(struct device *dev,
>  	struct drm_i915_private *dev_priv = dev_to_i915(dev);
>  	u32 tmp;
>  
> -	if (!IS_SKYLAKE(dev_priv) && !IS_KABYLAKE(dev_priv))
> +	if (!IS_SKYLAKE(dev_priv) && !IS_BROXTON(dev_priv) &&
> +			!IS_KABYLAKE(dev_priv))

if (INTEL_INFO(dev)->gen < 9)
	return;

for future-proofing? At least make it an IS_GEN9 check instead of
listening all of them in a long list.
-Daniel

>  		return;
>  
>  	/*
> -- 
> 2.5.0
>
Jani Nikula Nov. 19, 2015, 4:01 p.m. UTC | #2
On Thu, 19 Nov 2015, Daniel Vetter <daniel@ffwll.ch> wrote:
> On Thu, Nov 19, 2015 at 10:44:48PM +0800, han.lu@intel.com wrote:
>> From: "Lu, Han" <han.lu@intel.com>
>> 
>> For SKL we added a commit 632f3ab95fe2 ("drm/i915/audio: add codec wakeup
>> override enabled/disable callback"), in order to enable codec wakeup
>> override signal, to allow re-enumeration of the controller on SKL after
>> resume from low power state.
>> In SKL, HDMI/DP codec and PCH HD Audio Controller are in different power
>> wells, so it's necessary to reset display audio codecs when power well on,
>> otherwise display audio codecs will disappear when resume from low power
>> state.
>> Reset steps when power on:
>>     enable codec wakeup -> azx_init_chip() -> disable codec wakeup
>> Since the power well design did not change from SKL to BXT, we need to
>> apply the workaround to BXT also.
>> 
>> v2: add explanation
>> 
>> Signed-off-by: Lu, Han <han.lu@intel.com>
>> 
>> diff --git a/drivers/gpu/drm/i915/intel_audio.c b/drivers/gpu/drm/i915/intel_audio.c
>> index 63d4706..8310bf3 100644
>> --- a/drivers/gpu/drm/i915/intel_audio.c
>> +++ b/drivers/gpu/drm/i915/intel_audio.c
>> @@ -591,7 +591,8 @@ static void i915_audio_component_codec_wake_override(struct device *dev,
>>  	struct drm_i915_private *dev_priv = dev_to_i915(dev);
>>  	u32 tmp;
>>  
>> -	if (!IS_SKYLAKE(dev_priv) && !IS_KABYLAKE(dev_priv))
>> +	if (!IS_SKYLAKE(dev_priv) && !IS_BROXTON(dev_priv) &&
>> +			!IS_KABYLAKE(dev_priv))
>
> if (INTEL_INFO(dev)->gen < 9)
> 	return;
>
> for future-proofing? At least make it an IS_GEN9 check instead of
> listening all of them in a long list.

http://mid.gmane.org/87a8qacq5w.fsf@intel.com ...

> -Daniel
>
>>  		return;
>>  
>>  	/*
>> -- 
>> 2.5.0
>>
Han Lu Nov. 20, 2015, 1:16 a.m. UTC | #3
On 11/20/2015 12:01 AM, Jani Nikula wrote:
> On Thu, 19 Nov 2015, Daniel Vetter <daniel@ffwll.ch> wrote:
>> On Thu, Nov 19, 2015 at 10:44:48PM +0800, han.lu@intel.com wrote:
>>> From: "Lu, Han" <han.lu@intel.com>
>>>
>>> For SKL we added a commit 632f3ab95fe2 ("drm/i915/audio: add codec wakeup
>>> override enabled/disable callback"), in order to enable codec wakeup
>>> override signal, to allow re-enumeration of the controller on SKL after
>>> resume from low power state.
>>> In SKL, HDMI/DP codec and PCH HD Audio Controller are in different power
>>> wells, so it's necessary to reset display audio codecs when power well on,
>>> otherwise display audio codecs will disappear when resume from low power
>>> state.
>>> Reset steps when power on:
>>>      enable codec wakeup -> azx_init_chip() -> disable codec wakeup
>>> Since the power well design did not change from SKL to BXT, we need to
>>> apply the workaround to BXT also.
>>>
>>> v2: add explanation
>>>
>>> Signed-off-by: Lu, Han <han.lu@intel.com>
>>>
>>> diff --git a/drivers/gpu/drm/i915/intel_audio.c b/drivers/gpu/drm/i915/intel_audio.c
>>> index 63d4706..8310bf3 100644
>>> --- a/drivers/gpu/drm/i915/intel_audio.c
>>> +++ b/drivers/gpu/drm/i915/intel_audio.c
>>> @@ -591,7 +591,8 @@ static void i915_audio_component_codec_wake_override(struct device *dev,
>>>   	struct drm_i915_private *dev_priv = dev_to_i915(dev);
>>>   	u32 tmp;
>>>   
>>> -	if (!IS_SKYLAKE(dev_priv) && !IS_KABYLAKE(dev_priv))
>>> +	if (!IS_SKYLAKE(dev_priv) && !IS_BROXTON(dev_priv) &&
>>> +			!IS_KABYLAKE(dev_priv))
>> if (INTEL_INFO(dev)->gen < 9)
>> 	return;
>>
>> for future-proofing? At least make it an IS_GEN9 check instead of
>> listening all of them in a long list.
> http://mid.gmane.org/87a8qacq5w.fsf@intel.com ...
Yes, that's right. Thanks. I'll send next revision.

Regards,
Han Lu
>
>> -Daniel
>>
>>>   		return;
>>>   
>>>   	/*
>>> -- 
>>> 2.5.0
>>>
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/intel_audio.c b/drivers/gpu/drm/i915/intel_audio.c
index 63d4706..8310bf3 100644
--- a/drivers/gpu/drm/i915/intel_audio.c
+++ b/drivers/gpu/drm/i915/intel_audio.c
@@ -591,7 +591,8 @@  static void i915_audio_component_codec_wake_override(struct device *dev,
 	struct drm_i915_private *dev_priv = dev_to_i915(dev);
 	u32 tmp;
 
-	if (!IS_SKYLAKE(dev_priv) && !IS_KABYLAKE(dev_priv))
+	if (!IS_SKYLAKE(dev_priv) && !IS_BROXTON(dev_priv) &&
+			!IS_KABYLAKE(dev_priv))
 		return;
 
 	/*