NET: lan91c96: Correct chip detect logic
authorYanjun Yang <yangyj.ee@gmail.com>
Tue, 28 Dec 2010 08:08:25 +0000 (16:08 +0800)
committerWolfgang Denk <wd@denx.de>
Tue, 18 Jan 2011 22:58:35 +0000 (23:58 +0100)
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

index bd6966ed76bedfc3d1de070e3e918a711eb23e94..883f3a7c5d00ce392edbbb9c9cd11e6934f4d42d 100644 (file)
@@ -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) >> 4;
        SMC_SELECT_BANK(dev, 0);
        for (r = 0; r < sizeof(supported_chips) / sizeof(struct id_type); r++)
                if (chip_id == supported_chips[r].id)