b43: flush PHY writes when needed
Signed-off-by: Rafał Miłecki <zajec5@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
committed by
John W. Linville
parent
755fd183b8
commit
155180803c
@@ -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)
|
|||||||
{
|
{
|
||||||
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; };
|
|||||||
#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 {
|
|||||||
/* 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 */
|
||||||
|
Reference in New Issue
Block a user