net: phy: nxp-c45-tja11xx: run cable test with the PHY in test mode
authorRadu Pirea (NXP OSS) <radu-nicolae.pirea@oss.nxp.com>
Mon, 31 Jul 2023 09:16:17 +0000 (12:16 +0300)
committerJakub Kicinski <kuba@kernel.org>
Wed, 2 Aug 2023 04:06:26 +0000 (21:06 -0700)
For TJA1120, the enable bit for cable test is not writable if the PHY is
not in test mode.

Signed-off-by: Radu Pirea (NXP OSS) <radu-nicolae.pirea@oss.nxp.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Link: https://lore.kernel.org/r/20230731091619.77961-10-radu-nicolae.pirea@oss.nxp.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/phy/nxp-c45-tja11xx.c

index a52067da9dbf94515c03a1c23b90ea7413e5b661..92a2eca2a02c6ec4f47f43a08a31ababaf36ae47 100644 (file)
 
 #define VEND1_PORT_FUNC_ENABLES                0x8048
 #define PTP_ENABLE                     BIT(3)
+#define PHY_TEST_ENABLE                        BIT(0)
 
 #define VEND1_PORT_PTP_CONTROL         0x9000
 #define PORT_PTP_CONTROL_BYPASS                BIT(11)
@@ -1258,6 +1259,8 @@ static int nxp_c45_cable_test_start(struct phy_device *phydev)
 {
        const struct nxp_c45_regmap *regmap = nxp_c45_get_regmap(phydev);
 
+       phy_set_bits_mmd(phydev, MDIO_MMD_VEND1,
+                        VEND1_PORT_FUNC_ENABLES, PHY_TEST_ENABLE);
        return phy_set_bits_mmd(phydev, MDIO_MMD_VEND1, regmap->cable_test,
                                CABLE_TEST_ENABLE | CABLE_TEST_START);
 }
@@ -1299,6 +1302,8 @@ static int nxp_c45_cable_test_get_status(struct phy_device *phydev,
 
        phy_clear_bits_mmd(phydev, MDIO_MMD_VEND1, regmap->cable_test,
                           CABLE_TEST_ENABLE);
+       phy_clear_bits_mmd(phydev, MDIO_MMD_VEND1,
+                          VEND1_PORT_FUNC_ENABLES, PHY_TEST_ENABLE);
 
        return nxp_c45_start_op(phydev);
 }