drm/i915/tgl: rename TRANSCODER_EDP_VDSC to use on transcoder A
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
This commit is contained in:
parent
7ff0fca496
commit
276199e6be
|
@ -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)
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue