summaryrefslogtreecommitdiff
path: root/sys/arch
diff options
context:
space:
mode:
authorMark Kettenis <kettenis@cvs.openbsd.org>2016-08-12 16:02:32 +0000
committerMark Kettenis <kettenis@cvs.openbsd.org>2016-08-12 16:02:32 +0000
commit15361a396698f3d6ee40e8453c23a5c5d86d3c81 (patch)
tree1ac5a762484e51397ccba08ebf347aa907f13ba6 /sys/arch
parent6d02d0bc05f9256951e95b330b0fd5706aaffa92 (diff)
Hook up sxipio(4) to the generic pinctrl code. The device binding is pretty
retarded, requiring tables to map text strings to the apropriate numbers. These tables were generated automatically from data extracted from the Linux kernel and are kept in a separate file. This should make it easy to add support for more SoCs from the same family. ok deraadt@, millert@
Diffstat (limited to 'sys/arch')
-rw-r--r--sys/arch/armv7/sunxi/sxipio.c127
-rw-r--r--sys/arch/armv7/sunxi/sxipio_pins.h3514
-rw-r--r--sys/arch/armv7/sunxi/sxipiovar.h29
3 files changed, 3666 insertions, 4 deletions
diff --git a/sys/arch/armv7/sunxi/sxipio.c b/sys/arch/armv7/sunxi/sxipio.c
index 9a493435a92..41663f5f0f5 100644
--- a/sys/arch/armv7/sunxi/sxipio.c
+++ b/sys/arch/armv7/sunxi/sxipio.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sxipio.c,v 1.7 2015/05/20 03:49:23 jsg Exp $ */
+/* $OpenBSD: sxipio.c,v 1.8 2016/08/12 16:02:31 kettenis Exp $ */
/*
* Copyright (c) 2010 Miodrag Vallat.
* Copyright (c) 2013 Artturi Alm
@@ -21,11 +21,14 @@
#include <sys/device.h>
#include <sys/gpio.h>
#include <sys/evcount.h>
+#include <sys/malloc.h>
#include <machine/bus.h>
#include <machine/intr.h>
#include <dev/gpio/gpiovar.h>
+#include <dev/ofw/openfirm.h>
+#include <dev/ofw/ofw_pinctrl.h>
#include <armv7/armv7/armv7var.h>
#include <armv7/sunxi/sunxireg.h>
@@ -48,7 +51,6 @@
SXIPIO_PH_NPIN + SXIPIO_PI_NPIN)
#define SXIPIO_PS_NPIN 84 /* for DRAM controller */
-
struct intrhand {
int (*ih_func)(void *); /* handler */
void *ih_arg; /* arg for handler */
@@ -69,6 +71,9 @@ struct sxipio_softc {
int sc_min_il;
int sc_irq;
+ struct sxipio_pin *sc_pins;
+ int sc_npins;
+
struct gpio_chipset_tag sc_gpio_tag[SXIPIO_NPORT];
gpio_pin_t sc_gpio_pins[SXIPIO_NPORT][32];
@@ -87,6 +92,7 @@ struct sxipio_softc {
void sxipio_attach(struct device *, struct device *, void *);
void sxipio_attach_gpio(struct device *);
+int sxipio_pinctrl(uint32_t, void *);
struct cfattach sxipio_ca = {
sizeof (struct sxipio_softc), NULL, sxipio_attach
@@ -100,11 +106,39 @@ struct sxipio_softc *sxipio_sc = NULL;
bus_space_tag_t sxipio_iot;
bus_space_handle_t sxipio_ioh;
+#include "sxipio_pins.h"
+
+struct sxipio_pins {
+ const char *compat;
+ struct sxipio_pin *pins;
+ int npins;
+};
+
+struct sxipio_pins sxipio_pins[] = {
+ {
+ "allwinner,sun4i-a10-pinctrl",
+ sun4i_a10_pins, nitems(sun4i_a10_pins)
+ },
+ {
+ "allwinner,sun5i-a13-pinctrl",
+ sun5i_a13_pins, nitems(sun5i_a13_pins)
+ },
+ {
+ "allwinner,sun5i-a10s-pinctrl",
+ sun5i_a10s_pins, nitems(sun5i_a10s_pins)
+ },
+ {
+ "allwinner,sun7i-a20-pinctrl",
+ sun7i_a20_pins, nitems(sun7i_a20_pins)
+ }
+};
+
void
sxipio_attach(struct device *parent, struct device *self, void *args)
{
struct sxipio_softc *sc = (struct sxipio_softc *)self;
struct armv7_attach_args *aa = args;
+ int node, i;
/* XXX check unit, bail if != 0 */
@@ -118,9 +152,23 @@ sxipio_attach(struct device *parent, struct device *self, void *args)
sc->sc_irq = aa->aa_dev->irq[0];
+ node = OF_finddevice("/soc@01c00000/pinctrl@01c20800");
+ if (node != -1) {
+ for (i = 0; i < nitems(sxipio_pins); i++) {
+ if (OF_is_compatible(node, sxipio_pins[i].compat)) {
+ sc->sc_pins = sxipio_pins[i].pins;
+ sc->sc_npins = sxipio_pins[i].npins;
+ break;
+ }
+ }
+
+ if (sc->sc_pins)
+ pinctrl_register(node, sxipio_pinctrl, sc);
+ }
+
config_defer(self, sxipio_attach_gpio);
- printf("\n");
+ printf(": %d pins\n", sc->sc_npins);
}
/*
@@ -353,3 +401,76 @@ sxipio_togglepin(int pin)
return data & mask ? GPIO_PIN_HIGH : GPIO_PIN_LOW;
}
+
+int
+sxipio_pinctrl(uint32_t phandle, void *cookie)
+{
+ struct sxipio_softc *sc = cookie;
+ char func[32];
+ char *names, *name;
+ int port, pin, off;
+ int mux, drive, pull;
+ int node;
+ int len;
+ int i, j;
+ int s;
+
+ node = OF_getnodebyphandle(phandle);
+ if (node == 0)
+ return -1;
+
+ len = OF_getprop(node, "allwinner,function", func, sizeof(func));
+ if (len <= 0 || len >= sizeof(func))
+ return -1;
+
+ len = OF_getproplen(node, "allwinner,pins");
+ if (len <= 0)
+ return -1;
+
+ names = malloc(len, M_TEMP, M_WAITOK);
+ OF_getprop(node, "allwinner,pins", names, len);
+
+ drive = OF_getpropint(node, "allwinner,drive", 0);
+ pull = OF_getpropint(node, "allwinner,pull", 0);
+
+ name = names;
+ while (len > 0) {
+ /* Lookup the pin. */
+ for (i = 0; i < sc->sc_npins; i++) {
+ if (strcmp(name, sc->sc_pins[i].name) == 0)
+ break;
+ }
+ if (i >= sc->sc_npins)
+ goto err;
+
+ /* Lookup the function of the pin. */
+ for (j = 0; j < nitems(sc->sc_pins[i].funcs); j++) {
+ if (strcmp(func, sc->sc_pins[i].funcs[j].name) == 0)
+ break;
+ }
+ if (j > nitems(sc->sc_pins[i].funcs))
+ goto err;
+
+ port = sc->sc_pins[i].port;
+ pin = sc->sc_pins[i].pin;
+ mux = sc->sc_pins[i].funcs[j].mux;
+
+ s = splhigh();
+ off = (pin & 0x7) << 2;
+ SXICMS4(sc, SXIPIO_CFG(port, pin), 0x7 << off, mux << off);
+ off = (pin & 0xf) << 1;
+ SXICMS4(sc, SXIPIO_DRV(port, pin), 0x3 << off, drive << off);
+ SXICMS4(sc, SXIPIO_PUL(port, pin), 0x3 << off, pull << off);
+ splx(s);
+
+ len -= strlen(name) + 1;
+ name += strlen(name) + 1;
+ }
+
+ free(names, M_TEMP, len);
+ return 0;
+
+err:
+ free(names, M_TEMP, len);
+ return -1;
+}
diff --git a/sys/arch/armv7/sunxi/sxipio_pins.h b/sys/arch/armv7/sunxi/sxipio_pins.h
new file mode 100644
index 00000000000..9eef88c8e7c
--- /dev/null
+++ b/sys/arch/armv7/sunxi/sxipio_pins.h
@@ -0,0 +1,3514 @@
+/* Public Domain */
+
+
+struct sxipio_pin sun4i_a10_pins[] = {
+ { SXIPIO_PIN(A, 0), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "spi1", 3 },
+ { "uart2", 4 },
+ } },
+ { SXIPIO_PIN(A, 1), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "spi1", 3 },
+ { "uart2", 4 },
+ } },
+ { SXIPIO_PIN(A, 2), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "spi1", 3 },
+ { "uart2", 4 },
+ } },
+ { SXIPIO_PIN(A, 3), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "spi1", 3 },
+ { "uart2", 4 },
+ } },
+ { SXIPIO_PIN(A, 4), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "spi1", 3 },
+ } },
+ { SXIPIO_PIN(A, 5), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "spi3", 3 },
+ } },
+ { SXIPIO_PIN(A, 6), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "spi3", 3 },
+ } },
+ { SXIPIO_PIN(A, 7), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "spi3", 3 },
+ } },
+ { SXIPIO_PIN(A, 8), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "spi3", 3 },
+ } },
+ { SXIPIO_PIN(A, 9), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "spi3", 3 },
+ } },
+ { SXIPIO_PIN(A, 10), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "uart1", 4 },
+ } },
+ { SXIPIO_PIN(A, 11), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "uart1", 4 },
+ } },
+ { SXIPIO_PIN(A, 12), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "uart6", 3 },
+ { "uart1", 4 },
+ } },
+ { SXIPIO_PIN(A, 13), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "uart6", 3 },
+ { "uart1", 4 },
+ } },
+ { SXIPIO_PIN(A, 14), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "uart7", 3 },
+ { "uart1", 4 },
+ } },
+ { SXIPIO_PIN(A, 15), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "uart7", 3 },
+ { "uart1", 4 },
+ } },
+ { SXIPIO_PIN(A, 16), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "can", 3 },
+ { "uart1", 4 },
+ } },
+ { SXIPIO_PIN(A, 17), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "can", 3 },
+ { "uart1", 4 },
+ } },
+ { SXIPIO_PIN(B, 0), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2c0", 2 },
+ } },
+ { SXIPIO_PIN(B, 1), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2c0", 2 },
+ } },
+ { SXIPIO_PIN(B, 2), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "pwm", 2 },
+ } },
+ { SXIPIO_PIN(B, 3), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ir0", 2 },
+ { "spdif", 4 },
+ } },
+ { SXIPIO_PIN(B, 4), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ir0", 2 },
+ } },
+ { SXIPIO_PIN(B, 5), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2s", 2 },
+ { "ac97", 3 },
+ } },
+ { SXIPIO_PIN(B, 6), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2s", 2 },
+ { "ac97", 3 },
+ } },
+ { SXIPIO_PIN(B, 7), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2s", 2 },
+ { "ac97", 3 },
+ } },
+ { SXIPIO_PIN(B, 8), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2s", 2 },
+ { "ac97", 3 },
+ } },
+ { SXIPIO_PIN(B, 9), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2s", 2 },
+ } },
+ { SXIPIO_PIN(B, 10), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2s", 2 },
+ } },
+ { SXIPIO_PIN(B, 11), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2s", 2 },
+ } },
+ { SXIPIO_PIN(B, 12), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2s", 2 },
+ { "ac97", 3 },
+ { "spdif", 4 },
+ } },
+ { SXIPIO_PIN(B, 13), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi2", 2 },
+ { "spdif", 4 },
+ } },
+ { SXIPIO_PIN(B, 14), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi2", 2 },
+ { "jtag", 3 },
+ } },
+ { SXIPIO_PIN(B, 15), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi2", 2 },
+ { "jtag", 3 },
+ } },
+ { SXIPIO_PIN(B, 16), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi2", 2 },
+ { "jtag", 3 },
+ } },
+ { SXIPIO_PIN(B, 17), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi2", 2 },
+ { "jtag", 3 },
+ } },
+ { SXIPIO_PIN(B, 18), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2c1", 2 },
+ } },
+ { SXIPIO_PIN(B, 19), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2c1", 2 },
+ } },
+ { SXIPIO_PIN(B, 20), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2c2", 2 },
+ } },
+ { SXIPIO_PIN(B, 21), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2c2", 2 },
+ } },
+ { SXIPIO_PIN(B, 22), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "uart0", 2 },
+ { "ir1", 3 },
+ } },
+ { SXIPIO_PIN(B, 23), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "uart0", 2 },
+ { "ir1", 3 },
+ } },
+ { SXIPIO_PIN(C, 0), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "spi0", 3 },
+ } },
+ { SXIPIO_PIN(C, 1), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "spi0", 3 },
+ } },
+ { SXIPIO_PIN(C, 2), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "spi0", 3 },
+ } },
+ { SXIPIO_PIN(C, 3), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ } },
+ { SXIPIO_PIN(C, 4), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ } },
+ { SXIPIO_PIN(C, 5), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ } },
+ { SXIPIO_PIN(C, 6), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "mmc2", 3 },
+ } },
+ { SXIPIO_PIN(C, 7), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "mmc2", 3 },
+ } },
+ { SXIPIO_PIN(C, 8), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "mmc2", 3 },
+ } },
+ { SXIPIO_PIN(C, 9), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "mmc2", 3 },
+ } },
+ { SXIPIO_PIN(C, 10), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "mmc2", 3 },
+ } },
+ { SXIPIO_PIN(C, 11), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "mmc2", 3 },
+ } },
+ { SXIPIO_PIN(C, 12), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ } },
+ { SXIPIO_PIN(C, 13), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ } },
+ { SXIPIO_PIN(C, 14), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ } },
+ { SXIPIO_PIN(C, 15), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ } },
+ { SXIPIO_PIN(C, 16), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ } },
+ { SXIPIO_PIN(C, 17), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ } },
+ { SXIPIO_PIN(C, 18), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ } },
+ { SXIPIO_PIN(C, 19), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "spi2", 3 },
+ } },
+ { SXIPIO_PIN(C, 20), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "spi2", 3 },
+ } },
+ { SXIPIO_PIN(C, 21), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "spi2", 3 },
+ } },
+ { SXIPIO_PIN(C, 22), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "spi2", 3 },
+ } },
+ { SXIPIO_PIN(C, 23), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi0", 3 },
+ } },
+ { SXIPIO_PIN(C, 24), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ } },
+ { SXIPIO_PIN(D, 0), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "lvds0", 3 },
+ } },
+ { SXIPIO_PIN(D, 1), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "lvds0", 3 },
+ } },
+ { SXIPIO_PIN(D, 2), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "lvds0", 3 },
+ } },
+ { SXIPIO_PIN(D, 3), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "lvds0", 3 },
+ } },
+ { SXIPIO_PIN(D, 4), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "lvds0", 3 },
+ } },
+ { SXIPIO_PIN(D, 5), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "lvds0", 3 },
+ } },
+ { SXIPIO_PIN(D, 6), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "lvds0", 3 },
+ } },
+ { SXIPIO_PIN(D, 7), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "lvds0", 3 },
+ } },
+ { SXIPIO_PIN(D, 8), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "lvds0", 3 },
+ } },
+ { SXIPIO_PIN(D, 9), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "lvds0", 3 },
+ } },
+ { SXIPIO_PIN(D, 10), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "lvds1", 3 },
+ } },
+ { SXIPIO_PIN(D, 11), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "lvds1", 3 },
+ } },
+ { SXIPIO_PIN(D, 12), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "lvds1", 3 },
+ } },
+ { SXIPIO_PIN(D, 13), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "lvds1", 3 },
+ } },
+ { SXIPIO_PIN(D, 14), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "lvds1", 3 },
+ } },
+ { SXIPIO_PIN(D, 15), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "lvds1", 3 },
+ } },
+ { SXIPIO_PIN(D, 16), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "lvds1", 3 },
+ } },
+ { SXIPIO_PIN(D, 17), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "lvds1", 3 },
+ } },
+ { SXIPIO_PIN(D, 18), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "lvds1", 3 },
+ } },
+ { SXIPIO_PIN(D, 19), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "lvds1", 3 },
+ } },
+ { SXIPIO_PIN(D, 20), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "csi1", 3 },
+ } },
+ { SXIPIO_PIN(D, 21), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "sim", 3 },
+ } },
+ { SXIPIO_PIN(D, 22), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "sim", 3 },
+ } },
+ { SXIPIO_PIN(D, 23), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "sim", 3 },
+ } },
+ { SXIPIO_PIN(D, 24), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "sim", 3 },
+ } },
+ { SXIPIO_PIN(D, 25), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "sim", 3 },
+ } },
+ { SXIPIO_PIN(D, 26), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "sim", 3 },
+ } },
+ { SXIPIO_PIN(D, 27), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "sim", 3 },
+ } },
+ { SXIPIO_PIN(E, 0), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts0", 2 },
+ { "csi0", 3 },
+ } },
+ { SXIPIO_PIN(E, 1), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts0", 2 },
+ { "csi0", 3 },
+ } },
+ { SXIPIO_PIN(E, 2), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts0", 2 },
+ { "csi0", 3 },
+ } },
+ { SXIPIO_PIN(E, 3), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts0", 2 },
+ { "csi0", 3 },
+ } },
+ { SXIPIO_PIN(E, 4), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts0", 2 },
+ { "csi0", 3 },
+ } },
+ { SXIPIO_PIN(E, 5), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts0", 2 },
+ { "csi0", 3 },
+ { "sim", 4 },
+ } },
+ { SXIPIO_PIN(E, 6), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts0", 2 },
+ { "csi0", 3 },
+ } },
+ { SXIPIO_PIN(E, 7), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts0", 2 },
+ { "csi0", 3 },
+ } },
+ { SXIPIO_PIN(E, 8), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts0", 2 },
+ { "csi0", 3 },
+ } },
+ { SXIPIO_PIN(E, 9), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts0", 2 },
+ { "csi0", 3 },
+ } },
+ { SXIPIO_PIN(E, 10), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts0", 2 },
+ { "csi0", 3 },
+ } },
+ { SXIPIO_PIN(E, 11), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts0", 2 },
+ { "csi0", 3 },
+ } },
+ { SXIPIO_PIN(F, 0), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc0", 2 },
+ { "jtag", 4 },
+ } },
+ { SXIPIO_PIN(F, 1), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc0", 2 },
+ { "jtag", 4 },
+ } },
+ { SXIPIO_PIN(F, 2), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc0", 2 },
+ { "uart0", 4 },
+ } },
+ { SXIPIO_PIN(F, 3), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc0", 2 },
+ { "jtag", 4 },
+ } },
+ { SXIPIO_PIN(F, 4), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc0", 2 },
+ { "uart0", 4 },
+ } },
+ { SXIPIO_PIN(F, 5), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc0", 2 },
+ { "jtag", 4 },
+ } },
+ { SXIPIO_PIN(G, 0), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts1", 2 },
+ { "csi1", 3 },
+ { "mmc1", 4 },
+ } },
+ { SXIPIO_PIN(G, 1), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts1", 2 },
+ { "csi1", 3 },
+ { "mmc1", 4 },
+ } },
+ { SXIPIO_PIN(G, 2), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts1", 2 },
+ { "csi1", 3 },
+ { "mmc1", 4 },
+ } },
+ { SXIPIO_PIN(G, 3), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts1", 2 },
+ { "csi1", 3 },
+ { "mmc1", 4 },
+ } },
+ { SXIPIO_PIN(G, 4), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts1", 2 },
+ { "csi1", 3 },
+ { "mmc1", 4 },
+ { "csi0", 5 },
+ } },
+ { SXIPIO_PIN(G, 5), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts1", 2 },
+ { "csi1", 3 },
+ { "mmc1", 4 },
+ { "csi0", 5 },
+ } },
+ { SXIPIO_PIN(G, 6), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts1", 2 },
+ { "csi1", 3 },
+ { "uart3", 4 },
+ { "csi0", 5 },
+ } },
+ { SXIPIO_PIN(G, 7), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts1", 2 },
+ { "csi1", 3 },
+ { "uart3", 4 },
+ { "csi0", 5 },
+ } },
+ { SXIPIO_PIN(G, 8), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts1", 2 },
+ { "csi1", 3 },
+ { "uart3", 4 },
+ { "csi0", 5 },
+ } },
+ { SXIPIO_PIN(G, 9), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts1", 2 },
+ { "csi1", 3 },
+ { "uart3", 4 },
+ { "csi0", 5 },
+ } },
+ { SXIPIO_PIN(G, 10), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts1", 2 },
+ { "csi1", 3 },
+ { "uart4", 4 },
+ { "csi0", 5 },
+ } },
+ { SXIPIO_PIN(G, 11), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts1", 2 },
+ { "csi1", 3 },
+ { "uart4", 4 },
+ { "csi0", 5 },
+ } },
+ { SXIPIO_PIN(H, 0), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "pata", 3 },
+ { "uart3", 4 },
+ { "irq", 6 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 1), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "pata", 3 },
+ { "uart3", 4 },
+ { "irq", 6 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 2), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "pata", 3 },
+ { "uart3", 4 },
+ { "irq", 6 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 3), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "pata", 3 },
+ { "uart3", 4 },
+ { "irq", 6 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 4), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "pata", 3 },
+ { "uart4", 4 },
+ { "irq", 6 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 5), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "pata", 3 },
+ { "uart4", 4 },
+ { "irq", 6 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 6), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "pata", 3 },
+ { "uart5", 4 },
+ { "ms", 5 },
+ { "irq", 6 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 7), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "pata", 3 },
+ { "uart5", 4 },
+ { "ms", 5 },
+ { "irq", 6 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 8), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "pata", 3 },
+ { "keypad", 4 },
+ { "ms", 5 },
+ { "irq", 6 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 9), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "pata", 3 },
+ { "keypad", 4 },
+ { "ms", 5 },
+ { "irq", 6 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 10), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "pata", 3 },
+ { "keypad", 4 },
+ { "ms", 5 },
+ { "irq", 6 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 11), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "pata", 3 },
+ { "keypad", 4 },
+ { "ms", 5 },
+ { "irq", 6 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 12), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "pata", 3 },
+ { "ps2", 4 },
+ { "irq", 6 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 13), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "pata", 3 },
+ { "ps2", 4 },
+ { "sim", 5 },
+ { "irq", 6 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 14), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "pata", 3 },
+ { "keypad", 4 },
+ { "sim", 5 },
+ { "irq", 6 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 15), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "pata", 3 },
+ { "keypad", 4 },
+ { "sim", 5 },
+ { "irq", 6 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 16), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "pata", 3 },
+ { "keypad", 4 },
+ { "irq", 6 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 17), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "pata", 3 },
+ { "keypad", 4 },
+ { "sim", 5 },
+ { "irq", 6 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 18), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "pata", 3 },
+ { "keypad", 4 },
+ { "sim", 5 },
+ { "irq", 6 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 19), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "pata", 3 },
+ { "keypad", 4 },
+ { "sim", 5 },
+ { "irq", 6 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 20), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "pata", 3 },
+ { "can", 4 },
+ { "irq", 6 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 21), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "pata", 3 },
+ { "can", 4 },
+ { "irq", 6 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 22), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "pata", 3 },
+ { "keypad", 4 },
+ { "mmc1", 5 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 23), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "pata", 3 },
+ { "keypad", 4 },
+ { "mmc1", 5 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 24), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "pata", 3 },
+ { "keypad", 4 },
+ { "mmc1", 5 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 25), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "pata", 3 },
+ { "keypad", 4 },
+ { "mmc1", 5 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 26), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "pata", 3 },
+ { "keypad", 4 },
+ { "mmc1", 5 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 27), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "pata", 3 },
+ { "keypad", 4 },
+ { "mmc1", 5 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(I, 0), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ } },
+ { SXIPIO_PIN(I, 1), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ } },
+ { SXIPIO_PIN(I, 2), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ } },
+ { SXIPIO_PIN(I, 3), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "pwm", 2 },
+ } },
+ { SXIPIO_PIN(I, 4), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc3", 2 },
+ } },
+ { SXIPIO_PIN(I, 5), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc3", 2 },
+ } },
+ { SXIPIO_PIN(I, 6), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc3", 2 },
+ } },
+ { SXIPIO_PIN(I, 7), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc3", 2 },
+ } },
+ { SXIPIO_PIN(I, 8), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc3", 2 },
+ } },
+ { SXIPIO_PIN(I, 9), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc3", 2 },
+ } },
+ { SXIPIO_PIN(I, 10), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi0", 2 },
+ { "uart5", 3 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(I, 11), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi0", 2 },
+ { "uart5", 3 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(I, 12), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi0", 2 },
+ { "uart6", 3 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(I, 13), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi0", 2 },
+ { "uart6", 3 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(I, 14), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi0", 2 },
+ { "ps2", 3 },
+ { "timer4", 4 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(I, 15), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi1", 2 },
+ { "ps2", 3 },
+ { "timer5", 4 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(I, 16), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi1", 2 },
+ { "uart2", 3 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(I, 17), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi1", 2 },
+ { "uart2", 3 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(I, 18), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi1", 2 },
+ { "uart2", 3 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(I, 19), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi1", 2 },
+ { "uart2", 3 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(I, 20), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ps2", 2 },
+ { "uart7", 3 },
+ { "hdmi", 4 },
+ } },
+ { SXIPIO_PIN(I, 21), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ps2", 2 },
+ { "uart7", 3 },
+ { "hdmi", 4 },
+ } },
+};
+
+struct sxipio_pin sun5i_a13_pins[] = {
+ { SXIPIO_PIN(B, 0), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2c0", 2 },
+ } },
+ { SXIPIO_PIN(B, 1), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2c0", 2 },
+ } },
+ { SXIPIO_PIN(B, 2), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "pwm", 2 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(B, 3), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ir0", 2 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(B, 4), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ir0", 2 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(B, 10), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi2", 2 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(B, 15), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2c1", 2 },
+ } },
+ { SXIPIO_PIN(B, 16), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2c1", 2 },
+ } },
+ { SXIPIO_PIN(B, 17), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2c2", 2 },
+ } },
+ { SXIPIO_PIN(B, 18), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2c2", 2 },
+ } },
+ { SXIPIO_PIN(C, 0), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "spi0", 3 },
+ } },
+ { SXIPIO_PIN(C, 1), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "spi0", 3 },
+ } },
+ { SXIPIO_PIN(C, 2), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "spi0", 3 },
+ } },
+ { SXIPIO_PIN(C, 3), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "spi0", 3 },
+ } },
+ { SXIPIO_PIN(C, 4), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ } },
+ { SXIPIO_PIN(C, 5), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ } },
+ { SXIPIO_PIN(C, 6), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "mmc2", 3 },
+ } },
+ { SXIPIO_PIN(C, 7), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "mmc2", 3 },
+ } },
+ { SXIPIO_PIN(C, 8), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "mmc2", 3 },
+ } },
+ { SXIPIO_PIN(C, 9), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "mmc2", 3 },
+ } },
+ { SXIPIO_PIN(C, 10), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "mmc2", 3 },
+ } },
+ { SXIPIO_PIN(C, 11), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "mmc2", 3 },
+ } },
+ { SXIPIO_PIN(C, 12), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "mmc2", 3 },
+ } },
+ { SXIPIO_PIN(C, 13), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "mmc2", 3 },
+ } },
+ { SXIPIO_PIN(C, 14), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "mmc2", 3 },
+ } },
+ { SXIPIO_PIN(C, 15), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "mmc2", 3 },
+ } },
+ { SXIPIO_PIN(C, 19), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "uart3", 4 },
+ } },
+ { SXIPIO_PIN(D, 2), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ } },
+ { SXIPIO_PIN(D, 3), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ } },
+ { SXIPIO_PIN(D, 4), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ } },
+ { SXIPIO_PIN(D, 5), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ } },
+ { SXIPIO_PIN(D, 6), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ } },
+ { SXIPIO_PIN(D, 7), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ } },
+ { SXIPIO_PIN(D, 10), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ } },
+ { SXIPIO_PIN(D, 11), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ } },
+ { SXIPIO_PIN(D, 12), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ } },
+ { SXIPIO_PIN(D, 13), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ } },
+ { SXIPIO_PIN(D, 14), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ } },
+ { SXIPIO_PIN(D, 15), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ } },
+ { SXIPIO_PIN(D, 18), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ } },
+ { SXIPIO_PIN(D, 19), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ } },
+ { SXIPIO_PIN(D, 20), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ } },
+ { SXIPIO_PIN(D, 21), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ } },
+ { SXIPIO_PIN(D, 22), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ } },
+ { SXIPIO_PIN(D, 23), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ } },
+ { SXIPIO_PIN(D, 24), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ } },
+ { SXIPIO_PIN(D, 25), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ } },
+ { SXIPIO_PIN(D, 26), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ } },
+ { SXIPIO_PIN(D, 27), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ } },
+ { SXIPIO_PIN(E, 0), {
+ { "gpio_in", 0 },
+ { "csi0", 3 },
+ { "spi2", 4 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(E, 1), {
+ { "gpio_in", 0 },
+ { "csi0", 3 },
+ { "spi2", 4 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(E, 2), {
+ { "gpio_in", 0 },
+ { "csi0", 3 },
+ { "spi2", 4 },
+ } },
+ { SXIPIO_PIN(E, 3), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "csi0", 3 },
+ { "spi2", 4 },
+ } },
+ { SXIPIO_PIN(E, 4), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "csi0", 3 },
+ { "mmc2", 4 },
+ } },
+ { SXIPIO_PIN(E, 5), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "csi0", 3 },
+ { "mmc2", 4 },
+ } },
+ { SXIPIO_PIN(E, 6), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "csi0", 3 },
+ { "mmc2", 4 },
+ } },
+ { SXIPIO_PIN(E, 7), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "csi0", 3 },
+ { "mmc2", 4 },
+ } },
+ { SXIPIO_PIN(E, 8), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "csi0", 3 },
+ { "mmc2", 4 },
+ } },
+ { SXIPIO_PIN(E, 9), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "csi0", 3 },
+ { "mmc2", 4 },
+ } },
+ { SXIPIO_PIN(E, 10), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "csi0", 3 },
+ { "uart1", 4 },
+ } },
+ { SXIPIO_PIN(E, 11), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "csi0", 3 },
+ { "uart1", 4 },
+ } },
+ { SXIPIO_PIN(F, 0), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc0", 2 },
+ } },
+ { SXIPIO_PIN(F, 1), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc0", 2 },
+ } },
+ { SXIPIO_PIN(F, 2), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc0", 2 },
+ } },
+ { SXIPIO_PIN(F, 3), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc0", 2 },
+ } },
+ { SXIPIO_PIN(F, 4), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc0", 2 },
+ } },
+ { SXIPIO_PIN(F, 5), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc0", 2 },
+ } },
+ { SXIPIO_PIN(G, 0), {
+ { "gpio_in", 0 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(G, 1), {
+ { "gpio_in", 0 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(G, 2), {
+ { "gpio_in", 0 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(G, 3), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc1", 2 },
+ { "uart1", 4 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(G, 4), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc1", 2 },
+ { "uart1", 4 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(G, 9), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi1", 2 },
+ { "uart3", 3 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(G, 10), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi1", 2 },
+ { "uart3", 3 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(G, 11), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi1", 2 },
+ { "uart3", 3 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(G, 12), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi1", 2 },
+ { "uart3", 3 },
+ { "irq", 6 },
+ } },
+};
+
+struct sxipio_pin sun5i_a10s_pins[] = {
+ { SXIPIO_PIN(A, 0), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "ts0", 3 },
+ { "keypad", 5 },
+ } },
+ { SXIPIO_PIN(A, 1), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "ts0", 3 },
+ { "keypad", 5 },
+ } },
+ { SXIPIO_PIN(A, 2), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "ts0", 3 },
+ { "keypad", 5 },
+ } },
+ { SXIPIO_PIN(A, 3), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "ts0", 3 },
+ { "keypad", 5 },
+ } },
+ { SXIPIO_PIN(A, 4), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "ts0", 3 },
+ { "keypad", 5 },
+ } },
+ { SXIPIO_PIN(A, 5), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "ts0", 3 },
+ { "keypad", 5 },
+ } },
+ { SXIPIO_PIN(A, 6), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "ts0", 3 },
+ { "keypad", 5 },
+ } },
+ { SXIPIO_PIN(A, 7), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "ts0", 3 },
+ { "keypad", 5 },
+ } },
+ { SXIPIO_PIN(A, 8), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "ts0", 3 },
+ { "uart1", 4 },
+ { "keypad", 5 },
+ } },
+ { SXIPIO_PIN(A, 9), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "ts0", 3 },
+ { "uart1", 4 },
+ { "keypad", 5 },
+ } },
+ { SXIPIO_PIN(A, 10), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "ts0", 3 },
+ { "uart1", 4 },
+ { "keypad", 5 },
+ } },
+ { SXIPIO_PIN(A, 11), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "ts0", 3 },
+ { "uart1", 4 },
+ { "keypad", 5 },
+ } },
+ { SXIPIO_PIN(A, 12), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "uart1", 3 },
+ { "keypad", 5 },
+ } },
+ { SXIPIO_PIN(A, 13), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "uart1", 3 },
+ { "keypad", 5 },
+ } },
+ { SXIPIO_PIN(A, 14), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "uart1", 3 },
+ { "uart3", 4 },
+ { "keypad", 5 },
+ } },
+ { SXIPIO_PIN(A, 15), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "uart1", 3 },
+ { "uart3", 4 },
+ { "keypad", 5 },
+ } },
+ { SXIPIO_PIN(A, 16), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "uart2", 3 },
+ } },
+ { SXIPIO_PIN(A, 17), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "uart2", 3 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(B, 0), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2c0", 2 },
+ } },
+ { SXIPIO_PIN(B, 1), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2c0", 2 },
+ } },
+ { SXIPIO_PIN(B, 2), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "pwm", 2 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(B, 3), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ir0", 2 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(B, 4), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ir0", 2 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(B, 5), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2s", 2 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(B, 6), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2s", 2 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(B, 7), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2s", 2 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(B, 8), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2s", 2 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(B, 9), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2s", 2 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(B, 10), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi2", 2 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(B, 11), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi2", 2 },
+ { "jtag", 3 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(B, 12), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi2", 2 },
+ { "jtag", 3 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(B, 13), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi2", 2 },
+ { "jtag", 3 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(B, 14), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi2", 2 },
+ { "jtag", 3 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(B, 15), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2c1", 2 },
+ } },
+ { SXIPIO_PIN(B, 16), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2c1", 2 },
+ } },
+ { SXIPIO_PIN(B, 17), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2c2", 2 },
+ } },
+ { SXIPIO_PIN(B, 18), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2c2", 2 },
+ } },
+ { SXIPIO_PIN(B, 19), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "uart0", 2 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(B, 20), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "uart0", 2 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(C, 0), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "spi0", 3 },
+ } },
+ { SXIPIO_PIN(C, 1), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "spi0", 3 },
+ } },
+ { SXIPIO_PIN(C, 2), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "spi0", 3 },
+ } },
+ { SXIPIO_PIN(C, 3), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "spi0", 3 },
+ } },
+ { SXIPIO_PIN(C, 4), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ } },
+ { SXIPIO_PIN(C, 5), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ } },
+ { SXIPIO_PIN(C, 6), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "mmc2", 3 },
+ } },
+ { SXIPIO_PIN(C, 7), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "mmc2", 3 },
+ } },
+ { SXIPIO_PIN(C, 8), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "mmc2", 3 },
+ } },
+ { SXIPIO_PIN(C, 9), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "mmc2", 3 },
+ } },
+ { SXIPIO_PIN(C, 10), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "mmc2", 3 },
+ } },
+ { SXIPIO_PIN(C, 11), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "mmc2", 3 },
+ } },
+ { SXIPIO_PIN(C, 12), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "mmc2", 3 },
+ } },
+ { SXIPIO_PIN(C, 13), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "mmc2", 3 },
+ } },
+ { SXIPIO_PIN(C, 14), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "mmc2", 3 },
+ } },
+ { SXIPIO_PIN(C, 15), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "mmc2", 3 },
+ } },
+ { SXIPIO_PIN(C, 16), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "uart3", 4 },
+ } },
+ { SXIPIO_PIN(C, 17), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "uart3", 4 },
+ } },
+ { SXIPIO_PIN(C, 18), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "uart2", 3 },
+ { "uart3", 4 },
+ } },
+ { SXIPIO_PIN(C, 19), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "uart2", 3 },
+ { "uart3", 4 },
+ } },
+ { SXIPIO_PIN(D, 0), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ } },
+ { SXIPIO_PIN(D, 1), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ } },
+ { SXIPIO_PIN(D, 2), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "uart2", 3 },
+ } },
+ { SXIPIO_PIN(D, 3), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "uart2", 3 },
+ } },
+ { SXIPIO_PIN(D, 4), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "uart2", 3 },
+ } },
+ { SXIPIO_PIN(D, 5), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "uart2", 3 },
+ } },
+ { SXIPIO_PIN(D, 6), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "emac", 3 },
+ } },
+ { SXIPIO_PIN(D, 7), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "emac", 3 },
+ } },
+ { SXIPIO_PIN(D, 8), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ } },
+ { SXIPIO_PIN(D, 9), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ } },
+ { SXIPIO_PIN(D, 10), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "emac", 3 },
+ } },
+ { SXIPIO_PIN(D, 11), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "emac", 3 },
+ } },
+ { SXIPIO_PIN(D, 12), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "emac", 3 },
+ } },
+ { SXIPIO_PIN(D, 13), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "emac", 3 },
+ } },
+ { SXIPIO_PIN(D, 14), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "emac", 3 },
+ } },
+ { SXIPIO_PIN(D, 15), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "emac", 3 },
+ } },
+ { SXIPIO_PIN(D, 16), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ } },
+ { SXIPIO_PIN(D, 17), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ } },
+ { SXIPIO_PIN(D, 18), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "emac", 3 },
+ } },
+ { SXIPIO_PIN(D, 19), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "emac", 3 },
+ } },
+ { SXIPIO_PIN(D, 20), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "emac", 3 },
+ } },
+ { SXIPIO_PIN(D, 21), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "emac", 3 },
+ } },
+ { SXIPIO_PIN(D, 22), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "emac", 3 },
+ } },
+ { SXIPIO_PIN(D, 23), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "emac", 3 },
+ } },
+ { SXIPIO_PIN(D, 24), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "emac", 3 },
+ } },
+ { SXIPIO_PIN(D, 25), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "emac", 3 },
+ } },
+ { SXIPIO_PIN(D, 26), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "emac", 3 },
+ } },
+ { SXIPIO_PIN(D, 27), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "emac", 3 },
+ } },
+ { SXIPIO_PIN(E, 0), {
+ { "gpio_in", 0 },
+ { "ts0", 2 },
+ { "csi0", 3 },
+ { "spi2", 4 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(E, 1), {
+ { "gpio_in", 0 },
+ { "ts0", 2 },
+ { "csi0", 3 },
+ { "spi2", 4 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(E, 2), {
+ { "gpio_in", 0 },
+ { "ts0", 2 },
+ { "csi0", 3 },
+ { "spi2", 4 },
+ } },
+ { SXIPIO_PIN(E, 3), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts0", 2 },
+ { "csi0", 3 },
+ { "spi2", 4 },
+ } },
+ { SXIPIO_PIN(E, 4), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts0", 2 },
+ { "csi0", 3 },
+ { "mmc2", 4 },
+ } },
+ { SXIPIO_PIN(E, 5), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts0", 2 },
+ { "csi0", 3 },
+ { "mmc2", 4 },
+ } },
+ { SXIPIO_PIN(E, 6), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts0", 2 },
+ { "csi0", 3 },
+ { "mmc2", 4 },
+ } },
+ { SXIPIO_PIN(E, 7), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts0", 2 },
+ { "csi0", 3 },
+ { "mmc2", 4 },
+ } },
+ { SXIPIO_PIN(E, 8), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts0", 2 },
+ { "csi0", 3 },
+ { "mmc2", 4 },
+ } },
+ { SXIPIO_PIN(E, 9), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts0", 2 },
+ { "csi0", 3 },
+ { "mmc2", 4 },
+ } },
+ { SXIPIO_PIN(E, 10), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts0", 2 },
+ { "csi0", 3 },
+ { "uart1", 4 },
+ } },
+ { SXIPIO_PIN(E, 11), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts0", 2 },
+ { "csi0", 3 },
+ { "uart1", 4 },
+ } },
+ { SXIPIO_PIN(F, 0), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc0", 2 },
+ { "jtag", 4 },
+ } },
+ { SXIPIO_PIN(F, 1), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc0", 2 },
+ { "jtag", 4 },
+ } },
+ { SXIPIO_PIN(F, 2), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc0", 2 },
+ { "uart0", 4 },
+ } },
+ { SXIPIO_PIN(F, 3), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc0", 2 },
+ { "jtag", 4 },
+ } },
+ { SXIPIO_PIN(F, 4), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc0", 2 },
+ { "uart0", 4 },
+ } },
+ { SXIPIO_PIN(F, 5), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc0", 2 },
+ { "jtag", 4 },
+ } },
+ { SXIPIO_PIN(G, 0), {
+ { "gpio_in", 0 },
+ { "gps", 2 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(G, 1), {
+ { "gpio_in", 0 },
+ { "gps", 2 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(G, 2), {
+ { "gpio_in", 0 },
+ { "gps", 2 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(G, 3), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc1", 2 },
+ { "uart1", 4 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(G, 4), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc1", 2 },
+ { "uart1", 4 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(G, 5), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc1", 2 },
+ { "uart1", 4 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(G, 6), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc1", 2 },
+ { "uart1", 4 },
+ { "uart2", 5 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(G, 7), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc1", 2 },
+ { "uart2", 5 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(G, 8), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc1", 2 },
+ { "uart2", 5 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(G, 9), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi1", 2 },
+ { "uart3", 3 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(G, 10), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi1", 2 },
+ { "uart3", 3 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(G, 11), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi1", 2 },
+ { "uart3", 3 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(G, 12), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi1", 2 },
+ { "uart3", 3 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(G, 13), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi1", 2 },
+ { "pwm", 3 },
+ { "uart2", 5 },
+ { "irq", 6 },
+ } },
+};
+
+struct sxipio_pin sun7i_a20_pins[] = {
+ { SXIPIO_PIN(A, 0), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "spi1", 3 },
+ { "uart2", 4 },
+ { "gmac", 5 },
+ } },
+ { SXIPIO_PIN(A, 1), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "spi1", 3 },
+ { "uart2", 4 },
+ { "gmac", 5 },
+ } },
+ { SXIPIO_PIN(A, 2), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "spi1", 3 },
+ { "uart2", 4 },
+ { "gmac", 5 },
+ } },
+ { SXIPIO_PIN(A, 3), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "spi1", 3 },
+ { "uart2", 4 },
+ { "gmac", 5 },
+ } },
+ { SXIPIO_PIN(A, 4), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "spi1", 3 },
+ { "gmac", 5 },
+ } },
+ { SXIPIO_PIN(A, 5), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "spi3", 3 },
+ { "gmac", 5 },
+ } },
+ { SXIPIO_PIN(A, 6), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "spi3", 3 },
+ { "gmac", 5 },
+ } },
+ { SXIPIO_PIN(A, 7), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "spi3", 3 },
+ { "gmac", 5 },
+ } },
+ { SXIPIO_PIN(A, 8), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "spi3", 3 },
+ { "gmac", 5 },
+ } },
+ { SXIPIO_PIN(A, 9), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "spi3", 3 },
+ { "gmac", 5 },
+ { "i2s1", 6 },
+ } },
+ { SXIPIO_PIN(A, 10), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "uart1", 4 },
+ { "gmac", 5 },
+ } },
+ { SXIPIO_PIN(A, 11), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "uart1", 4 },
+ { "gmac", 5 },
+ } },
+ { SXIPIO_PIN(A, 12), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "uart6", 3 },
+ { "uart1", 4 },
+ { "gmac", 5 },
+ } },
+ { SXIPIO_PIN(A, 13), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "uart6", 3 },
+ { "uart1", 4 },
+ { "gmac", 5 },
+ } },
+ { SXIPIO_PIN(A, 14), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "uart7", 3 },
+ { "uart1", 4 },
+ { "gmac", 5 },
+ { "i2s1", 6 },
+ } },
+ { SXIPIO_PIN(A, 15), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "uart7", 3 },
+ { "uart1", 4 },
+ { "gmac", 5 },
+ { "i2s1", 6 },
+ } },
+ { SXIPIO_PIN(A, 16), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "can", 3 },
+ { "uart1", 4 },
+ { "gmac", 5 },
+ { "i2s1", 6 },
+ } },
+ { SXIPIO_PIN(A, 17), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ { "can", 3 },
+ { "uart1", 4 },
+ { "gmac", 5 },
+ { "i2s1", 6 },
+ } },
+ { SXIPIO_PIN(B, 0), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2c0", 2 },
+ } },
+ { SXIPIO_PIN(B, 1), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2c0", 2 },
+ } },
+ { SXIPIO_PIN(B, 2), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "pwm", 2 },
+ } },
+ { SXIPIO_PIN(B, 3), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ir0", 2 },
+ { "spdif", 4 },
+ } },
+ { SXIPIO_PIN(B, 4), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ir0", 2 },
+ } },
+ { SXIPIO_PIN(B, 5), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2s0", 2 },
+ { "ac97", 3 },
+ } },
+ { SXIPIO_PIN(B, 6), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2s0", 2 },
+ { "ac97", 3 },
+ } },
+ { SXIPIO_PIN(B, 7), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2s0", 2 },
+ { "ac97", 3 },
+ } },
+ { SXIPIO_PIN(B, 8), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2s0", 2 },
+ { "ac97", 3 },
+ } },
+ { SXIPIO_PIN(B, 9), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2s0", 2 },
+ } },
+ { SXIPIO_PIN(B, 10), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2s0", 2 },
+ } },
+ { SXIPIO_PIN(B, 11), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2s0", 2 },
+ } },
+ { SXIPIO_PIN(B, 12), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2s0", 2 },
+ { "ac97", 3 },
+ { "spdif", 4 },
+ } },
+ { SXIPIO_PIN(B, 13), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi2", 2 },
+ { "spdif", 4 },
+ } },
+ { SXIPIO_PIN(B, 14), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi2", 2 },
+ { "jtag", 3 },
+ } },
+ { SXIPIO_PIN(B, 15), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi2", 2 },
+ { "jtag", 3 },
+ } },
+ { SXIPIO_PIN(B, 16), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi2", 2 },
+ { "jtag", 3 },
+ } },
+ { SXIPIO_PIN(B, 17), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi2", 2 },
+ { "jtag", 3 },
+ } },
+ { SXIPIO_PIN(B, 18), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2c1", 2 },
+ } },
+ { SXIPIO_PIN(B, 19), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2c1", 2 },
+ } },
+ { SXIPIO_PIN(B, 20), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2c2", 2 },
+ } },
+ { SXIPIO_PIN(B, 21), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2c2", 2 },
+ } },
+ { SXIPIO_PIN(B, 22), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "uart0", 2 },
+ { "ir1", 3 },
+ } },
+ { SXIPIO_PIN(B, 23), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "uart0", 2 },
+ { "ir1", 3 },
+ } },
+ { SXIPIO_PIN(C, 0), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "spi0", 3 },
+ } },
+ { SXIPIO_PIN(C, 1), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "spi0", 3 },
+ } },
+ { SXIPIO_PIN(C, 2), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "spi0", 3 },
+ } },
+ { SXIPIO_PIN(C, 3), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ } },
+ { SXIPIO_PIN(C, 4), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ } },
+ { SXIPIO_PIN(C, 5), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ } },
+ { SXIPIO_PIN(C, 6), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "mmc2", 3 },
+ } },
+ { SXIPIO_PIN(C, 7), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "mmc2", 3 },
+ } },
+ { SXIPIO_PIN(C, 8), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "mmc2", 3 },
+ } },
+ { SXIPIO_PIN(C, 9), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "mmc2", 3 },
+ } },
+ { SXIPIO_PIN(C, 10), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "mmc2", 3 },
+ } },
+ { SXIPIO_PIN(C, 11), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "mmc2", 3 },
+ } },
+ { SXIPIO_PIN(C, 12), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ } },
+ { SXIPIO_PIN(C, 13), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ } },
+ { SXIPIO_PIN(C, 14), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ } },
+ { SXIPIO_PIN(C, 15), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ } },
+ { SXIPIO_PIN(C, 16), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ } },
+ { SXIPIO_PIN(C, 17), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ } },
+ { SXIPIO_PIN(C, 18), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ } },
+ { SXIPIO_PIN(C, 19), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "spi2", 3 },
+ } },
+ { SXIPIO_PIN(C, 20), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "spi2", 3 },
+ } },
+ { SXIPIO_PIN(C, 21), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "spi2", 3 },
+ } },
+ { SXIPIO_PIN(C, 22), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ { "spi2", 3 },
+ } },
+ { SXIPIO_PIN(C, 23), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi0", 3 },
+ } },
+ { SXIPIO_PIN(C, 24), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "nand0", 2 },
+ } },
+ { SXIPIO_PIN(D, 0), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "lvds0", 3 },
+ } },
+ { SXIPIO_PIN(D, 1), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "lvds0", 3 },
+ } },
+ { SXIPIO_PIN(D, 2), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "lvds0", 3 },
+ } },
+ { SXIPIO_PIN(D, 3), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "lvds0", 3 },
+ } },
+ { SXIPIO_PIN(D, 4), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "lvds0", 3 },
+ } },
+ { SXIPIO_PIN(D, 5), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "lvds0", 3 },
+ } },
+ { SXIPIO_PIN(D, 6), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "lvds0", 3 },
+ } },
+ { SXIPIO_PIN(D, 7), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "lvds0", 3 },
+ } },
+ { SXIPIO_PIN(D, 8), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "lvds0", 3 },
+ } },
+ { SXIPIO_PIN(D, 9), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "lvds0", 3 },
+ } },
+ { SXIPIO_PIN(D, 10), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "lvds1", 3 },
+ } },
+ { SXIPIO_PIN(D, 11), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "lvds1", 3 },
+ } },
+ { SXIPIO_PIN(D, 12), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "lvds1", 3 },
+ } },
+ { SXIPIO_PIN(D, 13), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "lvds1", 3 },
+ } },
+ { SXIPIO_PIN(D, 14), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "lvds1", 3 },
+ } },
+ { SXIPIO_PIN(D, 15), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "lvds1", 3 },
+ } },
+ { SXIPIO_PIN(D, 16), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "lvds1", 3 },
+ } },
+ { SXIPIO_PIN(D, 17), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "lvds1", 3 },
+ } },
+ { SXIPIO_PIN(D, 18), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "lvds1", 3 },
+ } },
+ { SXIPIO_PIN(D, 19), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "lvds1", 3 },
+ } },
+ { SXIPIO_PIN(D, 20), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "csi1", 3 },
+ } },
+ { SXIPIO_PIN(D, 21), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "sim", 3 },
+ } },
+ { SXIPIO_PIN(D, 22), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "sim", 3 },
+ } },
+ { SXIPIO_PIN(D, 23), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "sim", 3 },
+ } },
+ { SXIPIO_PIN(D, 24), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "sim", 3 },
+ } },
+ { SXIPIO_PIN(D, 25), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "sim", 3 },
+ } },
+ { SXIPIO_PIN(D, 26), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "sim", 3 },
+ } },
+ { SXIPIO_PIN(D, 27), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd0", 2 },
+ { "sim", 3 },
+ } },
+ { SXIPIO_PIN(E, 0), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts0", 2 },
+ { "csi0", 3 },
+ } },
+ { SXIPIO_PIN(E, 1), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts0", 2 },
+ { "csi0", 3 },
+ } },
+ { SXIPIO_PIN(E, 2), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts0", 2 },
+ { "csi0", 3 },
+ } },
+ { SXIPIO_PIN(E, 3), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts0", 2 },
+ { "csi0", 3 },
+ } },
+ { SXIPIO_PIN(E, 4), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts0", 2 },
+ { "csi0", 3 },
+ } },
+ { SXIPIO_PIN(E, 5), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts0", 2 },
+ { "csi0", 3 },
+ { "sim", 4 },
+ } },
+ { SXIPIO_PIN(E, 6), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts0", 2 },
+ { "csi0", 3 },
+ } },
+ { SXIPIO_PIN(E, 7), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts0", 2 },
+ { "csi0", 3 },
+ } },
+ { SXIPIO_PIN(E, 8), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts0", 2 },
+ { "csi0", 3 },
+ } },
+ { SXIPIO_PIN(E, 9), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts0", 2 },
+ { "csi0", 3 },
+ } },
+ { SXIPIO_PIN(E, 10), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts0", 2 },
+ { "csi0", 3 },
+ } },
+ { SXIPIO_PIN(E, 11), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts0", 2 },
+ { "csi0", 3 },
+ } },
+ { SXIPIO_PIN(F, 0), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc0", 2 },
+ { "jtag", 4 },
+ } },
+ { SXIPIO_PIN(F, 1), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc0", 2 },
+ { "jtag", 4 },
+ } },
+ { SXIPIO_PIN(F, 2), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc0", 2 },
+ { "uart0", 4 },
+ } },
+ { SXIPIO_PIN(F, 3), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc0", 2 },
+ { "jtag", 4 },
+ } },
+ { SXIPIO_PIN(F, 4), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc0", 2 },
+ { "uart0", 4 },
+ } },
+ { SXIPIO_PIN(F, 5), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc0", 2 },
+ { "jtag", 4 },
+ } },
+ { SXIPIO_PIN(G, 0), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts1", 2 },
+ { "csi1", 3 },
+ { "mmc1", 4 },
+ } },
+ { SXIPIO_PIN(G, 1), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts1", 2 },
+ { "csi1", 3 },
+ { "mmc1", 4 },
+ } },
+ { SXIPIO_PIN(G, 2), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts1", 2 },
+ { "csi1", 3 },
+ { "mmc1", 4 },
+ } },
+ { SXIPIO_PIN(G, 3), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts1", 2 },
+ { "csi1", 3 },
+ { "mmc1", 4 },
+ } },
+ { SXIPIO_PIN(G, 4), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts1", 2 },
+ { "csi1", 3 },
+ { "mmc1", 4 },
+ { "csi0", 5 },
+ } },
+ { SXIPIO_PIN(G, 5), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts1", 2 },
+ { "csi1", 3 },
+ { "mmc1", 4 },
+ { "csi0", 5 },
+ } },
+ { SXIPIO_PIN(G, 6), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts1", 2 },
+ { "csi1", 3 },
+ { "uart3", 4 },
+ { "csi0", 5 },
+ } },
+ { SXIPIO_PIN(G, 7), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts1", 2 },
+ { "csi1", 3 },
+ { "uart3", 4 },
+ { "csi0", 5 },
+ } },
+ { SXIPIO_PIN(G, 8), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts1", 2 },
+ { "csi1", 3 },
+ { "uart3", 4 },
+ { "csi0", 5 },
+ } },
+ { SXIPIO_PIN(G, 9), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts1", 2 },
+ { "csi1", 3 },
+ { "uart3", 4 },
+ { "csi0", 5 },
+ } },
+ { SXIPIO_PIN(G, 10), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts1", 2 },
+ { "csi1", 3 },
+ { "uart4", 4 },
+ { "csi0", 5 },
+ } },
+ { SXIPIO_PIN(G, 11), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ts1", 2 },
+ { "csi1", 3 },
+ { "uart4", 4 },
+ { "csi0", 5 },
+ } },
+ { SXIPIO_PIN(H, 0), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "uart3", 4 },
+ { "irq", 6 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 1), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "uart3", 4 },
+ { "irq", 6 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 2), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "uart3", 4 },
+ { "irq", 6 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 3), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "uart3", 4 },
+ { "irq", 6 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 4), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "uart4", 4 },
+ { "irq", 6 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 5), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "uart4", 4 },
+ { "irq", 6 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 6), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "uart5", 4 },
+ { "ms", 5 },
+ { "irq", 6 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 7), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "uart5", 4 },
+ { "ms", 5 },
+ { "irq", 6 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 8), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "emac", 3 },
+ { "keypad", 4 },
+ { "ms", 5 },
+ { "irq", 6 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 9), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "emac", 3 },
+ { "keypad", 4 },
+ { "ms", 5 },
+ { "irq", 6 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 10), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "emac", 3 },
+ { "keypad", 4 },
+ { "ms", 5 },
+ { "irq", 6 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 11), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "emac", 3 },
+ { "keypad", 4 },
+ { "ms", 5 },
+ { "irq", 6 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 12), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "ps2", 4 },
+ { "irq", 6 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 13), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "ps2", 4 },
+ { "sim", 5 },
+ { "irq", 6 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 14), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "emac", 3 },
+ { "keypad", 4 },
+ { "sim", 5 },
+ { "irq", 6 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 15), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "emac", 3 },
+ { "keypad", 4 },
+ { "sim", 5 },
+ { "irq", 6 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 16), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "emac", 3 },
+ { "keypad", 4 },
+ { "irq", 6 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 17), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "emac", 3 },
+ { "keypad", 4 },
+ { "sim", 5 },
+ { "irq", 6 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 18), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "emac", 3 },
+ { "keypad", 4 },
+ { "sim", 5 },
+ { "irq", 6 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 19), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "emac", 3 },
+ { "keypad", 4 },
+ { "sim", 5 },
+ { "irq", 6 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 20), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "emac", 3 },
+ { "can", 4 },
+ { "irq", 6 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 21), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "emac", 3 },
+ { "can", 4 },
+ { "irq", 6 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 22), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "emac", 3 },
+ { "keypad", 4 },
+ { "mmc1", 5 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 23), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "emac", 3 },
+ { "keypad", 4 },
+ { "mmc1", 5 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 24), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "emac", 3 },
+ { "keypad", 4 },
+ { "mmc1", 5 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 25), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "emac", 3 },
+ { "keypad", 4 },
+ { "mmc1", 5 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 26), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "emac", 3 },
+ { "keypad", 4 },
+ { "mmc1", 5 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(H, 27), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "lcd1", 2 },
+ { "emac", 3 },
+ { "keypad", 4 },
+ { "mmc1", 5 },
+ { "csi1", 7 },
+ } },
+ { SXIPIO_PIN(I, 0), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2c3", 3 },
+ } },
+ { SXIPIO_PIN(I, 1), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2c3", 3 },
+ } },
+ { SXIPIO_PIN(I, 2), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2c4", 3 },
+ } },
+ { SXIPIO_PIN(I, 3), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "pwm", 2 },
+ { "i2c4", 3 },
+ } },
+ { SXIPIO_PIN(I, 4), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc3", 2 },
+ } },
+ { SXIPIO_PIN(I, 5), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc3", 2 },
+ } },
+ { SXIPIO_PIN(I, 6), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc3", 2 },
+ } },
+ { SXIPIO_PIN(I, 7), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc3", 2 },
+ } },
+ { SXIPIO_PIN(I, 8), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc3", 2 },
+ } },
+ { SXIPIO_PIN(I, 9), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc3", 2 },
+ } },
+ { SXIPIO_PIN(I, 10), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi0", 2 },
+ { "uart5", 3 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(I, 11), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi0", 2 },
+ { "uart5", 3 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(I, 12), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi0", 2 },
+ { "uart6", 3 },
+ { "clk_out_a", 4 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(I, 13), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi0", 2 },
+ { "uart6", 3 },
+ { "clk_out_b", 4 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(I, 14), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi0", 2 },
+ { "ps2", 3 },
+ { "timer4", 4 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(I, 15), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi1", 2 },
+ { "ps2", 3 },
+ { "timer5", 4 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(I, 16), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi1", 2 },
+ { "uart2", 3 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(I, 17), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi1", 2 },
+ { "uart2", 3 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(I, 18), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi1", 2 },
+ { "uart2", 3 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(I, 19), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi1", 2 },
+ { "uart2", 3 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(I, 20), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ps2", 2 },
+ { "uart7", 3 },
+ { "hdmi", 4 },
+ } },
+ { SXIPIO_PIN(I, 21), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "ps2", 2 },
+ { "uart7", 3 },
+ { "hdmi", 4 },
+ } },
+};
diff --git a/sys/arch/armv7/sunxi/sxipiovar.h b/sys/arch/armv7/sunxi/sxipiovar.h
index 275a8765f4f..85f79378069 100644
--- a/sys/arch/armv7/sunxi/sxipiovar.h
+++ b/sys/arch/armv7/sunxi/sxipiovar.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: sxipiovar.h,v 1.3 2015/05/20 03:49:23 jsg Exp $ */
+/* $OpenBSD: sxipiovar.h,v 1.4 2016/08/12 16:02:31 kettenis Exp $ */
/*
* Copyright (c) 2013 Artturi Alm
*
@@ -17,6 +17,30 @@
#include <sys/gpio.h>
+struct sxipio_func {
+ const char *name;
+ int mux;
+};
+
+struct sxipio_pin {
+ const char *name;
+ int port, pin;
+ struct sxipio_func funcs[8];
+};
+
+#define SXIPIO_PORT_A 0
+#define SXIPIO_PORT_B 1
+#define SXIPIO_PORT_C 2
+#define SXIPIO_PORT_D 3
+#define SXIPIO_PORT_E 4
+#define SXIPIO_PORT_F 5
+#define SXIPIO_PORT_G 6
+#define SXIPIO_PORT_H 7
+#define SXIPIO_PORT_I 8
+
+#define SXIPIO_PIN(port, pin) \
+ "P" #port #pin, SXIPIO_PORT_ ## port, pin
+
/*
* XXX To keep things simple for now, functions below work as if there
* is 32pins per port, this needs to be taken into account when writing
@@ -37,3 +61,6 @@ int sxipio_getpin(int);
void sxipio_setpin(int);
void sxipio_clrpin(int);
int sxipio_togglepin(int);
+
+int sxipio_pinctrlbyid(int node, int id);
+int sxipio_pinctrlbyname(int node, const char *);