drm/i915/tgl: rename TRANSCODER_EDP_VDSC to use on transcoder A
authorJosé Roberto de Souza <jose.souza@intel.com>
Thu, 11 Jul 2019 17:31:01 +0000 (10:31 -0700)
committerLucas De Marchi <lucas.demarchi@intel.com>
Thu, 11 Jul 2019 23:31:05 +0000 (16:31 -0700)
On TGL the special EDP transcoder is gone and it should be handled by
transcoder A.

v2 (Lucas):
  - Reuse POWER_DOMAIN_TRANSCODER_EDP_VDSC (suggested by Ville)
  - Use crtc->dev since new_crtc_state->state may be NULL on atomic
    commit (suggested by Maarten)
v3 (Lucas):
  - Rename power domain so it's clear it can also be used for transcoder
    A in TGL (requested by José and Manasi)

Cc: Imre Deak <imre.deak@intel.com>
Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
Acked-by: José Roberto de Souza <jose.souza@intel.com>
Reviewed-by: Manasi Navare <manasi.d.navare@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190711173115.28296-8-lucas.demarchi@intel.com
drivers/gpu/drm/i915/display/intel_display_power.c
drivers/gpu/drm/i915/display/intel_display_power.h
drivers/gpu/drm/i915/display/intel_vdsc.c

index 7e22a27..6a5e0d0 100644 (file)
@@ -48,8 +48,8 @@ intel_display_power_domain_str(enum intel_display_power_domain domain)
                return "TRANSCODER_C";
        case POWER_DOMAIN_TRANSCODER_EDP:
                return "TRANSCODER_EDP";
-       case POWER_DOMAIN_TRANSCODER_EDP_VDSC:
-               return "TRANSCODER_EDP_VDSC";
+       case POWER_DOMAIN_TRANSCODER_VDSC_PW2:
+               return "TRANSCODER_VDSC_PW2";
        case POWER_DOMAIN_TRANSCODER_DSI_A:
                return "TRANSCODER_DSI_A";
        case POWER_DOMAIN_TRANSCODER_DSI_C:
@@ -2450,7 +2450,7 @@ void intel_display_power_put(struct drm_i915_private *dev_priv,
         */
 #define ICL_PW_2_POWER_DOMAINS (                       \
        ICL_PW_3_POWER_DOMAINS |                        \
-       BIT_ULL(POWER_DOMAIN_TRANSCODER_EDP_VDSC) |             \
+       BIT_ULL(POWER_DOMAIN_TRANSCODER_VDSC_PW2) |             \
        BIT_ULL(POWER_DOMAIN_INIT))
        /*
         * - KVMR (HW control)
index 8f43f70..cc69561 100644 (file)
@@ -25,7 +25,8 @@ enum intel_display_power_domain {
        POWER_DOMAIN_TRANSCODER_B,
        POWER_DOMAIN_TRANSCODER_C,
        POWER_DOMAIN_TRANSCODER_EDP,
-       POWER_DOMAIN_TRANSCODER_EDP_VDSC,
+       /* VDSC/joining for TRANSCODER_EDP (ICL) or TRANSCODER_A (TGL) */
+       POWER_DOMAIN_TRANSCODER_VDSC_PW2,
        POWER_DOMAIN_TRANSCODER_DSI_A,
        POWER_DOMAIN_TRANSCODER_DSI_C,
        POWER_DOMAIN_PORT_DDI_A_LANES,
index ffec807..4ab19c4 100644 (file)
@@ -459,17 +459,23 @@ 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 *i915 = to_i915(crtc_state->base.crtc->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 transcoder uses a separate power well,
+        * PW2. This requires POWER_DOMAIN_TRANSCODER_VDSC_PW2 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.
+        *
+        * On TGL we have the same mapping, but for transcoder A (the special
+        * TRANSCODER_EDP is gone).
         */
-       if (cpu_transcoder == TRANSCODER_EDP)
-               return POWER_DOMAIN_TRANSCODER_EDP_VDSC;
+       if (INTEL_GEN(i915) >= 12 && cpu_transcoder == TRANSCODER_A)
+               return POWER_DOMAIN_TRANSCODER_VDSC_PW2;
+       else if (cpu_transcoder == TRANSCODER_EDP)
+               return POWER_DOMAIN_TRANSCODER_VDSC_PW2;
        else
                return POWER_DOMAIN_TRANSCODER(cpu_transcoder);
 }