]> git.karo-electronics.de Git - karo-tx-uboot.git/blobdiff - common/miiphyutil.c
cmd: pmic: print values with leading zeroes
[karo-tx-uboot.git] / common / miiphyutil.c
index 08aa854efe49bdea3ff3b1e4b948165ed93f21c6..d8ebb384dbfa82012284edea1999fd6ddc0c325f 100644 (file)
@@ -380,7 +380,7 @@ int miiphy_reset(const char *devname, unsigned char addr)
  */
 int miiphy_speed(const char *devname, unsigned char addr)
 {
-       u16 bmcr, anlpar;
+       u16 bmcr, anlpar, adv;
 
 #if defined(CONFIG_PHY_GIGE)
        u16 btsr;
@@ -417,7 +417,12 @@ int miiphy_speed(const char *devname, unsigned char addr)
                        printf("PHY AN speed");
                        goto miiphy_read_failed;
                }
-               return (anlpar & LPA_100) ? _100BASET : _10BASET;
+
+               if (miiphy_read(devname, addr, MII_ADVERTISE, &adv)) {
+                       puts("PHY AN adv speed");
+                       goto miiphy_read_failed;
+               }
+               return ((anlpar & adv) & LPA_100) ? _100BASET : _10BASET;
        }
        /* Get speed from basic control settings. */
        return (bmcr & BMCR_SPEED100) ? _100BASET : _10BASET;
@@ -433,7 +438,7 @@ miiphy_read_failed:
  */
 int miiphy_duplex(const char *devname, unsigned char addr)
 {
-       u16 bmcr, anlpar;
+       u16 bmcr, anlpar, adv;
 
 #if defined(CONFIG_PHY_GIGE)
        u16 btsr;
@@ -475,7 +480,12 @@ int miiphy_duplex(const char *devname, unsigned char addr)
                        puts("PHY AN duplex");
                        goto miiphy_read_failed;
                }
-               return (anlpar & (LPA_10FULL | LPA_100FULL)) ?
+
+               if (miiphy_read(devname, addr, MII_ADVERTISE, &adv)) {
+                       puts("PHY AN adv duplex");
+                       goto miiphy_read_failed;
+               }
+               return ((anlpar & adv) & (LPA_10FULL | LPA_100FULL)) ?
                    FULL : HALF;
        }
        /* Get speed from basic control settings. */