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. > 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 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx