aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--target/linux/brcm63xx/dts/bcm6318.dtsi4
-rw-r--r--target/linux/brcm63xx/dts/bcm63268.dtsi4
-rw-r--r--target/linux/brcm63xx/dts/bcm6328.dtsi5
-rw-r--r--target/linux/brcm63xx/dts/bcm6348.dtsi4
-rw-r--r--target/linux/brcm63xx/dts/bcm6358.dtsi9
-rw-r--r--target/linux/brcm63xx/dts/bcm6362.dtsi5
-rw-r--r--target/linux/brcm63xx/dts/bcm6368.dtsi9
-rw-r--r--target/linux/brcm63xx/patches-4.4/374-gpio-add-a-simple-GPIO-driver-for-bcm63xx.patch14
8 files changed, 53 insertions, 1 deletions
diff --git a/target/linux/brcm63xx/dts/bcm6318.dtsi b/target/linux/brcm63xx/dts/bcm6318.dtsi
index 776698068d..0371617978 100644
--- a/target/linux/brcm63xx/dts/bcm6318.dtsi
+++ b/target/linux/brcm63xx/dts/bcm6318.dtsi
@@ -65,6 +65,10 @@
#gpio-cells = <2>;
ngpios = <18>;
+
+ interrupt-parent = <&ext_intc>;
+ interrupts = <0 0>, <1 0>;
+ interrupt-names = "gpio1", "gpio2";
};
gpio0: gpio-controller@10000084 {
diff --git a/target/linux/brcm63xx/dts/bcm63268.dtsi b/target/linux/brcm63xx/dts/bcm63268.dtsi
index 47894f8b42..5a0a909563 100644
--- a/target/linux/brcm63xx/dts/bcm63268.dtsi
+++ b/target/linux/brcm63xx/dts/bcm63268.dtsi
@@ -72,6 +72,10 @@
#gpio-cells = <2>;
ngpios = <20>;
+
+ interrupt-parent = <&periph_intc>;
+ interrupts = <0 0>, <1 0>, <2 0>, <3 0>;
+ interrupt-names = "gpio0", "gpio1", "gpio2", "gpio3";
};
gpio0: gpio-controller@100000c4 {
diff --git a/target/linux/brcm63xx/dts/bcm6328.dtsi b/target/linux/brcm63xx/dts/bcm6328.dtsi
index b49958a7b6..5eec6dec3a 100644
--- a/target/linux/brcm63xx/dts/bcm6328.dtsi
+++ b/target/linux/brcm63xx/dts/bcm6328.dtsi
@@ -62,6 +62,11 @@
gpio-controller;
#gpio-cells = <2>;
+
+ interrupt-parent = <&ext_intc>;
+ interrupts = <3 0>, <2 0>, <0 0>, <1 0>;
+ interrupt-names = "gpio12", "gpio15",
+ "gpio23", "gpio24";
};
};
};
diff --git a/target/linux/brcm63xx/dts/bcm6348.dtsi b/target/linux/brcm63xx/dts/bcm6348.dtsi
index 7edda30845..d1219c031f 100644
--- a/target/linux/brcm63xx/dts/bcm6348.dtsi
+++ b/target/linux/brcm63xx/dts/bcm6348.dtsi
@@ -78,6 +78,10 @@
#gpio-cells = <2>;
ngpios = <5>;
+
+ interrupt-parent = <&ext_intc>;
+ interrupts = <0 0>, <1 0>, <2 0>, <3 0>;
+ interrupt-names = "gpio0", "gpio1", "gpio2", "gpio3";
};
gpio0: gpio-controller@fffe0404 {
diff --git a/target/linux/brcm63xx/dts/bcm6358.dtsi b/target/linux/brcm63xx/dts/bcm6358.dtsi
index fa0b5b8a6e..9d95849b3a 100644
--- a/target/linux/brcm63xx/dts/bcm6358.dtsi
+++ b/target/linux/brcm63xx/dts/bcm6358.dtsi
@@ -94,6 +94,15 @@
#gpio-cells = <2>;
ngpios = <8>;
+
+ interrupts-extended = <&ext_intc1 0 0>,
+ <&ext_intc1 1 0>,
+ <&ext_intc0 0 0>,
+ <&ext_intc0 1 0>,
+ <&ext_intc0 2 0>,
+ <&ext_intc0 3 0>;
+ interrupt-names = "gpio0", "gpio1", "gpio2", "gpio3",
+ "gpio4", "gpio5";
};
gpio0: gpio-controller@fffe0084 {
diff --git a/target/linux/brcm63xx/dts/bcm6362.dtsi b/target/linux/brcm63xx/dts/bcm6362.dtsi
index 40f6b9ec29..a6a5c1f1d0 100644
--- a/target/linux/brcm63xx/dts/bcm6362.dtsi
+++ b/target/linux/brcm63xx/dts/bcm6362.dtsi
@@ -80,6 +80,11 @@
gpio-controller;
#gpio-cells = <2>;
+
+ interrupt-parent = <&ext_intc>;
+ interrupts = <0 0>, <1 0>, <2 0>, <3 0>;
+ interrupt-names = "gpio24", "gpio25",
+ "gpio26", "gpio27";
};
};
};
diff --git a/target/linux/brcm63xx/dts/bcm6368.dtsi b/target/linux/brcm63xx/dts/bcm6368.dtsi
index 52bcec4466..59ef41af47 100644
--- a/target/linux/brcm63xx/dts/bcm6368.dtsi
+++ b/target/linux/brcm63xx/dts/bcm6368.dtsi
@@ -84,6 +84,15 @@
#gpio-cells = <2>;
ngpios = <6>;
+
+ interrupts-extended = <&ext_intc1 0 0>,
+ <&ext_intc1 1 0>,
+ <&ext_intc0 0 0>,
+ <&ext_intc0 1 0>,
+ <&ext_intc0 2 0>,
+ <&ext_intc0 3 0>;
+ interrupt-names = "gpio0", "gpio1", "gpio2", "gpio3",
+ "gpio4", "gpio5";
};
gpio0: gpio-controller@10000084 {
diff --git a/target/linux/brcm63xx/patches-4.4/374-gpio-add-a-simple-GPIO-driver-for-bcm63xx.patch b/target/linux/brcm63xx/patches-4.4/374-gpio-add-a-simple-GPIO-driver-for-bcm63xx.patch
index 28930d0f9f..cd613f5e7b 100644
--- a/target/linux/brcm63xx/patches-4.4/374-gpio-add-a-simple-GPIO-driver-for-bcm63xx.patch
+++ b/target/linux/brcm63xx/patches-4.4/374-gpio-add-a-simple-GPIO-driver-for-bcm63xx.patch
@@ -40,7 +40,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
obj-$(CONFIG_GPIO_CLPS711X) += gpio-clps711x.o
--- /dev/null
+++ b/drivers/gpio/gpio-bcm63xx.c
-@@ -0,0 +1,122 @@
+@@ -0,0 +1,134 @@
+/*
+ * Driver for BCM63XX memory-mapped GPIO controllers, based on
+ * Generic driver for memory-mapped GPIO controllers.
@@ -73,8 +73,17 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
+#include <linux/mod_devicetable.h>
+#include <linux/basic_mmio_gpio.h>
+#include <linux/of.h>
++#include <linux/of_irq.h>
+#include <linux/of_gpio.h>
+
++static int bcm63xx_gpio_to_irq(struct gpio_chip *chip, unsigned gpio)
++{
++ char irq_name[7]; /* "gpioXX" */
++
++ sprintf(irq_name, "gpio%d", gpio);
++ return of_irq_get_byname(chip->of_node, irq_name);
++}
++
+static int bcm63xx_gpio_probe(struct platform_device *pdev)
+{
+ struct device *dev = &pdev->dev;
@@ -126,6 +135,9 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
+ if (!of_property_read_u32(dev->of_node, "ngpios", &ngpios))
+ bgc->gc.ngpio = ngpios;
+
++ if (of_get_property(dev->of_node, "interrupt-names", NULL))
++ bgc->gc.to_irq = bcm63xx_gpio_to_irq;
++
+ } else if (pdata) {
+ bgc->gc.base = pdata->base;
+ if (pdata->ngpio > 0)