diff options
Diffstat (limited to 'drivers/net/wireless/rt2x00/rt2500usb.c')
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2500usb.c | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2500usb.c b/drivers/net/wireless/rt2x00/rt2500usb.c index 98edd621c13..31531f7cc12 100644 --- a/drivers/net/wireless/rt2x00/rt2500usb.c +++ b/drivers/net/wireless/rt2x00/rt2500usb.c | |||
@@ -385,7 +385,7 @@ static void rt2500usb_config_txpower(struct rt2x00_dev *rt2x00dev, | |||
385 | } | 385 | } |
386 | 386 | ||
387 | static void rt2500usb_config_antenna(struct rt2x00_dev *rt2x00dev, | 387 | static void rt2500usb_config_antenna(struct rt2x00_dev *rt2x00dev, |
388 | const int antenna_tx, const int antenna_rx) | 388 | struct antenna_setup *ant) |
389 | { | 389 | { |
390 | u8 r2; | 390 | u8 r2; |
391 | u8 r14; | 391 | u8 r14; |
@@ -400,7 +400,7 @@ static void rt2500usb_config_antenna(struct rt2x00_dev *rt2x00dev, | |||
400 | /* | 400 | /* |
401 | * Configure the TX antenna. | 401 | * Configure the TX antenna. |
402 | */ | 402 | */ |
403 | switch (antenna_tx) { | 403 | switch (ant->tx) { |
404 | case ANTENNA_SW_DIVERSITY: | 404 | case ANTENNA_SW_DIVERSITY: |
405 | case ANTENNA_HW_DIVERSITY: | 405 | case ANTENNA_HW_DIVERSITY: |
406 | rt2x00_set_field8(&r2, BBP_R2_TX_ANTENNA, 1); | 406 | rt2x00_set_field8(&r2, BBP_R2_TX_ANTENNA, 1); |
@@ -422,7 +422,7 @@ static void rt2500usb_config_antenna(struct rt2x00_dev *rt2x00dev, | |||
422 | /* | 422 | /* |
423 | * Configure the RX antenna. | 423 | * Configure the RX antenna. |
424 | */ | 424 | */ |
425 | switch (antenna_rx) { | 425 | switch (ant->rx) { |
426 | case ANTENNA_SW_DIVERSITY: | 426 | case ANTENNA_SW_DIVERSITY: |
427 | case ANTENNA_HW_DIVERSITY: | 427 | case ANTENNA_HW_DIVERSITY: |
428 | rt2x00_set_field8(&r14, BBP_R14_RX_ANTENNA, 1); | 428 | rt2x00_set_field8(&r14, BBP_R14_RX_ANTENNA, 1); |
@@ -487,9 +487,7 @@ static void rt2500usb_config(struct rt2x00_dev *rt2x00dev, | |||
487 | rt2500usb_config_txpower(rt2x00dev, | 487 | rt2500usb_config_txpower(rt2x00dev, |
488 | libconf->conf->power_level); | 488 | libconf->conf->power_level); |
489 | if (flags & CONFIG_UPDATE_ANTENNA) | 489 | if (flags & CONFIG_UPDATE_ANTENNA) |
490 | rt2500usb_config_antenna(rt2x00dev, | 490 | rt2500usb_config_antenna(rt2x00dev, &libconf->ant); |
491 | libconf->conf->antenna_sel_tx, | ||
492 | libconf->conf->antenna_sel_rx); | ||
493 | if (flags & (CONFIG_UPDATE_SLOT_TIME | CONFIG_UPDATE_BEACON_INT)) | 491 | if (flags & (CONFIG_UPDATE_SLOT_TIME | CONFIG_UPDATE_BEACON_INT)) |
494 | rt2500usb_config_duration(rt2x00dev, libconf); | 492 | rt2500usb_config_duration(rt2x00dev, libconf); |
495 | } | 493 | } |
@@ -1278,12 +1276,23 @@ static int rt2500usb_init_eeprom(struct rt2x00_dev *rt2x00dev) | |||
1278 | /* | 1276 | /* |
1279 | * Identify default antenna configuration. | 1277 | * Identify default antenna configuration. |
1280 | */ | 1278 | */ |
1281 | rt2x00dev->hw->conf.antenna_sel_tx = | 1279 | rt2x00dev->default_ant.tx = |
1282 | rt2x00_get_field16(eeprom, EEPROM_ANTENNA_TX_DEFAULT); | 1280 | rt2x00_get_field16(eeprom, EEPROM_ANTENNA_TX_DEFAULT); |
1283 | rt2x00dev->hw->conf.antenna_sel_rx = | 1281 | rt2x00dev->default_ant.rx = |
1284 | rt2x00_get_field16(eeprom, EEPROM_ANTENNA_RX_DEFAULT); | 1282 | rt2x00_get_field16(eeprom, EEPROM_ANTENNA_RX_DEFAULT); |
1285 | 1283 | ||
1286 | /* | 1284 | /* |
1285 | * When the eeprom indicates SW_DIVERSITY use HW_DIVERSITY instead. | ||
1286 | * I am not 100% sure about this, but the legacy drivers do not | ||
1287 | * indicate antenna swapping in software is required when | ||
1288 | * diversity is enabled. | ||
1289 | */ | ||
1290 | if (rt2x00dev->default_ant.tx == ANTENNA_SW_DIVERSITY) | ||
1291 | rt2x00dev->default_ant.tx = ANTENNA_HW_DIVERSITY; | ||
1292 | if (rt2x00dev->default_ant.rx == ANTENNA_SW_DIVERSITY) | ||
1293 | rt2x00dev->default_ant.rx = ANTENNA_HW_DIVERSITY; | ||
1294 | |||
1295 | /* | ||
1287 | * Store led mode, for correct led behaviour. | 1296 | * Store led mode, for correct led behaviour. |
1288 | */ | 1297 | */ |
1289 | rt2x00dev->led_mode = | 1298 | rt2x00dev->led_mode = |