diff options
author | Gabor Juhos <juhosg@openwrt.org> | 2013-03-30 09:53:09 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2013-04-01 16:09:41 -0400 |
commit | 86868b26a192260527fe6bdd421eefbdc8c02ead (patch) | |
tree | 71bbfab22a2cb9f307f95abe658d9d0aa3e5206d /drivers | |
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')
-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 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, ®); | 5442 | rt2800_register_read(rt2x00dev, MAC_CSR0_3290, ®); |
5450 | else | 5443 | else |
5451 | rt2800_register_read(rt2x00dev, MAC_CSR0, ®); | 5444 | rt2800_register_read(rt2x00dev, MAC_CSR0, ®); |
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 | */ |