Commit f53979d6 authored by José Roberto de Souza's avatar José Roberto de Souza Committed by Matt Roper

drm/i915/display/tc: Rename safe_mode functions ownership

When DP_PHY_MODE_STATUS_NOT_SAFE is set, it means that display
has the control over the TC phy.
The "not safe" naming is confusing using ownership make it easier
to read also future platforms will have a new register that does the
same job as DP_PHY_MODE_STATUS_NOT_SAFE but with the onwership name.

BSpec: 49294
Cc: Imre Deak <imre.deak@intel.com>
Signed-off-by: default avatarJosé Roberto de Souza <jose.souza@intel.com>
Signed-off-by: default avatarClinton Taylor <Clinton.A.Taylor@intel.com>
Signed-off-by: default avatarMatt Roper <matthew.d.roper@intel.com>
Reviewed-by: default avatarImre Deak <imre.deak@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20210514153711.2359617-10-matthew.d.roper@intel.com
parent 626426ff
...@@ -256,8 +256,8 @@ static bool icl_tc_phy_status_complete(struct intel_digital_port *dig_port) ...@@ -256,8 +256,8 @@ static bool icl_tc_phy_status_complete(struct intel_digital_port *dig_port)
return val & DP_PHY_MODE_STATUS_COMPLETED(dig_port->tc_phy_fia_idx); return val & DP_PHY_MODE_STATUS_COMPLETED(dig_port->tc_phy_fia_idx);
} }
static bool icl_tc_phy_set_safe_mode(struct intel_digital_port *dig_port, static bool icl_tc_phy_take_ownership(struct intel_digital_port *dig_port,
bool enable) bool take)
{ {
struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev); struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev);
struct intel_uncore *uncore = &i915->uncore; struct intel_uncore *uncore = &i915->uncore;
...@@ -267,20 +267,20 @@ static bool icl_tc_phy_set_safe_mode(struct intel_digital_port *dig_port, ...@@ -267,20 +267,20 @@ static bool icl_tc_phy_set_safe_mode(struct intel_digital_port *dig_port,
PORT_TX_DFLEXDPCSSS(dig_port->tc_phy_fia)); PORT_TX_DFLEXDPCSSS(dig_port->tc_phy_fia));
if (val == 0xffffffff) { if (val == 0xffffffff) {
drm_dbg_kms(&i915->drm, drm_dbg_kms(&i915->drm,
"Port %s: PHY in TCCOLD, can't %s safe-mode\n", "Port %s: PHY in TCCOLD, can't %s ownership\n",
dig_port->tc_port_name, enabledisable(enable)); dig_port->tc_port_name, take ? "take" : "release");
return false; return false;
} }
val &= ~DP_PHY_MODE_STATUS_NOT_SAFE(dig_port->tc_phy_fia_idx); val &= ~DP_PHY_MODE_STATUS_NOT_SAFE(dig_port->tc_phy_fia_idx);
if (!enable) if (take)
val |= DP_PHY_MODE_STATUS_NOT_SAFE(dig_port->tc_phy_fia_idx); val |= DP_PHY_MODE_STATUS_NOT_SAFE(dig_port->tc_phy_fia_idx);
intel_uncore_write(uncore, intel_uncore_write(uncore,
PORT_TX_DFLEXDPCSSS(dig_port->tc_phy_fia), val); PORT_TX_DFLEXDPCSSS(dig_port->tc_phy_fia), val);
if (enable && wait_for(!icl_tc_phy_status_complete(dig_port), 10)) if (!take && wait_for(!icl_tc_phy_status_complete(dig_port), 10))
drm_dbg_kms(&i915->drm, drm_dbg_kms(&i915->drm,
"Port %s: PHY complete clear timed out\n", "Port %s: PHY complete clear timed out\n",
dig_port->tc_port_name); dig_port->tc_port_name);
...@@ -288,7 +288,7 @@ static bool icl_tc_phy_set_safe_mode(struct intel_digital_port *dig_port, ...@@ -288,7 +288,7 @@ static bool icl_tc_phy_set_safe_mode(struct intel_digital_port *dig_port,
return true; return true;
} }
static bool icl_tc_phy_is_in_safe_mode(struct intel_digital_port *dig_port) static bool icl_tc_phy_is_owned(struct intel_digital_port *dig_port)
{ {
struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev); struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev);
struct intel_uncore *uncore = &i915->uncore; struct intel_uncore *uncore = &i915->uncore;
...@@ -303,7 +303,7 @@ static bool icl_tc_phy_is_in_safe_mode(struct intel_digital_port *dig_port) ...@@ -303,7 +303,7 @@ static bool icl_tc_phy_is_in_safe_mode(struct intel_digital_port *dig_port)
return true; return true;
} }
return !(val & DP_PHY_MODE_STATUS_NOT_SAFE(dig_port->tc_phy_fia_idx)); return val & DP_PHY_MODE_STATUS_NOT_SAFE(dig_port->tc_phy_fia_idx);
} }
/* /*
...@@ -329,7 +329,7 @@ static void icl_tc_phy_connect(struct intel_digital_port *dig_port, ...@@ -329,7 +329,7 @@ static void icl_tc_phy_connect(struct intel_digital_port *dig_port,
goto out_set_tbt_alt_mode; goto out_set_tbt_alt_mode;
} }
if (!icl_tc_phy_set_safe_mode(dig_port, false) && if (!icl_tc_phy_take_ownership(dig_port, true) &&
!drm_WARN_ON(&i915->drm, dig_port->tc_legacy_port)) !drm_WARN_ON(&i915->drm, dig_port->tc_legacy_port))
goto out_set_tbt_alt_mode; goto out_set_tbt_alt_mode;
...@@ -348,7 +348,7 @@ static void icl_tc_phy_connect(struct intel_digital_port *dig_port, ...@@ -348,7 +348,7 @@ static void icl_tc_phy_connect(struct intel_digital_port *dig_port,
if (!(tc_port_live_status_mask(dig_port) & BIT(TC_PORT_DP_ALT))) { if (!(tc_port_live_status_mask(dig_port) & BIT(TC_PORT_DP_ALT))) {
drm_dbg_kms(&i915->drm, "Port %s: PHY sudden disconnect\n", drm_dbg_kms(&i915->drm, "Port %s: PHY sudden disconnect\n",
dig_port->tc_port_name); dig_port->tc_port_name);
goto out_set_safe_mode; goto out_release_phy;
} }
if (max_lanes < required_lanes) { if (max_lanes < required_lanes) {
...@@ -356,15 +356,15 @@ static void icl_tc_phy_connect(struct intel_digital_port *dig_port, ...@@ -356,15 +356,15 @@ static void icl_tc_phy_connect(struct intel_digital_port *dig_port,
"Port %s: PHY max lanes %d < required lanes %d\n", "Port %s: PHY max lanes %d < required lanes %d\n",
dig_port->tc_port_name, dig_port->tc_port_name,
max_lanes, required_lanes); max_lanes, required_lanes);
goto out_set_safe_mode; goto out_release_phy;
} }
dig_port->tc_mode = TC_PORT_DP_ALT; dig_port->tc_mode = TC_PORT_DP_ALT;
return; return;
out_set_safe_mode: out_release_phy:
icl_tc_phy_set_safe_mode(dig_port, true); icl_tc_phy_take_ownership(dig_port, false);
out_set_tbt_alt_mode: out_set_tbt_alt_mode:
dig_port->tc_mode = TC_PORT_TBT_ALT; dig_port->tc_mode = TC_PORT_TBT_ALT;
} }
...@@ -380,7 +380,7 @@ static void icl_tc_phy_disconnect(struct intel_digital_port *dig_port) ...@@ -380,7 +380,7 @@ static void icl_tc_phy_disconnect(struct intel_digital_port *dig_port)
/* Nothing to do, we never disconnect from legacy mode */ /* Nothing to do, we never disconnect from legacy mode */
break; break;
case TC_PORT_DP_ALT: case TC_PORT_DP_ALT:
icl_tc_phy_set_safe_mode(dig_port, true); icl_tc_phy_take_ownership(dig_port, false);
dig_port->tc_mode = TC_PORT_TBT_ALT; dig_port->tc_mode = TC_PORT_TBT_ALT;
break; break;
case TC_PORT_TBT_ALT: case TC_PORT_TBT_ALT:
...@@ -401,8 +401,8 @@ static bool icl_tc_phy_is_connected(struct intel_digital_port *dig_port) ...@@ -401,8 +401,8 @@ static bool icl_tc_phy_is_connected(struct intel_digital_port *dig_port)
return dig_port->tc_mode == TC_PORT_TBT_ALT; return dig_port->tc_mode == TC_PORT_TBT_ALT;
} }
if (icl_tc_phy_is_in_safe_mode(dig_port)) { if (!icl_tc_phy_is_owned(dig_port)) {
drm_dbg_kms(&i915->drm, "Port %s: PHY still in safe mode\n", drm_dbg_kms(&i915->drm, "Port %s: PHY not owned\n",
dig_port->tc_port_name); dig_port->tc_port_name);
return false; return false;
...@@ -417,10 +417,9 @@ intel_tc_port_get_current_mode(struct intel_digital_port *dig_port) ...@@ -417,10 +417,9 @@ intel_tc_port_get_current_mode(struct intel_digital_port *dig_port)
{ {
struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev); struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev);
u32 live_status_mask = tc_port_live_status_mask(dig_port); u32 live_status_mask = tc_port_live_status_mask(dig_port);
bool in_safe_mode = icl_tc_phy_is_in_safe_mode(dig_port);
enum tc_port_mode mode; enum tc_port_mode mode;
if (in_safe_mode || if (!icl_tc_phy_is_owned(dig_port) ||
drm_WARN_ON(&i915->drm, !icl_tc_phy_status_complete(dig_port))) drm_WARN_ON(&i915->drm, !icl_tc_phy_status_complete(dig_port)))
return TC_PORT_TBT_ALT; return TC_PORT_TBT_ALT;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment