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.so...@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.d...@intel.com>
> >> Signed-off-by: José Roberto de Souza <jose.so...@intel.com>
> >> Signed-off-by: Lucas De Marchi <lucas.demar...@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.
> 
> 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.

> 
> 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@lists.freedesktop.org
> >> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
> >
> >-- 
> >Ville Syrjälä
> >Intel

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

Reply via email to