generic: net: phy: realtek: expose temperature sensors
authorDaniel Golle <daniel@makrotopia.org>
Fri, 17 Jan 2025 20:53:03 +0000 (20:53 +0000)
committerÁlvaro Fernández Rojas <noltari@gmail.com>
Wed, 22 Jan 2025 19:15:34 +0000 (20:15 +0100)
Expose the temperature sensor built-into RTL822x 2.5G and 5G PHYs.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
target/linux/generic/backport-6.6/781-26-v6.14-net-phy-realtek-HWMON-support-for-standalone-version.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
target/linux/generic/pending-6.6/720-04-net-phy-realtek-introduce-rtl822x_aldps_probe.patch [new file with mode: 0644]
target/linux/generic/pending-6.6/720-04-net-phy-realtek-introduce-rtl822x_probe.patch [deleted file]
target/linux/generic/pending-6.6/720-06-net-phy-realtek-support-interrupt-of-RTL8221B.patch

diff --git a/target/linux/generic/backport-6.6/781-26-v6.14-net-phy-realtek-HWMON-support-for-standalone-version.patch b/target/linux/generic/backport-6.6/781-26-v6.14-net-phy-realtek-HWMON-support-for-standalone-version.patch
new file mode 100644 (file)
index 0000000..8b8c97c
--- /dev/null
@@ -0,0 +1,64 @@
+From 64ff63aeefb03139ae27454bd4208244579ae88e Mon Sep 17 00:00:00 2001
+From: Aleksander Jan Bajkowski <olek2@wp.pl>
+Date: Fri, 17 Jan 2025 23:24:21 +0100
+Subject: [PATCH] net: phy: realtek: HWMON support for standalone versions of
+ RTL8221B and RTL8251
+
+HWMON support has been added for the RTL8221/8251 PHYs integrated together
+with the MAC inside the RTL8125/8126 chips. This patch extends temperature
+reading support for standalone variants of the mentioned PHYs.
+
+I don't know whether the earlier revisions of the RTL8226 also have a
+built-in temperature sensor, so they have been skipped for now.
+
+Tested on RTL8221B-VB-CG.
+
+Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
+Reviewed-by: Andrew Lunn <andrew@lunn.ch>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+---
+ drivers/net/phy/realtek/realtek_main.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+--- a/drivers/net/phy/realtek/realtek_main.c
++++ b/drivers/net/phy/realtek/realtek_main.c
+@@ -1474,6 +1474,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)",
++              .probe          = rtl822x_probe,
+               .get_features   = rtl822x_get_features,
+               .config_aneg    = rtl822x_config_aneg,
+               .config_init    = rtl822xb_config_init,
+@@ -1486,6 +1487,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)",
++              .probe          = rtl822x_probe,
+               .config_init    = rtl822xb_config_init,
+               .get_rate_matching = rtl822xb_get_rate_matching,
+               .get_features   = rtl822x_c45_get_features,
+@@ -1496,6 +1498,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)",
++              .probe          = rtl822x_probe,
+               .get_features   = rtl822x_get_features,
+               .config_aneg    = rtl822x_config_aneg,
+               .config_init    = rtl822xb_config_init,
+@@ -1508,6 +1511,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)",
++              .probe          = rtl822x_probe,
+               .config_init    = rtl822xb_config_init,
+               .get_rate_matching = rtl822xb_get_rate_matching,
+               .get_features   = rtl822x_c45_get_features,
+@@ -1518,6 +1522,7 @@ static struct phy_driver realtek_drvs[]
+       }, {
+               .match_phy_device = rtl8251b_c45_match_phy_device,
+               .name           = "RTL8251B 5Gbps PHY",
++              .probe          = rtl822x_probe,
+               .get_features   = rtl822x_get_features,
+               .config_aneg    = rtl822x_config_aneg,
+               .read_status    = rtl822x_read_status,
index 3f43412648f46addde4114e8fef0adf06f54acd1..24885e3681e1356c81d454495df0aa77bc6c8872 100644 (file)
@@ -52,30 +52,30 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
                .match_phy_device = rtl8221b_vb_cg_c22_match_phy_device,
                .name           = "RTL8221B-VB-CG 2.5Gbps PHY (C22)",
 +              .soft_reset     = genphy_soft_reset,
+               .probe          = rtl822x_probe,
                .get_features   = rtl822x_get_features,
                .config_aneg    = rtl822x_config_aneg,
-               .config_init    = rtl822xb_config_init,
-@@ -1486,6 +1491,7 @@ static struct phy_driver realtek_drvs[]
+@@ -1487,6 +1492,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)",
 +              .soft_reset     = genphy_soft_reset,
