42 lines
1.4 KiB
Diff
42 lines
1.4 KiB
Diff
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
|
|
|