From: Selvamani Rajagopal By setting ENI bit, noise immunity is improved and it is specifically meant for PLCA enabled nodes. Signed-off-by: Selvamani Rajagopal --- drivers/net/phy/ncn26000.c | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/drivers/net/phy/ncn26000.c b/drivers/net/phy/ncn26000.c index 2c8601c3f94a..c3a34b2c524d 100644 --- a/drivers/net/phy/ncn26000.c +++ b/drivers/net/phy/ncn26000.c @@ -36,6 +36,10 @@ #define TO_TMR_DEFAULT 32 +#define NCN26000_REG_PHYCFG1 0x8001 +#define NCN26000_PHYCFG1_ENI BIT(7) +#define NCN26000_PHYCFG1_ENI_MASK BIT(7) + static int ncn26000_config_init(struct phy_device *phydev) { int ret = 0; @@ -106,6 +110,24 @@ static int ncn26000_read_status(struct phy_device *phydev) return 0; } +/* Intercept PLCA enable/disable request to + * set the proprietary, ENI mode accordingly + */ +static int ncn26000_c45_plca_set_cfg(struct phy_device *phydev, + const struct phy_plca_cfg *plca_cfg) +{ + int ret = genphy_c45_plca_set_cfg(phydev, plca_cfg); + u16 eni_cfg = 0; + + if (ret || plca_cfg->enabled < 0) + return ret; + + eni_cfg = (plca_cfg->enabled) ? NCN26000_PHYCFG1_ENI : 0; + return phy_modify_mmd(phydev, MDIO_MMD_VEND2, + NCN26000_REG_PHYCFG1, + NCN26000_PHYCFG1_ENI_MASK, eni_cfg); +} + static irqreturn_t ncn26000_handle_interrupt(struct phy_device *phydev) { int ret; @@ -156,7 +178,7 @@ static struct phy_driver ncn26000_driver[] = { .config_aneg = ncn26000_config_aneg, .read_status = ncn26000_read_status, .handle_interrupt = ncn26000_handle_interrupt, - .set_plca_cfg = genphy_c45_plca_set_cfg, + .set_plca_cfg = ncn26000_c45_plca_set_cfg, .get_plca_cfg = genphy_c45_plca_get_cfg, .get_plca_status = genphy_c45_plca_get_status, .soft_reset = genphy_soft_reset, @@ -177,7 +199,7 @@ static struct phy_driver ncn26000_driver[] = { .read_status = ncn26000_read_status, .handle_interrupt = ncn26000_handle_interrupt, .get_plca_cfg = genphy_c45_plca_get_cfg, - .set_plca_cfg = genphy_c45_plca_set_cfg, + .set_plca_cfg = ncn26000_c45_plca_set_cfg, .get_plca_status = genphy_c45_plca_get_status, .soft_reset = genphy_soft_reset, }, -- 2.43.0