[U-Boot-Users] Fix for MII utils

Steven Scholz steven.scholz at imc-berlin.de
Thu Nov 6 12:17:17 CET 2003


Steven Scholz wrote:

Any comments on the patch?

> ------------------------------------------------------------------------
> 
> Index: common/cmd_mii.c
> ===================================================================
> RCS file: /cvsroot/u-boot/u-boot/common/cmd_mii.c,v
> retrieving revision 1.4
> diff -p -u -r1.4 cmd_mii.c
> --- common/cmd_mii.c	1 Jul 2003 21:07:07 -0000	1.4
> +++ common/cmd_mii.c	20 Oct 2003 16:53:16 -0000
> @@ -81,7 +81,7 @@ int do_mii (cmd_tbl_t * cmdtp, int flag,
>  	 * 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,
>  		/*
>  		 * 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, "
> Index: common/miiphyutil.c
> ===================================================================
> RCS file: /cvsroot/u-boot/u-boot/common/miiphyutil.c,v
> retrieving revision 1.2
> diff -p -u -r1.2 miiphyutil.c
> --- common/miiphyutil.c	8 Oct 2003 22:33:00 -0000	1.2
> +++ common/miiphyutil.c	20 Oct 2003 16:53:16 -0000
> @@ -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 *) &reg) != 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 *) &reg) != 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


-- 
Steven Scholz

imc Measurement & Control               imc Meßsysteme GmbH
Voltastr. 5                             Voltastr. 5
13355 Berlin                            13355 Berlin
Germany                                 Deutschland
fon: +49 30 467090-0                    Tel: 030 / 467090-0
fax: +49 30 4631576                     fax: 030 / 4631576





More information about the U-Boot mailing list