[PATCH v5 0/6] phy: rockchip: inno-usb2: ensure PHY is running when clock is requested
Sebastian Reichel
sebastian.reichel at collabora.com
Tue Nov 10 09:19:13 PST 2026
This was noticed on RK3588 EVB1 when resuming from system suspend. This
is technically a fix, but its unclear when the bug was introduced and
system suspend is broken on RK3588 for quite a while and not just due
to this problem. So I think this fix can be merged the normal way via
linux-next.
Changes in v5:
- Link to v4: https://patch.msgid.link/20261110-phy-rockchip-inno-usb2-clock-fix-v4-0-51acc071634f@collabora.com
- Add new patch converting 480MHz clock registration to device maanged
clk_hw helpers instead of using legacy clock framework functions with
open coded device managed release handlers. This is a cleanup, which
also allows easy implementation of the next point.
- Restore clock registration back to the original place, so that internal
users can access it early. The clock provider registration is kept at
the new place (after initializing the ports) to ensure the clock can
only be requested when either more than two ports are available or the
port already being initialized. (Sashiko)
Changes in v4:
- Link to v3: https://patch.msgid.link/20261105-phy-rockchip-inno-usb2-clock-fix-v3-0-b20608c08b94@collabora.com
- Drop patch avoiding rport->suspended in rockchip_usb2phy_sm_work; it
was meant as a simple cleanup and Sashiko suggested it is more tricky
- Add new patch removing error handling for regmap_write and
regmap_write_bits
- Add new patch removing error handling for reset controller
assert/deassert
- Simplify final two patches due to the dropped error handling
- In the final patch move the 480M clock registration after the
port_cfg population to properly fix the race condition instead
of relying on -EAGAIN and the NULL check
- In the final patch create a new helper function deciding between
handling the PHY suspend in the clock (un)prepare functions; we
keep the NULL check for port_cfg as this properly handles the
case of the port sub-node being disabled in DT. From functional
point of view this setup doesn't make sense (no need to enable
the PHY if all ports are disabled), but one extra NULL check is
cheap, so it's better to handle this gracefully.
Changes in v3:
- Link to v2: https://patch.msgid.link/20261001-phy-rockchip-inno-usb2-clock-fix-v2-0-e01bf509359e@collabora.com
- Fix do_suspend negation resulting in SError on RK3576 (Sashiko, CI testing)
- Ensure PHY ports array is initialized in clock enable path (Sashiko)
- Cleanup properly in clock enable error path (Sashiko)
Changes in v2:
- Link to v1: https://patch.msgid.link/20260908-phy-rockchip-inno-usb2-clock-fix-v1-1-f7d59c31b908@collabora.com
- Move suspend exit code from rockchip_usb2phy_power_on into a
separate patch and reuse it in the clock prepare function;
move is done in a separate patch
- Updated commit messages with proper rationale
- Added one more patch dropping useless assignment
of rport->suspended directly after calling
rockchip_usb2phy_power_on/off
- Add one more patch unifying and simplifying the debug
messages for phy init/power_on/power_off/exit
---
To: Vinod Koul <vkoul at kernel.org>
To: Neil Armstrong <neil.armstrong at linaro.org>
To: Manivannan Sadhasivam <mani at kernel.org>
To: Heiko Stuebner <heiko at sntech.de>
To: Philipp Zabel <p.zabel at pengutronix.de>
To: William Wu <william.wu at rock-chips.com>
Cc: linux-phy at lists.infradead.org
Cc: linux-arm-kernel at lists.infradead.org
Cc: linux-rockchip at lists.infradead.org
Cc: linux-kernel at vger.kernel.org
Cc: Igor Paunovic <royalnet026 at gmail.com>
Cc: kernel at collabora.com
Signed-off-by: Sebastian Reichel <sebastian.reichel at collabora.com>
---
Sebastian Reichel (6):
phy: rockchip: inno-usb2: simplify and unify PHY op debug messages
phy: rockchip: inno-usb2: ignore regmap_write return codes
phy: rockchip: inno-usb2: ignore reset_control return codes
phy: rockchip: inno-usb2: use devm for 480m clock registration
phy: rockchip: inno-usb2: move suspend handling into new function
phy: rockchip: inno-usb2: move suspend handling into clock prepare/unprepare for RK3588/RK3576
drivers/phy/rockchip/phy-rockchip-inno-usb2.c | 284 ++++++++++----------------
1 file changed, 103 insertions(+), 181 deletions(-)
---
base-commit: 6628e7d4c6b25c8d18f1345e3a20d21829aae7e4
change-id: 20260908-phy-rockchip-inno-usb2-clock-fix-edd65b57f884
Best regards,
--
Sebastian Reichel <sebastian.reichel at collabora.com>
More information about the Linux-rockchip
mailing list