W dniu 6 marca 2012 23:55 użytkownik Hauke Mehrtens <hauke@xxxxxxxxxx> napisał: > On 03/06/2012 11:11 PM, Rafał Miłecki 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 >> } > > Hi, > > This patch did not helped fixing my problem. The ucode still takes over > the GPIOs of the buttons with firmware version 666.2. I am getting the > following messages: > > [ 83.620000] b43-phy0: Loading firmware version 666.2 (2011-02-23 > 01:15:07) > [ 83.624000] Init value of B43_GPIO_CONTROL: 0x0 > [ 83.632000] b43-phy0 debug: b2062: Using crystal tab entry 19200 kHz. > [ 83.640000] hotplug_button: action: pressed, name: reset, seen: 17179652 > [ 83.644000] hotplug_button: action: pressed, name: ses, seen: 17179652 > [ 89.404000] b43-phy0 debug: Chip initialized Interesting/weird. I suspected there are some bits set in B43_GPIO_CONTROL we should not clean. And you just adjusted "set" to keep them set. But now it seems B43_GPIO_CONTROL is *zero* at the beginning and we actually have to *set* 0xFF00 to stop firmware touching them? Really tricky, I didn't suspect we may need to change default state of non-b43-related GPIOs. -- Rafał -- 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