70 lines
2.5 KiB
Diff
70 lines
2.5 KiB
Diff
From git@z Thu Jan 1 00:00:00 1970
|
|
Subject: [PATCH v13 26/35] phy: rockchip: usbdp: Handle
|
|
rk_udphy_reset_deassert errors
|
|
From: Sebastian Reichel <sebastian.reichel@collabora.com>
|
|
Date: Tue, 14 Jul 2026 21:26:27 +0200
|
|
Message-Id: <20260714-rockchip-usbdp-cleanup-v13-26-6cb3e769d4c5@collabora.com>
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset="utf-8"
|
|
Content-Transfer-Encoding: 7bit
|
|
|
|
Handle rk_udphy_reset_deassert returning errors to avoid theoretical
|
|
(Rockchip reset controller driver does not return errors) SError.
|
|
|
|
Fixes: 2f70bbddeb45 ("phy: rockchip: add usbdp combo phy driver")
|
|
Reported-by: Sashiko <sashiko-bot@kernel.org>
|
|
Closes: https://sashiko.dev/#/message/20260626211151.2332F1F000E9%40smtp.kernel.org
|
|
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
|
|
---
|
|
drivers/phy/rockchip/phy-rockchip-usbdp.c | 25 +++++++++++++++++++------
|
|
1 file changed, 19 insertions(+), 6 deletions(-)
|
|
|
|
--- a/drivers/phy/rockchip/phy-rockchip-usbdp.c
|
|
+++ b/drivers/phy/rockchip/phy-rockchip-usbdp.c
|
|
@@ -803,8 +803,12 @@ static int rk_udphy_init(struct rk_udphy
|
|
/* Step 1: power on pma and deassert apb rstn */
|
|
rk_udphy_grfreg_write(udphy->udphygrf, &cfg->grfcfg.low_pwrn, true);
|
|
|
|
- rk_udphy_reset_deassert(udphy, "pma_apb");
|
|
- rk_udphy_reset_deassert(udphy, "pcs_apb");
|
|
+ ret = rk_udphy_reset_deassert(udphy, "pma_apb");
|
|
+ if (ret)
|
|
+ goto assert_resets;
|
|
+ ret = rk_udphy_reset_deassert(udphy, "pcs_apb");
|
|
+ if (ret)
|
|
+ goto assert_resets;
|
|
|
|
/* Step 2: set init sequence and phy refclk */
|
|
ret = regmap_multi_reg_write(udphy->pma_regmap, rk_udphy_init_sequence,
|
|
@@ -830,8 +834,11 @@ 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)
|
|
- rk_udphy_reset_deassert(udphy, "init");
|
|
+ if (udphy->mode & UDPHY_MODE_USB) {
|
|
+ ret = rk_udphy_reset_deassert(udphy, "init");
|
|
+ if (ret)
|
|
+ goto assert_resets;
|
|
+ }
|
|
|
|
if (udphy->mode & UDPHY_MODE_DP) {
|
|
regmap_update_bits(udphy->pma_regmap, CMN_DP_RSTN_OFFSET,
|
|
@@ -843,8 +850,14 @@ static int rk_udphy_init(struct rk_udphy
|
|
|
|
/* Step 5: deassert cmn/lane rstn */
|
|
if (udphy->mode & UDPHY_MODE_USB) {
|
|
- rk_udphy_reset_deassert(udphy, "cmn");
|
|
- rk_udphy_reset_deassert(udphy, "lane");
|
|
+ ret = rk_udphy_reset_deassert(udphy, "cmn");
|
|
+ if (ret)
|
|
+ goto assert_resets;
|
|
+
|
|
+ ret = rk_udphy_reset_deassert(udphy, "lane");
|
|
+ if (ret)
|
|
+ goto assert_resets;
|
|
+
|
|
}
|
|
|
|
/* Step 6: wait for lock done of pll */
|