]> git.ipfire.org Git - thirdparty/openwrt.git/commitdiff
generic: 6.6: backport upstream Realtek PHY patch 16252/head
authorÁlvaro Fernández Rojas <noltari@gmail.com>
Sat, 24 Aug 2024 13:05:30 +0000 (15:05 +0200)
committerÁlvaro Fernández Rojas <noltari@gmail.com>
Sat, 24 Aug 2024 13:14:40 +0000 (15:14 +0200)
- Fix setting of PHY LEDs Mode B bit on RTL8211F.
- Rename pending Realtek PHY patches.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
target/linux/generic/backport-6.6/781-12-v6.11-net-phy-realtek-Fix-setting-of-PHY-LEDs-Mode-B-bit-o.patch [new file with mode: 0644]
target/linux/generic/pending-6.6/720-01-net-phy-realtek-use-genphy_soft_reset-for-2.5G-PHYs.patch [moved from target/linux/generic/pending-6.6/724-net-phy-realtek-use-genphy_soft_reset-for-2.5G-PHYs.patch with 85% similarity]
target/linux/generic/pending-6.6/720-02-net-phy-realtek-disable-SGMII-in-band-AN-for-2-5G-PHYs.patch [moved from target/linux/generic/pending-6.6/725-net-phy-realtek-disable-SGMII-in-band-AN-for-2-5G-PHYs.patch with 93% similarity]
target/linux/generic/pending-6.6/720-03-net-phy-realtek-make-sure-paged-read-is-protected-by.patch [moved from target/linux/generic/pending-6.6/726-net-phy-realtek-make-sure-paged-read-is-protected-by.patch with 95% similarity]
target/linux/generic/pending-6.6/720-04-net-phy-realtek-use-inline-functions-for-10GbE-adver.patch [moved from target/linux/generic/pending-6.6/727-net-phy-realtek-use-inline-functions-for-10GbE-adver.patch with 93% similarity]
target/linux/generic/pending-6.6/720-05-net-phy-realtek-check-validity-of-10GbE-link-partner.patch [moved from target/linux/generic/pending-6.6/728-net-phy-realtek-check-validity-of-10GbE-link-partner.patch with 93% similarity]
target/linux/generic/pending-6.6/720-06-net-phy-realtek-introduce-rtl822x_probe.patch [moved from target/linux/generic/pending-6.6/729-net-phy-realtek-introduce-rtl822x_probe.patch with 87% similarity]
target/linux/generic/pending-6.6/720-07-net-phy-realtek-detect-early-version-of-RTL8221B.patch [moved from target/linux/generic/pending-6.6/730-net-phy-realtek-detect-early-version-of-RTL8221B.patch with 95% similarity]
target/linux/generic/pending-6.6/720-08-net-phy-realtek-support-interrupt-of-RTL8221B.patch [moved from target/linux/generic/pending-6.6/741-net-phy-realtek-support-interrupt-of-RTL8221B.patch with 89% similarity]