+               .probe          = rtl822x_probe,
                .config_init    = rtl822xb_config_init,
                .get_rate_matching = rtl822xb_get_rate_matching,
-               .get_features   = rtl822x_c45_get_features,
-@@ -1496,6 +1502,7 @@ static struct phy_driver realtek_drvs[]
+@@ -1498,6 +1504,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)",
 +              .soft_reset     = genphy_soft_reset,
+               .probe          = rtl822x_probe,
                .get_features   = rtl822x_get_features,
                .config_aneg    = rtl822x_config_aneg,
-               .config_init    = rtl822xb_config_init,
-@@ -1508,6 +1515,7 @@ static struct phy_driver realtek_drvs[]
+@@ -1511,6 +1518,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)",
 +              .soft_reset     = genphy_soft_reset,
+               .probe          = rtl822x_probe,
                .config_init    = rtl822xb_config_init,
                .get_rate_matching = rtl822xb_get_rate_matching,
-               .get_features   = rtl822x_c45_get_features,
diff --git a/target/linux/generic/pending-6.6/720-04-net-phy-realtek-introduce-rtl822x_aldps_probe.patch b/target/linux/generic/pending-6.6/720-04-net-phy-realtek-introduce-rtl822x_aldps_probe.patch
new file mode 100644 (file)
index 0000000..6610af1
--- /dev/null
@@ -0,0 +1,104 @@
+From 9155098547fb1172d4fa536f3f6bc9d42f59d08c Mon Sep 17 00:00:00 2001
+From: Daniel Golle <daniel@makrotopia.org>
+Date: Sat, 22 Apr 2023 03:26:01 +0100
+Subject: [PATCH] net: phy: realtek: setup ALDPS on RTL822x
+
+Setup Link Down Power Saving Mode according the DTS property
+just like for RTL821x 1GE PHYs.
+
+Signed-off-by: Daniel Golle <daniel@makrotopia.org>
+---
+ drivers/net/phy/realtek/realtek_main.c | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+--- a/drivers/net/phy/realtek/realtek_main.c
++++ b/drivers/net/phy/realtek/realtek_main.c
+@@ -82,6 +82,10 @@
+ #define RTL822X_VND2_GANLPAR                          0xa414
++#define RTL8221B_PHYCR1                               0xa430
++#define RTL8221B_PHYCR1_ALDPS_EN              BIT(2)
++#define RTL8221B_PHYCR1_ALDPS_XTAL_OFF_EN     BIT(12)
++
+ #define RTL8366RB_POWER_SAVE                  0x15
+ #define RTL8366RB_POWER_SAVE_ON                       BIT(12)
+@@ -1207,6 +1211,25 @@ static int rtl8251b_c45_match_phy_device
+       return rtlgen_is_c45_match(phydev, RTL_8251B, true);
+ }
++static int rtl822x_aldps_probe(struct phy_device *phydev)
++{
++      struct device *dev = &phydev->mdio.dev;
++      int val;
++
++      val = phy_read_mmd(phydev, MDIO_MMD_VEND1, RTL8221B_PHYCR1);
++      if (val < 0)
++              return val;
++
++      if (of_property_read_bool(dev->of_node, "realtek,aldps-enable"))
++              val |= RTL8221B_PHYCR1_ALDPS_EN | RTL8221B_PHYCR1_ALDPS_XTAL_OFF_EN;
++      else
++              val &= ~(RTL8221B_PHYCR1_ALDPS_EN | RTL8221B_PHYCR1_ALDPS_XTAL_OFF_EN);
++
++      phy_write_mmd(phydev, MDIO_MMD_VEND1, RTL8221B_PHYCR1, val);
++
++      return rtl822x_probe(phydev);
++}
++
+ static int rtlgen_resume(struct phy_device *phydev)
+ {
+       int ret = genphy_resume(phydev);
+@@ -1478,6 +1501,7 @@ static struct phy_driver realtek_drvs[]
+       }, {
+               PHY_ID_MATCH_EXACT(0x001cc838),
+               .name           = "RTL8226-CG 2.5Gbps PHY",
++              .probe          = rtl822x_aldps_probe,
+               .soft_reset     = genphy_soft_reset,
+               .get_features   = rtl822x_get_features,
+               .config_aneg    = rtl822x_config_aneg,
+@@ -1489,6 +1513,7 @@ static struct phy_driver realtek_drvs[]
+       }, {
+               PHY_ID_MATCH_EXACT(0x001cc848),
+               .name           = "RTL8226B-CG_RTL8221B-CG 2.5Gbps PHY",
++              .probe          = rtl822x_aldps_probe,
+               .soft_reset     = genphy_soft_reset,
+               .get_features   = rtl822x_get_features,
+               .config_aneg    = rtl822x_config_aneg,
+@@ -1503,7 +1528,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)",
+               .soft_reset     = genphy_soft_reset,
+-              .probe          = rtl822x_probe,
++              .probe          = rtl822x_aldps_probe,
+               .get_features   = rtl822x_get_features,
+               .config_aneg    = rtl822x_config_aneg,
+               .config_init    = rtl822xb_config_init,
+@@ -1517,7 +1542,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)",
+               .soft_reset     = genphy_soft_reset,
+-              .probe          = rtl822x_probe,
++              .probe          = rtl822x_aldps_probe,
+               .config_init    = rtl822xb_config_init,
+               .get_rate_matching = rtl822xb_get_rate_matching,
+               .get_features   = rtl822x_c45_get_features,
+@@ -1529,7 +1554,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)",
+               .soft_reset     = genphy_soft_reset,
+-              .probe          = rtl822x_probe,
++              .probe          = rtl822x_aldps_probe,
+               .get_features   = rtl822x_get_features,
+               .config_aneg    = rtl822x_config_aneg,
+               .config_init    = rtl822xb_config_init,
+@@ -1543,7 +1568,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)",
+               .soft_reset     = genphy_soft_reset,
+-              .probe          = rtl822x_probe,
++              .probe          = rtl822x_aldps_probe,
+               .config_init    = rtl822xb_config_init,
+               .get_rate_matching = rtl822xb_get_rate_matching,
+               .get_features   = rtl822x_c45_get_features,
diff --git a/target/linux/generic/pending-6.6/720-04-net-phy-realtek-introduce-rtl822x_probe.patch b/target/linux/generic/pending-6.6/720-04-net-phy-realtek-introduce-rtl822x_probe.patch
deleted file mode 100644 (file)
index b73e6c6..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-From 9155098547fb1172d4fa536f3f6bc9d42f59d08c Mon Sep 17 00:00:00 2001
-From: Daniel Golle <daniel@makrotopia.org>
-Date: Sat, 22 Apr 2023 03:26:01 +0100
-Subject: [PATCH] net: phy: realtek: setup ALDPS on RTL822x
-
-Setup Link Down Power Saving Mode according the DTS property
-just like for RTL821x 1GE PHYs.
-
-Signed-off-by: Daniel Golle <daniel@makrotopia.org>
----
- drivers/net/phy/realtek/realtek_main.c | 11 +++++++++++
- 1 file changed, 11 insertions(+)
-
---- a/drivers/net/phy/realtek/realtek_main.c
-+++ b/drivers/net/phy/realtek/realtek_main.c
-@@ -82,6 +82,10 @@
- #define RTL822X_VND2_GANLPAR                          0xa414
-+#define RTL8221B_PHYCR1                               0xa430
-+#define RTL8221B_PHYCR1_ALDPS_EN              BIT(2)
-+#define RTL8221B_PHYCR1_ALDPS_XTAL_OFF_EN     BIT(12)
-+
- #define RTL8366RB_POWER_SAVE                  0x15
- #define RTL8366RB_POWER_SAVE_ON                       BIT(12)
-@@ -1207,6 +1211,25 @@ static int rtl8251b_c45_match_phy_device
-       return rtlgen_is_c45_match(phydev, RTL_8251B, true);
- }
-+static int rtl822x_aldps_probe(struct phy_device *phydev)
-+{
-+      struct device *dev = &phydev->mdio.dev;
-+      int val;
-+
-+      val = phy_read_mmd(phydev, MDIO_MMD_VEND1, RTL8221B_PHYCR1);
-+      if (val < 0)
-+              return val;
-+
-+      if (of_property_read_bool(dev->of_node, "realtek,aldps-enable"))
-+              val |= RTL8221B_PHYCR1_ALDPS_EN | RTL8221B_PHYCR1_ALDPS_XTAL_OFF_EN;
-+      else
-+              val &= ~(RTL8221B_PHYCR1_ALDPS_EN | RTL8221B_PHYCR1_ALDPS_XTAL_OFF_EN);
-+
-+      phy_write_mmd(phydev, MDIO_MMD_VEND1, RTL8221B_PHYCR1, val);
-+
-+      return 0;
-+}
-+
- static int rtlgen_resume(struct phy_device *phydev)
- {
-       int ret = genphy_resume(phydev);
-@@ -1478,6 +1501,7 @@ static struct phy_driver realtek_drvs[]
-       }, {
-               PHY_ID_MATCH_EXACT(0x001cc838),
-               .name           = "RTL8226-CG 2.5Gbps PHY",
-+              .probe          = rtl822x_aldps_probe,
-               .soft_reset     = genphy_soft_reset,
-               .get_features   = rtl822x_get_features,
-               .config_aneg    = rtl822x_config_aneg,
-@@ -1489,6 +1513,7 @@ static struct phy_driver realtek_drvs[]
-       }, {
-               PHY_ID_MATCH_EXACT(0x001cc848),
-               .name           = "RTL8226B-CG_RTL8221B-CG 2.5Gbps PHY",
-+              .probe          = rtl822x_aldps_probe,
-               .soft_reset     = genphy_soft_reset,
-               .get_features   = rtl822x_get_features,
-               .config_aneg    = rtl822x_config_aneg,
-@@ -1502,6 +1527,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)",
-+              .probe          = rtl822x_aldps_probe,
-               .soft_reset     = genphy_soft_reset,
-               .get_features   = rtl822x_get_features,
-               .config_aneg    = rtl822x_config_aneg,
-@@ -1515,6 +1541,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)",
-+              .probe          = rtl822x_aldps_probe,
-               .soft_reset     = genphy_soft_reset,
-               .config_init    = rtl822xb_config_init,
-               .get_rate_matching = rtl822xb_get_rate_matching,
-@@ -1526,6 +1553,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)",
-+              .probe          = rtl822x_aldps_probe,
-               .soft_reset     = genphy_soft_reset,
-               .get_features   = rtl822x_get_features,
-               .config_aneg    = rtl822x_config_aneg,
-@@ -1539,6 +1567,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)",
-+              .probe          = rtl822x_aldps_probe,
-               .soft_reset     = genphy_soft_reset,
-               .config_init    = rtl822xb_config_init,
-               .get_rate_matching = rtl822xb_get_rate_matching,
index c855a211e8ffd9dbdcf6b8a65bde14857e80c431..3e9b34b8a5e86495922f110deb43007d5e160833 100644 (file)
@@ -70,8 +70,8 @@ Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
                .name           = "RTL8221B-VB-CG 2.5Gbps PHY (C22)",
 +              .config_intr    = rtl8221b_config_intr,
 +              .handle_interrupt = rtl8221b_handle_interrupt,
