aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/rt2x00/rt73usb.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/rt2x00/rt73usb.c')
-rw-r--r--drivers/net/wireless/rt2x00/rt73usb.c58
1 files changed, 46 insertions, 12 deletions
diff --git a/drivers/net/wireless/rt2x00/rt73usb.c b/drivers/net/wireless/rt2x00/rt73usb.c
index e3d5e78661e..b9d5310c386 100644
--- a/drivers/net/wireless/rt2x00/rt73usb.c
+++ b/drivers/net/wireless/rt2x00/rt73usb.c
@@ -408,6 +408,29 @@ static void rt73usb_config_antenna_5x(struct rt2x00_dev *rt2x00dev,
408 408
409 rt2x00_set_field8(&r3, BBP_R3_SMART_MODE, 0); 409 rt2x00_set_field8(&r3, BBP_R3_SMART_MODE, 0);
410 410
411 /*
412 * Configure the TX antenna.
413 */
414 switch (ant->tx) {
415 case ANTENNA_A:
416 rt2x00_set_field8(&r77, BBP_R77_TX_ANTENNA, 0);
417 break;
418 case ANTENNA_SW_DIVERSITY:
419 case ANTENNA_HW_DIVERSITY:
420 /*
421 * NOTE: We should never come here because rt2x00lib is
422 * supposed to catch this and send us the correct antenna
423 * explicitely. However we are nog going to bug about this.
424 * Instead, just default to antenna B.
425 */
426 case ANTENNA_B:
427 rt2x00_set_field8(&r77, BBP_R77_TX_ANTENNA, 3);
428 break;
429 }
430
431 /*
432 * Configure the RX antenna.
433 */
411 switch (ant->rx) { 434 switch (ant->rx) {
412 case ANTENNA_HW_DIVERSITY: 435 case ANTENNA_HW_DIVERSITY:
413 rt2x00_set_field8(&r4, BBP_R4_RX_ANTENNA, 2); 436 rt2x00_set_field8(&r4, BBP_R4_RX_ANTENNA, 2);
@@ -417,11 +440,6 @@ static void rt73usb_config_antenna_5x(struct rt2x00_dev *rt2x00dev,
417 case ANTENNA_A: 440 case ANTENNA_A:
418 rt2x00_set_field8(&r4, BBP_R4_RX_ANTENNA, 1); 441 rt2x00_set_field8(&r4, BBP_R4_RX_ANTENNA, 1);
419 rt2x00_set_field8(&r4, BBP_R4_RX_FRAME_END, 0); 442 rt2x00_set_field8(&r4, BBP_R4_RX_FRAME_END, 0);
420
421 if (rt2x00dev->curr_hwmode == HWMODE_A)
422 rt2x00_set_field8(&r77, BBP_R77_PAIR, 0);
423 else
424 rt2x00_set_field8(&r77, BBP_R77_PAIR, 3);
425 break; 443 break;
426 case ANTENNA_SW_DIVERSITY: 444 case ANTENNA_SW_DIVERSITY:
427 /* 445 /*
@@ -433,11 +451,6 @@ static void rt73usb_config_antenna_5x(struct rt2x00_dev *rt2x00dev,
433 case ANTENNA_B: 451 case ANTENNA_B:
434 rt2x00_set_field8(&r4, BBP_R4_RX_ANTENNA, 1); 452 rt2x00_set_field8(&r4, BBP_R4_RX_ANTENNA, 1);
435 rt2x00_set_field8(&r4, BBP_R4_RX_FRAME_END, 0); 453 rt2x00_set_field8(&r4, BBP_R4_RX_FRAME_END, 0);
436
437 if (rt2x00dev->curr_hwmode == HWMODE_A)
438 rt2x00_set_field8(&r77, BBP_R77_PAIR, 3);
439 else
440 rt2x00_set_field8(&r77, BBP_R77_PAIR, 0);
441 break; 454 break;
442 } 455 }
443 456
@@ -461,13 +474,35 @@ static void rt73usb_config_antenna_2x(struct rt2x00_dev *rt2x00dev,
461 rt2x00_set_field8(&r4, BBP_R4_RX_FRAME_END, 474 rt2x00_set_field8(&r4, BBP_R4_RX_FRAME_END,
462 !test_bit(CONFIG_FRAME_TYPE, &rt2x00dev->flags)); 475 !test_bit(CONFIG_FRAME_TYPE, &rt2x00dev->flags));
463 476
477 /*
478 * Configure the TX antenna.
479 */
480 switch (ant->tx) {
481 case ANTENNA_A:
482 rt2x00_set_field8(&r77, BBP_R77_TX_ANTENNA, 0);
483 break;
484 case ANTENNA_SW_DIVERSITY:
485 case ANTENNA_HW_DIVERSITY:
486 /*
487 * NOTE: We should never come here because rt2x00lib is
488 * supposed to catch this and send us the correct antenna
489 * explicitely. However we are nog going to bug about this.
490 * Instead, just default to antenna B.
491 */
492 case ANTENNA_B:
493 rt2x00_set_field8(&r77, BBP_R77_TX_ANTENNA, 3);
494 break;
495 }
496
497 /*
498 * Configure the RX antenna.
499 */
464 switch (ant->rx) { 500 switch (ant->rx) {
465 case ANTENNA_HW_DIVERSITY: 501 case ANTENNA_HW_DIVERSITY:
466 rt2x00_set_field8(&r4, BBP_R4_RX_ANTENNA, 2); 502 rt2x00_set_field8(&r4, BBP_R4_RX_ANTENNA, 2);
467 break; 503 break;
468 case ANTENNA_A: 504 case ANTENNA_A:
469 rt2x00_set_field8(&r4, BBP_R4_RX_ANTENNA, 1); 505 rt2x00_set_field8(&r4, BBP_R4_RX_ANTENNA, 1);
470 rt2x00_set_field8(&r77, BBP_R77_PAIR, 3);
471 break; 506 break;
472 case ANTENNA_SW_DIVERSITY: 507 case ANTENNA_SW_DIVERSITY:
473 /* 508 /*
@@ -478,7 +513,6 @@ static void rt73usb_config_antenna_2x(struct rt2x00_dev *rt2x00dev,
478 */ 513 */
479 case ANTENNA_B: 514 case ANTENNA_B:
480 rt2x00_set_field8(&r4, BBP_R4_RX_ANTENNA, 1); 515 rt2x00_set_field8(&r4, BBP_R4_RX_ANTENNA, 1);
481 rt2x00_set_field8(&r77, BBP_R77_PAIR, 0);
482 break; 516 break;
483 } 517 }
484 518