On Wed, Jan 23, 2019 at 7:15 AM Carlo Caione <ccai...@baylibre.com> wrote: > > Two new parameters (rmmd and wmmd) are added to allow the `mdio` command > to access the content of the MMD PHY registers. > > Signed-off-by: Carlo Caione <ccai...@baylibre.com> > --- > cmd/mdio.c | 33 +++++++++++++++++++++++++++------ > 1 file changed, 27 insertions(+), 6 deletions(-) > > diff --git a/cmd/mdio.c b/cmd/mdio.c > index 184868063a..010632b562 100644 > --- a/cmd/mdio.c > +++ b/cmd/mdio.c > @@ -43,7 +43,7 @@ static int mdio_write_ranges(struct phy_device *phydev, > struct mii_dev *bus, > int addrlo, > int addrhi, int devadlo, int devadhi, > int reglo, int reghi, unsigned short data, > - int extended) > + int extended, int mmd) > { > int addr, devad, reg; > int err = 0; > @@ -51,7 +51,9 @@ static int mdio_write_ranges(struct phy_device *phydev, > struct mii_dev *bus, > for (addr = addrlo; addr <= addrhi; addr++) { > for (devad = devadlo; devad <= devadhi; devad++) { > for (reg = reglo; reg <= reghi; reg++) { > - if (!extended) > + if (mmd) > + err = phy_write_mmd(phydev, devad, > reg, data); > + else if (!extended)
Please don't keep the negative logic and switch these last two. > err = bus->write(bus, addr, devad, > reg, data); > else > @@ -71,7 +73,7 @@ err_out: > static int mdio_read_ranges(struct phy_device *phydev, struct mii_dev *bus, > int addrlo, > int addrhi, int devadlo, int devadhi, > - int reglo, int reghi, int extended) > + int reglo, int reghi, int extended, int mmd) > { > int addr, devad, reg; > > @@ -83,7 +85,9 @@ static int mdio_read_ranges(struct phy_device *phydev, > struct mii_dev *bus, > for (reg = reglo; reg <= reghi; reg++) { > int val; > > - if (!extended) > + if (mmd) > + val = phy_read_mmd(phydev, devad, > reg); > + else if (!extended) Please don't keep the negative logic and switch these last two. > val = bus->read(bus, addr, devad, > reg); > else > val = phydev->drv->readext(phydev, > addr, > @@ -189,6 +193,7 @@ static int do_mdio(cmd_tbl_t *cmdtp, int flag, int argc, > char * const argv[]) > struct mii_dev *bus; > struct phy_device *phydev = NULL; > int extended = 0; > + int mmd = 0; > > if (argc < 2) > return CMD_RET_USAGE; > @@ -232,6 +237,18 @@ static int do_mdio(cmd_tbl_t *cmdtp, int flag, int argc, > char * const argv[]) > return -1; > } > } > + if (op[1] == 'm') { > + phydev = mdio_phydev_for_ethname(argv[2]); > + > + if (phydev) { > + addrlo = phydev->addr; > + addrhi = addrlo; > + bus = phydev->bus; > + mmd = 1; > + } else { > + return -1; Please use a valid command response macro. CMD_RET_FAILURE in this case. Feel free to fix it in the other places in this command as well. > + } > + } > } > > switch (op[0]) { > @@ -265,12 +282,12 @@ static int do_mdio(cmd_tbl_t *cmdtp, int flag, int > argc, char * const argv[]) > switch (op[0]) { > case 'w': > mdio_write_ranges(phydev, bus, addrlo, addrhi, devadlo, > devadhi, > - reglo, reghi, data, extended); > + reglo, reghi, data, extended, mmd); > break; > > case 'r': > mdio_read_ranges(phydev, bus, addrlo, addrhi, devadlo, > devadhi, > - reglo, reghi, extended); > + reglo, reghi, extended, mmd); > break; > } > > @@ -303,6 +320,10 @@ U_BOOT_CMD( > "read PHY's extended register at <devad>.<reg>\n" > "mdio wx <phydev> [<devad>.]<reg> <data> - " > "write PHY's extended register at <devad>.<reg>\n" > + "mdio rmmd <phydev> [<devad>.]<reg> - " > + "read PHY's extended register at <devad>.<reg>\n" > + "mdio wmmd <phydev> [<devad>.]<reg> <data> - " > + "write PHY's extended register at <devad>.<reg>\n" > "<phydev> may be:\n" > " <busname> <addr>\n" > " <addr>\n" > -- > 2.19.1 > > _______________________________________________ > U-Boot mailing list > U-Boot@lists.denx.de > https://lists.denx.de/listinfo/u-boot _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot