pinctrl: sunxi: Fix A33 external interrupts not working
authorHans de Goede <hdegoede@redhat.com>
Sat, 12 Mar 2016 18:44:57 +0000 (19:44 +0100)
committerLinus Walleij <linus.walleij@linaro.org>
Wed, 30 Mar 2016 08:57:52 +0000 (10:57 +0200)
commit5e7515ba78fff2f5407eaa2f97c1d5c07801ac3d
tree4782fca73c49328bf1de288206ef4cc4432fd2ec
parente9adb336d0bf391be23e820975ca5cd12c31d781
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>
drivers/pinctrl/sunxi/pinctrl-sun8i-a33.c
drivers/pinctrl/sunxi/pinctrl-sunxi.c
drivers/pinctrl/sunxi/pinctrl-sunxi.h