mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-27 17:18:59 +00:00
103 lines
3.4 KiB
Diff
103 lines
3.4 KiB
Diff
|
From 038ba1dc4e54d51d953f5618d8eb5dd39bd9de25 Mon Sep 17 00:00:00 2001
|
||
|
From: Christian Marangi <ansuelsmth@gmail.com>
|
||
|
Date: Tue, 13 Feb 2024 14:35:51 +0100
|
||
|
Subject: [PATCH] net: phy: aquantia: add AQR111 and AQR111B0 PHY ID
|
||
|
|
||
|
Add Aquantia AQR111 and AQR111B0 PHY ID. These PHY advertise 10G speed
|
||
|
but actually supports up to 5G speed, hence some manual fixup is needed.
|
||
|
|
||
|
The Aquantia AQR111B0 PHY is just a variant of the AQR111 with smaller
|
||
|
chip size.
|
||
|
|
||
|
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
|
||
|
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
|
||
|
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
|
||
|
Link: https://lore.kernel.org/r/20240213133558.1836-1-ansuelsmth@gmail.com
|
||
|
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||
|
---
|
||
|
drivers/net/phy/aquantia/aquantia_main.c | 52 ++++++++++++++++++++++++
|
||
|
1 file changed, 52 insertions(+)
|
||
|
|
||
|
--- a/drivers/net/phy/aquantia/aquantia_main.c
|
||
|
+++ b/drivers/net/phy/aquantia/aquantia_main.c
|
||
|
@@ -22,6 +22,8 @@
|
||
|
#define PHY_ID_AQR107 0x03a1b4e0
|
||
|
#define PHY_ID_AQCS109 0x03a1b5c2
|
||
|
#define PHY_ID_AQR405 0x03a1b4b0
|
||
|
+#define PHY_ID_AQR111 0x03a1b610
|
||
|
+#define PHY_ID_AQR111B0 0x03a1b612
|
||
|
#define PHY_ID_AQR113C 0x31c31c12
|
||
|
|
||
|
#define MDIO_PHYXS_VEND_IF_STATUS 0xe812
|
||
|
@@ -670,6 +672,16 @@ static int aqr107_probe(struct phy_devic
|
||
|
return aqr_hwmon_probe(phydev);
|
||
|
}
|
||
|
|
||
|
+static int aqr111_config_init(struct phy_device *phydev)
|
||
|
+{
|
||
|
+ /* AQR111 reports supporting speed up to 10G,
|
||
|
+ * however only speeds up to 5G are supported.
|
||
|
+ */
|
||
|
+ phy_set_max_speed(phydev, SPEED_5000);
|
||
|
+
|
||
|
+ return aqr107_config_init(phydev);
|
||
|
+}
|
||
|
+
|
||
|
static struct phy_driver aqr_driver[] = {
|
||
|
{
|
||
|
PHY_ID_MATCH_MODEL(PHY_ID_AQ1202),
|
||
|
@@ -744,6 +756,44 @@ static struct phy_driver aqr_driver[] =
|
||
|
.link_change_notify = aqr107_link_change_notify,
|
||
|
},
|
||
|
{
|
||
|
+ PHY_ID_MATCH_MODEL(PHY_ID_AQR111),
|
||
|
+ .name = "Aquantia AQR111",
|
||
|
+ .probe = aqr107_probe,
|
||
|
+ .get_rate_matching = aqr107_get_rate_matching,
|
||
|
+ .config_init = aqr111_config_init,
|
||
|
+ .config_aneg = aqr_config_aneg,
|
||
|
+ .config_intr = aqr_config_intr,
|
||
|
+ .handle_interrupt = aqr_handle_interrupt,
|
||
|
+ .read_status = aqr107_read_status,
|
||
|
+ .get_tunable = aqr107_get_tunable,
|
||
|
+ .set_tunable = aqr107_set_tunable,
|
||
|
+ .suspend = aqr107_suspend,
|
||
|
+ .resume = aqr107_resume,
|
||
|
+ .get_sset_count = aqr107_get_sset_count,
|
||
|
+ .get_strings = aqr107_get_strings,
|
||
|
+ .get_stats = aqr107_get_stats,
|
||
|
+ .link_change_notify = aqr107_link_change_notify,
|
||
|
+},
|
||
|
+{
|
||
|
+ PHY_ID_MATCH_MODEL(PHY_ID_AQR111B0),
|
||
|
+ .name = "Aquantia AQR111B0",
|
||
|
+ .probe = aqr107_probe,
|
||
|
+ .get_rate_matching = aqr107_get_rate_matching,
|
||
|
+ .config_init = aqr111_config_init,
|
||
|
+ .config_aneg = aqr_config_aneg,
|
||
|
+ .config_intr = aqr_config_intr,
|
||
|
+ .handle_interrupt = aqr_handle_interrupt,
|
||
|
+ .read_status = aqr107_read_status,
|
||
|
+ .get_tunable = aqr107_get_tunable,
|
||
|
+ .set_tunable = aqr107_set_tunable,
|
||
|
+ .suspend = aqr107_suspend,
|
||
|
+ .resume = aqr107_resume,
|
||
|
+ .get_sset_count = aqr107_get_sset_count,
|
||
|
+ .get_strings = aqr107_get_strings,
|
||
|
+ .get_stats = aqr107_get_stats,
|
||
|
+ .link_change_notify = aqr107_link_change_notify,
|
||
|
+},
|
||
|
+{
|
||
|
PHY_ID_MATCH_MODEL(PHY_ID_AQR405),
|
||
|
.name = "Aquantia AQR405",
|
||
|
.config_aneg = aqr_config_aneg,
|
||
|
@@ -782,6 +832,8 @@ static struct mdio_device_id __maybe_unu
|
||
|
{ PHY_ID_MATCH_MODEL(PHY_ID_AQR107) },
|
||
|
{ PHY_ID_MATCH_MODEL(PHY_ID_AQCS109) },
|
||
|
{ PHY_ID_MATCH_MODEL(PHY_ID_AQR405) },
|
||
|
+ { PHY_ID_MATCH_MODEL(PHY_ID_AQR111) },
|
||
|
+ { PHY_ID_MATCH_MODEL(PHY_ID_AQR111B0) },
|
||
|
{ PHY_ID_MATCH_MODEL(PHY_ID_AQR113C) },
|
||
|
{ }
|
||
|
};
|