From: Heiko Stuebner <heiko@sntech.de>
To: vkoul@kernel.org, kishon@kernel.org
Cc: heiko@sntech.de, linux-phy@lists.infradead.org,
linux-arm-kernel@lists.infradead.org,
linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org,
quentin.schulz@cherry.de, sebastian.reichel@collabora.com,
Heiko Stuebner <heiko.stuebner@cherry.de>
Subject: [PATCH 2/2] phy: rockchip: usbdp: re-init the phy on orientation-change
Date: Tue, 25 Feb 2025 19:45:19 +0100 [thread overview]
Message-ID: <20250225184519.3586926-3-heiko@sntech.de> (raw)
In-Reply-To: <20250225184519.3586926-1-heiko@sntech.de>
From: Heiko Stuebner <heiko.stuebner@cherry.de>
Until now the usbdp in the orientation-handler set the new lane setup in
its internal state variables and adapted the sbu gpios as needed.
It never actually updated the phy itself though, but relied on the
controlling usb-controller to disable and re-enable the phy.
And while on the vendor-kernel, I could see that on every unplug the dwc3
did go to its suspend and woke up on the next device plug-in event,
thus toggling the phy as needed, this does not happen in all cases and we
should not rely on that behaviour.
This results in the usb2 always working, as it's not affected by the
orientation, but usb3 only working in one direction right now.
So similar to how the update works in the power-on callback, just re-init
the phy if it's already running when the orientation-event happens.
Both the power-on/-off functions as well as the orientation-set callback
work with the usbdp-mutex held, so can't conflict.
The behaviour is similar to how the qcom qmp phys handle the orientaton
re-init - by re-initting the phy.
Signed-off-by: Heiko Stuebner <heiko.stuebner@cherry.de>
---
drivers/phy/rockchip/phy-rockchip-usbdp.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/drivers/phy/rockchip/phy-rockchip-usbdp.c b/drivers/phy/rockchip/phy-rockchip-usbdp.c
index 7b17c82ebcfc..b63259a90d85 100644
--- a/drivers/phy/rockchip/phy-rockchip-usbdp.c
+++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c
@@ -1277,6 +1277,7 @@ static int rk_udphy_orien_sw_set(struct typec_switch_dev *sw,
enum typec_orientation orien)
{
struct rk_udphy *udphy = typec_switch_get_drvdata(sw);
+ int ret = 0;
mutex_lock(&udphy->mutex);
@@ -1292,6 +1293,12 @@ static int rk_udphy_orien_sw_set(struct typec_switch_dev *sw,
rk_udphy_set_typec_default_mapping(udphy);
rk_udphy_usb_bvalid_enable(udphy, true);
+ /* re-init the phy if already on */
+ if (udphy->status != UDPHY_MODE_NONE) {
+ rk_udphy_disable(udphy);
+ ret = rk_udphy_setup(udphy);
+ }
+
unlock_ret:
mutex_unlock(&udphy->mutex);
return ret;
--
2.47.2
next prev parent reply other threads:[~2025-02-25 18:45 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-25 18:45 [PATCH 0/2] phy: rockchip: usbdp: improve typec orientation handling Heiko Stuebner
2025-02-25 18:45 ` [PATCH 1/2] phy: rockchip: usbdp: move type-orientation-switch further down Heiko Stuebner
2025-02-25 22:16 ` Christophe JAILLET
2025-02-25 22:22 ` Heiko Stübner
2025-02-25 18:45 ` Heiko Stuebner [this message]
2025-02-25 22:07 ` [PATCH 2/2] phy: rockchip: usbdp: re-init the phy on orientation-change Heiko Stübner
2025-02-26 14:46 ` Ondřej Jirman
2025-02-26 15:53 ` Heiko Stübner
2025-02-26 17:03 ` Ondřej Jirman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250225184519.3586926-3-heiko@sntech.de \
--to=heiko@sntech.de \
--cc=heiko.stuebner@cherry.de \
--cc=kishon@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-phy@lists.infradead.org \
--cc=linux-rockchip@lists.infradead.org \
--cc=quentin.schulz@cherry.de \
--cc=sebastian.reichel@collabora.com \
--cc=vkoul@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®