summaryrefslogtreecommitdiff
path: root/drivers/pinctrl/sunxi/pinctrl-sun8i-a33.c
diff options
context:
space:
mode:
authorHans de Goede <hdegoede@redhat.com>2016-03-12 21:44:57 +0300
committerLinus Walleij <linus.walleij@linaro.org>2016-03-30 11:57:52 +0300
commit5e7515ba78fff2f5407eaa2f97c1d5c07801ac3d (patch)
tree4782fca73c49328bf1de288206ef4cc4432fd2ec /drivers/pinctrl/sunxi/pinctrl-sun8i-a33.c
parente9adb336d0bf391be23e820975ca5cd12c31d781 (diff)
downloadlinux-5e7515ba78fff2f5407eaa2f97c1d5c07801ac3d.tar.xz
pinctrl: sunxi: Fix A33 external interrupts not working
pinctrl-sun8i-a33.c (and the dts) declare only 2 interrupt banks, where as the closely related a23 has 3 banks. This matches with the datasheet for the A33 where only interrupt banks B and G are specified where as the A23 has banks A, B and G. However the A33 being the A23 derative it is means that the interrupt configure/status io-addresses for the 2 banks it has are not changed from the A23, iow they have the same address as if bank A was still present. Where as the sunxi pinctrl currently tries to use the A23 bank A addresses for bank B, since the pinctrl code does not know about the removed bank A. Add a irq_bank_base parameter and use this where appropriate to take the missing bank A into account. This fixes external interrupts not working on the A33 (tested with an i2c touchscreen controller which uses an external interrupt). Cc: stable@vger.kernel.org Signed-off-by: Hans de Goede <hdegoede@redhat.com> Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'drivers/pinctrl/sunxi/pinctrl-sun8i-a33.c')
-rw-r--r--drivers/pinctrl/sunxi/pinctrl-sun8i-a33.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/pinctrl/sunxi/pinctrl-sun8i-a33.c b/drivers/pinctrl/sunxi/pinctrl-sun8i-a33.c
index 00265f0435a7..8b381d69df86 100644
--- a/drivers/pinctrl/sunxi/pinctrl-sun8i-a33.c
+++ b/drivers/pinctrl/sunxi/pinctrl-sun8i-a33.c
@@ -485,6 +485,7 @@ static const struct sunxi_pinctrl_desc sun8i_a33_pinctrl_data = {
.pins = sun8i_a33_pins,
.npins = ARRAY_SIZE(sun8i_a33_pins),
.irq_banks = 2,
+ .irq_bank_base = 1,
};
static int sun8i_a33_pinctrl_probe(struct platform_device *pdev)