Messages in this thread | | | Date | Fri, 4 Mar 2022 14:13:33 +0100 | From | Andrew Lunn <> | Subject | Re: [PATCH net-next 6/6] net: phy: added ethtool master-slave configuration support |
| |
> +static int lan87xx_read_master_slave(struct phy_device *phydev) > +{ > + int rc = 0; > + > + phydev->master_slave_get = MASTER_SLAVE_CFG_UNKNOWN; > + phydev->master_slave_state = MASTER_SLAVE_STATE_UNKNOWN; > + > + rc = phy_read(phydev, MII_CTRL1000); > + if (rc < 0) > + return rc; > + > + if (rc & CTL1000_AS_MASTER) > + phydev->master_slave_get = MASTER_SLAVE_CFG_MASTER_FORCE; > + else > + phydev->master_slave_get = MASTER_SLAVE_CFG_SLAVE_FORCE; > + > + rc = phy_read(phydev, MII_STAT1000); > + if (rc < 0) > + return rc; > + > + if (rc & LPA_1000MSRES) > + phydev->master_slave_state = MASTER_SLAVE_STATE_MASTER; > + else > + phydev->master_slave_state = MASTER_SLAVE_STATE_SLAVE; > + > + return rc; > +}
It looks like you can just call genphy_read_master_slave()? Or am i missing some subtle difference?
> +static int lan87xx_config_aneg(struct phy_device *phydev) > +{ > + u16 ctl = 0; > + int rc; > + > + switch (phydev->master_slave_set) { > + case MASTER_SLAVE_CFG_MASTER_FORCE: > + ctl |= CTL1000_AS_MASTER; > + break; > + case MASTER_SLAVE_CFG_SLAVE_FORCE: > + break; > + case MASTER_SLAVE_CFG_UNKNOWN: > + case MASTER_SLAVE_CFG_UNSUPPORTED: > + return 0; > + default: > + phydev_warn(phydev, "Unsupported Master/Slave mode\n"); > + return -EOPNOTSUPP; > + } > + > + rc = phy_modify_changed(phydev, MII_CTRL1000, CTL1000_AS_MASTER, ctl); > + if (rc == 1) > + rc = genphy_soft_reset(phydev); > + > + return rc; > +}
Please use genphy_setup_master_slave()
Andrew
| |