[OpenWrt-Devel] [PATCH] ralink: Add support for GPIO as interrupt-controller

Rosen Penev rosenp at gmail.com
Sun Nov 4 23:27:51 EST 2018


On Sun, Nov 4, 2018 at 6:49 PM Daniel Santos <daniel.santos at pobox.com> wrote:
>
> The gpio-ralink driver has everything it needs to be used as an
> interrupt controller except for device tree support.  This simple patch
> adds that support by configuring the irq domain to use two cells and
> adding the appropriate documentation to the devicetree bindings.
Note that there is a mainline driver that does this already:
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/gpio/gpio-mt7621.c?h=v4.19.1

I've backported it in my tree as well:
https://github.com/neheb/source/commit/aa3a57cdcf91a4483cfd511f8a34fb9a595f4af2

I have not submitted as I don't have hardware to test that uses GPIO
beyond a simple push button.

I think ramips maintainer currently wants to wait until 4.19 to make
such changes.
>
> Signed-off-by: Daniel Santos <daniel.santos at pobox.com>
> ---
>  ...-Add-support-for-GPIO-as-interrupt-contro.patch | 51 ++++++++++++++++++++++
>  1 file changed, 51 insertions(+)
>  create mode 100644 target/linux/ramips/patches-4.14/0029-gpio-ralink-Add-support-for-GPIO-as-interrupt-contro.patch
>
> diff --git a/target/linux/ramips/patches-4.14/0029-gpio-ralink-Add-support-for-GPIO-as-interrupt-contro.patch b/target/linux/ramips/patches-4.14/0029-gpio-ralink-Add-support-for-GPIO-as-interrupt-contro.patch
> new file mode 100644
> index 0000000000..d93f39c746
> --- /dev/null
> +++ b/target/linux/ramips/patches-4.14/0029-gpio-ralink-Add-support-for-GPIO-as-interrupt-contro.patch
> @@ -0,0 +1,51 @@
> +From 57fa7f2f4ef6f78ce1d30509c0d111aa3791b524 Mon Sep 17 00:00:00 2001
> +From: Daniel Santos <daniel.santos at pobox.com>
> +Date: Sun, 4 Nov 2018 20:24:32 -0600
> +Subject: gpio-ralink: Add support for GPIO as interrupt-controller
> +
> +Signed-off-by: Daniel Santos <daniel.santos at pobox.com>
> +---
> + Documentation/devicetree/bindings/gpio/gpio-ralink.txt | 6 ++++++
> + drivers/gpio/gpio-ralink.c                             | 2 +-
> + 2 files changed, 7 insertions(+), 1 deletion(-)
> +
> +diff --git a/Documentation/devicetree/bindings/gpio/gpio-ralink.txt b/Documentation/devicetree/bindings/gpio/gpio-ralink.txt
> +index 5cd17f225fe3..2775449614d4 100644
> +--- a/Documentation/devicetree/bindings/gpio/gpio-ralink.txt
> ++++ b/Documentation/devicetree/bindings/gpio/gpio-ralink.txt
> +@@ -17,6 +17,9 @@ Required properties:
> +
> + Optional properties:
> + - ralink,gpio-base : Specify the GPIO chips base number
> ++- interrupt-controller : marks this as an interrupt controller
> ++- #interrupt-cells : a standard two-cell interrupt flag, see
> ++  interrupt-controller/interrupts.txt
> +
> + Example:
> +
> +@@ -28,6 +31,9 @@ Example:
> +
> +               reg = <0x600 0x34>;
> +
> ++              interrupt-controller;
> ++              #interrupt-cells = <2>;
> ++
> +               interrupt-parent = <&intc>;
> +               interrupts = <6>;
> +
> +diff --git a/drivers/gpio/gpio-ralink.c b/drivers/gpio/gpio-ralink.c
> +index 27910e384013..b6e30083d012 100644
> +--- a/drivers/gpio/gpio-ralink.c
> ++++ b/drivers/gpio/gpio-ralink.c
> +@@ -220,7 +220,7 @@ static int gpio_map(struct irq_domain *d, unsigned int irq, irq_hw_number_t hw)
> + }
> +
> + static const struct irq_domain_ops irq_domain_ops = {
> +-      .xlate = irq_domain_xlate_onecell,
> ++      .xlate = irq_domain_xlate_twocell,
> +       .map = gpio_map,
> + };
> +
> +--
> +2.16.4
> +
> --
> 2.16.4
>
>
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list