Commit 9308779a authored by Thomas Ilnseher's avatar Thomas Ilnseher Committed by John W. Linville

b43: Add LP PHY Analog Switch Support

The current verison of b43 uses "b43_phyop_switch_analog_generic" for A,
G and LP phys.

According to the spec, this is the wrong behaviour for the LP PHY
(see: http://bcm-v4.sipsolutions.net/802.11/PHY/Anacore )

While no problems on the x86 plattform where seen, this leads to a crash
on the BCM5354 SoC (MIPS 32 LE plattform).
This patch implements the analog switch for LP PHYs according to the
specs. It fixes the crash
signed-off-by: default avatarThomas Ilnseher <illth@gmx.de>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 09ebe2f9
...@@ -2228,6 +2228,16 @@ static enum b43_txpwr_result b43_lpphy_op_recalc_txpower(struct b43_wldev *dev, ...@@ -2228,6 +2228,16 @@ static enum b43_txpwr_result b43_lpphy_op_recalc_txpower(struct b43_wldev *dev,
return B43_TXPWR_RES_DONE; return B43_TXPWR_RES_DONE;
} }
void b43_lpphy_op_switch_analog(struct b43_wldev *dev, bool on)
{
if (on) {
b43_phy_mask(dev, B43_LPPHY_AFE_CTL_OVR, 0xfff8);
} else {
b43_phy_set(dev, B43_LPPHY_AFE_CTL_OVRVAL, 0x0007);
b43_phy_set(dev, B43_LPPHY_AFE_CTL_OVR, 0x0007);
}
}
const struct b43_phy_operations b43_phyops_lp = { const struct b43_phy_operations b43_phyops_lp = {
.allocate = b43_lpphy_op_allocate, .allocate = b43_lpphy_op_allocate,
.free = b43_lpphy_op_free, .free = b43_lpphy_op_free,
...@@ -2239,7 +2249,7 @@ const struct b43_phy_operations b43_phyops_lp = { ...@@ -2239,7 +2249,7 @@ const struct b43_phy_operations b43_phyops_lp = {
.radio_read = b43_lpphy_op_radio_read, .radio_read = b43_lpphy_op_radio_read,
.radio_write = b43_lpphy_op_radio_write, .radio_write = b43_lpphy_op_radio_write,
.software_rfkill = b43_lpphy_op_software_rfkill, .software_rfkill = b43_lpphy_op_software_rfkill,
.switch_analog = b43_phyop_switch_analog_generic, .switch_analog = b43_lpphy_op_switch_analog,
.switch_channel = b43_lpphy_op_switch_channel, .switch_channel = b43_lpphy_op_switch_channel,
.get_default_chan = b43_lpphy_op_get_default_chan, .get_default_chan = b43_lpphy_op_get_default_chan,
.set_rx_antenna = b43_lpphy_op_set_rx_antenna, .set_rx_antenna = b43_lpphy_op_set_rx_antenna,
......
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