diff options
Diffstat (limited to 'drivers/gpu/drm/i915/display/intel_tc.c')
| -rw-r--r-- | drivers/gpu/drm/i915/display/intel_tc.c | 25 | 
1 files changed, 16 insertions, 9 deletions
| diff --git a/drivers/gpu/drm/i915/display/intel_tc.c b/drivers/gpu/drm/i915/display/intel_tc.c index f64d348a969e..dcf05e00e505 100644 --- a/drivers/gpu/drm/i915/display/intel_tc.c +++ b/drivers/gpu/drm/i915/display/intel_tc.c @@ -1030,18 +1030,25 @@ static bool xelpdp_tc_phy_enable_tcss_power(struct intel_tc_port *tc, bool enabl  	__xelpdp_tc_phy_enable_tcss_power(tc, enable); -	if ((!tc_phy_wait_for_ready(tc) || -	     !xelpdp_tc_phy_wait_for_tcss_power(tc, enable)) && -	    !drm_WARN_ON(&i915->drm, tc->mode == TC_PORT_LEGACY)) { -		if (enable) { -			__xelpdp_tc_phy_enable_tcss_power(tc, false); -			xelpdp_tc_phy_wait_for_tcss_power(tc, false); -		} +	if (enable && !tc_phy_wait_for_ready(tc)) +		goto out_disable; -		return false; -	} +	if (!xelpdp_tc_phy_wait_for_tcss_power(tc, enable)) +		goto out_disable;  	return true; + +out_disable: +	if (drm_WARN_ON(&i915->drm, tc->mode == TC_PORT_LEGACY)) +		return false; + +	if (!enable) +		return false; + +	__xelpdp_tc_phy_enable_tcss_power(tc, false); +	xelpdp_tc_phy_wait_for_tcss_power(tc, false); + +	return false;  }  static void xelpdp_tc_phy_take_ownership(struct intel_tc_port *tc, bool take) | 
