ath9k_hw: fix chain swap setting when setting rx chainmask to 5
Chain swapping should only be enabled when the EEPROM chainmask is set to 5, regardless of what the runtime chainmask is. Cc: stable@vger.kernel.org Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
4a8f199508
commit
24171dd920
|
@ -588,30 +588,17 @@ static void ar9003_hw_init_bb(struct ath_hw *ah,
|
|||
|
||||
void ar9003_hw_set_chain_masks(struct ath_hw *ah, u8 rx, u8 tx)
|
||||
{
|
||||
switch (rx) {
|
||||
case 0x5:
|
||||
if (ah->caps.tx_chainmask == 5 || ah->caps.rx_chainmask == 5)
|
||||
REG_SET_BIT(ah, AR_PHY_ANALOG_SWAP,
|
||||
AR_PHY_SWAP_ALT_CHAIN);
|
||||
case 0x3:
|
||||
case 0x1:
|
||||
case 0x2:
|
||||
case 0x7:
|
||||
REG_WRITE(ah, AR_PHY_RX_CHAINMASK, rx);
|
||||
REG_WRITE(ah, AR_PHY_CAL_CHAINMASK, rx);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
REG_WRITE(ah, AR_PHY_RX_CHAINMASK, rx);
|
||||
REG_WRITE(ah, AR_PHY_CAL_CHAINMASK, rx);
|
||||
|
||||
if ((ah->caps.hw_caps & ATH9K_HW_CAP_APM) && (tx == 0x7))
|
||||
REG_WRITE(ah, AR_SELFGEN_MASK, 0x3);
|
||||
else
|
||||
REG_WRITE(ah, AR_SELFGEN_MASK, tx);
|
||||
tx = 3;
|
||||
|
||||
if (tx == 0x5) {
|
||||
REG_SET_BIT(ah, AR_PHY_ANALOG_SWAP,
|
||||
AR_PHY_SWAP_ALT_CHAIN);
|
||||
}
|
||||
REG_WRITE(ah, AR_SELFGEN_MASK, tx);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue