On Mo, 2009-09-14 at 21:10 +0200, Gábor Stefanik wrote: > The generic analog switch routine is not correct for LP-PHY according > to the latest specs. Implement the proper analog core switch routine. > > Signed-off-by: Gábor Stefanik <netrolller.3d@xxxxxxxxx> > --- > diff --git a/drivers/net/wireless/b43/phy_lp.c b/drivers/net/wireless/b43/phy_lp.c > index 80da9c7..b0e127a 100644 > --- a/drivers/net/wireless/b43/phy_lp.c > +++ b/drivers/net/wireless/b43/phy_lp.c > @@ -2160,6 +2160,16 @@ static int lpphy_b2063_tune(struct b43_w > return 0; > } > > +static void b43_lpphy_op_switch_analog(struct b43_wldev *dev, bool on) > +{ The spec says: Else if this in an LP PHY a. If argument "on" is zero 1. OR PHY Register 0x43C with 7 2. OR PHY Register 0x43B with 7 > + if (on) { This stuff is executed when on is true (ie. anything else than zero) > + b43_phy_set(dev, B43_LPPHY_AFE_CTL_OVRVAL, 0x7); > + b43_phy_set(dev, B43_LPPHY_AFE_CTL_OVR, 0x7); > + } else { > + b43_phy_mask(dev, B43_LPPHY_AFE_CTL_OVR, 0xFFF8); > + } > +} > + > static int b43_lpphy_op_switch_channel(struct b43_wldev *dev, > unsigned int new_channel) > { > @@ -2239,7 +2249,7 @@ const struct b43_phy_operations b43_phyo > .radio_read = b43_lpphy_op_radio_read, > .radio_write = b43_lpphy_op_radio_write, > .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, > .get_default_chan = b43_lpphy_op_get_default_chan, > .set_rx_antenna = b43_lpphy_op_set_rx_antenna, > > _______________________________________________ > Bcm43xx-dev mailing list > Bcm43xx-dev@xxxxxxxxxxxxxxxx > https://lists.berlios.de/mailman/listinfo/bcm43xx-dev -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html