b43: HT-PHY: fix masks in radio ctl
Old masks were causing ugly, delayed lock ups. Signed-off-by: Rafał Miłecki <zajec5@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
40c6226967
commit
0b5dd734d3
1 changed files with 10 additions and 5 deletions
|
@ -276,13 +276,18 @@ static void b43_phy_ht_op_software_rfkill(struct b43_wldev *dev,
|
|||
if (b43_read32(dev, B43_MMIO_MACCTL) & B43_MACCTL_ENABLED)
|
||||
b43err(dev->wl, "MAC not suspended\n");
|
||||
|
||||
/* In the following PHY ops we copy wl's dummy behaviour.
|
||||
* TODO: Find out if reads (currently hidden in masks/masksets) are
|
||||
* needed and replace following ops with just writes or w&r.
|
||||
* Note: B43_PHY_HT_RF_CTL1 register is tricky, wrong operation can
|
||||
* cause delayed (!) machine lock up. */
|
||||
if (blocked) {
|
||||
b43_phy_mask(dev, B43_PHY_HT_RF_CTL1, ~0);
|
||||
b43_phy_mask(dev, B43_PHY_HT_RF_CTL1, 0);
|
||||
} else {
|
||||
b43_phy_mask(dev, B43_PHY_HT_RF_CTL1, ~0);
|
||||
b43_phy_maskset(dev, B43_PHY_HT_RF_CTL1, ~0, 0x1);
|
||||
b43_phy_mask(dev, B43_PHY_HT_RF_CTL1, ~0);
|
||||
b43_phy_maskset(dev, B43_PHY_HT_RF_CTL1, ~0, 0x2);
|
||||
b43_phy_mask(dev, B43_PHY_HT_RF_CTL1, 0);
|
||||
b43_phy_maskset(dev, B43_PHY_HT_RF_CTL1, 0, 0x1);
|
||||
b43_phy_mask(dev, B43_PHY_HT_RF_CTL1, 0);
|
||||
b43_phy_maskset(dev, B43_PHY_HT_RF_CTL1, 0, 0x2);
|
||||
|
||||
if (dev->phy.radio_ver == 0x2059)
|
||||
b43_radio_2059_init(dev);
|
||||
|
|
Loading…
Reference in a new issue