[05/23] drm/i915: Don't enable the DDI-IO power in the TypeC TBT-alt mode

Submitted by Imre Deak on June 4, 2019, 2:58 p.m.

Details

Message ID 20190604145826.16424-6-imre.deak@intel.com
State New
Headers show
Series "drm/i915: Fix TypeC port mode switching" ( rev: 2 1 ) in Intel GFX

Not browsing as part of any series.

Commit Message

Imre Deak June 4, 2019, 2:58 p.m.
According to the spec we should not enable the DDI-IO power domain if
the TypeC port is in the TBT-alt mode, so do that only in the other
TypeC modes or for non-TypeC ports.

Cc: Manasi Navare <manasi.d.navare@intel.com>
Cc: Anusha Srivatsa <anusha.srivatsa@intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
---
 drivers/gpu/drm/i915/intel_ddi.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

Patch hide | download patch | download mbox

diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
index a3574f14a3d0..8f223d48d562 100644
--- a/drivers/gpu/drm/i915/intel_ddi.c
+++ b/drivers/gpu/drm/i915/intel_ddi.c
@@ -3111,7 +3111,10 @@  static void intel_ddi_pre_enable_dp(struct intel_encoder *encoder,
 
 	intel_ddi_clk_select(encoder, crtc_state);
 
-	intel_display_power_get(dev_priv, dig_port->ddi_io_power_domain);
+	if (!intel_port_is_tc(dev_priv, port) ||
+	    dig_port->tc_mode != TC_PORT_TBT_ALT)
+		intel_display_power_get(dev_priv,
+					dig_port->ddi_io_power_domain);
 
 	icl_program_mg_dp_mode(dig_port);
 	icl_disable_phy_clock_gating(dig_port);
@@ -3293,8 +3296,10 @@  static void intel_ddi_post_disable_dp(struct intel_encoder *encoder,
 	intel_edp_panel_vdd_on(intel_dp);
 	intel_edp_panel_off(intel_dp);
 
-	intel_display_power_put_unchecked(dev_priv,
-					  dig_port->ddi_io_power_domain);
+	if (!intel_port_is_tc(dev_priv, encoder->port) ||
+	    dig_port->tc_mode != TC_PORT_TBT_ALT)
+		intel_display_power_put_unchecked(dev_priv,
+						  dig_port->ddi_io_power_domain);
 
 	intel_ddi_clk_disable(encoder);
 }

Comments

On Tue, 2019-06-04 at 17:58 +0300, Imre Deak wrote:
> According to the spec we should not enable the DDI-IO power domain if

> the TypeC port is in the TBT-alt mode, so do that only in the other

> TypeC modes or for non-TypeC ports.


With:
BSpec: 22243

Reviewed-by: José Roberto de Souza <jose.souza@intel.com>


> 

> Cc: Manasi Navare <manasi.d.navare@intel.com>

> Cc: Anusha Srivatsa <anusha.srivatsa@intel.com>

> Signed-off-by: Imre Deak <imre.deak@intel.com>

> ---

>  drivers/gpu/drm/i915/intel_ddi.c | 11 ++++++++---

>  1 file changed, 8 insertions(+), 3 deletions(-)

> 

> diff --git a/drivers/gpu/drm/i915/intel_ddi.c

> b/drivers/gpu/drm/i915/intel_ddi.c

> index a3574f14a3d0..8f223d48d562 100644

> --- a/drivers/gpu/drm/i915/intel_ddi.c

> +++ b/drivers/gpu/drm/i915/intel_ddi.c

> @@ -3111,7 +3111,10 @@ static void intel_ddi_pre_enable_dp(struct

> intel_encoder *encoder,

>  

>  	intel_ddi_clk_select(encoder, crtc_state);

>  

> -	intel_display_power_get(dev_priv, dig_port-

> >ddi_io_power_domain);

> +	if (!intel_port_is_tc(dev_priv, port) ||

> +	    dig_port->tc_mode != TC_PORT_TBT_ALT)

> +		intel_display_power_get(dev_priv,

> +					dig_port->ddi_io_power_domain);

>  

>  	icl_program_mg_dp_mode(dig_port);

>  	icl_disable_phy_clock_gating(dig_port);

> @@ -3293,8 +3296,10 @@ static void intel_ddi_post_disable_dp(struct

> intel_encoder *encoder,

>  	intel_edp_panel_vdd_on(intel_dp);

>  	intel_edp_panel_off(intel_dp);

>  

> -	intel_display_power_put_unchecked(dev_priv,

> -					  dig_port-

> >ddi_io_power_domain);

> +	if (!intel_port_is_tc(dev_priv, encoder->port) ||

> +	    dig_port->tc_mode != TC_PORT_TBT_ALT)

> +		intel_display_power_put_unchecked(dev_priv,

> +						  dig_port-

> >ddi_io_power_domain);

>  

>  	intel_ddi_clk_disable(encoder);

>  }