diff options
author | wdenk <wdenk> | 2003-12-06 23:20:41 +0000 |
---|---|---|
committer | wdenk <wdenk> | 2003-12-06 23:20:41 +0000 |
commit | 8bf3b005ddee3eee179ec961e1c2bd0693e3b79d (patch) | |
tree | 89b47bf5457d76bcaf63a38f1087529e1a9de931 /common | |
parent | a8c7c708a9e0051c6358718c53572a4681eaa22b (diff) | |
download | u-boot-imx-8bf3b005ddee3eee179ec961e1c2bd0693e3b79d.zip u-boot-imx-8bf3b005ddee3eee179ec961e1c2bd0693e3b79d.tar.gz u-boot-imx-8bf3b005ddee3eee179ec961e1c2bd0693e3b79d.tar.bz2 |
* Patches by Stephan Linz, 3 Nov 2003:
- more endianess fixes for LAN91C111 driver
- CFG_HZ configuration patch for NIOS Cyclone board
* Patch by Stephan Linz, 28 Oct 2003:
fix PHY_INT_REG vs. PHY_MASK_REG bug in drivers/smc91111.c
* Patch by Steven Scholz, 20 Oct 2003:
- make "mii info <addr>" show infor for PHY at "addr" only
- Endian fix for miiphy_info()
Diffstat (limited to 'common')
-rw-r--r-- | common/cmd_mii.c | 10 | ||||
-rw-r--r-- | common/miiphyutil.c | 13 |
2 files changed, 13 insertions, 10 deletions
diff --git a/common/cmd_mii.c b/common/cmd_mii.c index 18fad1e..94874dd 100644 --- a/common/cmd_mii.c +++ b/common/cmd_mii.c @@ -81,7 +81,7 @@ int do_mii (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[]) * check info/read/write. */ if (op == 'i') { - int j; + unsigned char j, start, end; unsigned int oui; unsigned char model; unsigned char rev; @@ -89,7 +89,13 @@ int do_mii (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[]) /* * Look for any and all PHYs. Valid addresses are 0..31. */ - for (j = 0; j < 32; j++) { + if (argc >= 3) { + start = addr; end = addr + 1; + } else { + start = 0; end = 32; + } + + for (j = start; j < end; j++) { if (miiphy_info (j, &oui, &model, &rev) == 0) { printf ("PHY 0x%02X: " "OUI = 0x%04X, " diff --git a/common/miiphyutil.c b/common/miiphyutil.c index 75c2df5..af8c7c7 100644 --- a/common/miiphyutil.c +++ b/common/miiphyutil.c @@ -47,19 +47,15 @@ int miiphy_info (unsigned char addr, unsigned char *model, unsigned char *rev) { unsigned int reg = 0; + unsigned short tmp; - /* - * Trick: we are reading two 16 registers into a 32 bit variable - * so we do a 16 read into the high order bits of the variable (big - * endian, you know), shift it down 16 bits, and the read the rest. - */ - if (miiphy_read (addr, PHY_PHYIDR2, (unsigned short *) ®) != 0) { + if (miiphy_read (addr, PHY_PHYIDR2, &tmp) != 0) { #ifdef DEBUG printf ("PHY ID register 2 read failed\n"); #endif return (-1); } - reg >>= 16; + reg = tmp; #ifdef DEBUG printf ("PHY_PHYIDR2 @ 0x%x = 0x%04x\n", addr, reg); @@ -69,12 +65,13 @@ int miiphy_info (unsigned char addr, return (-1); } - if (miiphy_read (addr, PHY_PHYIDR1, (unsigned short *) ®) != 0) { + if (miiphy_read (addr, PHY_PHYIDR1, &tmp) != 0) { #ifdef DEBUG printf ("PHY ID register 1 read failed\n"); #endif return (-1); } + reg |= tmp << 16; #ifdef DEBUG printf ("PHY_PHYIDR[1,2] @ 0x%x = 0x%08x\n", addr, reg); #endif |