aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/b43legacy/radio.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/b43legacy/radio.c')
-rw-r--r--drivers/net/wireless/b43legacy/radio.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/net/wireless/b43legacy/radio.c b/drivers/net/wireless/b43legacy/radio.c
index 1a72eb0f8f66..318a270cf9b4 100644
--- a/drivers/net/wireless/b43legacy/radio.c
+++ b/drivers/net/wireless/b43legacy/radio.c
@@ -92,6 +92,7 @@ void b43legacy_radio_lock(struct b43legacy_wldev *dev)
92 u32 status; 92 u32 status;
93 93
94 status = b43legacy_read32(dev, B43legacy_MMIO_STATUS_BITFIELD); 94 status = b43legacy_read32(dev, B43legacy_MMIO_STATUS_BITFIELD);
95 B43legacy_WARN_ON(status & B43legacy_SBF_RADIOREG_LOCK);
95 status |= B43legacy_SBF_RADIOREG_LOCK; 96 status |= B43legacy_SBF_RADIOREG_LOCK;
96 b43legacy_write32(dev, B43legacy_MMIO_STATUS_BITFIELD, status); 97 b43legacy_write32(dev, B43legacy_MMIO_STATUS_BITFIELD, status);
97 mmiowb(); 98 mmiowb();
@@ -104,6 +105,7 @@ void b43legacy_radio_unlock(struct b43legacy_wldev *dev)
104 105
105 b43legacy_read16(dev, B43legacy_MMIO_PHY_VER); /* dummy read */ 106 b43legacy_read16(dev, B43legacy_MMIO_PHY_VER); /* dummy read */
106 status = b43legacy_read32(dev, B43legacy_MMIO_STATUS_BITFIELD); 107 status = b43legacy_read32(dev, B43legacy_MMIO_STATUS_BITFIELD);
108 B43legacy_WARN_ON(!(status & B43legacy_SBF_RADIOREG_LOCK));
107 status &= ~B43legacy_SBF_RADIOREG_LOCK; 109 status &= ~B43legacy_SBF_RADIOREG_LOCK;
108 b43legacy_write32(dev, B43legacy_MMIO_STATUS_BITFIELD, status); 110 b43legacy_write32(dev, B43legacy_MMIO_STATUS_BITFIELD, status);
109 mmiowb(); 111 mmiowb();
@@ -284,12 +286,11 @@ u8 b43legacy_radio_aci_scan(struct b43legacy_wldev *dev)
284 unsigned int j; 286 unsigned int j;
285 unsigned int start; 287 unsigned int start;
286 unsigned int end; 288 unsigned int end;
287 unsigned long phylock_flags;
288 289
289 if (!((phy->type == B43legacy_PHYTYPE_G) && (phy->rev > 0))) 290 if (!((phy->type == B43legacy_PHYTYPE_G) && (phy->rev > 0)))
290 return 0; 291 return 0;
291 292
292 b43legacy_phy_lock(dev, phylock_flags); 293 b43legacy_phy_lock(dev);
293 b43legacy_radio_lock(dev); 294 b43legacy_radio_lock(dev);
294 b43legacy_phy_write(dev, 0x0802, 295 b43legacy_phy_write(dev, 0x0802,
295 b43legacy_phy_read(dev, 0x0802) & 0xFFFC); 296 b43legacy_phy_read(dev, 0x0802) & 0xFFFC);
@@ -323,7 +324,7 @@ u8 b43legacy_radio_aci_scan(struct b43legacy_wldev *dev)
323 ret[j] = 1; 324 ret[j] = 1;
324 } 325 }
325 b43legacy_radio_unlock(dev); 326 b43legacy_radio_unlock(dev);
326 b43legacy_phy_unlock(dev, phylock_flags); 327 b43legacy_phy_unlock(dev);
327 328
328 return ret[channel - 1]; 329 return ret[channel - 1];
329} 330}