It is confusing that mdio commands work and report phy id as
decimal value when mii is working with hex values.

For example:
ZynqMP> mdio list
gem:
21 - TI DP83867 <--> ethernet@ff0e0000
ZynqMP> mdio read ethernet@ff0e0000 0
Reading from bus gem
PHY at address 21:
0 - 0x1140
ZynqMP> mii dump 21 0
Incorrect PHY address. Range should be 0-31
...
ZynqMP> mii dump 15
0.     (1140)                 -- PHY control register --
  (8000:0000) 0.15    =     0    reset

U-Boot normally takes hex values that's why this patch is changing mdio
command to handle hex instead of changing mii command to handle decimal
values.

Signed-off-by: Michal Simek <michal.si...@xilinx.com>
---

 cmd/mdio.c             | 6 +++---
 common/miiphyutil.c    | 2 +-
 drivers/net/zynq_gem.c | 2 +-
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/cmd/mdio.c b/cmd/mdio.c
index fb13d050752a..21dc103736e7 100644
--- a/cmd/mdio.c
+++ b/cmd/mdio.c
@@ -27,12 +27,12 @@ static uint last_reg_hi;
 static int extract_range(char *input, int *plo, int *phi)
 {
        char *end;
-       *plo = simple_strtol(input, &end, 0);
+       *plo = simple_strtol(input, &end, 16);
        if (end == input)
                return -1;
 
        if ((*end == '-') && *(++end))
-               *phi = simple_strtol(end, NULL, 0);
+               *phi = simple_strtol(end, NULL, 16);
        else if (*end == '\0')
                *phi = *plo;
        else
@@ -79,7 +79,7 @@ static int mdio_read_ranges(struct phy_device *phydev, struct 
mii_dev *bus,
 
        printf("Reading from bus %s\n", bus->name);
        for (addr = addrlo; addr <= addrhi; addr++) {
-               printf("PHY at address %d:\n", addr);
+               printf("PHY at address %x:\n", addr);
 
                for (devad = devadlo; devad <= devadhi; devad++) {
                        for (reg = reglo; reg <= reghi; reg++) {
diff --git a/common/miiphyutil.c b/common/miiphyutil.c
index d8ebb384dbfa..aca18db52a00 100644
--- a/common/miiphyutil.c
+++ b/common/miiphyutil.c
@@ -135,7 +135,7 @@ void mdio_list_devices(void)
                        struct phy_device *phydev = bus->phymap[i];
 
                        if (phydev) {
-                               printf("%d - %s", i, phydev->drv->name);
+                               printf("%x - %s", i, phydev->drv->name);
 
                                if (phydev->dev)
                                        printf(" <--> %s\n", phydev->dev->name);
diff --git a/drivers/net/zynq_gem.c b/drivers/net/zynq_gem.c
index 3319e10467d0..526eac658ac5 100644
--- a/drivers/net/zynq_gem.c
+++ b/drivers/net/zynq_gem.c
@@ -706,7 +706,7 @@ static int zynq_gem_ofdata_to_platdata(struct udevice *dev)
 
        priv->emio = fdtdec_get_bool(gd->fdt_blob, dev->of_offset, "xlnx,emio");
 
-       printf("ZYNQ GEM: %lx, phyaddr %d, interface %s\n", (ulong)priv->iobase,
+       printf("ZYNQ GEM: %lx, phyaddr %x, interface %s\n", (ulong)priv->iobase,
               priv->phyaddr, phy_string_for_interface(priv->interface));
 
        return 0;
-- 
1.9.1

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to