Patchwork [U-Boot] Correct chip detect logic

login
register
mail settings
Submitter Yanjun Yang
Date Dec. 26, 2010, 2:41 a.m.
Message ID <AANLkTi=_PD4hq16-zXZ7p+wZ8MnxuKucBxa2eitjC1W-@mail.gmail.com>
Download mbox | patch
Permalink /patch/76713/
State Changes Requested
Headers show

Comments

Yanjun Yang - Dec. 26, 2010, 2:41 a.m.
The lan91c96_detect_chip routine is not correct according
to the manual.

Signed-off-by: YanJun Yang <yangyj.ee@gmail.com>
---
 drivers/net/lan91c96.c |    2 +-
 drivers/net/lan91c96.h |    3 ++-
 2 files changed, 3 insertions(+), 2 deletions(-)

--
1.5.6.5
Sergei Shtylyov - Dec. 27, 2010, 11:29 a.m.
Hello.

On 26-12-2010 5:41, Yanjun Yang wrote:

> The lan91c96_detect_chip routine is not correct according
> to the manual.

> Signed-off-by: YanJun Yang<yangyj.ee@gmail.com>
[...]

> diff --git a/drivers/net/lan91c96.c b/drivers/net/lan91c96.c
> index bd6966e..2550aa2 100644
> --- a/drivers/net/lan91c96.c
> +++ b/drivers/net/lan91c96.c
> @@ -780,7 +780,7 @@ static int lan91c96_detect_chip(struct eth_device *dev)
>         u8 chip_id;
>         int r;
>         SMC_SELECT_BANK(dev, 3);
> -       chip_id = SMC_inw(dev, 0xA)&  LAN91C96_REV_REVID;
> +       chip_id = (SMC_inw(dev, 0xA)&  LAN91C96_REV_CHIPID)>>

    Indent with tabs, not spaces.

> LAN91C96_CHIPID_SHIFT;

    Your patch is line-wrapped.

>         SMC_SELECT_BANK(dev, 0);
>         for (r = 0; r<  sizeof(supported_chips) / sizeof(struct id_type); r++)
>                 if (chip_id == supported_chips[r].id)
> diff --git a/drivers/net/lan91c96.h b/drivers/net/lan91c96.h
> index 6fbb0e3..609c92b 100644
> --- a/drivers/net/lan91c96.h
> +++ b/drivers/net/lan91c96.h
> @@ -519,7 +519,8 @@ typedef unsigned long int           dword;
>   ****************************************************************************
>   */
>   #define LAN91C96_REV_REVID        (0xFU<<  0)
> -#define LAN91C96_REV_CHIPID       (0xFU<<  4)
> +#define LAN91C96_CHIPID_SHIFT    4
> +#define LAN91C96_REV_CHIPID       (0xFU<<  LAN91C96_CHIPID_SHIFT)

    Align the macro values please.

WBR, Sergei

Patch

diff --git a/drivers/net/lan91c96.c b/drivers/net/lan91c96.c
index bd6966e..2550aa2 100644
--- a/drivers/net/lan91c96.c
+++ b/drivers/net/lan91c96.c
@@ -780,7 +780,7 @@  static int lan91c96_detect_chip(struct eth_device *dev)
       u8 chip_id;
       int r;
       SMC_SELECT_BANK(dev, 3);
-       chip_id = SMC_inw(dev, 0xA) & LAN91C96_REV_REVID;
+       chip_id = (SMC_inw(dev, 0xA) & LAN91C96_REV_CHIPID) >>
LAN91C96_CHIPID_SHIFT;
       SMC_SELECT_BANK(dev, 0);
       for (r = 0; r < sizeof(supported_chips) / sizeof(struct id_type); r++)
               if (chip_id == supported_chips[r].id)
diff --git a/drivers/net/lan91c96.h b/drivers/net/lan91c96.h
index 6fbb0e3..609c92b 100644
--- a/drivers/net/lan91c96.h
+++ b/drivers/net/lan91c96.h
@@ -519,7 +519,8 @@  typedef unsigned long int           dword;
 ****************************************************************************
 */
 #define LAN91C96_REV_REVID        (0xFU << 0)
-#define LAN91C96_REV_CHIPID       (0xFU << 4)
+#define LAN91C96_CHIPID_SHIFT    4
+#define LAN91C96_REV_CHIPID       (0xFU << LAN91C96_CHIPID_SHIFT)

 /*
 ****************************************************************************