|
@@ -2678,30 +2678,53 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev,
|
|
|
|
|
|
tx_pin = 0;
|
|
|
|
|
|
- if (rt2x00dev->default_ant.tx_chain_num > 1) {
|
|
|
- /* Turn on secondary PAs for 2T and for 3T devices*/
|
|
|
+ switch (rt2x00dev->default_ant.tx_chain_num) {
|
|
|
+ case 3:
|
|
|
+ /* Turn on tertiary PAs */
|
|
|
+ rt2x00_set_field32(&tx_pin, TX_PIN_CFG_PA_PE_A2_EN,
|
|
|
+ rf->channel > 14);
|
|
|
+ rt2x00_set_field32(&tx_pin, TX_PIN_CFG_PA_PE_G2_EN,
|
|
|
+ rf->channel <= 14);
|
|
|
+ /* fall-through */
|
|
|
+ case 2:
|
|
|
+ /* Turn on secondary PAs */
|
|
|
rt2x00_set_field32(&tx_pin, TX_PIN_CFG_PA_PE_A1_EN,
|
|
|
rf->channel > 14);
|
|
|
rt2x00_set_field32(&tx_pin, TX_PIN_CFG_PA_PE_G1_EN,
|
|
|
rf->channel <= 14);
|
|
|
+ /* fall-through */
|
|
|
+ case 1:
|
|
|
+ /* Turn on primary PAs */
|
|
|
+ rt2x00_set_field32(&tx_pin, TX_PIN_CFG_PA_PE_A0_EN,
|
|
|
+ rf->channel > 14);
|
|
|
+ if (test_bit(CAPABILITY_BT_COEXIST, &rt2x00dev->cap_flags))
|
|
|
+ rt2x00_set_field32(&tx_pin, TX_PIN_CFG_PA_PE_G0_EN, 1);
|
|
|
+ else
|
|
|
+ rt2x00_set_field32(&tx_pin, TX_PIN_CFG_PA_PE_G0_EN,
|
|
|
+ rf->channel <= 14);
|
|
|
+ break;
|
|
|
}
|
|
|
|
|
|
- if (rt2x00dev->default_ant.rx_chain_num > 1) {
|
|
|
- /* Turn on secondary LNAs for 2R and for 3R devices */
|
|
|
+ switch (rt2x00dev->default_ant.rx_chain_num) {
|
|
|
+ case 3:
|
|
|
+ /* Turn on tertiary LNAs */
|
|
|
+ rt2x00_set_field32(&tx_pin, TX_PIN_CFG_LNA_PE_A2_EN, 1);
|
|
|
+ rt2x00_set_field32(&tx_pin, TX_PIN_CFG_LNA_PE_G2_EN, 1);
|
|
|
+ /* fall-through */
|
|
|
+ case 2:
|
|
|
+ /* Turn on secondary LNAs */
|
|
|
rt2x00_set_field32(&tx_pin, TX_PIN_CFG_LNA_PE_A1_EN, 1);
|
|
|
rt2x00_set_field32(&tx_pin, TX_PIN_CFG_LNA_PE_G1_EN, 1);
|
|
|
+ /* fall-through */
|
|
|
+ case 1:
|
|
|
+ /* Turn on primary LNAs */
|
|
|
+ rt2x00_set_field32(&tx_pin, TX_PIN_CFG_LNA_PE_A0_EN, 1);
|
|
|
+ rt2x00_set_field32(&tx_pin, TX_PIN_CFG_LNA_PE_G0_EN, 1);
|
|
|
+ break;
|
|
|
}
|
|
|
|
|
|
- rt2x00_set_field32(&tx_pin, TX_PIN_CFG_LNA_PE_A0_EN, 1);
|
|
|
- rt2x00_set_field32(&tx_pin, TX_PIN_CFG_LNA_PE_G0_EN, 1);
|
|
|
rt2x00_set_field32(&tx_pin, TX_PIN_CFG_RFTR_EN, 1);
|
|
|
rt2x00_set_field32(&tx_pin, TX_PIN_CFG_TRSW_EN, 1);
|
|
|
- if (test_bit(CAPABILITY_BT_COEXIST, &rt2x00dev->cap_flags))
|
|
|
- rt2x00_set_field32(&tx_pin, TX_PIN_CFG_PA_PE_G0_EN, 1);
|
|
|
- else
|
|
|
- rt2x00_set_field32(&tx_pin, TX_PIN_CFG_PA_PE_G0_EN,
|
|
|
- rf->channel <= 14);
|
|
|
- rt2x00_set_field32(&tx_pin, TX_PIN_CFG_PA_PE_A0_EN, rf->channel > 14);
|
|
|
|
|
|
rt2800_register_write(rt2x00dev, TX_PIN_CFG, tx_pin);
|
|
|
|