bcma: use absolute base for SoC GPIO pins

On some BCM5301x ARM devices, user space still needs to control some
system GPIO pins for which no driver exists. This is a lot easier to do
with a predictable GPIO base.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:
Felix Fietkau 2015-04-15 15:07:52 +02:00 committed by Kalle Valo
parent c436553452
commit 2d57b7126d

View File

@ -235,16 +235,17 @@ int bcma_gpio_init(struct bcma_drv_cc *cc)
} }
/* /*
* On MIPS we register GPIO devices (LEDs, buttons) using absolute GPIO * Register SoC GPIO devices with absolute GPIO pin base.
* pin numbers. We don't have Device Tree there and we can't really use * On MIPS, we don't have Device Tree and we can't use relative (per chip)
* relative (per chip) numbers. * GPIO numbers.
* So let's use predictable base for BCM47XX and "random" for all other. * On some ARM devices, user space may want to access some system GPIO
* pins directly, which is easier to do with a predictable GPIO base.
*/ */
#if IS_BUILTIN(CONFIG_BCM47XX) if (IS_BUILTIN(CONFIG_BCM47XX) ||
cc->core->bus->hosttype == BCMA_HOSTTYPE_SOC)
chip->base = bus->num * BCMA_GPIO_MAX_PINS; chip->base = bus->num * BCMA_GPIO_MAX_PINS;
#else else
chip->base = -1; chip->base = -1;
#endif
err = bcma_gpio_irq_domain_init(cc); err = bcma_gpio_irq_domain_init(cc);
if (err) if (err)