[RFT][PATCH] b43: fix logic in GPIO configuration

Rafał Miłecki zajec5 at gmail.com
Wed Mar 7 01:52:53 EST 2012


W dniu 6 marca 2012 23:55 użytkownik Hauke Mehrtens <hauke at hauke-m.de> 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 at gmail.com>
>> ---
>>  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ł



More information about the b43-dev mailing list