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: Thomas Ilnseher <illth@gmx.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
09ebe2f943
commit
9308779aad
@ -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 = {
|
|||||||
.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,
|
||||||
|
Loading…
Reference in New Issue
Block a user