diff options
author | Gabor Juhos <juhosg@openwrt.org> | 2013-07-08 05:25:56 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2013-07-22 16:54:28 -0400 |
commit | fa31d157f83ef71b6530aacf0400bafe7816acbd (patch) | |
tree | 42ddb8de5ce2c5b0cf6d88b6e3e3bc03f6635f68 /drivers/net/wireless/rt2x00/rt2800lib.c | |
parent | 379448fe34e289fdcc473399d4f6cac19e757fb8 (diff) |
rt2x00: rt2800lib: add EEPROM map for the RT3593 chipset
Three-chain devices are using a different
EEPROM layout than the rest of the chipsets.
Add a new map which describes the new layout
and use that for the RT3593 chipset.
The index values has been computed from the
EEPROM_EXT_* defines, which can be found in
the 'include/chip/rt3593.h' file in the
Ralink DPO_RT5572_LinuxSTA_2.6.0.1_20120629
driver.
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
Acked-by: Stanislaw Gruszka <stf_xl@wp.pl>
Acked-by: Gertjan van Wingerde <gwingerde@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/rt2x00/rt2800lib.c')
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2800lib.c | 48 |
1 files changed, 47 insertions, 1 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c index 41a34de4a3e2..d325ca202865 100644 --- a/drivers/net/wireless/rt2x00/rt2800lib.c +++ b/drivers/net/wireless/rt2x00/rt2800lib.c | |||
@@ -261,6 +261,48 @@ static const unsigned int rt2800_eeprom_map[EEPROM_WORD_COUNT] = { | |||
261 | [EEPROM_BBP_START] = 0x0078, | 261 | [EEPROM_BBP_START] = 0x0078, |
262 | }; | 262 | }; |
263 | 263 | ||
264 | static const unsigned int rt2800_eeprom_map_ext[EEPROM_WORD_COUNT] = { | ||
265 | [EEPROM_CHIP_ID] = 0x0000, | ||
266 | [EEPROM_VERSION] = 0x0001, | ||
267 | [EEPROM_MAC_ADDR_0] = 0x0002, | ||
268 | [EEPROM_MAC_ADDR_1] = 0x0003, | ||
269 | [EEPROM_MAC_ADDR_2] = 0x0004, | ||
270 | [EEPROM_NIC_CONF0] = 0x001a, | ||
271 | [EEPROM_NIC_CONF1] = 0x001b, | ||
272 | [EEPROM_NIC_CONF2] = 0x001c, | ||
273 | [EEPROM_EIRP_MAX_TX_POWER] = 0x0020, | ||
274 | [EEPROM_FREQ] = 0x0022, | ||
275 | [EEPROM_LED_AG_CONF] = 0x0023, | ||
276 | [EEPROM_LED_ACT_CONF] = 0x0024, | ||
277 | [EEPROM_LED_POLARITY] = 0x0025, | ||
278 | [EEPROM_LNA] = 0x0026, | ||
279 | [EEPROM_EXT_LNA2] = 0x0027, | ||
280 | [EEPROM_RSSI_BG] = 0x0028, | ||
281 | [EEPROM_TXPOWER_DELTA] = 0x0028, /* Overlaps with RSSI_BG */ | ||
282 | [EEPROM_RSSI_BG2] = 0x0029, | ||
283 | [EEPROM_TXMIXER_GAIN_BG] = 0x0029, /* Overlaps with RSSI_BG2 */ | ||
284 | [EEPROM_RSSI_A] = 0x002a, | ||
285 | [EEPROM_RSSI_A2] = 0x002b, | ||
286 | [EEPROM_TXMIXER_GAIN_A] = 0x002b, /* Overlaps with RSSI_A2 */ | ||
287 | [EEPROM_TXPOWER_BG1] = 0x0030, | ||
288 | [EEPROM_TXPOWER_BG2] = 0x0037, | ||
289 | [EEPROM_EXT_TXPOWER_BG3] = 0x003e, | ||
290 | [EEPROM_TSSI_BOUND_BG1] = 0x0045, | ||
291 | [EEPROM_TSSI_BOUND_BG2] = 0x0046, | ||
292 | [EEPROM_TSSI_BOUND_BG3] = 0x0047, | ||
293 | [EEPROM_TSSI_BOUND_BG4] = 0x0048, | ||
294 | [EEPROM_TSSI_BOUND_BG5] = 0x0049, | ||
295 | [EEPROM_TXPOWER_A1] = 0x004b, | ||
296 | [EEPROM_TXPOWER_A2] = 0x0065, | ||
297 | [EEPROM_EXT_TXPOWER_A3] = 0x007f, | ||
298 | [EEPROM_TSSI_BOUND_A1] = 0x009a, | ||
299 | [EEPROM_TSSI_BOUND_A2] = 0x009b, | ||
300 | [EEPROM_TSSI_BOUND_A3] = 0x009c, | ||
301 | [EEPROM_TSSI_BOUND_A4] = 0x009d, | ||
302 | [EEPROM_TSSI_BOUND_A5] = 0x009e, | ||
303 | [EEPROM_TXPOWER_BYRATE] = 0x00a0, | ||
304 | }; | ||
305 | |||
264 | static unsigned int rt2800_eeprom_word_index(struct rt2x00_dev *rt2x00dev, | 306 | static unsigned int rt2800_eeprom_word_index(struct rt2x00_dev *rt2x00dev, |
265 | const enum rt2800_eeprom_word word) | 307 | const enum rt2800_eeprom_word word) |
266 | { | 308 | { |
@@ -272,7 +314,11 @@ static unsigned int rt2800_eeprom_word_index(struct rt2x00_dev *rt2x00dev, | |||
272 | wiphy_name(rt2x00dev->hw->wiphy), word)) | 314 | wiphy_name(rt2x00dev->hw->wiphy), word)) |
273 | return 0; | 315 | return 0; |
274 | 316 | ||
275 | map = rt2800_eeprom_map; | 317 | if (rt2x00_rt(rt2x00dev, RT3593)) |
318 | map = rt2800_eeprom_map_ext; | ||
319 | else | ||
320 | map = rt2800_eeprom_map; | ||
321 | |||
276 | index = map[word]; | 322 | index = map[word]; |
277 | 323 | ||
278 | /* Index 0 is valid only for EEPROM_CHIP_ID. | 324 | /* Index 0 is valid only for EEPROM_CHIP_ID. |