Commit 15518080 authored by Rafał Miłecki's avatar Rafał Miłecki Committed by John W. Linville

b43: flush PHY writes when needed

Signed-off-by: default avatarRafał Miłecki <zajec5@gmail.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 755fd183
...@@ -231,6 +231,7 @@ void b43_radio_maskset(struct b43_wldev *dev, u16 offset, u16 mask, u16 set) ...@@ -231,6 +231,7 @@ void b43_radio_maskset(struct b43_wldev *dev, u16 offset, u16 mask, u16 set)
u16 b43_phy_read(struct b43_wldev *dev, u16 reg) u16 b43_phy_read(struct b43_wldev *dev, u16 reg)
{ {
assert_mac_suspended(dev); assert_mac_suspended(dev);
dev->phy.writes_counter = 0;
return dev->phy.ops->phy_read(dev, reg); return dev->phy.ops->phy_read(dev, reg);
} }
...@@ -238,6 +239,10 @@ void b43_phy_write(struct b43_wldev *dev, u16 reg, u16 value) ...@@ -238,6 +239,10 @@ void b43_phy_write(struct b43_wldev *dev, u16 reg, u16 value)
{ {
assert_mac_suspended(dev); assert_mac_suspended(dev);
dev->phy.ops->phy_write(dev, reg, value); dev->phy.ops->phy_write(dev, reg, value);
if (++dev->phy.writes_counter == B43_MAX_WRITES_IN_ROW) {
b43_read16(dev, B43_MMIO_PHY_VER);
dev->phy.writes_counter = 0;
}
} }
void b43_phy_copy(struct b43_wldev *dev, u16 destreg, u16 srcreg) void b43_phy_copy(struct b43_wldev *dev, u16 destreg, u16 srcreg)
......
...@@ -39,6 +39,9 @@ struct b43_c32 { s32 i, q; }; ...@@ -39,6 +39,9 @@ struct b43_c32 { s32 i, q; };
#define B43_PHYVER_TYPE_SHIFT 8 #define B43_PHYVER_TYPE_SHIFT 8
#define B43_PHYVER_VERSION 0x00FF #define B43_PHYVER_VERSION 0x00FF
/* PHY writes need to be flushed if we reach limit */
#define B43_MAX_WRITES_IN_ROW 24
/** /**
* enum b43_interference_mitigation - Interference Mitigation mode * enum b43_interference_mitigation - Interference Mitigation mode
* *
...@@ -232,6 +235,9 @@ struct b43_phy { ...@@ -232,6 +235,9 @@ struct b43_phy {
/* PHY revision number. */ /* PHY revision number. */
u8 rev; u8 rev;
/* Count writes since last read */
u8 writes_counter;
/* Radio versioning */ /* Radio versioning */
u16 radio_manuf; /* Radio manufacturer */ u16 radio_manuf; /* Radio manufacturer */
u16 radio_ver; /* Radio version */ u16 radio_ver; /* Radio version */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment