summaryrefslogtreecommitdiff
path: root/drivers/pinctrl/sh-pfc/pfc-sh73a0.c
diff options
context:
space:
mode:
authorGuennadi Liakhovetski <g.liakhovetski@gmx.de>2013-02-12 16:50:02 +0100
committerLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>2013-03-15 13:33:39 +0100
commitb58e5fac96e4f24fc9d5bce8692506ada3e244ca (patch)
treec009ed8714e01d015796e4377e7efdbbd6d83597 /drivers/pinctrl/sh-pfc/pfc-sh73a0.c
parent63d573835f835aab4c44d0e0342cf5976fb14b35 (diff)
ARM: shmobile: sh73a0: Support sparse GPIO numbers
The SH73A0 SoC has sparse GPIO numbers. Declare the pin numbers ranges in the PFC SoC data and use the pin numbers in the GPIO API. Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de> Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> Acked-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'drivers/pinctrl/sh-pfc/pfc-sh73a0.c')
-rw-r--r--drivers/pinctrl/sh-pfc/pfc-sh73a0.c75
1 files changed, 42 insertions, 33 deletions
diff --git a/drivers/pinctrl/sh-pfc/pfc-sh73a0.c b/drivers/pinctrl/sh-pfc/pfc-sh73a0.c
index 639b5e21d9bc..9cef0d8b8ccd 100644
--- a/drivers/pinctrl/sh-pfc/pfc-sh73a0.c
+++ b/drivers/pinctrl/sh-pfc/pfc-sh73a0.c
@@ -1543,7 +1543,14 @@ static struct sh_pfc_pin pinmux_pins[] = {
GPIO_PORT_ALL(),
};
-#define PINMUX_FN_BASE ARRAY_SIZE(pinmux_pins)
+static struct pinmux_range pinmux_ranges[] = {
+ {.begin = 0, .end = 118,},
+ {.begin = 128, .end = 164,},
+ {.begin = 192, .end = 282,},
+ {.begin = 288, .end = 309,},
+};
+
+#define PINMUX_FN_BASE GPIO_FN_VBUS_0
static struct pinmux_func pinmux_func_gpios[] = {
/* Table 25-1 (Functions 0-7) */
@@ -2738,38 +2745,38 @@ static struct pinmux_data_reg pinmux_data_regs[] = {
#define EXT_IRQ16H(n) intcs_evt2irq(0x3200 + ((n - 16) << 5))
static struct pinmux_irq pinmux_irqs[] = {
- PINMUX_IRQ(EXT_IRQ16H(19), GPIO_PORT9),
- PINMUX_IRQ(EXT_IRQ16L(1), GPIO_PORT10),
- PINMUX_IRQ(EXT_IRQ16L(0), GPIO_PORT11),
- PINMUX_IRQ(EXT_IRQ16H(18), GPIO_PORT13),
- PINMUX_IRQ(EXT_IRQ16H(20), GPIO_PORT14),
- PINMUX_IRQ(EXT_IRQ16H(21), GPIO_PORT15),
- PINMUX_IRQ(EXT_IRQ16H(31), GPIO_PORT26),
- PINMUX_IRQ(EXT_IRQ16H(30), GPIO_PORT27),
- PINMUX_IRQ(EXT_IRQ16H(29), GPIO_PORT28),
- PINMUX_IRQ(EXT_IRQ16H(22), GPIO_PORT40),
- PINMUX_IRQ(EXT_IRQ16H(23), GPIO_PORT53),
- PINMUX_IRQ(EXT_IRQ16L(10), GPIO_PORT54),
- PINMUX_IRQ(EXT_IRQ16L(9), GPIO_PORT56),
- PINMUX_IRQ(EXT_IRQ16H(26), GPIO_PORT115),
- PINMUX_IRQ(EXT_IRQ16H(27), GPIO_PORT116),
- PINMUX_IRQ(EXT_IRQ16H(28), GPIO_PORT117),
- PINMUX_IRQ(EXT_IRQ16H(24), GPIO_PORT118),
- PINMUX_IRQ(EXT_IRQ16L(6), GPIO_PORT147),
- PINMUX_IRQ(EXT_IRQ16L(2), GPIO_PORT149),
- PINMUX_IRQ(EXT_IRQ16L(7), GPIO_PORT150),
- PINMUX_IRQ(EXT_IRQ16L(12), GPIO_PORT156),
- PINMUX_IRQ(EXT_IRQ16L(4), GPIO_PORT159),
- PINMUX_IRQ(EXT_IRQ16H(25), GPIO_PORT164),
- PINMUX_IRQ(EXT_IRQ16L(8), GPIO_PORT223),
- PINMUX_IRQ(EXT_IRQ16L(3), GPIO_PORT224),
- PINMUX_IRQ(EXT_IRQ16L(5), GPIO_PORT227),
- PINMUX_IRQ(EXT_IRQ16H(17), GPIO_PORT234),
- PINMUX_IRQ(EXT_IRQ16L(11), GPIO_PORT238),
- PINMUX_IRQ(EXT_IRQ16L(13), GPIO_PORT239),
- PINMUX_IRQ(EXT_IRQ16H(16), GPIO_PORT249),
- PINMUX_IRQ(EXT_IRQ16L(14), GPIO_PORT251),
- PINMUX_IRQ(EXT_IRQ16L(9), GPIO_PORT308),
+ PINMUX_IRQ(EXT_IRQ16H(19), 9),
+ PINMUX_IRQ(EXT_IRQ16L(1), 10),
+ PINMUX_IRQ(EXT_IRQ16L(0), 11),
+ PINMUX_IRQ(EXT_IRQ16H(18), 13),
+ PINMUX_IRQ(EXT_IRQ16H(20), 14),
+ PINMUX_IRQ(EXT_IRQ16H(21), 15),
+ PINMUX_IRQ(EXT_IRQ16H(31), 26),
+ PINMUX_IRQ(EXT_IRQ16H(30), 27),
+ PINMUX_IRQ(EXT_IRQ16H(29), 28),
+ PINMUX_IRQ(EXT_IRQ16H(22), 40),
+ PINMUX_IRQ(EXT_IRQ16H(23), 53),
+ PINMUX_IRQ(EXT_IRQ16L(10), 54),
+ PINMUX_IRQ(EXT_IRQ16L(9), 56),
+ PINMUX_IRQ(EXT_IRQ16H(26), 115),
+ PINMUX_IRQ(EXT_IRQ16H(27), 116),
+ PINMUX_IRQ(EXT_IRQ16H(28), 117),
+ PINMUX_IRQ(EXT_IRQ16H(24), 118),
+ PINMUX_IRQ(EXT_IRQ16L(6), 147),
+ PINMUX_IRQ(EXT_IRQ16L(2), 149),
+ PINMUX_IRQ(EXT_IRQ16L(7), 150),
+ PINMUX_IRQ(EXT_IRQ16L(12), 156),
+ PINMUX_IRQ(EXT_IRQ16L(4), 159),
+ PINMUX_IRQ(EXT_IRQ16H(25), 164),
+ PINMUX_IRQ(EXT_IRQ16L(8), 223),
+ PINMUX_IRQ(EXT_IRQ16L(3), 224),
+ PINMUX_IRQ(EXT_IRQ16L(5), 227),
+ PINMUX_IRQ(EXT_IRQ16H(17), 234),
+ PINMUX_IRQ(EXT_IRQ16L(11), 238),
+ PINMUX_IRQ(EXT_IRQ16L(13), 239),
+ PINMUX_IRQ(EXT_IRQ16H(16), 249),
+ PINMUX_IRQ(EXT_IRQ16L(14), 251),
+ PINMUX_IRQ(EXT_IRQ16L(9), 308),
};
struct sh_pfc_soc_info sh73a0_pinmux_info = {
@@ -2782,6 +2789,8 @@ struct sh_pfc_soc_info sh73a0_pinmux_info = {
.pins = pinmux_pins,
.nr_pins = ARRAY_SIZE(pinmux_pins),
+ .ranges = pinmux_ranges,
+ .nr_ranges = ARRAY_SIZE(pinmux_ranges),
.func_gpios = pinmux_func_gpios,
.nr_func_gpios = ARRAY_SIZE(pinmux_func_gpios),