]> www.infradead.org Git - users/hch/misc.git/commitdiff
phy: rockchip: naneng-combphy: Enable U3 OTG port for RK3568
authorJonas Karlman <jonas@kwiboo.se>
Wed, 23 Jul 2025 07:23:22 +0000 (07:23 +0000)
committerVinod Koul <vkoul@kernel.org>
Wed, 13 Aug 2025 06:49:24 +0000 (12:19 +0530)
The boot firmware may disable the U3 port early during boot and leave it
up to the controller or PHY driver to re-enable U3 when needed.

The Rockchip USBDP PHY driver currently does this for RK3576 and RK3588,
something the Rockchip Naneng Combo PHY driver never does for RK3568.
This may result in USB 3.0 ports being limited to only using USB 2.0 or
in special cases not working at all on RK3568.

Write to PIPE_GRF USB3OTGx_CON1 reg to ensure the U3 port is enabled
when a PHY with PHY_TYPE_USB3 mode is used.

Fixes: 7160820d742a ("phy: rockchip: add naneng combo phy for RK3568")
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Link: https://lore.kernel.org/r/20250723072324.2246498-1-jonas@kwiboo.se
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/phy/rockchip/phy-rockchip-naneng-combphy.c

index ce91fb1d51671d8bacd0ad46b163a46b839b5d7d..17c6310f4b54bf3ed8b115d4b68f2a9f15bf557b 100644 (file)
@@ -137,6 +137,8 @@ struct rockchip_combphy_grfcfg {
        struct combphy_reg pipe_xpcs_phy_ready;
        struct combphy_reg pipe_pcie1l0_sel;
        struct combphy_reg pipe_pcie1l1_sel;
+       struct combphy_reg u3otg0_port_en;
+       struct combphy_reg u3otg1_port_en;
 };
 
 struct rockchip_combphy_cfg {
@@ -594,6 +596,14 @@ static int rk3568_combphy_cfg(struct rockchip_combphy_priv *priv)
                rockchip_combphy_param_write(priv->phy_grf, &cfg->pipe_txcomp_sel, false);
                rockchip_combphy_param_write(priv->phy_grf, &cfg->pipe_txelec_sel, false);
                rockchip_combphy_param_write(priv->phy_grf, &cfg->usb_mode_set, true);
+               switch (priv->id) {
+               case 0:
+                       rockchip_combphy_param_write(priv->pipe_grf, &cfg->u3otg0_port_en, true);
+                       break;
+               case 1:
+                       rockchip_combphy_param_write(priv->pipe_grf, &cfg->u3otg1_port_en, true);
+                       break;
+               }
                break;
 
        case PHY_TYPE_SATA:
@@ -737,6 +747,8 @@ static const struct rockchip_combphy_grfcfg rk3568_combphy_grfcfgs = {
        /* pipe-grf */
        .pipe_con0_for_sata     = { 0x0000, 15, 0, 0x00, 0x2220 },
        .pipe_xpcs_phy_ready    = { 0x0040, 2, 2, 0x00, 0x01 },
+       .u3otg0_port_en         = { 0x0104, 15, 0, 0x0181, 0x1100 },
+       .u3otg1_port_en         = { 0x0144, 15, 0, 0x0181, 0x1100 },
 };
 
 static const struct rockchip_combphy_cfg rk3568_combphy_cfgs = {