-               .probe          = rtl822x_aldps_probe,
                .soft_reset     = genphy_soft_reset,
+               .probe          = rtl822x_aldps_probe,
                .get_features   = rtl822x_get_features,
 @@ -1563,6 +1610,8 @@ static struct phy_driver realtek_drvs[]
        }, {
@@ -79,8 +79,8 @@ Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
                .name           = "RTL8221B-VB-CG 2.5Gbps PHY (C45)",
 +              .config_intr    = rtl8221b_config_intr,
 +              .handle_interrupt = rtl8221b_handle_interrupt,
-               .probe          = rtl822x_aldps_probe,
                .soft_reset     = genphy_soft_reset,
+               .probe          = rtl822x_aldps_probe,
                .config_init    = rtl822xb_config_init,
 @@ -1575,6 +1624,8 @@ static struct phy_driver realtek_drvs[]
        }, {
@@ -88,8 +88,8 @@ Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
                .name           = "RTL8221B-VM-CG 2.5Gbps PHY (C22)",
 +              .config_intr    = rtl8221b_config_intr,
 +              .handle_interrupt = rtl8221b_handle_interrupt,
-               .probe          = rtl822x_aldps_probe,
                .soft_reset     = genphy_soft_reset,
+               .probe          = rtl822x_aldps_probe,
                .get_features   = rtl822x_get_features,
 @@ -1589,6 +1640,8 @@ static struct phy_driver realtek_drvs[]
        }, {
@@ -97,6 +97,6 @@ Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
                .name           = "RTL8221B-VN-CG 2.5Gbps PHY (C45)",
 +              .config_intr    = rtl8221b_config_intr,
 +              .handle_interrupt = rtl8221b_handle_interrupt,
-               .probe          = rtl822x_aldps_probe,
                .soft_reset     = genphy_soft_reset,
+               .probe          = rtl822x_aldps_probe,
                .config_init    = rtl822xb_config_init,