]> www.infradead.org Git - users/hch/misc.git/commitdiff
net: phy: tja11xx: add support for TJA1102S
authorDimitri Fedrau <dimitri.fedrau@liebherr.com>
Tue, 4 Mar 2025 18:37:26 +0000 (19:37 +0100)
committerJakub Kicinski <kuba@kernel.org>
Sat, 8 Mar 2025 03:51:03 +0000 (19:51 -0800)
NXPs TJA1102S is a single PHY version of the TJA1102 in which one of the
PHYs is disabled.

Signed-off-by: Dimitri Fedrau <dimitri.fedrau@liebherr.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Link: https://patch.msgid.link/20250304-tja1102s-support-v2-1-cd3e61ab920f@liebherr.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/phy/nxp-tja11xx.c

index ed7fa26bac8e83f43d6d656e2e2812e501111eb0..9cf5e6d32fab88cae5cd556623a9ffa285227ab6 100644 (file)
@@ -21,6 +21,7 @@
 #define PHY_ID_TJA1100                 0x0180dc40
 #define PHY_ID_TJA1101                 0x0180dd00
 #define PHY_ID_TJA1102                 0x0180dc80
+#define PHY_ID_TJA1102S                        0x0180dc90
 
 #define MII_ECTRL                      17
 #define MII_ECTRL_LINK_CONTROL         BIT(15)
@@ -316,6 +317,7 @@ static int tja11xx_config_init(struct phy_device *phydev)
                if (ret)
                        return ret;
                break;
+       case PHY_ID_TJA1102S:
        case PHY_ID_TJA1101:
                reg_mask = MII_CFG1_INTERFACE_MODE_MASK;
                ret = tja11xx_get_interface_mode(phydev);
@@ -883,6 +885,29 @@ static struct phy_driver tja11xx_driver[] = {
                .handle_interrupt = tja11xx_handle_interrupt,
                .cable_test_start = tja11xx_cable_test_start,
                .cable_test_get_status = tja11xx_cable_test_get_status,
+       }, {
+               PHY_ID_MATCH_MODEL(PHY_ID_TJA1102S),
+               .name           = "NXP TJA1102S",
+               .features       = PHY_BASIC_T1_FEATURES,
+               .flags          = PHY_POLL_CABLE_TEST,
+               .probe          = tja11xx_probe,
+               .soft_reset     = tja11xx_soft_reset,
+               .config_aneg    = tja11xx_config_aneg,
+               .config_init    = tja11xx_config_init,
+               .read_status    = tja11xx_read_status,
+               .get_sqi        = tja11xx_get_sqi,
+               .get_sqi_max    = tja11xx_get_sqi_max,
+               .suspend        = genphy_suspend,
+               .resume         = genphy_resume,
+               .set_loopback   = genphy_loopback,
+               /* Statistics */
+               .get_sset_count = tja11xx_get_sset_count,
+               .get_strings    = tja11xx_get_strings,
+               .get_stats      = tja11xx_get_stats,
+               .config_intr    = tja11xx_config_intr,
+               .handle_interrupt = tja11xx_handle_interrupt,
+               .cable_test_start = tja11xx_cable_test_start,
+               .cable_test_get_status = tja11xx_cable_test_get_status,
        }
 };
 
@@ -892,6 +917,7 @@ static const struct mdio_device_id __maybe_unused tja11xx_tbl[] = {
        { PHY_ID_MATCH_MODEL(PHY_ID_TJA1100) },
        { PHY_ID_MATCH_MODEL(PHY_ID_TJA1101) },
        { PHY_ID_MATCH_MODEL(PHY_ID_TJA1102) },
+       { PHY_ID_MATCH_MODEL(PHY_ID_TJA1102S) },
        { }
 };