ath79: qca955x ag71xx upstream driver fix
authorOskari Lemmela <oskari@lemmela.net>
Sun, 4 Aug 2024 07:02:09 +0000 (10:02 +0300)
committerHauke Mehrtens <hauke@hauke-m.de>
Sun, 22 Sep 2024 16:42:58 +0000 (18:42 +0200)
Fix mdio probe in qca95xx devices and add mandatory clocks to dtsi

Signed-off-by: Oskari Lemmela <oskari@lemmela.net>
Link: https://github.com/openwrt/openwrt/pull/15926
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
target/linux/ath79/dts/qca955x.dtsi
target/linux/generic/pending-6.6/900-net-ag71xx-fix-qca9530-and-qca9550-mdio-probe.patch [new file with mode: 0644]

index 9d410ceb461cbfdee5196ee494978ac8ca74ceaa..c6cf83d4dafe9434697a907246b3b81d0f34b08b 100644 (file)
 
        resets = <&rst 9>, <&rst 22>;
        reset-names = "mac", "mdio";
+       clocks = <&pll ATH79_CLK_AHB>, <&pll ATH79_CLK_REF>;
+       clock-names = "eth", "mdio";
 };
 
 &mdio1 {
 
        resets = <&rst 13>, <&rst 23>;
        reset-names = "mac", "mdio";
+       clocks = <&pll ATH79_CLK_AHB>, <&pll ATH79_CLK_REF>;
+       clock-names = "eth", "mdio";
 };
diff --git a/target/linux/generic/pending-6.6/900-net-ag71xx-fix-qca9530-and-qca9550-mdio-probe.patch b/target/linux/generic/pending-6.6/900-net-ag71xx-fix-qca9530-and-qca9550-mdio-probe.patch
new file mode 100644 (file)
index 0000000..f2c197d
--- /dev/null
@@ -0,0 +1,25 @@
+From 440415703692af4548e836832ef0434e87fbc357 Mon Sep 17 00:00:00 2001
+From: Oskari Lemmela <oskari@lemmela.net>
+Date: Sat, 13 Jul 2024 18:56:59 +0300
+Subject: [PATCH] net: ag71xx: fix qca9530 and qca9550 mdio probe
+
+Newer QCA9530 and QCA9550 devices should use same div table as AR933X.
+
+Fixes: d51b6ce441d3 ("net: ethernet: add ag71xx driver")
+Signed-off-by: Oskari Lemmela <oskari@lemmela.net>
+---
+ drivers/net/ethernet/atheros/ag71xx.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/net/ethernet/atheros/ag71xx.c
++++ b/drivers/net/ethernet/atheros/ag71xx.c
+@@ -638,7 +638,8 @@ static int ag71xx_mdio_get_divider(struc
+       if (!ref_clock)
+               return -EINVAL;
+-      if (ag71xx_is(ag, AR9330) || ag71xx_is(ag, AR9340)) {
++      if (ag71xx_is(ag, AR9330) || ag71xx_is(ag, AR9340) ||
++          ag71xx_is(ag, QCA9530) || ag71xx_is(ag, QCA9550)) {
+               table = ar933x_mdio_div_table;
+               ndivs = ARRAY_SIZE(ar933x_mdio_div_table);
+       } else if (ag71xx_is(ag, AR7240)) {