Message ID | 4AAE950C.2050704@gmail.com (mailing list archive) |
---|---|
State | Not Applicable, archived |
Headers | show |
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@gmail.com> > --- > 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@lists.berlios.de > 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@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Monday 14 September 2009 21:10:04 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@gmail.com> > --- > 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) > +{ > + if (on) { > + 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); > + } > +} You have the if branches swapped. (Don't add a ! in front of the on. Swap the branches).
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) +{ + if (on) { + 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,
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@gmail.com> --- -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html