summaryrefslogtreecommitdiff
path: root/sys/arch
diff options
context:
space:
mode:
authorMark Kettenis <kettenis@cvs.openbsd.org>2016-08-26 21:23:42 +0000
committerMark Kettenis <kettenis@cvs.openbsd.org>2016-08-26 21:23:42 +0000
commit2e26991d49c6c5bb682f962fa721d2c2beaf1022 (patch)
treefc9b0986a1ca4a4d5dcfa15bcae6a366038b1c08 /sys/arch
parenta78ef9935c7271dc137baacac2db19f33af0ecde (diff)
Add support for the Allwinner H3 (sun8i-h3).
Diffstat (limited to 'sys/arch')
-rw-r--r--sys/arch/armv7/sunxi/sxipio.c6
-rw-r--r--sys/arch/armv7/sunxi/sxipio_pins.h557
2 files changed, 562 insertions, 1 deletions
diff --git a/sys/arch/armv7/sunxi/sxipio.c b/sys/arch/armv7/sunxi/sxipio.c
index c425464f1e9..23d8ded0fdb 100644
--- a/sys/arch/armv7/sunxi/sxipio.c
+++ b/sys/arch/armv7/sunxi/sxipio.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sxipio.c,v 1.10 2016/08/23 18:16:06 kettenis Exp $ */
+/* $OpenBSD: sxipio.c,v 1.11 2016/08/26 21:23:41 kettenis Exp $ */
/*
* Copyright (c) 2010 Miodrag Vallat.
* Copyright (c) 2013 Artturi Alm
@@ -136,6 +136,10 @@ struct sxipio_pins sxipio_pins[] = {
{
"allwinner,sun7i-a20-pinctrl",
sun7i_a20_pins, nitems(sun7i_a20_pins)
+ },
+ {
+ "allwinner,sun8i-h3-pinctrl",
+ sun8i_h3_pins, nitems(sun8i_h3_pins)
}
};
diff --git a/sys/arch/armv7/sunxi/sxipio_pins.h b/sys/arch/armv7/sunxi/sxipio_pins.h
index 9eef88c8e7c..74ea8fb6526 100644
--- a/sys/arch/armv7/sunxi/sxipio_pins.h
+++ b/sys/arch/armv7/sunxi/sxipio_pins.h
@@ -3512,3 +3512,560 @@ struct sxipio_pin sun7i_a20_pins[] = {
{ "hdmi", 4 },
} },
};
+
+struct sxipio_pin sun8i_h3_pins[] = {
+ { SXIPIO_PIN(A, 0), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "uart2", 2 },
+ { "jtag", 3 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(A, 1), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "uart2", 2 },
+ { "jtag", 3 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(A, 2), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "uart2", 2 },
+ { "jtag", 3 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(A, 3), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "uart2", 2 },
+ { "jtag", 3 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(A, 4), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "uart0", 2 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(A, 5), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "uart0", 2 },
+ { "pwm0", 3 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(A, 6), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "sim", 2 },
+ { "pwm1", 3 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(A, 7), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "sim", 2 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(A, 8), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "sim", 2 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(A, 9), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "sim", 2 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(A, 10), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "sim", 2 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(A, 11), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2c0", 2 },
+ { "di", 3 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(A, 12), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2c0", 2 },
+ { "di", 3 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(A, 13), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi1", 2 },
+ { "uart3", 3 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(A, 14), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi1", 2 },
+ { "uart3", 3 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(A, 15), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi1", 2 },
+ { "uart3", 3 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(A, 16), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spi1", 2 },
+ { "uart3", 3 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(A, 17), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "spdif", 2 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(A, 18), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2s0", 2 },
+ { "i2c1", 3 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(A, 19), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2s0", 2 },
+ { "i2c1", 3 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(A, 20), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2s0", 2 },
+ { "sim", 3 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(A, 21), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2s0", 2 },
+ { "sim", 3 },
+ { "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 },
+ { "mmc2", 3 },
+ } },
+ { 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 },
+ } },
+ { 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 },
+ { "mmc2", 3 },
+ } },
+ { SXIPIO_PIN(D, 0), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ } },
+ { SXIPIO_PIN(D, 1), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ } },
+ { SXIPIO_PIN(D, 2), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ } },
+ { SXIPIO_PIN(D, 3), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ } },
+ { SXIPIO_PIN(D, 4), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ } },
+ { SXIPIO_PIN(D, 5), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ } },
+ { SXIPIO_PIN(D, 6), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ } },
+ { SXIPIO_PIN(D, 7), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ } },
+ { SXIPIO_PIN(D, 8), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ } },
+ { SXIPIO_PIN(D, 9), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ } },
+ { SXIPIO_PIN(D, 10), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ } },
+ { SXIPIO_PIN(D, 11), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ } },
+ { SXIPIO_PIN(D, 12), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ } },
+ { SXIPIO_PIN(D, 13), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ } },
+ { SXIPIO_PIN(D, 14), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ } },
+ { SXIPIO_PIN(D, 15), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ } },
+ { SXIPIO_PIN(D, 16), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ } },
+ { SXIPIO_PIN(D, 17), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "emac", 2 },
+ } },
+ { SXIPIO_PIN(E, 0), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "csi", 2 },
+ { "ts", 3 },
+ } },
+ { SXIPIO_PIN(E, 1), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "csi", 2 },
+ { "ts", 3 },
+ } },
+ { SXIPIO_PIN(E, 2), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "csi", 2 },
+ { "ts", 3 },
+ } },
+ { SXIPIO_PIN(E, 3), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "csi", 2 },
+ { "ts", 3 },
+ } },
+ { SXIPIO_PIN(E, 4), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "csi", 2 },
+ { "ts", 3 },
+ } },
+ { SXIPIO_PIN(E, 5), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "csi", 2 },
+ { "ts", 3 },
+ } },
+ { SXIPIO_PIN(E, 6), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "csi", 2 },
+ { "ts", 3 },
+ } },
+ { SXIPIO_PIN(E, 7), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "csi", 2 },
+ { "ts", 3 },
+ } },
+ { SXIPIO_PIN(E, 8), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "csi", 2 },
+ { "ts", 3 },
+ } },
+ { SXIPIO_PIN(E, 9), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "csi", 2 },
+ { "ts", 3 },
+ } },
+ { SXIPIO_PIN(E, 10), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "csi", 2 },
+ { "ts", 3 },
+ } },
+ { SXIPIO_PIN(E, 11), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "csi", 2 },
+ { "ts", 3 },
+ } },
+ { SXIPIO_PIN(E, 12), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "csi", 2 },
+ { "i2c2", 3 },
+ } },
+ { SXIPIO_PIN(E, 13), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "csi", 2 },
+ { "i2c2", 3 },
+ } },
+ { SXIPIO_PIN(E, 14), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ } },
+ { SXIPIO_PIN(E, 15), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ } },
+ { SXIPIO_PIN(F, 0), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc0", 2 },
+ { "jtag", 3 },
+ } },
+ { SXIPIO_PIN(F, 1), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc0", 2 },
+ { "jtag", 3 },
+ } },
+ { SXIPIO_PIN(F, 2), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc0", 2 },
+ { "uart0", 3 },
+ } },
+ { SXIPIO_PIN(F, 3), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc0", 2 },
+ { "jtag", 3 },
+ } },
+ { SXIPIO_PIN(F, 4), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc0", 2 },
+ { "uart0", 3 },
+ } },
+ { SXIPIO_PIN(F, 5), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc0", 2 },
+ { "jtag", 3 },
+ } },
+ { SXIPIO_PIN(F, 6), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ } },
+ { SXIPIO_PIN(G, 0), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc1", 2 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(G, 1), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc1", 2 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(G, 2), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc1", 2 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(G, 3), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc1", 2 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(G, 4), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc1", 2 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(G, 5), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "mmc1", 2 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(G, 6), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "uart1", 2 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(G, 7), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "uart1", 2 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(G, 8), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "uart1", 2 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(G, 9), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "uart1", 2 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(G, 10), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2s1", 2 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(G, 11), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2s1", 2 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(G, 12), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2s1", 2 },
+ { "irq", 6 },
+ } },
+ { SXIPIO_PIN(G, 13), {
+ { "gpio_in", 0 },
+ { "gpio_out", 1 },
+ { "i2s1", 2 },
+ { "irq", 6 },
+ } },
+};