aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStanislaw Gruszka <sgruszka@redhat.com>2012-01-30 10:17:57 -0500
committerJohn W. Linville <linville@tuxdriver.com>2012-02-06 14:50:38 -0500
commite3bab197622276faac83eac3dfb993967d8d47e3 (patch)
tree86d69a81dd09dcd82c8572f15718e2a0f70ee904
parent7f4666ab3fd656513bffd449410a4d7c189081ec (diff)
rt2800: radio 3xxx: program RF_R1 during channel switch
Synchronize code with Ralink driver: 2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO Based on functions: RT33xx_ChipSwitchChannel RT30xx_ChipSwitchChannel RT33xx_Init Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com> Acked-by: Gertjan van Wingerde <gwingerde@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--drivers/net/wireless/rt2x00/rt2800lib.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c
index 006347e4d6e..1bdf1ec33cd 100644
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
@@ -1665,6 +1665,40 @@ static void rt2800_config_channel_rf3xxx(struct rt2x00_dev *rt2x00dev,
1665 rt2x00_set_field8(&rfcsr, RFCSR13_TX_POWER, info->default_power2); 1665 rt2x00_set_field8(&rfcsr, RFCSR13_TX_POWER, info->default_power2);
1666 rt2800_rfcsr_write(rt2x00dev, 13, rfcsr); 1666 rt2800_rfcsr_write(rt2x00dev, 13, rfcsr);
1667 1667
1668 rt2800_rfcsr_read(rt2x00dev, 1, &rfcsr);
1669 rt2x00_set_field8(&rfcsr, RFCSR1_RX0_PD, 0);
1670 rt2x00_set_field8(&rfcsr, RFCSR1_TX0_PD, 0);
1671 if (rt2x00_rt(rt2x00dev, RT3390)) {
1672 rt2x00_set_field8(&rfcsr, RFCSR1_RX1_PD,
1673 rt2x00dev->default_ant.rx_chain_num == 1);
1674 rt2x00_set_field8(&rfcsr, RFCSR1_TX1_PD,
1675 rt2x00dev->default_ant.tx_chain_num == 1);
1676 } else {
1677 rt2x00_set_field8(&rfcsr, RFCSR1_RX1_PD, 0);
1678 rt2x00_set_field8(&rfcsr, RFCSR1_TX1_PD, 0);
1679 rt2x00_set_field8(&rfcsr, RFCSR1_RX2_PD, 0);
1680 rt2x00_set_field8(&rfcsr, RFCSR1_TX2_PD, 0);
1681
1682 switch (rt2x00dev->default_ant.tx_chain_num) {
1683 case 1:
1684 rt2x00_set_field8(&rfcsr, RFCSR1_TX1_PD, 1);
1685 /* fall through */
1686 case 2:
1687 rt2x00_set_field8(&rfcsr, RFCSR1_TX2_PD, 1);
1688 break;
1689 }
1690
1691 switch (rt2x00dev->default_ant.rx_chain_num) {
1692 case 1:
1693 rt2x00_set_field8(&rfcsr, RFCSR1_RX1_PD, 1);
1694 /* fall through */
1695 case 2:
1696 rt2x00_set_field8(&rfcsr, RFCSR1_RX2_PD, 1);
1697 break;
1698 }
1699 }
1700 rt2800_rfcsr_write(rt2x00dev, 1, rfcsr);
1701
1668 rt2800_rfcsr_read(rt2x00dev, 23, &rfcsr); 1702 rt2800_rfcsr_read(rt2x00dev, 23, &rfcsr);
1669 rt2x00_set_field8(&rfcsr, RFCSR23_FREQ_OFFSET, rt2x00dev->freq_offset); 1703 rt2x00_set_field8(&rfcsr, RFCSR23_FREQ_OFFSET, rt2x00dev->freq_offset);
1670 rt2800_rfcsr_write(rt2x00dev, 23, rfcsr); 1704 rt2800_rfcsr_write(rt2x00dev, 23, rfcsr);