diff --git a/target/linux/generic/backport-6.6/781-12-v6.11-net-phy-realtek-Fix-setting-of-PHY-LEDs-Mode-B-bit-o.patch b/target/linux/generic/backport-6.6/781-12-v6.11-net-phy-realtek-Fix-setting-of-PHY-LEDs-Mode-B-bit-o.patch
new file mode 100644 (file)
index 0000000..5958fc9
--- /dev/null
@@ -0,0 +1,42 @@
+From a2f5c505b4378cd6fc7c4a44ff3665ccef2037db Mon Sep 17 00:00:00 2001
+From: Sava Jakovljev <savaj@meyersound.com>
+Date: Wed, 21 Aug 2024 04:16:57 +0200
+Subject: [PATCH] net: phy: realtek: Fix setting of PHY LEDs Mode B bit on
+ RTL8211F
+
+The current implementation incorrectly sets the mode bit of the PHY chip.
+Bit 15 (RTL8211F_LEDCR_MODE) should not be shifted together with the
+configuration nibble of a LED- it should be set independently of the
+index of the LED being configured.
+As a consequence, the RTL8211F LED control is actually operating in Mode A.
+Fix the error by or-ing final register value to write with a const-value of
+RTL8211F_LEDCR_MODE, thus setting Mode bit explicitly.
+
+Fixes: 17784801d888 ("net: phy: realtek: Add support for PHY LEDs on RTL8211F")
+Signed-off-by: Sava Jakovljev <savaj@meyersound.com>
+Reviewed-by: Marek Vasut <marex@denx.de>
+Link: https://patch.msgid.link/PAWP192MB21287372F30C4E55B6DF6158C38E2@PAWP192MB2128.EURP192.PROD.OUTLOOK.COM
+Signed-off-by: Paolo Abeni <pabeni@redhat.com>
+---
+ drivers/net/phy/realtek.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/net/phy/realtek.c
++++ b/drivers/net/phy/realtek.c
+@@ -555,7 +555,7 @@ static int rtl8211f_led_hw_control_set(s
+                                      unsigned long rules)
+ {
+       const u16 mask = RTL8211F_LEDCR_MASK << (RTL8211F_LEDCR_SHIFT * index);
+-      u16 reg = RTL8211F_LEDCR_MODE;  /* Mode B */
++      u16 reg = 0;
+       if (index >= RTL8211F_LED_COUNT)
+               return -EINVAL;
+@@ -575,6 +575,7 @@ static int rtl8211f_led_hw_control_set(s
+       }
+       reg <<= RTL8211F_LEDCR_SHIFT * index;
++      reg |= RTL8211F_LEDCR_MODE;      /* Mode B */
+       return phy_modify_paged(phydev, 0xd04, RTL8211F_LEDCR, mask, reg);
+ }
similarity index 85%
rename from target/linux/generic/pending-6.6/724-net-phy-realtek-use-genphy_soft_reset-for-2.5G-PHYs.patch
rename to target/linux/generic/pending-6.6/720-01-net-phy-realtek-use-genphy_soft_reset-for-2.5G-PHYs.patch
index 51cf9580f1aed492f5376ea2a85f063428cbe56f..fe8ee7b5fa1435fcb1029daea62b13ce45dcc922 100644 (file)
@@ -15,7 +15,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
 
 --- a/drivers/net/phy/realtek.c
 +++ b/drivers/net/phy/realtek.c
