63 lines
2.0 KiB
Diff
63 lines
2.0 KiB
Diff
From git@z Thu Jan 1 00:00:00 1970
|
|
Subject: [PATCH v13 10/35] phy: rockchip: usbdp: Add missing mode_change
|
|
update
|
|
From: Sebastian Reichel <sebastian.reichel@collabora.com>
|
|
Date: Tue, 14 Jul 2026 21:26:11 +0200
|
|
Message-Id: <20260714-rockchip-usbdp-cleanup-v13-10-6cb3e769d4c5@collabora.com>
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset="utf-8"
|
|
Content-Transfer-Encoding: 7bit
|
|
|
|
rk_udphy_set_typec_default_mapping() updates the available modes,
|
|
but does not set the mode_change as required. This results in
|
|
missing re-initialization and thus non-working DisplayPort.
|
|
|
|
Fix this issue by introducing a new helper to update the available
|
|
modes.
|
|
|
|
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
|
|
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
|
|
---
|
|
drivers/phy/rockchip/phy-rockchip-usbdp.c | 16 +++++++++++-----
|
|
1 file changed, 11 insertions(+), 5 deletions(-)
|
|
|
|
--- a/drivers/phy/rockchip/phy-rockchip-usbdp.c
|
|
+++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c
|
|
@@ -617,6 +617,15 @@ static void rk_udphy_dp_hpd_event_trigge
|
|
rk_udphy_grfreg_write(udphy->vogrf, &cfg->vogrfcfg[udphy->id].hpd_trigger, hpd);
|
|
}
|
|
|
|
+static void rk_udphy_mode_set(struct rk_udphy *udphy, u8 mode)
|
|
+{
|
|
+ if (udphy->mode == mode)
|
|
+ return;
|
|
+
|
|
+ udphy->mode_change = true;
|
|
+ udphy->mode = mode;
|
|
+}
|
|
+
|
|
static void rk_udphy_set_typec_default_mapping(struct rk_udphy *udphy)
|
|
{
|
|
if (udphy->flip) {
|
|
@@ -647,7 +656,7 @@ static void rk_udphy_set_typec_default_m
|
|
gpiod_set_value_cansleep(udphy->sbu2_dc_gpio, 1);
|
|
}
|
|
|
|
- udphy->mode = UDPHY_MODE_DP_USB;
|
|
+ rk_udphy_mode_set(udphy, UDPHY_MODE_DP_USB);
|
|
}
|
|
|
|
static int rk_udphy_orien_sw_set(struct typec_switch_dev *sw,
|
|
@@ -1361,10 +1370,7 @@ static int rk_udphy_typec_mux_set(struct
|
|
usleep_range(750, 800);
|
|
rk_udphy_dp_hpd_event_trigger(udphy, true);
|
|
} else if (data->status & DP_STATUS_HPD_STATE) {
|
|
- if (udphy->mode != mode) {
|
|
- udphy->mode = mode;
|
|
- udphy->mode_change = true;
|
|
- }
|
|
+ rk_udphy_mode_set(udphy, mode);
|
|
rk_udphy_dp_hpd_event_trigger(udphy, true);
|
|
} else {
|
|
rk_udphy_dp_hpd_event_trigger(udphy, false);
|