aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorGabor Juhos <juhosg@openwrt.org>2013-03-30 09:53:09 -0400
committerJohn W. Linville <linville@tuxdriver.com>2013-04-01 16:09:41 -0400
commit86868b26a192260527fe6bdd421eefbdc8c02ead (patch)
tree71bbfab22a2cb9f307f95abe658d9d0aa3e5206d /drivers
parent5ce69003dc92cd4a685a9f22a586b56a25f19624 (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')
-rw-r--r--drivers/net/wireless/rt2x00/rt2800lib.c56
1 files changed, 32 insertions, 24 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c
index f08a0424fe4d..c4cc624bbcf2 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)
5434 u32 reg; 5434 u32 reg;
5435 u16 value; 5435 u16 value;
5436 u16 eeprom; 5436 u16 eeprom;
5437 u32 rt;
5438 u32 rev;
5439 u16 rf;
5437 5440
5438 /*
5439 * Read EEPROM word for configuration.
5440 */
5441 rt2x00_eeprom_read(rt2x00dev, EEPROM_NIC_CONF0, &eeprom);
5442
5443 /*
5444 * Identify RF chipset by EEPROM value
5445 * RT28xx/RT30xx: defined in "EEPROM_NIC_CONF0_RF_TYPE" field
5446 * RT53xx: defined in "EEPROM_CHIP_ID" field
5447 */
5448 if (rt2x00_rt(rt2x00dev, RT3290)) 5441 if (rt2x00_rt(rt2x00dev, RT3290))
5449 rt2800_register_read(rt2x00dev, MAC_CSR0_3290, &reg); 5442 rt2800_register_read(rt2x00dev, MAC_CSR0_3290, &reg);
5450 else 5443 else
5451 rt2800_register_read(rt2x00dev, MAC_CSR0, &reg); 5444 rt2800_register_read(rt2x00dev, MAC_CSR0, &reg);
5452 5445
5453 if (rt2x00_get_field32(reg, MAC_CSR0_CHIPSET) == RT3290 || 5446 rt = rt2x00_get_field32(reg, MAC_CSR0_CHIPSET);
5454 rt2x00_get_field32(reg, MAC_CSR0_CHIPSET) == RT5390 || 5447 rev = rt2x00_get_field32(reg, MAC_CSR0_REVISION);
5455 rt2x00_get_field32(reg, MAC_CSR0_CHIPSET) == RT5392)
5456 rt2x00_eeprom_read(rt2x00dev, EEPROM_CHIP_ID, &value);
5457 else
5458 value = rt2x00_get_field16(eeprom, EEPROM_NIC_CONF0_RF_TYPE);
5459
5460 rt2x00_set_chip(rt2x00dev, rt2x00_get_field32(reg, MAC_CSR0_CHIPSET),
5461 value, rt2x00_get_field32(reg, MAC_CSR0_REVISION));
5462 5448
5463 switch (rt2x00dev->chip.rt) { 5449 switch (rt) {
5464 case RT2860: 5450 case RT2860:
5465 case RT2872: 5451 case RT2872:
5466 case RT2883: 5452 case RT2883:
@@ -5476,11 +5462,32 @@ static int rt2800_init_eeprom(struct rt2x00_dev *rt2x00dev)
5476 case RT5592: 5462 case RT5592:
5477 break; 5463 break;
5478 default: 5464 default:
5479 ERROR(rt2x00dev, "Invalid RT chipset 0x%04x detected.\n", rt2x00dev->chip.rt); 5465 ERROR(rt2x00dev,
5466 "Invalid RT chipset 0x%04x, rev %04x detected.\n",
5467 rt, rev);
5480 return -ENODEV; 5468 return -ENODEV;
5481 } 5469 }
5482 5470
5483 switch (rt2x00dev->chip.rf) { 5471 rt2x00_set_rt(rt2x00dev, rt, rev);
5472
5473 /*
5474 * Read EEPROM word for configuration.
5475 */
5476 rt2x00_eeprom_read(rt2x00dev, EEPROM_NIC_CONF0, &eeprom);
5477
5478 /*
5479 * Identify RF chipset by EEPROM value
5480 * RT28xx/RT30xx: defined in "EEPROM_NIC_CONF0_RF_TYPE" field
5481 * RT53xx: defined in "EEPROM_CHIP_ID" field
5482 */
5483 if (rt2x00_rt(rt2x00dev, RT3290) ||
5484 rt2x00_rt(rt2x00dev, RT5390) ||
5485 rt2x00_rt(rt2x00dev, RT5392))
5486 rt2x00_eeprom_read(rt2x00dev, EEPROM_CHIP_ID, &rf);
5487 else
5488 rf = rt2x00_get_field16(eeprom, EEPROM_NIC_CONF0_RF_TYPE);
5489
5490 switch (rf) {
5484 case RF2820: 5491 case RF2820:
5485 case RF2850: 5492 case RF2850:
5486 case RF2720: 5493 case RF2720:
@@ -5501,11 +5508,12 @@ static int rt2800_init_eeprom(struct rt2x00_dev *rt2x00dev)
5501 case RF5592: 5508 case RF5592:
5502 break; 5509 break;
5503 default: 5510 default:
5504 ERROR(rt2x00dev, "Invalid RF chipset 0x%04x detected.\n", 5511 ERROR(rt2x00dev, "Invalid RF chipset 0x%04x detected.\n", rf);
5505 rt2x00dev->chip.rf);
5506 return -ENODEV; 5512 return -ENODEV;
5507 } 5513 }
5508 5514
5515 rt2x00_set_rf(rt2x00dev, rf);
5516
5509 /* 5517 /*
5510 * Identify default antenna configuration. 5518 * Identify default antenna configuration.
5511 */ 5519 */