-@@ -1324,6 +1324,7 @@ static struct phy_driver realtek_drvs[]
+@@ -1325,6 +1325,7 @@ static struct phy_driver realtek_drvs[]
        }, {
                .name           = "RTL8226 2.5Gbps PHY",
                .match_phy_device = rtl8226_match_phy_device,
@@ -23,7 +23,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
                .get_features   = rtl822x_get_features,
                .config_aneg    = rtl822x_config_aneg,
                .read_status    = rtl822x_read_status,
-@@ -1336,6 +1337,7 @@ static struct phy_driver realtek_drvs[]
+@@ -1337,6 +1338,7 @@ static struct phy_driver realtek_drvs[]
        }, {
                PHY_ID_MATCH_EXACT(0x001cc840),
                .name           = "RTL8226B_RTL8221B 2.5Gbps PHY",
@@ -31,7 +31,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
                .get_features   = rtl822x_get_features,
                .config_aneg    = rtl822x_config_aneg,
                .config_init    = rtl822xb_config_init,
-@@ -1350,6 +1352,7 @@ static struct phy_driver realtek_drvs[]
+@@ -1351,6 +1353,7 @@ static struct phy_driver realtek_drvs[]
        }, {
                PHY_ID_MATCH_EXACT(0x001cc838),
                .name           = "RTL8226-CG 2.5Gbps PHY",
@@ -39,7 +39,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
                .get_features   = rtl822x_get_features,
                .config_aneg    = rtl822x_config_aneg,
                .read_status    = rtl822x_read_status,
-@@ -1360,6 +1363,7 @@ static struct phy_driver realtek_drvs[]
+@@ -1361,6 +1364,7 @@ static struct phy_driver realtek_drvs[]
        }, {
                PHY_ID_MATCH_EXACT(0x001cc848),
                .name           = "RTL8226B-CG_RTL8221B-CG 2.5Gbps PHY",
@@ -47,7 +47,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
                .get_features   = rtl822x_get_features,
                .config_aneg    = rtl822x_config_aneg,
                .config_init    = rtl822xb_config_init,
-@@ -1372,6 +1376,7 @@ static struct phy_driver realtek_drvs[]
+@@ -1373,6 +1377,7 @@ static struct phy_driver realtek_drvs[]
        }, {
                .match_phy_device = rtl8221b_vb_cg_c22_match_phy_device,
                .name           = "RTL8221B-VB-CG 2.5Gbps PHY (C22)",
@@ -55,7 +55,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
                .get_features   = rtl822x_get_features,
                .config_aneg    = rtl822x_config_aneg,
                .config_init    = rtl822xb_config_init,
-@@ -1384,6 +1389,7 @@ static struct phy_driver realtek_drvs[]
+@@ -1385,6 +1390,7 @@ static struct phy_driver realtek_drvs[]
        }, {
                .match_phy_device = rtl8221b_vb_cg_c45_match_phy_device,
                .name           = "RTL8221B-VB-CG 2.5Gbps PHY (C45)",
@@ -63,7 +63,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
                .config_init    = rtl822xb_config_init,
                .get_rate_matching = rtl822xb_get_rate_matching,
                .get_features   = rtl822x_c45_get_features,
-@@ -1394,6 +1400,7 @@ static struct phy_driver realtek_drvs[]
+@@ -1395,6 +1401,7 @@ static struct phy_driver realtek_drvs[]
        }, {
                .match_phy_device = rtl8221b_vn_cg_c22_match_phy_device,
                .name           = "RTL8221B-VM-CG 2.5Gbps PHY (C22)",
@@ -71,7 +71,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
                .get_features   = rtl822x_get_features,
                .config_aneg    = rtl822x_config_aneg,
                .config_init    = rtl822xb_config_init,
-@@ -1406,6 +1413,7 @@ static struct phy_driver realtek_drvs[]
+@@ -1407,6 +1414,7 @@ static struct phy_driver realtek_drvs[]
        }, {
                .match_phy_device = rtl8221b_vn_cg_c45_match_phy_device,
                .name           = "RTL8221B-VN-CG 2.5Gbps PHY (C45)",
similarity index 93%
rename from target/linux/generic/pending-6.6/725-net-phy-realtek-disable-SGMII-in-band-AN-for-2-5G-PHYs.patch
rename to target/linux/generic/pending-6.6/720-02-net-phy-realtek-disable-SGMII-in-band-AN-for-2-5G-PHYs.patch
index a7f7fbf47a0341913fbe99fc2426e98fed0b8438..0c729acb7fe79227c5b60dd7921c7c8ea77e3e5a 100644 (file)
@@ -20,7 +20,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
 
 --- a/drivers/net/phy/realtek.c
 +++ b/drivers/net/phy/realtek.c
-@@ -785,8 +785,8 @@ static int rtl822x_write_mmd(struct phy_
+@@ -786,8 +786,8 @@ static int rtl822x_write_mmd(struct phy_
  static int rtl822xb_config_init(struct phy_device *phydev)
  {
        bool has_2500, has_sgmii;
@@ -30,7 +30,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
  
        has_2500 = test_bit(PHY_INTERFACE_MODE_2500BASEX,
                            phydev->host_interfaces) ||
-@@ -836,7 +836,29 @@ static int rtl822xb_config_init(struct p
+@@ -837,7 +837,29 @@ static int rtl822xb_config_init(struct p
        if (ret < 0)
                return ret;
  
similarity index 95%
rename from target/linux/generic/pending-6.6/726-net-phy-realtek-make-sure-paged-read-is-protected-by.patch
rename to target/linux/generic/pending-6.6/720-03-net-phy-realtek-make-sure-paged-read-is-protected-by.patch
index d944b6aa5c82e126b3b0aa8b873725f251245e99..8b8dca8f2780cf6598855869699399440f0f7f3a 100644 (file)
@@ -18,7 +18,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
 
 --- a/drivers/net/phy/realtek.c
 +++ b/drivers/net/phy/realtek.c
-@@ -1051,9 +1051,11 @@ static bool rtlgen_supports_2_5gbps(stru
+@@ -1052,9 +1052,11 @@ static bool rtlgen_supports_2_5gbps(stru
  {
        int val;
  
similarity index 93%
rename from target/linux/generic/pending-6.6/727-net-phy-realtek-use-inline-functions-for-10GbE-adver.patch
rename to target/linux/generic/pending-6.6/720-04-net-phy-realtek-use-inline-functions-for-10GbE-adver.patch
index bf833a2b7a756f5a86f130a5098d337ce7a22fbf..8b2045197993032fdef3b7f3038400488ff43e92 100644 (file)
@@ -14,7 +14,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
 
 --- a/drivers/net/phy/realtek.c
 +++ b/drivers/net/phy/realtek.c
-@@ -909,7 +909,8 @@ static int rtl822x_config_aneg(struct ph
+@@ -910,7 +910,8 @@ static int rtl822x_config_aneg(struct ph
  
                ret = phy_modify_paged_changed(phydev, 0xa5d, 0x12,
                                               MDIO_AN_10GBT_CTRL_ADV2_5G |
similarity index 93%
rename from target/linux/generic/pending-6.6/728-net-phy-realtek-check-validity-of-10GbE-link-partner.patch
rename to target/linux/generic/pending-6.6/720-05-net-phy-realtek-check-validity-of-10GbE-link-partner.patch
index 5ae6dcd7a8c72668f05f88d55bcb57966f4d9d31..1ba3353f1912551f8d7a9204491b8b18037318e7 100644 (file)
@@ -15,7 +15,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
 
 --- a/drivers/net/phy/realtek.c
 +++ b/drivers/net/phy/realtek.c
-@@ -949,6 +949,10 @@ static int rtl822x_read_status(struct ph
+@@ -950,6 +950,10 @@ static int rtl822x_read_status(struct ph
                if (lpadv < 0)
                        return lpadv;
  
similarity index 87%
rename from target/linux/generic/pending-6.6/729-net-phy-realtek-introduce-rtl822x_probe.patch
rename to target/linux/generic/pending-6.6/720-06-net-phy-realtek-introduce-rtl822x_probe.patch
index f81d7bf395a5960e70be9a83b804979b29d8a572..ee4de599ab2bdaffe19da2ab1d442eec2a5385ea 100644 (file)
@@ -24,7 +24,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
  #define RTL8366RB_POWER_SAVE                  0x15
  #define RTL8366RB_POWER_SAVE_ON                       BIT(12)
  
-@@ -1106,6 +1110,25 @@ static int rtl8221b_vn_cg_c45_match_phy_
+@@ -1107,6 +1111,25 @@ static int rtl8221b_vn_cg_c45_match_phy_
        return rtlgen_is_c45_match(phydev, RTL_8221B_VN_CG, true);
  }
  
@@ -50,7 +50,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
  static int rtlgen_resume(struct phy_device *phydev)
  {
        int ret = genphy_resume(phydev);
-@@ -1381,6 +1404,7 @@ static struct phy_driver realtek_drvs[]
+@@ -1382,6 +1405,7 @@ static struct phy_driver realtek_drvs[]
        }, {
                PHY_ID_MATCH_EXACT(0x001cc838),
                .name           = "RTL8226-CG 2.5Gbps PHY",
@@ -58,7 +58,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
                .soft_reset     = genphy_soft_reset,
                .get_features   = rtl822x_get_features,
                .config_aneg    = rtl822x_config_aneg,
-@@ -1392,6 +1416,7 @@ static struct phy_driver realtek_drvs[]
+@@ -1393,6 +1417,7 @@ static struct phy_driver realtek_drvs[]
        }, {
                PHY_ID_MATCH_EXACT(0x001cc848),
                .name           = "RTL8226B-CG_RTL8221B-CG 2.5Gbps PHY",
@@ -66,7 +66,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
                .soft_reset     = genphy_soft_reset,
                .get_features   = rtl822x_get_features,
                .config_aneg    = rtl822x_config_aneg,
-@@ -1405,6 +1430,7 @@ static struct phy_driver realtek_drvs[]
+@@ -1406,6 +1431,7 @@ static struct phy_driver realtek_drvs[]
        }, {
                .match_phy_device = rtl8221b_vb_cg_c22_match_phy_device,
                .name           = "RTL8221B-VB-CG 2.5Gbps PHY (C22)",
@@ -74,7 +74,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
                .soft_reset     = genphy_soft_reset,
                .get_features   = rtl822x_get_features,
                .config_aneg    = rtl822x_config_aneg,
-@@ -1418,6 +1444,7 @@ static struct phy_driver realtek_drvs[]
+@@ -1419,6 +1445,7 @@ static struct phy_driver realtek_drvs[]
        }, {
                .match_phy_device = rtl8221b_vb_cg_c45_match_phy_device,
                .name           = "RTL8221B-VB-CG 2.5Gbps PHY (C45)",
@@ -82,7 +82,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
                .soft_reset     = genphy_soft_reset,
                .config_init    = rtl822xb_config_init,
                .get_rate_matching = rtl822xb_get_rate_matching,
-@@ -1429,6 +1456,7 @@ static struct phy_driver realtek_drvs[]
+@@ -1430,6 +1457,7 @@ static struct phy_driver realtek_drvs[]
        }, {
                .match_phy_device = rtl8221b_vn_cg_c22_match_phy_device,
                .name           = "RTL8221B-VM-CG 2.5Gbps PHY (C22)",
@@ -90,7 +90,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
                .soft_reset     = genphy_soft_reset,
                .get_features   = rtl822x_get_features,
                .config_aneg    = rtl822x_config_aneg,
-@@ -1442,6 +1470,7 @@ static struct phy_driver realtek_drvs[]
+@@ -1443,6 +1471,7 @@ static struct phy_driver realtek_drvs[]
        }, {
                .match_phy_device = rtl8221b_vn_cg_c45_match_phy_device,
                .name           = "RTL8221B-VN-CG 2.5Gbps PHY (C45)",
similarity index 95%
rename from target/linux/generic/pending-6.6/730-net-phy-realtek-detect-early-version-of-RTL8221B.patch
rename to target/linux/generic/pending-6.6/720-07-net-phy-realtek-detect-early-version-of-RTL8221B.patch
index 698b54473f458a0aecaac13eb574c6bfe17bbed4..cca5da0e131e50577b3a796e728a49cb288ea40a 100644 (file)
@@ -14,7 +14,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
 Signed-off-by: Mieczyslaw Nalewaj <namiltd@yahoo.com>
 --- a/drivers/net/phy/realtek.c
 +++ b/drivers/net/phy/realtek.c
-@@ -1084,10 +1084,32 @@ static int rtl8226_match_phy_device(stru
+@@ -1085,10 +1085,32 @@ static int rtl8226_match_phy_device(stru
  static int rtlgen_is_c45_match(struct phy_device *phydev, unsigned int id,
                               bool is_c45)
  {
similarity index 89%
rename from target/linux/generic/pending-6.6/741-net-phy-realtek-support-interrupt-of-RTL8221B.patch
rename to target/linux/generic/pending-6.6/720-08-net-phy-realtek-support-interrupt-of-RTL8221B.patch
index f75dbc9e8575208f14bb8e13f92d133db390fc7b..ee28bfbcfc462a42f92c70267451febc6d16c1b3 100644 (file)
@@ -12,7 +12,7 @@ Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
 
 --- a/drivers/net/phy/realtek.c
 +++ b/drivers/net/phy/realtek.c
-@@ -1286,6 +1286,51 @@ static irqreturn_t rtl9000a_handle_inter
+@@ -1287,6 +1287,51 @@ static irqreturn_t rtl9000a_handle_inter
        return IRQ_HANDLED;
  }
  
@@ -64,7 +64,7 @@ Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
  static struct phy_driver realtek_drvs[] = {
        {
                PHY_ID_MATCH_EXACT(0x00008201),
-@@ -1452,6 +1497,8 @@ static struct phy_driver realtek_drvs[]
+@@ -1453,6 +1498,8 @@ static struct phy_driver realtek_drvs[]
        }, {
                .match_phy_device = rtl8221b_vb_cg_c22_match_phy_device,
                .name           = "RTL8221B-VB-CG 2.5Gbps PHY (C22)",
@@ -73,7 +73,7 @@ Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
                .probe          = rtl822x_probe,
                .soft_reset     = genphy_soft_reset,
                .get_features   = rtl822x_get_features,
-@@ -1466,6 +1513,8 @@ static struct phy_driver realtek_drvs[]
+@@ -1467,6 +1514,8 @@ static struct phy_driver realtek_drvs[]
        }, {
                .match_phy_device = rtl8221b_vb_cg_c45_match_phy_device,
                .name           = "RTL8221B-VB-CG 2.5Gbps PHY (C45)",
@@ -82,7 +82,7 @@ Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
                .probe          = rtl822x_probe,
                .soft_reset     = genphy_soft_reset,
                .config_init    = rtl822xb_config_init,
-@@ -1478,6 +1527,8 @@ static struct phy_driver realtek_drvs[]
+@@ -1479,6 +1528,8 @@ static struct phy_driver realtek_drvs[]
        }, {
                .match_phy_device = rtl8221b_vn_cg_c22_match_phy_device,
                .name           = "RTL8221B-VM-CG 2.5Gbps PHY (C22)",
@@ -91,7 +91,7 @@ Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
                .probe          = rtl822x_probe,
                .soft_reset     = genphy_soft_reset,
                .get_features   = rtl822x_get_features,
-@@ -1492,6 +1543,8 @@ static struct phy_driver realtek_drvs[]
+@@ -1493,6 +1544,8 @@ static struct phy_driver realtek_drvs[]
        }, {
                .match_phy_device = rtl8221b_vn_cg_c45_match_phy_device,
                .name           = "RTL8221B-VN-CG 2.5Gbps PHY (C45)",