]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
net: phy: mxl-gpy: add support for MxL86211C
authorChad Monroe <chad@monroe.io>
Sat, 22 Nov 2025 13:32:15 +0000 (13:32 +0000)
committerJakub Kicinski <kuba@kernel.org>
Wed, 26 Nov 2025 03:11:38 +0000 (19:11 -0800)
MxL86211C is a smaller and more efficient version of the GPY211C.
Add the PHY ID and phy_driver instance to the mxl-gpy driver.

Signed-off-by: Chad Monroe <chad@monroe.io>
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Link: https://patch.msgid.link/cabf3559d6511bed6b8a925f540e3162efc20f6b.1763818120.git.daniel@makrotopia.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/phy/mxl-gpy.c

index 0c8dc16ee7bdea7419170ac68fd71018273eb680..bea9072ac4a8db2e38aaa15f2fc7e3bc6709d801 100644 (file)
@@ -30,6 +30,7 @@
 #define PHY_ID_GPY241B         0x67C9DE40
 #define PHY_ID_GPY241BM                0x67C9DE80
 #define PHY_ID_GPY245B         0x67C9DEC0
+#define PHY_ID_MXL86211C       0xC1335400
 
 #define PHY_CTL1               0x13
 #define PHY_CTL1_MDICD         BIT(3)
@@ -1268,6 +1269,28 @@ static struct phy_driver gpy_drivers[] = {
                .get_wol        = gpy_get_wol,
                .set_loopback   = gpy_loopback,
        },
+       {
+               PHY_ID_MATCH_MODEL(PHY_ID_MXL86211C),
+               .name           = "Maxlinear Ethernet MxL86211C",
+               .get_features   = genphy_c45_pma_read_abilities,
+               .config_init    = gpy_config_init,
+               .probe          = gpy_probe,
+               .suspend        = genphy_suspend,
+               .resume         = genphy_resume,
+               .config_aneg    = gpy_config_aneg,
+               .aneg_done      = genphy_c45_aneg_done,
+               .read_status    = gpy_read_status,
+               .config_intr    = gpy_config_intr,
+               .handle_interrupt = gpy_handle_interrupt,
+               .set_wol        = gpy_set_wol,
+               .get_wol        = gpy_get_wol,
+               .set_loopback   = gpy_loopback,
+               .led_brightness_set = gpy_led_brightness_set,
+               .led_hw_is_supported = gpy_led_hw_is_supported,
+               .led_hw_control_get = gpy_led_hw_control_get,
+               .led_hw_control_set = gpy_led_hw_control_set,
+               .led_polarity_set = gpy_led_polarity_set,
+       },
 };
 module_phy_driver(gpy_drivers);
 
@@ -1284,6 +1307,7 @@ static const struct mdio_device_id __maybe_unused gpy_tbl[] = {
        {PHY_ID_MATCH_MODEL(PHY_ID_GPY241B)},
        {PHY_ID_MATCH_MODEL(PHY_ID_GPY241BM)},
        {PHY_ID_MATCH_MODEL(PHY_ID_GPY245B)},
+       {PHY_ID_MATCH_MODEL(PHY_ID_MXL86211C)},
        { }
 };
 MODULE_DEVICE_TABLE(mdio, gpy_tbl);