[Intel-gfx] [PATCH 12/28] drm/i915/tgl: Add TRANSCODER_A_VDSC power domain
Ville Syrjälä
ville.syrjala at linux.intel.com
Fri Jun 28 09:55:17 UTC 2019
On Tue, Jun 25, 2019 at 10:54:21AM -0700, Lucas De Marchi wrote:
> From: José Roberto de Souza <jose.souza at intel.com>
>
> 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 at intel.com>
> Signed-off-by: José Roberto de Souza <jose.souza at intel.com>
> Signed-off-by: Lucas De Marchi <lucas.demarchi at intel.com>
> ---
> 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.
> 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 at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Ville Syrjälä
Intel
More information about the Intel-gfx
mailing list