net: phy: amd: Support the Altima AMI101L
authorLinus Walleij <linus.walleij@linaro.org>
Sun, 24 Sep 2023 08:19:02 +0000 (10:19 +0200)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 3 Oct 2023 09:44:09 +0000 (11:44 +0200)
The Altima AC101L is obviously compatible with the AMD PHY,
as seen by reading the datasheet.

Datasheet: https://docs.broadcom.com/doc/AC101L-DS05-405-RDS.pdf

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Link: https://lore.kernel.org/r/20230924-ac101l-phy-v1-1-5e6349e28aa4@linaro.org
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/phy/Kconfig
drivers/net/phy/amd.c

index 107880d..421d2b6 100644 (file)
@@ -69,9 +69,9 @@ config SFP
 comment "MII PHY device drivers"
 
 config AMD_PHY
-       tristate "AMD PHYs"
+       tristate "AMD and Altima PHYs"
        help
-         Currently supports the am79c874
+         Currently supports the AMD am79c874 and Altima AC101L.
 
 config MESON_GXL_PHY
        tristate "Amlogic Meson GXL Internal PHY"
index 001bb6d..930b15f 100644 (file)
@@ -13,6 +13,7 @@
 #include <linux/mii.h>
 #include <linux/phy.h>
 
+#define PHY_ID_AC101L          0x00225520
 #define PHY_ID_AM79C874                0x0022561b
 
 #define MII_AM79C_IR           17      /* Interrupt Status/Control Register */
@@ -87,19 +88,31 @@ static irqreturn_t am79c_handle_interrupt(struct phy_device *phydev)
        return IRQ_HANDLED;
 }
 
-static struct phy_driver am79c_driver[] = { {
-       .phy_id         = PHY_ID_AM79C874,
-       .name           = "AM79C874",
-       .phy_id_mask    = 0xfffffff0,
-       /* PHY_BASIC_FEATURES */
-       .config_init    = am79c_config_init,
-       .config_intr    = am79c_config_intr,
-       .handle_interrupt = am79c_handle_interrupt,
-} };
+static struct phy_driver am79c_drivers[] = {
+       {
+               .phy_id         = PHY_ID_AM79C874,
+               .name           = "AM79C874",
+               .phy_id_mask    = 0xfffffff0,
+               /* PHY_BASIC_FEATURES */
+               .config_init    = am79c_config_init,
+               .config_intr    = am79c_config_intr,
+               .handle_interrupt = am79c_handle_interrupt,
+       },
+       {
+               .phy_id         = PHY_ID_AC101L,
+               .name           = "AC101L",
+               .phy_id_mask    = 0xfffffff0,
+               /* PHY_BASIC_FEATURES */
+               .config_init    = am79c_config_init,
+               .config_intr    = am79c_config_intr,
+               .handle_interrupt = am79c_handle_interrupt,
+       },
+};
 
-module_phy_driver(am79c_driver);
+module_phy_driver(am79c_drivers);
 
 static struct mdio_device_id __maybe_unused amd_tbl[] = {
+       { PHY_ID_AC101L, 0xfffffff0 },
        { PHY_ID_AM79C874, 0xfffffff0 },
        { }
 };