diff options
author | Gabor Juhos <juhosg@openwrt.org> | 2013-03-30 14:53:09 +0100 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2013-04-01 16:09:41 -0400 |
commit | 86868b26a192260527fe6bdd421eefbdc8c02ead (patch) | |
tree | 71bbfab22a2cb9f307f95abe658d9d0aa3e5206d /drivers/net/wireless/rt2x00 | |
parent | 5ce69003dc92cd4a685a9f22a586b56a25f19624 (diff) |
rt2x00: rt2800lib: separate RT and RF chipset detection
Use the newly introduced rt2x00_set_{rf,rt} helpers
to set the RT and RF chipset separately.
This change makes it possible to move the RT
detection code into another function which will
be done in a subseqent patch.
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/rt2x00')
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2800lib.c | 56 |
1 files changed, 32 insertions, 24 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c index f08a0424fe4..c4cc624bbcf 100644 --- a/drivers/net/wireless/rt2x00/rt2800lib.c +++ b/drivers/net/wireless/rt2x00/rt2800lib.c @@ -5434,33 +5434,19 @@ static int rt2800_init_eeprom(struct rt2x00_dev *rt2x00dev) u32 reg; u16 value; u16 eeprom; + u32 rt; + u32 rev; + u16 rf; - /* - * Read EEPROM word for configuration. - */ - rt2x00_eeprom_read(rt2x00dev, EEPROM_NIC_CONF0, &eeprom); - - /* - * Identify RF chipset by EEPROM value - * RT28xx/RT30xx: defined in "EEPROM_NIC_CONF0_RF_TYPE" field - * RT53xx: defined in "EEPROM_CHIP_ID" field - */ if (rt2x00_rt(rt2x00dev, RT3290)) rt2800_register_read(rt2x00dev, MAC_CSR0_3290, ®); else rt2800_register_read(rt2x00dev, MAC_CSR0, ®); - if (rt2x00_get_field32(reg, MAC_CSR0_CHIPSET) == RT3290 || - rt2x00_get_field32(reg, MAC_CSR0_CHIPSET) == RT5390 || - rt2x00_get_field32(reg, MAC_CSR0_CHIPSET) == RT5392) - rt2x00_eeprom_read(rt2x00dev, EEPROM_CHIP_ID, &value); - else - value = rt2x00_get_field16(eeprom, EEPROM_NIC_CONF0_RF_TYPE); - - rt2x00_set_chip(rt2x00dev, rt2x00_get_field32(reg, MAC_CSR0_CHIPSET), - value, rt2x00_get_field32(reg, MAC_CSR0_REVISION)); + rt = rt2x00_get_field32(reg, MAC_CSR0_CHIPSET); + rev = rt2x00_get_field32(reg, MAC_CSR0_REVISION); - switch (rt2x00dev->chip.rt) { + switch (rt) { case RT2860: case RT2872: case RT2883: @@ -5476,11 +5462,32 @@ static int rt2800_init_eeprom(struct rt2x00_dev *rt2x00dev) case RT5592: break; default: - ERROR(rt2x00dev, "Invalid RT chipset 0x%04x detected.\n", rt2x00dev->chip.rt); + ERROR(rt2x00dev, + "Invalid RT chipset 0x%04x, rev %04x detected.\n", + rt, rev); return -ENODEV; } - switch (rt2x00dev->chip.rf) { + rt2x00_set_rt(rt2x00dev, rt, rev); + + /* + * Read EEPROM word for configuration. + */ + rt2x00_eeprom_read(rt2x00dev, EEPROM_NIC_CONF0, &eeprom); + + /* + * Identify RF chipset by EEPROM value + * RT28xx/RT30xx: defined in "EEPROM_NIC_CONF0_RF_TYPE" field + * RT53xx: defined in "EEPROM_CHIP_ID" field + */ + if (rt2x00_rt(rt2x00dev, RT3290) || + rt2x00_rt(rt2x00dev, RT5390) || + rt2x00_rt(rt2x00dev, RT5392)) + rt2x00_eeprom_read(rt2x00dev, EEPROM_CHIP_ID, &rf); + else + rf = rt2x00_get_field16(eeprom, EEPROM_NIC_CONF0_RF_TYPE); + + switch (rf) { case RF2820: case RF2850: case RF2720: @@ -5501,11 +5508,12 @@ static int rt2800_init_eeprom(struct rt2x00_dev *rt2x00dev) case RF5592: break; default: - ERROR(rt2x00dev, "Invalid RF chipset 0x%04x detected.\n", - rt2x00dev->chip.rf); + ERROR(rt2x00dev, "Invalid RF chipset 0x%04x detected.\n", rf); return -ENODEV; } + rt2x00_set_rf(rt2x00dev, rf); + /* * Identify default antenna configuration. */ |