diff options
author | Ivo van Doorn <ivdoorn@gmail.com> | 2007-11-12 09:02:22 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2007-11-14 21:21:15 -0500 |
commit | 755a957d407c3fcac58360d9309b1664078ac15d (patch) | |
tree | 8668e7d54a6af0b2a843abad255972a2dc84bc81 /drivers/net/wireless/rt2x00/rt2500usb.c | |
parent | 14577f239fe5193d556ef1471c8667dabd556418 (diff) |
rt2x00: Fix chipset revision validation
The validation of the chipset revision was broken
since for rt2500usb and rt73usb different registers
should be read. When rt2500usb was loaded for a rt73
device it would false think the chipset was correct
because the wrong register was read and validated.
This has been fixed by expanding the check to also
see if the first 4 bits of the revision is not-0
(When reading the wrong register offset the returned
value is usually 0 which can be interpreted as invalid)
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/rt2x00/rt2500usb.c')
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2500usb.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2500usb.c b/drivers/net/wireless/rt2x00/rt2500usb.c index 7cdc80a122bb..277a020b35e9 100644 --- a/drivers/net/wireless/rt2x00/rt2500usb.c +++ b/drivers/net/wireless/rt2x00/rt2500usb.c | |||
@@ -753,7 +753,7 @@ static int rt2500usb_init_registers(struct rt2x00_dev *rt2x00dev) | |||
753 | rt2x00_set_field16(®, MAC_CSR1_HOST_READY, 1); | 753 | rt2x00_set_field16(®, MAC_CSR1_HOST_READY, 1); |
754 | rt2500usb_register_write(rt2x00dev, MAC_CSR1, reg); | 754 | rt2500usb_register_write(rt2x00dev, MAC_CSR1, reg); |
755 | 755 | ||
756 | if (rt2x00_get_rev(&rt2x00dev->chip) >= RT2570_VERSION_C) { | 756 | if (rt2x00_rev(&rt2x00dev->chip) >= RT2570_VERSION_C) { |
757 | rt2500usb_register_read(rt2x00dev, PHY_CSR2, ®); | 757 | rt2500usb_register_read(rt2x00dev, PHY_CSR2, ®); |
758 | reg &= ~0x0002; | 758 | reg &= ~0x0002; |
759 | } else { | 759 | } else { |
@@ -1257,7 +1257,7 @@ static int rt2500usb_init_eeprom(struct rt2x00_dev *rt2x00dev) | |||
1257 | rt2500usb_register_read(rt2x00dev, MAC_CSR0, ®); | 1257 | rt2500usb_register_read(rt2x00dev, MAC_CSR0, ®); |
1258 | rt2x00_set_chip(rt2x00dev, RT2570, value, reg); | 1258 | rt2x00_set_chip(rt2x00dev, RT2570, value, reg); |
1259 | 1259 | ||
1260 | if (rt2x00_rev(&rt2x00dev->chip, 0xffff0)) { | 1260 | if (!rt2x00_check_rev(&rt2x00dev->chip, 0)) { |
1261 | ERROR(rt2x00dev, "Invalid RT chipset detected.\n"); | 1261 | ERROR(rt2x00dev, "Invalid RT chipset detected.\n"); |
1262 | return -ENODEV; | 1262 | return -ENODEV; |
1263 | } | 1263 | } |