b43: Add LP-PHY read/write phyops
PATCH 1/1 b43: Add LP-PHY read/write phyops
This adds read/write phyops for the LP-PHY and LP-PHY radios.
Signed-off-by Michael Buesch <[email protected]>
---
John, please queue for the next merge window.
drivers/net/wireless/b43/phy_lp.c +17 -6
@@ -63,33 +63,44 @@ static void b43_lpphy_op_exit(struct b43kfree (lpphy); dev->phy.lp =NULL ; }static u16 b43_lpphy_op_read (struct b43_wldev *dev,u16 reg) { -//TODO -return 0 ; +b43_write16 (dev,B43_MMIO_PHY_CONTROL , reg); +return b43_read16 (dev,B43_MMIO_PHY_DATA ); }static void b43_lpphy_op_write (struct b43_wldev *dev,u16 reg,u16 value) { -//TODO +b43_write16 (dev,B43_MMIO_PHY_CONTROL , reg); +b43_write16 (dev,B43_MMIO_PHY_DATA , value); }static u16 b43_lpphy_op_radio_read (struct b43_wldev *dev,u16 reg) { -//TODO -return 0 ; +/* Register 1 is a 32-bit register. */ +B43_WARN_ON (reg ==1 ); +/* LP-PHY needs a special bit set for read access */ +if (dev->phy.rev <2 ) { +if (reg !=0x4001 ) + reg |=0x100 ; + }else + reg |=0x200 ; + +b43_write16 (dev,B43_MMIO_RADIO_CONTROL , reg); +return b43_read16 (dev,B43_MMIO_RADIO_DATA_LOW ); }static void b43_lpphy_op_radio_write (struct b43_wldev *dev,u16 reg,u16 value) {/* Register 1 is a 32-bit register. */ B43_WARN_ON (reg ==1 ); -//TODO +b43_write16 (dev,B43_MMIO_RADIO_CONTROL , reg); +b43_write16 (dev,B43_MMIO_RADIO_DATA_LOW , value); }static void b43_lpphy_op_software_rfkill (struct b43_wldev *dev,enum rfkill_state state) {//TODO