Add Allwinner H616 support.
authorkettenis <kettenis@openbsd.org>
Wed, 7 Feb 2024 22:34:39 +0000 (22:34 +0000)
committerkettenis <kettenis@openbsd.org>
Wed, 7 Feb 2024 22:34:39 +0000 (22:34 +0000)
ok uaa@

sys/dev/fdt/sxipio.c
sys/dev/fdt/sxipio_pins.h

index 8f87297..8f422da 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: sxipio.c,v 1.17 2023/10/13 15:41:25 kettenis Exp $    */
+/*     $OpenBSD: sxipio.c,v 1.18 2024/02/07 22:34:39 kettenis Exp $    */
 /*
  * Copyright (c) 2010 Miodrag Vallat.
  * Copyright (c) 2013 Artturi Alm
@@ -206,6 +206,14 @@ const struct sxipio_pins sxipio_pins[] = {
                "allwinner,sun50i-h6-r-pinctrl",
                sun50i_h6_r_pins, nitems(sun50i_h6_r_pins)
        },
+       {
+               "allwinner,sun50i-h616-pinctrl",
+               sun50i_h616_pins, nitems(sun50i_h616_pins)
+       },
+       {
+               "allwinner,sun50i-h616-r-pinctrl",
+               sun50i_h616_r_pins, nitems(sun50i_h616_r_pins)
+       },
 };
 
 int
index 361b692..492518c 100644 (file)
@@ -11299,3 +11299,600 @@ const struct sxipio_pin sun50i_h6_r_pins[] = {
                { "irq", 6 },
        } },
 };
+
+const struct sxipio_pin sun50i_h616_pins[] = {
+       { SXIPIO_PIN(A, 0), {
+               { "emac1", 2 },
+       } },
+       { SXIPIO_PIN(A, 1), {
+               { "emac1", 2 },
+       } },
+       { SXIPIO_PIN(A, 2), {
+               { "emac1", 2 },
+       } },
+       { SXIPIO_PIN(A, 3), {
+               { "emac1", 2 },
+       } },
+       { SXIPIO_PIN(A, 4), {
+               { "emac1", 2 },
+       } },
+       { SXIPIO_PIN(A, 5), {
+               { "emac1", 2 },
+       } },
+       { SXIPIO_PIN(A, 6), {
+               { "emac1", 2 },
+       } },
+       { SXIPIO_PIN(A, 7), {
+               { "emac1", 2 },
+       } },
+       { SXIPIO_PIN(A, 8), {
+               { "emac1", 2 },
+       } },
+       { SXIPIO_PIN(A, 9), {
+               { "emac1", 2 },
+       } },
+       { SXIPIO_PIN(A, 10), {
+               { "i2c3", 2 },
+       } },
+       { SXIPIO_PIN(A, 11), {
+               { "i2c3", 2 },
+       } },
+       { SXIPIO_PIN(A, 12), {
+               { "pwm5", 2 },
+       } },
+       { SXIPIO_PIN(C, 0), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "nand0", 2 },
+               { "mmc2", 3 },
+               { "spi0", 4 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(C, 1), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "nand0", 2 },
+               { "mmc2", 3 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(C, 2), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "nand0", 2 },
+               { "spi0", 4 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(C, 3), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "nand0", 2 },
+               { "spi0", 4 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(C, 4), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "nand0", 2 },
+               { "spi0", 4 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(C, 5), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "nand0", 2 },
+               { "mmc2", 3 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(C, 6), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "nand0", 2 },
+               { "mmc2", 3 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(C, 7), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "nand0", 2 },
+               { "spi0", 4 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(C, 8), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "nand0", 2 },
+               { "mmc2", 3 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(C, 9), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "nand0", 2 },
+               { "mmc2", 3 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(C, 10), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "nand0", 2 },
+               { "mmc2", 3 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(C, 11), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "nand0", 2 },
+               { "mmc2", 3 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(C, 12), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "nand0", 2 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(C, 13), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "nand0", 2 },
+               { "mmc2", 3 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(C, 14), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "nand0", 2 },
+               { "mmc2", 3 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(C, 15), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "nand0", 2 },
+               { "mmc2", 3 },
+               { "spi0", 4 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(C, 16), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "nand0", 2 },
+               { "mmc2", 3 },
+               { "spi0", 4 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(F, 0), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "mmc0", 2 },
+               { "jtag", 3 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(F, 1), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "mmc0", 2 },
+               { "jtag", 3 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(F, 2), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "mmc0", 2 },
+               { "uart0", 3 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(F, 3), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "mmc0", 2 },
+               { "jtag", 3 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(F, 4), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "mmc0", 2 },
+               { "uart0", 3 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(F, 5), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "mmc0", 2 },
+               { "jtag", 3 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(F, 6), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "irq", 6 },
+       } },
+       { 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 },
+               { "jtag", 4 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(G, 7), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "uart1", 2 },
+               { "jtag", 4 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(G, 8), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "uart1", 2 },
+               { "clock", 3 },
+               { "jtag", 4 },
+               { "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 },
+               { "i2s2", 2 },
+               { "clock", 3 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(G, 11), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "i2s2", 2 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(G, 12), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "i2s2", 2 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(G, 13), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "i2s2", 2 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(G, 14), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "i2s2", 2 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(G, 15), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "uart2", 2 },
+               { "i2c4", 5 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(G, 16), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "uart2", 2 },
+               { "i2c4", 5 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(G, 17), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "uart2", 2 },
+               { "i2c3", 5 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(G, 18), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "uart2", 2 },
+               { "i2c3", 5 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(G, 19), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "pwm1", 4 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(H, 0), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "uart0", 2 },
+               { "pwm3", 4 },
+               { "i2c1", 5 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(H, 1), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "uart0", 2 },
+               { "pwm4", 4 },
+               { "i2c1", 5 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(H, 2), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "uart5", 2 },
+               { "spdif", 3 },
+               { "pwm2", 4 },
+               { "i2c2", 5 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(H, 3), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "uart5", 2 },
+               { "pwm1", 4 },
+               { "i2c2", 5 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(H, 4), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "spdif", 3 },
+               { "i2c3", 5 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(H, 5), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "uart2", 2 },
+               { "i2s3", 3 },
+               { "spi1", 4 },
+               { "i2c3", 5 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(H, 6), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "uart2", 2 },
+               { "i2s3", 3 },
+               { "spi1", 4 },
+               { "i2c4", 5 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(H, 7), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "uart2", 2 },
+               { "i2s3", 3 },
+               { "spi1", 4 },
+               { "i2c4", 5 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(H, 8), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "uart2", 2 },
+               { "i2s3_dout0", 3 },
+               { "spi1", 4 },
+               { "i2s3_din1", 5 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(H, 9), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "i2s3_din0", 3 },
+               { "spi1", 4 },
+               { "i2s3_dout1", 5 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(H, 10), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "ir_rx", 3 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(I, 0), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "emac0", 2 },
+               { "dmic", 3 },
+               { "i2s0", 4 },
+               { "hdmi", 5 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(I, 1), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "emac0", 2 },
+               { "dmic", 3 },
+               { "i2s0", 4 },
+               { "hdmi", 5 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(I, 2), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "emac0", 2 },
+               { "dmic", 3 },
+               { "i2s0", 4 },
+               { "hdmi", 5 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(I, 3), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "emac0", 2 },
+               { "dmic", 3 },
+               { "i2s0_dout0", 4 },
+               { "i2s0_din1", 5 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(I, 4), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "emac0", 2 },
+               { "dmic", 3 },
+               { "i2s0_din0", 4 },
+               { "i2s0_dout1", 5 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(I, 5), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "emac0", 2 },
+               { "uart2", 3 },
+               { "ts0", 4 },
+               { "i2c0", 5 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(I, 6), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "emac0", 2 },
+               { "uart2", 3 },
+               { "ts0", 4 },
+               { "i2c0", 5 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(I, 7), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "emac0", 2 },
+               { "uart2", 3 },
+               { "ts0", 4 },
+               { "i2c1", 5 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(I, 8), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "emac0", 2 },
+               { "uart2", 3 },
+               { "ts0", 4 },
+               { "i2c1", 5 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(I, 9), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "emac0", 2 },
+               { "uart3", 3 },
+               { "ts0", 4 },
+               { "i2c2", 5 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(I, 10), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "emac0", 2 },
+               { "uart3", 3 },
+               { "ts0", 4 },
+               { "i2c2", 5 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(I, 11), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "emac0", 2 },
+               { "uart3", 3 },
+               { "ts0", 4 },
+               { "pwm1", 5 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(I, 12), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "emac0", 2 },
+               { "uart3", 3 },
+               { "ts0", 4 },
+               { "pwm2", 5 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(I, 13), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "emac0", 2 },
+               { "uart4", 3 },
+               { "ts0", 4 },
+               { "pwm3", 5 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(I, 14), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "emac0", 2 },
+               { "uart4", 3 },
+               { "ts0", 4 },
+               { "pwm4", 5 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(I, 15), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "emac0", 2 },
+               { "uart4", 3 },
+               { "ts0", 4 },
+               { "clock", 5 },
+               { "irq", 6 },
+       } },
+       { SXIPIO_PIN(I, 16), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "emac0", 2 },
+               { "uart4", 3 },
+               { "ts0", 4 },
+               { "clock", 5 },
+               { "irq", 6 },
+       } },
+};
+
+const struct sxipio_pin sun50i_h616_r_pins[] = {
+       { SXIPIO_PIN(L, 0), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "s_rsb", 2 },
+               { "s_i2c", 3 },
+       } },
+       { SXIPIO_PIN(L, 1), {
+               { "gpio_in", 0 },
+               { "gpio_out", 1 },
+               { "s_rsb", 2 },
+               { "s_i2c", 3 },
+       } },
+};