diff options
author | Rafał Miłecki <zajec5@gmail.com> | 2014-07-31 21:59:43 +0200 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2014-08-25 16:00:42 -0400 |
commit | d342b95dd735014a590f9051b1ba227eb54ca8f6 (patch) | |
tree | 2be91cea3fcb03b371882188b50236eac8c51820 /drivers/net/wireless/b43/phy_common.c | |
parent | 6247d2aa5188ac0ace33d8390341075c04107218 (diff) | |
download | linux-d342b95dd735014a590f9051b1ba227eb54ca8f6.tar.bz2 |
b43: don't duplicate common PHY read/write ops
Most of the PHYs use the same way of accessing registers, so move that
code to the shared place. An exception is G-PHY which sometimes access
A-PHY regs and requires special handling.
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/b43/phy_common.c')
-rw-r--r-- | drivers/net/wireless/b43/phy_common.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/drivers/net/wireless/b43/phy_common.c b/drivers/net/wireless/b43/phy_common.c index c868748b3f9e..08ca524664e6 100644 --- a/drivers/net/wireless/b43/phy_common.c +++ b/drivers/net/wireless/b43/phy_common.c @@ -274,7 +274,12 @@ u16 b43_phy_read(struct b43_wldev *dev, u16 reg) { assert_mac_suspended(dev); dev->phy.writes_counter = 0; - return dev->phy.ops->phy_read(dev, reg); + + if (dev->phy.ops->phy_read) + return dev->phy.ops->phy_read(dev, reg); + + b43_write16(dev, B43_MMIO_PHY_CONTROL, reg); + return b43_read16(dev, B43_MMIO_PHY_DATA); } void b43_phy_write(struct b43_wldev *dev, u16 reg, u16 value) @@ -285,7 +290,12 @@ void b43_phy_write(struct b43_wldev *dev, u16 reg, u16 value) b43_read16(dev, B43_MMIO_PHY_VER); dev->phy.writes_counter = 1; } - dev->phy.ops->phy_write(dev, reg, value); + + if (dev->phy.ops->phy_write) + return dev->phy.ops->phy_write(dev, reg, value); + + b43_write16(dev, B43_MMIO_PHY_CONTROL, reg); + b43_write16(dev, B43_MMIO_PHY_DATA, value); } void b43_phy_copy(struct b43_wldev *dev, u16 destreg, u16 srcreg) |