On Tue, 6 Mar 2012 23:11:38 +0100 Rafał Miłecki <zajec5@xxxxxxxxx> wrote: > By using reverted mask we were taking over pins we were not supporsed to > touch. After fixing this workaround for BCM5354 should not be needed > anymore. > > Signed-off-by: Rafał Miłecki <zajec5@xxxxxxxxx> > --- > drivers/net/wireless/b43/main.c | 6 ++---- > 1 files changed, 2 insertions(+), 4 deletions(-) > > diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c > index 1d633f3..8a89885 100644 > --- a/drivers/net/wireless/b43/main.c > +++ b/drivers/net/wireless/b43/main.c > @@ -2706,8 +2706,6 @@ static int b43_gpio_init(struct b43_wldev *dev) > mask |= 0x0060; > set |= 0x0060; > } > - if (dev->dev->chip_id == 0x5354) > - set &= 0xff02; > if (0 /* FIXME: conditional unknown */ ) { > b43_write16(dev, B43_MMIO_GPIO_MASK, > b43_read16(dev, B43_MMIO_GPIO_MASK) > @@ -2730,7 +2728,7 @@ static int b43_gpio_init(struct b43_wldev *dev) > case B43_BUS_BCMA: > bcma_cc_write32(&dev->dev->bdev->bus->drv_cc, BCMA_CC_GPIOCTL, > (bcma_cc_read32(&dev->dev->bdev->bus->drv_cc, > - BCMA_CC_GPIOCTL) & mask) | set); > + BCMA_CC_GPIOCTL) & ~mask) | set); > break; > #endif > #ifdef CONFIG_B43_SSB > @@ -2739,7 +2737,7 @@ static int b43_gpio_init(struct b43_wldev *dev) > if (gpiodev) > ssb_write32(gpiodev, B43_GPIO_CONTROL, > (ssb_read32(gpiodev, B43_GPIO_CONTROL) > - & mask) | set); > + & ~mask) | set); > break; > #endif > } This patch makes sense. Can you also check b43legacy? I guess it has the same problem. And while we're at it, you could also remove these two lines: 2737 if (dev->dev->core_rev >= 2) 2738 mask |= 0x0010; /* FIXME: This is redundant. */ because core_rev is always >= 2 in b43 and as the FIXME says the bit is already set. Also, take a look at b43_gpio_cleanup() (in b43 and b43legacy). It always forces all bits to zero. This clearly is wrong, too. It is supposed to revert the changes done in the b43 GPIO setup. It seems too complicated to fixup the code to actually do this, though. I think we should simply get rid of b43_gpio_cleanup() completely and simply leave the GPIOs as-is. No kittens will be hurt by doing so; so it's ok. -- Greetings, Michael. PGP encryption is encouraged / 908D8B0E
Attachment:
signature.asc
Description: PGP signature