Re: [PATCH 12/28] drm/i915/tgl: Add TRANSCODER_A_VDSC power domain

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Jul 01, 2019 at 08:32:59PM +0300, Ville Syrjälä wrote:
On Fri, Jun 28, 2019 at 09:31:04AM -0700, Lucas De Marchi wrote:
On Fri, Jun 28, 2019 at 12:55:17PM +0300, Ville Syrjälä wrote:
>On Tue, Jun 25, 2019 at 10:54:21AM -0700, Lucas De Marchi wrote:
>> From: José Roberto de Souza <jose.souza@xxxxxxxxx>
>>
>> On TGL the special EDP transcoder is gone and it should be handled by
>> transcoder A. Add POWER_DOMAIN_TRANSCODER_A_VDSC to make this
>> distinction clear and update vdsc code path.
>>
>> Cc: Imre Deak <imre.deak@xxxxxxxxx>
>> Signed-off-by: José Roberto de Souza <jose.souza@xxxxxxxxx>
>> Signed-off-by: Lucas De Marchi <lucas.demarchi@xxxxxxxxx>
>> ---
>>  drivers/gpu/drm/i915/display/intel_display_power.c |  2 ++
>>  drivers/gpu/drm/i915/display/intel_display_power.h |  1 +
>>  drivers/gpu/drm/i915/display/intel_vdsc.c          | 11 ++++++++---
>>  3 files changed, 11 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/display/intel_display_power.c b/drivers/gpu/drm/i915/display/intel_display_power.c
>> index 0c7d4a363deb..15582841fefc 100644
>> --- a/drivers/gpu/drm/i915/display/intel_display_power.c
>> +++ b/drivers/gpu/drm/i915/display/intel_display_power.c
>> @@ -58,6 +58,8 @@ intel_display_power_domain_str(struct drm_i915_private *i915,
>>  		return "TRANSCODER_EDP";
>>  	case POWER_DOMAIN_TRANSCODER_EDP_VDSC:
>>  		return "TRANSCODER_EDP_VDSC";
>> +	case POWER_DOMAIN_TRANSCODER_A_VDSC:
>> +		return "TRANSCODER_A_VDSC";
>>  	case POWER_DOMAIN_TRANSCODER_DSI_A:
>>  		return "TRANSCODER_DSI_A";
>>  	case POWER_DOMAIN_TRANSCODER_DSI_C:
>> diff --git a/drivers/gpu/drm/i915/display/intel_display_power.h b/drivers/gpu/drm/i915/display/intel_display_power.h
>> index 79262a5bceb4..7761b493608a 100644
>> --- a/drivers/gpu/drm/i915/display/intel_display_power.h
>> +++ b/drivers/gpu/drm/i915/display/intel_display_power.h
>> @@ -29,6 +29,7 @@ enum intel_display_power_domain {
>>  	POWER_DOMAIN_TRANSCODER_D,
>>  	POWER_DOMAIN_TRANSCODER_EDP,
>>  	POWER_DOMAIN_TRANSCODER_EDP_VDSC,
>> +	POWER_DOMAIN_TRANSCODER_A_VDSC,
>
>Two power domains for essentially the same thing seems a bit wasteful.

just reuse the name then?

and on gen12+ check for TRANSCODER_A like below?

That was my initial idea yes. In theory it would be nice to have fully
abstracted power domains but that would lead to a lot of bits getting
used. I suspect we might have to switch to using the kernel bitmask
stuff in that case. Not sure how many bits we have free ATM.

we are currently using 45 and with TGL we will jump to 60. 4 more until
we have to swap out that logic in favor of bitmap.h

Lucas De Marchi



Lucas De Marchi

>
>>  	POWER_DOMAIN_TRANSCODER_DSI_A,
>>  	POWER_DOMAIN_TRANSCODER_DSI_C,
>>  	POWER_DOMAIN_PORT_DDI_A_LANES,
>> diff --git a/drivers/gpu/drm/i915/display/intel_vdsc.c b/drivers/gpu/drm/i915/display/intel_vdsc.c
>> index ffec807b8960..0c75b408d6ba 100644
>> --- a/drivers/gpu/drm/i915/display/intel_vdsc.c
>> +++ b/drivers/gpu/drm/i915/display/intel_vdsc.c
>> @@ -459,16 +459,21 @@ int intel_dp_compute_dsc_params(struct intel_dp *intel_dp,
>>  enum intel_display_power_domain
>>  intel_dsc_power_domain(const struct intel_crtc_state *crtc_state)
>>  {
>> +	struct drm_i915_private *dev_priv = to_i915(crtc_state->base.state->dev);
>>  	enum transcoder cpu_transcoder = crtc_state->cpu_transcoder;
>>
>>  	/*
>> -	 * On ICL VDSC/joining for eDP transcoder uses a separate power well PW2
>> -	 * This requires POWER_DOMAIN_TRANSCODER_EDP_VDSC power domain.
>> +	 * On ICL+ VDSC/joining for eDP/A transcoder uses a separate power well
>> +	 * PW2. This requires
>> +	 * POWER_DOMAIN_TRANSCODER_EDP_VDSC/POWER_DOMAIN_TRANSCODER_A_VDSC power
>> +	 * domain.
>>  	 * For any other transcoder, VDSC/joining uses the power well associated
>>  	 * with the pipe/transcoder in use. Hence another reference on the
>>  	 * transcoder power domain will suffice.
>>  	 */
>> -	if (cpu_transcoder == TRANSCODER_EDP)
>> +	if (INTEL_GEN(dev_priv) >= 12 && cpu_transcoder == TRANSCODER_A)
>> +		return POWER_DOMAIN_TRANSCODER_A_VDSC;
>> +	else if (cpu_transcoder == TRANSCODER_EDP)
>>  		return POWER_DOMAIN_TRANSCODER_EDP_VDSC;
>>  	else
>>  		return POWER_DOMAIN_TRANSCODER(cpu_transcoder);
>> --
>> 2.21.0
>>
>> _______________________________________________
>> Intel-gfx mailing list
>> Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
>> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
>
>--
>Ville Syrjälä
>Intel

--
Ville Syrjälä
Intel
_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/intel-gfx




[Index of Archives]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux