[PATCH 12/28] drm/i915/tgl: Add TRANSCODER_A_VDSC power domain

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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,
 	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




[Index of Archives]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux