aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/sunxi/patches-3.14/137-1-pinctrl-create-irq-pin-mapping.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/sunxi/patches-3.14/137-1-pinctrl-create-irq-pin-mapping.patch')
-rw-r--r--target/linux/sunxi/patches-3.14/137-1-pinctrl-create-irq-pin-mapping.patch41
1 files changed, 41 insertions, 0 deletions
diff --git a/target/linux/sunxi/patches-3.14/137-1-pinctrl-create-irq-pin-mapping.patch b/target/linux/sunxi/patches-3.14/137-1-pinctrl-create-irq-pin-mapping.patch
new file mode 100644
index 0000000000..cd209cdb59
--- /dev/null
+++ b/target/linux/sunxi/patches-3.14/137-1-pinctrl-create-irq-pin-mapping.patch
@@ -0,0 +1,41 @@
+From 4c228d02d1339a286e259893062ea445be82b573 Mon Sep 17 00:00:00 2001
+From: Chen-Yu Tsai <wens@csie.org>
+Date: Tue, 7 Jan 2014 18:56:29 +0800
+Subject: [PATCH] pinctrl: sunxi: create irq/pin mapping during init
+
+The irq/pin mapping is used to lookup the pin to mux to the irq
+function when the irq is enabled. It is created when gpio_to_irq
+is called. Creating the mapping during init allows us to map the
+interrupts directly from the device tree.
+
+Signed-off-by: Chen-Yu Tsai <wens@csie.org>
+---
+ drivers/pinctrl/pinctrl-sunxi.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/pinctrl/pinctrl-sunxi.c b/drivers/pinctrl/pinctrl-sunxi.c
+index d16da53..067e7e10 100644
+--- a/drivers/pinctrl/pinctrl-sunxi.c
++++ b/drivers/pinctrl/pinctrl-sunxi.c
+@@ -531,8 +531,6 @@ static int sunxi_pinctrl_gpio_to_irq(struct gpio_chip *chip, unsigned offset)
+ if (!desc)
+ return -EINVAL;
+
+- pctl->irq_array[desc->irqnum] = offset;
+-
+ dev_dbg(chip->dev, "%s: request IRQ for GPIO %d, return %d\n",
+ chip->label, offset + chip->base, desc->irqnum);
+
+@@ -759,6 +757,9 @@ static int sunxi_pinctrl_build_state(struct platform_device *pdev)
+ struct sunxi_desc_function *func = pin->functions;
+
+ while (func->name) {
++ /* Create interrupt mapping while we're at it */
++ if (!strcmp(func->name, "irq"))
++ pctl->irq_array[func->irqnum] = pin->pin.number;
+ sunxi_pinctrl_add_function(pctl, func->name);
+ func++;
+ }
+--
+2.0.3
+