Commit 2d57b712 authored by Felix Fietkau's avatar Felix Fietkau Committed by Kalle Valo

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: default avatarFelix Fietkau <nbd@openwrt.org>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent c4365534
...@@ -235,16 +235,17 @@ int bcma_gpio_init(struct bcma_drv_cc *cc) ...@@ -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) ||
chip->base = bus->num * BCMA_GPIO_MAX_PINS; cc->core->bus->hosttype == BCMA_HOSTTYPE_SOC)
#else chip->base = bus->num * BCMA_GPIO_MAX_PINS;
chip->base = -1; else
#endif chip->base = -1;
err = bcma_gpio_irq_domain_init(cc); err = bcma_gpio_irq_domain_init(cc);
if (err) if (err)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment