61 lines
1.9 KiB
Diff
61 lines
1.9 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Yixun Lan <dlan@kernel.org>
|
|
Subject: [PATCH v3] phy: k1-usb: add disconnect function support
|
|
Date: Mon, 16 Feb 2026 23:26:53 +0800
|
|
|
|
A disconnect status BIT of USB2 PHY need to be cleared, otherwise
|
|
it will fail to work properly during next connection when devices
|
|
connect to roothub directly.
|
|
|
|
Fixes: fe4bc1a08638 ("phy: spacemit: support K1 USB2.0 PHY controller")
|
|
Signed-off-by: Yixun Lan <dlan@kernel.org>
|
|
---
|
|
|
|
Change in v3:
|
|
- split from v2 as bug fix
|
|
- fix alignment to open parenthesis
|
|
- http://lore.kernel.org/r/20260216090112.n5jjpui3luqsybb5@skbuf
|
|
- Link to v2: https://lore.kernel.org/r/20260214-11-k3-usb2-phy-v2-0-6ed31e031ab4@kernel.org
|
|
---
|
|
drivers/phy/spacemit/phy-k1-usb2.c | 14 ++++++++++++++
|
|
1 file changed, 14 insertions(+)
|
|
|
|
diff --git a/drivers/phy/spacemit/phy-k1-usb2.c b/drivers/phy/spacemit/phy-k1-usb2.c
|
|
index 342061380012..9215d0b223b2 100644
|
|
--- a/drivers/phy/spacemit/phy-k1-usb2.c
|
|
+++ b/drivers/phy/spacemit/phy-k1-usb2.c
|
|
@@ -48,6 +48,9 @@
|
|
#define PHY_CLK_HSTXP_EN BIT(3) /* clock hstxp enable */
|
|
#define PHY_HSTXP_MODE BIT(4) /* 0: force en_txp to be 1; 1: no force */
|
|
|
|
+#define PHY_K1_HS_HOST_DISC 0x40
|
|
+#define PHY_K1_HS_HOST_DISC_CLR BIT(0)
|
|
+
|
|
#define PHY_PLL_DIV_CFG 0x98
|
|
#define PHY_FDIV_FRACT_8_15 GENMASK(7, 0)
|
|
#define PHY_FDIV_FRACT_16_19 GENMASK(11, 8)
|
|
@@ -142,9 +145,20 @@ static int spacemit_usb2phy_exit(struct phy *phy)
|
|
return 0;
|
|
}
|
|
|
|
+static int spacemit_usb2phy_disconnect(struct phy *phy, int port)
|
|
+{
|
|
+ struct spacemit_usb2phy *sphy = phy_get_drvdata(phy);
|
|
+
|
|
+ regmap_update_bits(sphy->regmap_base, PHY_K1_HS_HOST_DISC,
|
|
+ PHY_K1_HS_HOST_DISC_CLR, PHY_K1_HS_HOST_DISC_CLR);
|
|
+
|
|
+ return 0;
|
|
+}
|
|
+
|
|
static const struct phy_ops spacemit_usb2phy_ops = {
|
|
.init = spacemit_usb2phy_init,
|
|
.exit = spacemit_usb2phy_exit,
|
|
+ .disconnect = spacemit_usb2phy_disconnect,
|
|
.owner = THIS_MODULE,
|
|
};
|
|
|
|
--
|
|
2.52.0
|
|
|