Source: linux
Version: 6.12.8-1
Severity: important
Tags: upstream patch
X-Debbugs-Cc: debian-arm@lists.debian.org
User: debian-arm@lists.debian.org
Usertags: arm64

https://lore.kernel.org/linux-rockchip/df8e0ff8-355b-4c18-9349-0f04ae16e...@kwiboo.se/:

  Upstream commit fbcbffbac994 ("phy: rockchip: naneng-combphy: fix phy reset")
  broke backwards compatibly with old DTs and has already been backported
  breaking i.e. PCIe and USB on Rockchip RK356x boards on stable and
  longterm kernels.

That thread is about a patch which fixes that backward compatibility.
Further down in that thread mentioned the following:

  Trying to boot into Linux v6.1.123+, v6.6.69+ and v6.12.8+ using the
  U-Boot bundled DT for RK356x boards now result in broken PCIe, SATA and
  USB

This issue results in the following kernel errors:

  [    6.075822] rockchip-naneng-combphy fe830000.phy: error -ENOENT: failed to 
get phy reset
  [    6.076599] rockchip-naneng-combphy fe830000.phy: probe with driver 
rockchip-naneng-combphy failed with error -2
  [    6.078649] rockchip-naneng-combphy fe840000.phy: error -ENOENT: failed to 
get phy reset
  [    6.079420] rockchip-naneng-combphy fe840000.phy: probe with driver 
rockchip-naneng-combphy failed with error -2

It doesn't affect kernel 6.13 (and higher) though.

The patch has been accepted by the upstream maintainer and can be found here:
https://git.kernel.org/pub/scm/linux/kernel/git/phy/linux-phy.git/log/?h=fixes
But it hasn't been sent 'further up the chain' just yet (right now).

This means that currently USB and PCIe is broken for rk356x devices for
both Stable/Bookworm and Testing/Trixie (and Sid).

Attached you'll find the commit from the linux-phy git repo.
I haven't added the 'fixed-upstream' tag as I wasn't sure if it needed
to be accepted 'further up the chain' for that.

HTH,
  Diederik


-- System Information:
Debian Release: trixie/sid
  APT prefers testing
  APT policy: (990, 'testing'), (500, 'unstable'), (1, 'experimental')
Architecture: arm64 (aarch64)

Kernel: Linux 6.12.8-arm64 (SMP w/4 CPU threads)
Locale: LANG=C.UTF-8, LC_CTYPE=C.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
From: Chukun Pan <amad...@jmu.edu.cn>
Date: Mon, 6 Jan 2025 18:00:01 +0800
Subject: phy: rockchip: naneng-combphy: compatible reset with old DT
Origin: 
https://git.kernel.org/pub/scm/linux/kernel/git/phy/linux-phy.git/commit?id=3126ea9be66b53e607f87f067641ba724be24181

The device tree of RK3568 did not specify reset-names before.
So add fallback to old behaviour to be compatible with old DT.

Fixes: fbcbffbac994 ("phy: rockchip: naneng-combphy: fix phy reset")
Cc: Jianfeng Liu <liujianfeng1...@gmail.com>
Signed-off-by: Chukun Pan <amad...@jmu.edu.cn>
Reviewed-by: Jonas Karlman <jo...@kwiboo.se>
Link: https://lore.kernel.org/r/20250106100001.1344418-2-amad...@jmu.edu.cn
Signed-off-by: Vinod Koul <vk...@kernel.org>
---
 drivers/phy/rockchip/phy-rockchip-naneng-combphy.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/phy/rockchip/phy-rockchip-naneng-combphy.c 
b/drivers/phy/rockchip/phy-rockchip-naneng-combphy.c
index a1532ef8bbe9..8c3ce57f8915 100644
--- a/drivers/phy/rockchip/phy-rockchip-naneng-combphy.c
+++ b/drivers/phy/rockchip/phy-rockchip-naneng-combphy.c
@@ -324,7 +324,10 @@ static int rockchip_combphy_parse_dt(struct device *dev, 
struct rockchip_combphy
 
        priv->ext_refclk = device_property_present(dev, "rockchip,ext-refclk");
 
-       priv->phy_rst = devm_reset_control_get(dev, "phy");
+       priv->phy_rst = devm_reset_control_get_exclusive(dev, "phy");
+       /* fallback to old behaviour */
+       if (PTR_ERR(priv->phy_rst) == -ENOENT)
+               priv->phy_rst = devm_reset_control_array_get_exclusive(dev);
        if (IS_ERR(priv->phy_rst))
                return dev_err_probe(dev, PTR_ERR(priv->phy_rst), "failed to 
get phy reset\n");
 
-- 
2.47.2

Reply via email to