diff options
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/ar9002_hw.c')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/ar9002_hw.c | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/ath9k/ar9002_hw.c b/drivers/net/wireless/ath/ath9k/ar9002_hw.c index 303c63da5ea3..94392daebaa0 100644 --- a/drivers/net/wireless/ath/ath9k/ar9002_hw.c +++ b/drivers/net/wireless/ath/ath9k/ar9002_hw.c | |||
@@ -580,3 +580,53 @@ void ar9002_hw_attach_ops(struct ath_hw *ah) | |||
580 | else | 580 | else |
581 | ath9k_hw_attach_ani_ops_old(ah); | 581 | ath9k_hw_attach_ani_ops_old(ah); |
582 | } | 582 | } |
583 | |||
584 | void ar9002_hw_load_ani_reg(struct ath_hw *ah, struct ath9k_channel *chan) | ||
585 | { | ||
586 | u32 modesIndex; | ||
587 | int i; | ||
588 | |||
589 | switch (chan->chanmode) { | ||
590 | case CHANNEL_A: | ||
591 | case CHANNEL_A_HT20: | ||
592 | modesIndex = 1; | ||
593 | break; | ||
594 | case CHANNEL_A_HT40PLUS: | ||
595 | case CHANNEL_A_HT40MINUS: | ||
596 | modesIndex = 2; | ||
597 | break; | ||
598 | case CHANNEL_G: | ||
599 | case CHANNEL_G_HT20: | ||
600 | case CHANNEL_B: | ||
601 | modesIndex = 4; | ||
602 | break; | ||
603 | case CHANNEL_G_HT40PLUS: | ||
604 | case CHANNEL_G_HT40MINUS: | ||
605 | modesIndex = 3; | ||
606 | break; | ||
607 | |||
608 | default: | ||
609 | return; | ||
610 | } | ||
611 | |||
612 | ENABLE_REGWRITE_BUFFER(ah); | ||
613 | |||
614 | for (i = 0; i < ah->iniModes_9271_ANI_reg.ia_rows; i++) { | ||
615 | u32 reg = INI_RA(&ah->iniModes_9271_ANI_reg, i, 0); | ||
616 | u32 val = INI_RA(&ah->iniModes_9271_ANI_reg, i, modesIndex); | ||
617 | u32 val_orig; | ||
618 | |||
619 | if (reg == AR_PHY_CCK_DETECT) { | ||
620 | val_orig = REG_READ(ah, reg); | ||
621 | val &= AR_PHY_CCK_DETECT_WEAK_SIG_THR_CCK; | ||
622 | val_orig &= ~AR_PHY_CCK_DETECT_WEAK_SIG_THR_CCK; | ||
623 | |||
624 | REG_WRITE(ah, reg, val|val_orig); | ||
625 | } else | ||
626 | REG_WRITE(ah, reg, val); | ||
627 | } | ||
628 | |||
629 | REGWRITE_BUFFER_FLUSH(ah); | ||
630 | DISABLE_REGWRITE_BUFFER(ah); | ||
631 | |||
632 | } | ||