207 lines
6.5 KiB
Diff
207 lines
6.5 KiB
Diff
From git@z Thu Jan 1 00:00:00 1970
|
|
Subject: [PATCH v13 32/35] phy: rockchip: usbdp: Rename mode to hw_mode
|
|
From: Sebastian Reichel <sebastian.reichel@collabora.com>
|
|
Date: Tue, 14 Jul 2026 21:26:33 +0200
|
|
Message-Id: <20260714-rockchip-usbdp-cleanup-v13-32-6cb3e769d4c5@collabora.com>
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset="utf-8"
|
|
Content-Transfer-Encoding: 7bit
|
|
|
|
Rename mode field to hw_mode to make clear that this is the modes
|
|
currently supported by the hardware, but not necessarily requested
|
|
by software. I.e. it is only set by either the USB-C state machine
|
|
or device-tree if the PHY is used in a fixed routing setup.
|
|
|
|
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
|
|
---
|
|
drivers/phy/rockchip/phy-rockchip-usbdp.c | 48 +++++++++++++++----------------
|
|
1 file changed, 24 insertions(+), 24 deletions(-)
|
|
|
|
--- a/drivers/phy/rockchip/phy-rockchip-usbdp.c
|
|
+++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c
|
|
@@ -174,7 +174,7 @@ struct rk_udphy {
|
|
/* PHY status management */
|
|
bool flip;
|
|
bool phy_needs_reinit;
|
|
- u8 mode;
|
|
+ u8 hw_mode; /* modes currently supported by hardware */
|
|
u8 status;
|
|
|
|
/* utilized for USB */
|
|
@@ -579,18 +579,18 @@ static void rk_udphy_dp_lane_enable(stru
|
|
CMN_DP_CMN_RSTN, FIELD_PREP(CMN_DP_CMN_RSTN, 0x0));
|
|
}
|
|
|
|
-static void rk_udphy_mode_set(struct rk_udphy *udphy, u8 mode)
|
|
+static void rk_udphy_mode_set(struct rk_udphy *udphy, u8 hw_mode)
|
|
{
|
|
- if (udphy->mode == mode)
|
|
+ if (udphy->hw_mode == hw_mode)
|
|
return;
|
|
|
|
udphy->phy_needs_reinit = true;
|
|
- udphy->mode = mode;
|
|
+ udphy->hw_mode = hw_mode;
|
|
}
|
|
|
|
static void rk_udphy_set_typec_state(struct rk_udphy *udphy, unsigned long state)
|
|
{
|
|
- u8 mode;
|
|
+ u8 hw_mode;
|
|
|
|
switch (state) {
|
|
case TYPEC_DP_STATE_C:
|
|
@@ -599,7 +599,7 @@ static void rk_udphy_set_typec_state(str
|
|
udphy->lane_mux_sel[1] = PHY_LANE_MUX_DP;
|
|
udphy->lane_mux_sel[2] = PHY_LANE_MUX_DP;
|
|
udphy->lane_mux_sel[3] = PHY_LANE_MUX_DP;
|
|
- mode = UDPHY_MODE_DP;
|
|
+ hw_mode = UDPHY_MODE_DP;
|
|
udphy->dp_lanes = 4;
|
|
break;
|
|
|
|
@@ -616,12 +616,12 @@ static void rk_udphy_set_typec_state(str
|
|
udphy->lane_mux_sel[2] = PHY_LANE_MUX_DP;
|
|
udphy->lane_mux_sel[3] = PHY_LANE_MUX_DP;
|
|
}
|
|
- mode = UDPHY_MODE_DP_USB;
|
|
+ hw_mode = UDPHY_MODE_DP_USB;
|
|
udphy->dp_lanes = 2;
|
|
break;
|
|
}
|
|
|
|
- rk_udphy_mode_set(udphy, mode);
|
|
+ rk_udphy_mode_set(udphy, hw_mode);
|
|
}
|
|
|
|
static void rk_udphy_set_typec_default_mapping(struct rk_udphy *udphy)
|
|
@@ -744,7 +744,7 @@ static int rk_udphy_status_check(struct
|
|
int ret;
|
|
|
|
/* LCPLL check */
|
|
- if (udphy->mode & UDPHY_MODE_USB) {
|
|
+ if (udphy->hw_mode & UDPHY_MODE_USB) {
|
|
ret = regmap_read_poll_timeout(udphy->pma_regmap, CMN_ANA_LCPLL_DONE_OFFSET,
|
|
val, (val & CMN_ANA_LCPLL_AFC_DONE) &&
|
|
(val & CMN_ANA_LCPLL_LOCK_DONE), 200, 100000);
|
|
@@ -779,15 +779,15 @@ static int rk_udphy_init(struct rk_udphy
|
|
int ret;
|
|
|
|
dev_dbg(udphy->dev, "reinit PHY with USB3=%s and DP=%s (%u lanes) flipped=%s\n",
|
|
- str_on_off(udphy->mode & UDPHY_MODE_USB),
|
|
- str_on_off(udphy->mode & UDPHY_MODE_DP),
|
|
+ str_on_off(udphy->hw_mode & UDPHY_MODE_USB),
|
|
+ str_on_off(udphy->hw_mode & UDPHY_MODE_DP),
|
|
udphy->dp_lanes, str_yes_no(udphy->flip));
|
|
|
|
rk_udphy_reset_assert_all(udphy);
|
|
usleep_range(10000, 11000);
|
|
|
|
/* enable rx lfps for usb */
|
|
- if (udphy->mode & UDPHY_MODE_USB)
|
|
+ if (udphy->hw_mode & UDPHY_MODE_USB)
|
|
rk_udphy_grfreg_write(udphy->udphygrf, &cfg->grfcfg.rx_lfps, true);
|
|
|
|
/* Step 1: power on pma and deassert apb rstn */
|
|
@@ -824,13 +824,13 @@ static int rk_udphy_init(struct rk_udphy
|
|
FIELD_PREP(CMN_DP_LANE_EN_ALL, 0));
|
|
|
|
/* Step 4: deassert init rstn and wait for 200ns from datasheet */
|
|
- if (udphy->mode & UDPHY_MODE_USB) {
|
|
+ if (udphy->hw_mode & UDPHY_MODE_USB) {
|
|
ret = rk_udphy_reset_deassert(udphy, "init");
|
|
if (ret)
|
|
goto assert_resets;
|
|
}
|
|
|
|
- if (udphy->mode & UDPHY_MODE_DP) {
|
|
+ if (udphy->hw_mode & UDPHY_MODE_DP) {
|
|
regmap_update_bits(udphy->pma_regmap, CMN_DP_RSTN_OFFSET,
|
|
CMN_DP_INIT_RSTN,
|
|
FIELD_PREP(CMN_DP_INIT_RSTN, 0x1));
|
|
@@ -839,7 +839,7 @@ static int rk_udphy_init(struct rk_udphy
|
|
udelay(1);
|
|
|
|
/* Step 5: deassert cmn/lane rstn */
|
|
- if (udphy->mode & UDPHY_MODE_USB) {
|
|
+ if (udphy->hw_mode & UDPHY_MODE_USB) {
|
|
ret = rk_udphy_reset_deassert(udphy, "cmn");
|
|
if (ret)
|
|
goto assert_resets;
|
|
@@ -898,7 +898,7 @@ static int rk_udphy_parse_lane_mux_data(
|
|
num_lanes = device_property_count_u32(udphy->dev, "rockchip,dp-lane-mux");
|
|
if (num_lanes < 0) {
|
|
dev_dbg(udphy->dev, "no dp-lane-mux, following dp alt mode\n");
|
|
- udphy->mode = UDPHY_MODE_USB;
|
|
+ udphy->hw_mode = UDPHY_MODE_USB;
|
|
return 0;
|
|
}
|
|
|
|
@@ -927,10 +927,10 @@ static int rk_udphy_parse_lane_mux_data(
|
|
}
|
|
}
|
|
|
|
- udphy->mode = UDPHY_MODE_DP;
|
|
+ udphy->hw_mode = UDPHY_MODE_DP;
|
|
udphy->dp_lanes = num_lanes;
|
|
if (num_lanes == 1 || num_lanes == 2) {
|
|
- udphy->mode |= UDPHY_MODE_USB;
|
|
+ udphy->hw_mode |= UDPHY_MODE_USB;
|
|
udphy->flip = (udphy->lane_mux_sel[0] == PHY_LANE_MUX_DP) ||
|
|
(udphy->lane_mux_sel[1] == PHY_LANE_MUX_DP);
|
|
}
|
|
@@ -989,7 +989,7 @@ static int rk_udphy_power_on(struct rk_u
|
|
{
|
|
int ret;
|
|
|
|
- if (!(udphy->mode & mode)) {
|
|
+ if (!(udphy->hw_mode & mode)) {
|
|
dev_info(udphy->dev, "mode 0x%02x is not support\n", mode);
|
|
return 0;
|
|
}
|
|
@@ -1006,7 +1006,7 @@ static int rk_udphy_power_on(struct rk_u
|
|
return ret;
|
|
}
|
|
|
|
- if (!udphy->hs && udphy->mode & UDPHY_MODE_USB)
|
|
+ if (!udphy->hs && udphy->hw_mode & UDPHY_MODE_USB)
|
|
rk_udphy_u3_port_disable(udphy, false);
|
|
udphy->phy_needs_reinit = false;
|
|
|
|
@@ -1023,7 +1023,7 @@ static int rk_udphy_power_on(struct rk_u
|
|
return ret;
|
|
}
|
|
|
|
- if (!udphy->hs && udphy->mode & UDPHY_MODE_USB)
|
|
+ if (!udphy->hs && udphy->hw_mode & UDPHY_MODE_USB)
|
|
rk_udphy_u3_port_disable(udphy, false);
|
|
udphy->phy_needs_reinit = false;
|
|
|
|
@@ -1037,7 +1037,7 @@ static int rk_udphy_power_on(struct rk_u
|
|
|
|
static void rk_udphy_power_off(struct rk_udphy *udphy, u8 mode)
|
|
{
|
|
- if (!(udphy->mode & mode)) {
|
|
+ if (!(udphy->hw_mode & mode)) {
|
|
dev_info(udphy->dev, "mode 0x%02x is not support\n", mode);
|
|
return;
|
|
}
|
|
@@ -1296,7 +1296,7 @@ static int rk_udphy_usb3_phy_init(struct
|
|
guard(mutex)(&udphy->mutex);
|
|
|
|
/* DP only or high-speed, disable U3 port */
|
|
- if (!(udphy->mode & UDPHY_MODE_USB) || udphy->hs) {
|
|
+ if (!(udphy->hw_mode & UDPHY_MODE_USB) || udphy->hs) {
|
|
rk_udphy_u3_port_disable(udphy, true);
|
|
return 0;
|
|
}
|
|
@@ -1311,7 +1311,7 @@ static int rk_udphy_usb3_phy_exit(struct
|
|
guard(mutex)(&udphy->mutex);
|
|
|
|
/* DP only or high-speed */
|
|
- if (!(udphy->mode & UDPHY_MODE_USB) || udphy->hs)
|
|
+ if (!(udphy->hw_mode & UDPHY_MODE_USB) || udphy->hs)
|
|
return 0;
|
|
|
|
rk_udphy_power_off(udphy, UDPHY_MODE_USB);
|