b43: Fix machine check error due to improper access of B43_MMIO_PSM_PHY_HDR
[pandora-kernel.git] / drivers / net / wireless / b43 / phy_n.c
index 05ee7f1..24ccbe9 100644 (file)
@@ -5176,22 +5176,22 @@ static void b43_nphy_channel_setup(struct b43_wldev *dev,
        int ch = new_channel->hw_value;
 
        u16 old_band_5ghz;
-       u32 tmp32;
+       u16 tmp16;
 
        old_band_5ghz =
                b43_phy_read(dev, B43_NPHY_BANDCTL) & B43_NPHY_BANDCTL_5GHZ;
        if (new_channel->band == IEEE80211_BAND_5GHZ && !old_band_5ghz) {
-               tmp32 = b43_read32(dev, B43_MMIO_PSM_PHY_HDR);
-               b43_write32(dev, B43_MMIO_PSM_PHY_HDR, tmp32 | 4);
+               tmp16 = b43_read16(dev, B43_MMIO_PSM_PHY_HDR);
+               b43_write16(dev, B43_MMIO_PSM_PHY_HDR, tmp16 | 4);
                b43_phy_set(dev, B43_PHY_B_BBCFG, 0xC000);
-               b43_write32(dev, B43_MMIO_PSM_PHY_HDR, tmp32);
+               b43_write16(dev, B43_MMIO_PSM_PHY_HDR, tmp16);
                b43_phy_set(dev, B43_NPHY_BANDCTL, B43_NPHY_BANDCTL_5GHZ);
        } else if (new_channel->band == IEEE80211_BAND_2GHZ && old_band_5ghz) {
                b43_phy_mask(dev, B43_NPHY_BANDCTL, ~B43_NPHY_BANDCTL_5GHZ);
-               tmp32 = b43_read32(dev, B43_MMIO_PSM_PHY_HDR);
-               b43_write32(dev, B43_MMIO_PSM_PHY_HDR, tmp32 | 4);
+               tmp16 = b43_read16(dev, B43_MMIO_PSM_PHY_HDR);
+               b43_write16(dev, B43_MMIO_PSM_PHY_HDR, tmp16 | 4);
                b43_phy_mask(dev, B43_PHY_B_BBCFG, 0x3FFF);
-               b43_write32(dev, B43_MMIO_PSM_PHY_HDR, tmp32);
+               b43_write16(dev, B43_MMIO_PSM_PHY_HDR, tmp16);
        }
 
        b43_chantab_phy_upload(dev, e);