aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/wireless/b43/phy_n.c16
-rw-r--r--drivers/net/wireless/b43/phy_n.h2
2 files changed, 10 insertions, 8 deletions
diff --git a/drivers/net/wireless/b43/phy_n.c b/drivers/net/wireless/b43/phy_n.c
index 2c5583231d2f..ef1acaec7027 100644
--- a/drivers/net/wireless/b43/phy_n.c
+++ b/drivers/net/wireless/b43/phy_n.c
@@ -6058,23 +6058,23 @@ static void b43_nphy_channel_setup(struct b43_wldev *dev,
6058 struct b43_phy *phy = &dev->phy; 6058 struct b43_phy *phy = &dev->phy;
6059 struct b43_phy_n *nphy = dev->phy.n; 6059 struct b43_phy_n *nphy = dev->phy.n;
6060 int ch = new_channel->hw_value; 6060 int ch = new_channel->hw_value;
6061
6062 u16 old_band_5ghz;
6063 u16 tmp16; 6061 u16 tmp16;
6064 6062
6065 old_band_5ghz = 6063 if (new_channel->band == IEEE80211_BAND_5GHZ) {
6066 b43_phy_read(dev, B43_NPHY_BANDCTL) & B43_NPHY_BANDCTL_5GHZ;
6067 if (new_channel->band == IEEE80211_BAND_5GHZ && !old_band_5ghz) {
6068 tmp16 = b43_read16(dev, B43_MMIO_PSM_PHY_HDR); 6064 tmp16 = b43_read16(dev, B43_MMIO_PSM_PHY_HDR);
6069 b43_write16(dev, B43_MMIO_PSM_PHY_HDR, tmp16 | 4); 6065 b43_write16(dev, B43_MMIO_PSM_PHY_HDR, tmp16 | 4);
6070 b43_phy_set(dev, B43_PHY_B_BBCFG, 0xC000); 6066 /* Put BPHY in the reset */
6067 b43_phy_set(dev, B43_PHY_B_BBCFG,
6068 B43_PHY_B_BBCFG_RSTCCA | B43_PHY_B_BBCFG_RSTRX);
6071 b43_write16(dev, B43_MMIO_PSM_PHY_HDR, tmp16); 6069 b43_write16(dev, B43_MMIO_PSM_PHY_HDR, tmp16);
6072 b43_phy_set(dev, B43_NPHY_BANDCTL, B43_NPHY_BANDCTL_5GHZ); 6070 b43_phy_set(dev, B43_NPHY_BANDCTL, B43_NPHY_BANDCTL_5GHZ);
6073 } else if (new_channel->band == IEEE80211_BAND_2GHZ && old_band_5ghz) { 6071 } else if (new_channel->band == IEEE80211_BAND_2GHZ) {
6074 b43_phy_mask(dev, B43_NPHY_BANDCTL, ~B43_NPHY_BANDCTL_5GHZ); 6072 b43_phy_mask(dev, B43_NPHY_BANDCTL, ~B43_NPHY_BANDCTL_5GHZ);
6075 tmp16 = b43_read16(dev, B43_MMIO_PSM_PHY_HDR); 6073 tmp16 = b43_read16(dev, B43_MMIO_PSM_PHY_HDR);
6076 b43_write16(dev, B43_MMIO_PSM_PHY_HDR, tmp16 | 4); 6074 b43_write16(dev, B43_MMIO_PSM_PHY_HDR, tmp16 | 4);
6077 b43_phy_mask(dev, B43_PHY_B_BBCFG, 0x3FFF); 6075 /* Take BPHY out of the reset */
6076 b43_phy_mask(dev, B43_PHY_B_BBCFG,
6077 (u16)~(B43_PHY_B_BBCFG_RSTCCA | B43_PHY_B_BBCFG_RSTRX));
6078 b43_write16(dev, B43_MMIO_PSM_PHY_HDR, tmp16); 6078 b43_write16(dev, B43_MMIO_PSM_PHY_HDR, tmp16);
6079 } 6079 }
6080 6080
diff --git a/drivers/net/wireless/b43/phy_n.h b/drivers/net/wireless/b43/phy_n.h
index 474bf758295d..30bec815b969 100644
--- a/drivers/net/wireless/b43/phy_n.h
+++ b/drivers/net/wireless/b43/phy_n.h
@@ -869,6 +869,8 @@
869#define B43_NPHY_REV7_RF_CTL_OVER6 B43_PHY_N(0x347) 869#define B43_NPHY_REV7_RF_CTL_OVER6 B43_PHY_N(0x347)
870 870
871#define B43_PHY_B_BBCFG B43_PHY_N_BMODE(0x001) /* BB config */ 871#define B43_PHY_B_BBCFG B43_PHY_N_BMODE(0x001) /* BB config */
872#define B43_PHY_B_BBCFG_RSTCCA 0x4000 /* Reset CCA */
873#define B43_PHY_B_BBCFG_RSTRX 0x8000 /* Reset RX */
872#define B43_PHY_B_TEST B43_PHY_N_BMODE(0x00A) 874#define B43_PHY_B_TEST B43_PHY_N_BMODE(0x00A)
873 875
874struct b43_wldev; 876struct b43_wldev;