125adc294SAndre Przywara // SPDX-License-Identifier: GPL-2.0
225adc294SAndre Przywara /*
325adc294SAndre Przywara * Allwinner H616 SoC pinctrl driver.
425adc294SAndre Przywara *
525adc294SAndre Przywara * Copyright (C) 2020 Arm Ltd.
625adc294SAndre Przywara * based on the H6 pinctrl driver
725adc294SAndre Przywara * Copyright (C) 2017 Icenowy Zheng <icenowy@aosc.io>
825adc294SAndre Przywara */
925adc294SAndre Przywara
1025adc294SAndre Przywara #include <linux/module.h>
1125adc294SAndre Przywara #include <linux/platform_device.h>
1225adc294SAndre Przywara #include <linux/of.h>
1325adc294SAndre Przywara #include <linux/pinctrl/pinctrl.h>
1425adc294SAndre Przywara
1525adc294SAndre Przywara #include "pinctrl-sunxi.h"
1625adc294SAndre Przywara
1725adc294SAndre Przywara static const struct sunxi_desc_pin h616_pins[] = {
1825adc294SAndre Przywara /* Internal connection to the AC200 part */
1925adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(A, 0),
2025adc294SAndre Przywara SUNXI_FUNCTION(0x2, "emac1")), /* ERXD1 */
2125adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(A, 1),
2225adc294SAndre Przywara SUNXI_FUNCTION(0x2, "emac1")), /* ERXD0 */
2325adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(A, 2),
2425adc294SAndre Przywara SUNXI_FUNCTION(0x2, "emac1")), /* ECRS_DV */
2525adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(A, 3),
2625adc294SAndre Przywara SUNXI_FUNCTION(0x2, "emac1")), /* ERXERR */
2725adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(A, 4),
2825adc294SAndre Przywara SUNXI_FUNCTION(0x2, "emac1")), /* ETXD1 */
2925adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(A, 5),
3025adc294SAndre Przywara SUNXI_FUNCTION(0x2, "emac1")), /* ETXD0 */
3125adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(A, 6),
3225adc294SAndre Przywara SUNXI_FUNCTION(0x2, "emac1")), /* ETXCK */
3325adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(A, 7),
3425adc294SAndre Przywara SUNXI_FUNCTION(0x2, "emac1")), /* ETXEN */
3525adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(A, 8),
3625adc294SAndre Przywara SUNXI_FUNCTION(0x2, "emac1")), /* EMDC */
3725adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(A, 9),
3825adc294SAndre Przywara SUNXI_FUNCTION(0x2, "emac1")), /* EMDIO */
3925adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(A, 10),
4025adc294SAndre Przywara SUNXI_FUNCTION(0x2, "i2c3")), /* SCK */
4125adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(A, 11),
4225adc294SAndre Przywara SUNXI_FUNCTION(0x2, "i2c3")), /* SDA */
4325adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(A, 12),
4425adc294SAndre Przywara SUNXI_FUNCTION(0x2, "pwm5")),
4525adc294SAndre Przywara /* Hole */
4625adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 0),
4725adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
4825adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
4925adc294SAndre Przywara SUNXI_FUNCTION(0x2, "nand0"), /* WE */
5025adc294SAndre Przywara SUNXI_FUNCTION(0x3, "mmc2"), /* DS */
5125adc294SAndre Przywara SUNXI_FUNCTION(0x4, "spi0"), /* CLK */
5225adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 0)), /* PC_EINT0 */
5325adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 1),
5425adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
5525adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
5625adc294SAndre Przywara SUNXI_FUNCTION(0x2, "nand0"), /* ALE */
5725adc294SAndre Przywara SUNXI_FUNCTION(0x3, "mmc2"), /* RST */
5825adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 1)), /* PC_EINT1 */
5925adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 2),
6025adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
6125adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
6225adc294SAndre Przywara SUNXI_FUNCTION(0x2, "nand0"), /* CLE */
6325adc294SAndre Przywara SUNXI_FUNCTION(0x4, "spi0"), /* MOSI */
6425adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 2)), /* PC_EINT2 */
6525adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 3),
6625adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
6725adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
6825adc294SAndre Przywara SUNXI_FUNCTION(0x2, "nand0"), /* CE1 */
6925adc294SAndre Przywara SUNXI_FUNCTION(0x4, "spi0"), /* CS0 */
7025adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 3)), /* PC_EINT3 */
7125adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 4),
7225adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
7325adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
7425adc294SAndre Przywara SUNXI_FUNCTION(0x2, "nand0"), /* CE0 */
7525adc294SAndre Przywara SUNXI_FUNCTION(0x4, "spi0"), /* MISO */
7625adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 4)), /* PC_EINT4 */
7725adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 5),
7825adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
7925adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
8025adc294SAndre Przywara SUNXI_FUNCTION(0x2, "nand0"), /* RE */
8125adc294SAndre Przywara SUNXI_FUNCTION(0x3, "mmc2"), /* CLK */
8225adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 5)), /* PC_EINT5 */
8325adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 6),
8425adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
8525adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
8625adc294SAndre Przywara SUNXI_FUNCTION(0x2, "nand0"), /* RB0 */
8725adc294SAndre Przywara SUNXI_FUNCTION(0x3, "mmc2"), /* CMD */
8825adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 6)), /* PC_EINT6 */
8925adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 7),
9025adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
9125adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
9225adc294SAndre Przywara SUNXI_FUNCTION(0x2, "nand0"), /* RB1 */
9325adc294SAndre Przywara SUNXI_FUNCTION(0x4, "spi0"), /* CS1 */
9425adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 7)), /* PC_EINT7 */
9525adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 8),
9625adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
9725adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
9825adc294SAndre Przywara SUNXI_FUNCTION(0x2, "nand0"), /* DQ7 */
9925adc294SAndre Przywara SUNXI_FUNCTION(0x3, "mmc2"), /* D3 */
10025adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 8)), /* PC_EINT8 */
10125adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 9),
10225adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
10325adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
10425adc294SAndre Przywara SUNXI_FUNCTION(0x2, "nand0"), /* DQ6 */
10525adc294SAndre Przywara SUNXI_FUNCTION(0x3, "mmc2"), /* D4 */
10625adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 9)), /* PC_EINT9 */
10725adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 10),
10825adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
10925adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
11025adc294SAndre Przywara SUNXI_FUNCTION(0x2, "nand0"), /* DQ5 */
11125adc294SAndre Przywara SUNXI_FUNCTION(0x3, "mmc2"), /* D0 */
11225adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 10)), /* PC_EINT10 */
11325adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 11),
11425adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
11525adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
11625adc294SAndre Przywara SUNXI_FUNCTION(0x2, "nand0"), /* DQ4 */
11725adc294SAndre Przywara SUNXI_FUNCTION(0x3, "mmc2"), /* D5 */
11825adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 11)), /* PC_EINT11 */
11925adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 12),
12025adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
12125adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
12225adc294SAndre Przywara SUNXI_FUNCTION(0x2, "nand0"), /* DQS */
12325adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 12)), /* PC_EINT12 */
12425adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 13),
12525adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
12625adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
12725adc294SAndre Przywara SUNXI_FUNCTION(0x2, "nand0"), /* DQ3 */
12825adc294SAndre Przywara SUNXI_FUNCTION(0x3, "mmc2"), /* D1 */
12925adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 13)), /* PC_EINT13 */
13025adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 14),
13125adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
13225adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
13325adc294SAndre Przywara SUNXI_FUNCTION(0x2, "nand0"), /* DQ2 */
13425adc294SAndre Przywara SUNXI_FUNCTION(0x3, "mmc2"), /* D6 */
13525adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 14)), /* PC_EINT14 */
13625adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 15),
13725adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
13825adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
13925adc294SAndre Przywara SUNXI_FUNCTION(0x2, "nand0"), /* DQ1 */
14025adc294SAndre Przywara SUNXI_FUNCTION(0x3, "mmc2"), /* D2 */
14125adc294SAndre Przywara SUNXI_FUNCTION(0x4, "spi0"), /* WP */
14225adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 15)), /* PC_EINT15 */
14325adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 16),
14425adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
14525adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
14625adc294SAndre Przywara SUNXI_FUNCTION(0x2, "nand0"), /* DQ0 */
14725adc294SAndre Przywara SUNXI_FUNCTION(0x3, "mmc2"), /* D7 */
14825adc294SAndre Przywara SUNXI_FUNCTION(0x4, "spi0"), /* HOLD */
14925adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 16)), /* PC_EINT16 */
15025adc294SAndre Przywara /* Hole */
15125adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 0),
15225adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
15325adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
15425adc294SAndre Przywara SUNXI_FUNCTION(0x2, "mmc0"), /* D1 */
15525adc294SAndre Przywara SUNXI_FUNCTION(0x3, "jtag"), /* MS */
15625adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 4, 0)), /* PF_EINT0 */
15725adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 1),
15825adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
15925adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
16025adc294SAndre Przywara SUNXI_FUNCTION(0x2, "mmc0"), /* D0 */
16125adc294SAndre Przywara SUNXI_FUNCTION(0x3, "jtag"), /* DI */
16225adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 4, 1)), /* PF_EINT1 */
16325adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 2),
16425adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
16525adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
16625adc294SAndre Przywara SUNXI_FUNCTION(0x2, "mmc0"), /* CLK */
16725adc294SAndre Przywara SUNXI_FUNCTION(0x3, "uart0"), /* TX */
16825adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 4, 2)), /* PF_EINT2 */
16925adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 3),
17025adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
17125adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
17225adc294SAndre Przywara SUNXI_FUNCTION(0x2, "mmc0"), /* CMD */
17325adc294SAndre Przywara SUNXI_FUNCTION(0x3, "jtag"), /* DO */
17425adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 4, 3)), /* PF_EINT3 */
17525adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 4),
17625adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
17725adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
17825adc294SAndre Przywara SUNXI_FUNCTION(0x2, "mmc0"), /* D3 */
17925adc294SAndre Przywara SUNXI_FUNCTION(0x3, "uart0"), /* RX */
18025adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 4, 4)), /* PF_EINT4 */
18125adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 5),
18225adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
18325adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
18425adc294SAndre Przywara SUNXI_FUNCTION(0x2, "mmc0"), /* D2 */
18525adc294SAndre Przywara SUNXI_FUNCTION(0x3, "jtag"), /* CK */
18625adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 4, 5)), /* PF_EINT5 */
18725adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 6),
18825adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
18925adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
19025adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 4, 6)), /* PF_EINT6 */
19125adc294SAndre Przywara /* Hole */
19225adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 0),
19325adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
19425adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
19525adc294SAndre Przywara SUNXI_FUNCTION(0x2, "mmc1"), /* CLK */
19625adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 0)), /* PG_EINT0 */
19725adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 1),
19825adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
19925adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
20025adc294SAndre Przywara SUNXI_FUNCTION(0x2, "mmc1"), /* CMD */
20125adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 1)), /* PG_EINT1 */
20225adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 2),
20325adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
20425adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
20525adc294SAndre Przywara SUNXI_FUNCTION(0x2, "mmc1"), /* D0 */
20625adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 2)), /* PG_EINT2 */
20725adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 3),
20825adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
20925adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
21025adc294SAndre Przywara SUNXI_FUNCTION(0x2, "mmc1"), /* D1 */
21125adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 3)), /* PG_EINT3 */
21225adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 4),
21325adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
21425adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
21525adc294SAndre Przywara SUNXI_FUNCTION(0x2, "mmc1"), /* D2 */
21625adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 4)), /* PG_EINT4 */
21725adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 5),
21825adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
21925adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
22025adc294SAndre Przywara SUNXI_FUNCTION(0x2, "mmc1"), /* D3 */
22125adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 5)), /* PG_EINT5 */
22225adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 6),
22325adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
22425adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
22525adc294SAndre Przywara SUNXI_FUNCTION(0x2, "uart1"), /* TX */
22625adc294SAndre Przywara SUNXI_FUNCTION(0x4, "jtag"), /* MS */
22725adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 6)), /* PG_EINT6 */
22825adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 7),
22925adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
23025adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
23125adc294SAndre Przywara SUNXI_FUNCTION(0x2, "uart1"), /* RX */
23225adc294SAndre Przywara SUNXI_FUNCTION(0x4, "jtag"), /* CK */
23325adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 7)), /* PG_EINT7 */
23425adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 8),
23525adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
23625adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
23725adc294SAndre Przywara SUNXI_FUNCTION(0x2, "uart1"), /* RTS */
23825adc294SAndre Przywara SUNXI_FUNCTION(0x3, "clock"), /* PLL_LOCK_DEBUG */
23925adc294SAndre Przywara SUNXI_FUNCTION(0x4, "jtag"), /* DO */
24025adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 8)), /* PG_EINT8 */
24125adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 9),
24225adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
24325adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
24425adc294SAndre Przywara SUNXI_FUNCTION(0x2, "uart1"), /* CTS */
24525adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 9)), /* PG_EINT9 */
24625adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 10),
24725adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
24825adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
24925adc294SAndre Przywara SUNXI_FUNCTION(0x2, "i2s2"), /* MCLK */
25025adc294SAndre Przywara SUNXI_FUNCTION(0x3, "clock"), /* X32KFOUT */
25125adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 10)), /* PG_EINT10 */
25225adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 11),
25325adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
25425adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
25525adc294SAndre Przywara SUNXI_FUNCTION(0x2, "i2s2"), /* BCLK */
25625adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 11)), /* PG_EINT11 */
25725adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 12),
25825adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
25925adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
26025adc294SAndre Przywara SUNXI_FUNCTION(0x2, "i2s2"), /* SYNC */
26125adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 12)), /* PG_EINT12 */
26225adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 13),
26325adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
26425adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
26525adc294SAndre Przywara SUNXI_FUNCTION(0x2, "i2s2"), /* DOUT */
26625adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 13)), /* PG_EINT13 */
26725adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 14),
26825adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
26925adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
27025adc294SAndre Przywara SUNXI_FUNCTION(0x2, "i2s2"), /* DIN */
27125adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 14)), /* PG_EINT14 */
27225adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 15),
27325adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
27425adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
27525adc294SAndre Przywara SUNXI_FUNCTION(0x2, "uart2"), /* TX */
27625adc294SAndre Przywara SUNXI_FUNCTION(0x5, "i2c4"), /* SCK */
27725adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 15)), /* PG_EINT15 */
27825adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 16),
27925adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
28025adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
28125adc294SAndre Przywara SUNXI_FUNCTION(0x2, "uart2"), /* RX */
28225adc294SAndre Przywara SUNXI_FUNCTION(0x5, "i2c4"), /* SDA */
28325adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 16)), /* PG_EINT16 */
28425adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 17),
28525adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
28625adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
28725adc294SAndre Przywara SUNXI_FUNCTION(0x2, "uart2"), /* RTS */
28825adc294SAndre Przywara SUNXI_FUNCTION(0x5, "i2c3"), /* SCK */
28925adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 17)), /* PG_EINT17 */
29025adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 18),
29125adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
29225adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
29325adc294SAndre Przywara SUNXI_FUNCTION(0x2, "uart2"), /* CTS */
29425adc294SAndre Przywara SUNXI_FUNCTION(0x5, "i2c3"), /* SDA */
29525adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 18)), /* PG_EINT18 */
29625adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 19),
29725adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
29825adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
29925adc294SAndre Przywara SUNXI_FUNCTION(0x4, "pwm1"),
30025adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 19)), /* PG_EINT19 */
30125adc294SAndre Przywara /* Hole */
30225adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 0),
30325adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
30425adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
30525adc294SAndre Przywara SUNXI_FUNCTION(0x2, "uart0"), /* TX */
30625adc294SAndre Przywara SUNXI_FUNCTION(0x4, "pwm3"),
30725adc294SAndre Przywara SUNXI_FUNCTION(0x5, "i2c1"), /* SCK */
30825adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 6, 0)), /* PH_EINT0 */
30925adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 1),
31025adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
31125adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
31225adc294SAndre Przywara SUNXI_FUNCTION(0x2, "uart0"), /* RX */
31325adc294SAndre Przywara SUNXI_FUNCTION(0x4, "pwm4"),
31425adc294SAndre Przywara SUNXI_FUNCTION(0x5, "i2c1"), /* SDA */
31525adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 6, 1)), /* PH_EINT1 */
31625adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 2),
31725adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
31825adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
31925adc294SAndre Przywara SUNXI_FUNCTION(0x2, "uart5"), /* TX */
32025adc294SAndre Przywara SUNXI_FUNCTION(0x3, "spdif"), /* MCLK */
32125adc294SAndre Przywara SUNXI_FUNCTION(0x4, "pwm2"),
32225adc294SAndre Przywara SUNXI_FUNCTION(0x5, "i2c2"), /* SCK */
32325adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 6, 2)), /* PH_EINT2 */
32425adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 3),
32525adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
32625adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
32725adc294SAndre Przywara SUNXI_FUNCTION(0x2, "uart5"), /* RX */
32825adc294SAndre Przywara SUNXI_FUNCTION(0x4, "pwm1"),
32925adc294SAndre Przywara SUNXI_FUNCTION(0x5, "i2c2"), /* SDA */
33025adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 6, 3)), /* PH_EINT3 */
33125adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 4),
33225adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
33325adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
33425adc294SAndre Przywara SUNXI_FUNCTION(0x3, "spdif"), /* OUT */
33525adc294SAndre Przywara SUNXI_FUNCTION(0x5, "i2c3"), /* SCK */
33625adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 6, 4)), /* PH_EINT4 */
33725adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 5),
33825adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
33925adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
34025adc294SAndre Przywara SUNXI_FUNCTION(0x2, "uart2"), /* TX */
34125adc294SAndre Przywara SUNXI_FUNCTION(0x3, "i2s3"), /* MCLK */
34225adc294SAndre Przywara SUNXI_FUNCTION(0x4, "spi1"), /* CS0 */
34325adc294SAndre Przywara SUNXI_FUNCTION(0x5, "i2c3"), /* SDA */
34425adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 6, 5)), /* PH_EINT5 */
34525adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 6),
34625adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
34725adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
34825adc294SAndre Przywara SUNXI_FUNCTION(0x2, "uart2"), /* RX */
34925adc294SAndre Przywara SUNXI_FUNCTION(0x3, "i2s3"), /* BCLK */
35025adc294SAndre Przywara SUNXI_FUNCTION(0x4, "spi1"), /* CLK */
35125adc294SAndre Przywara SUNXI_FUNCTION(0x5, "i2c4"), /* SCK */
35225adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 6, 6)), /* PH_EINT6 */
35325adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 7),
35425adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
35525adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
35625adc294SAndre Przywara SUNXI_FUNCTION(0x2, "uart2"), /* RTS */
35725adc294SAndre Przywara SUNXI_FUNCTION(0x3, "i2s3"), /* SYNC */
35825adc294SAndre Przywara SUNXI_FUNCTION(0x4, "spi1"), /* MOSI */
35925adc294SAndre Przywara SUNXI_FUNCTION(0x5, "i2c4"), /* SDA */
36025adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 6, 7)), /* PH_EINT7 */
36125adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 8),
36225adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
36325adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
36425adc294SAndre Przywara SUNXI_FUNCTION(0x2, "uart2"), /* CTS */
3651fd6bb5bSAndre Przywara SUNXI_FUNCTION(0x3, "i2s3_dout0"), /* DO0 */
36625adc294SAndre Przywara SUNXI_FUNCTION(0x4, "spi1"), /* MISO */
3671fd6bb5bSAndre Przywara SUNXI_FUNCTION(0x5, "i2s3_din1"), /* DI1 */
36825adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 6, 8)), /* PH_EINT8 */
36925adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 9),
37025adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
37125adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
3721fd6bb5bSAndre Przywara SUNXI_FUNCTION(0x3, "i2s3_din0"), /* DI0 */
37325adc294SAndre Przywara SUNXI_FUNCTION(0x4, "spi1"), /* CS1 */
3741fd6bb5bSAndre Przywara SUNXI_FUNCTION(0x5, "i2s3_dout1"), /* DO1 */
37525adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 6, 9)), /* PH_EINT9 */
37625adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 10),
37725adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
37825adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
37925adc294SAndre Przywara SUNXI_FUNCTION(0x3, "ir_rx"),
38025adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 6, 10)), /* PH_EINT10 */
38125adc294SAndre Przywara /* Hole */
38225adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 0),
38325adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
38425adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
38525adc294SAndre Przywara SUNXI_FUNCTION(0x2, "emac0"), /* ERXD3 */
38625adc294SAndre Przywara SUNXI_FUNCTION(0x3, "dmic"), /* CLK */
38725adc294SAndre Przywara SUNXI_FUNCTION(0x4, "i2s0"), /* MCLK */
38825adc294SAndre Przywara SUNXI_FUNCTION(0x5, "hdmi"), /* HSCL */
38925adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 7, 0)), /* PI_EINT0 */
39025adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 1),
39125adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
39225adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
39325adc294SAndre Przywara SUNXI_FUNCTION(0x2, "emac0"), /* ERXD2 */
39425adc294SAndre Przywara SUNXI_FUNCTION(0x3, "dmic"), /* DATA0 */
39525adc294SAndre Przywara SUNXI_FUNCTION(0x4, "i2s0"), /* BCLK */
39625adc294SAndre Przywara SUNXI_FUNCTION(0x5, "hdmi"), /* HSDA */
39725adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 7, 1)), /* PI_EINT1 */
39825adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 2),
39925adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
40025adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
40125adc294SAndre Przywara SUNXI_FUNCTION(0x2, "emac0"), /* ERXD1 */
40225adc294SAndre Przywara SUNXI_FUNCTION(0x3, "dmic"), /* DATA1 */
40325adc294SAndre Przywara SUNXI_FUNCTION(0x4, "i2s0"), /* SYNC */
40425adc294SAndre Przywara SUNXI_FUNCTION(0x5, "hdmi"), /* HCEC */
40525adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 7, 2)), /* PI_EINT2 */
40625adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 3),
40725adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
40825adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
40925adc294SAndre Przywara SUNXI_FUNCTION(0x2, "emac0"), /* ERXD0 */
41025adc294SAndre Przywara SUNXI_FUNCTION(0x3, "dmic"), /* DATA2 */
41125adc294SAndre Przywara SUNXI_FUNCTION(0x4, "i2s0_dout0"), /* DO0 */
41225adc294SAndre Przywara SUNXI_FUNCTION(0x5, "i2s0_din1"), /* DI1 */
41325adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 7, 3)), /* PI_EINT3 */
41425adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 4),
41525adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
41625adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
41725adc294SAndre Przywara SUNXI_FUNCTION(0x2, "emac0"), /* ERXCK */
41825adc294SAndre Przywara SUNXI_FUNCTION(0x3, "dmic"), /* DATA3 */
41925adc294SAndre Przywara SUNXI_FUNCTION(0x4, "i2s0_din0"), /* DI0 */
42025adc294SAndre Przywara SUNXI_FUNCTION(0x5, "i2s0_dout1"), /* DO1 */
42125adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 7, 4)), /* PI_EINT4 */
42225adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 5),
42325adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
42425adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
42525adc294SAndre Przywara SUNXI_FUNCTION(0x2, "emac0"), /* ERXCTL */
42625adc294SAndre Przywara SUNXI_FUNCTION(0x3, "uart2"), /* TX */
42725adc294SAndre Przywara SUNXI_FUNCTION(0x4, "ts0"), /* CLK */
42825adc294SAndre Przywara SUNXI_FUNCTION(0x5, "i2c0"), /* SCK */
42925adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 7, 5)), /* PI_EINT5 */
43025adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 6),
43125adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
43225adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
43325adc294SAndre Przywara SUNXI_FUNCTION(0x2, "emac0"), /* ENULL */
43425adc294SAndre Przywara SUNXI_FUNCTION(0x3, "uart2"), /* RX */
43525adc294SAndre Przywara SUNXI_FUNCTION(0x4, "ts0"), /* ERR */
43625adc294SAndre Przywara SUNXI_FUNCTION(0x5, "i2c0"), /* SDA */
43725adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 7, 6)), /* PI_EINT6 */
43825adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 7),
43925adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
44025adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
44125adc294SAndre Przywara SUNXI_FUNCTION(0x2, "emac0"), /* ETXD3 */
44225adc294SAndre Przywara SUNXI_FUNCTION(0x3, "uart2"), /* RTS */
44325adc294SAndre Przywara SUNXI_FUNCTION(0x4, "ts0"), /* SYNC */
44425adc294SAndre Przywara SUNXI_FUNCTION(0x5, "i2c1"), /* SCK */
44525adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 7, 7)), /* PI_EINT7 */
44625adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 8),
44725adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
44825adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
44925adc294SAndre Przywara SUNXI_FUNCTION(0x2, "emac0"), /* ETXD2 */
45025adc294SAndre Przywara SUNXI_FUNCTION(0x3, "uart2"), /* CTS */
45125adc294SAndre Przywara SUNXI_FUNCTION(0x4, "ts0"), /* DVLD */
45225adc294SAndre Przywara SUNXI_FUNCTION(0x5, "i2c1"), /* SDA */
45325adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 7, 8)), /* PI_EINT8 */
45425adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 9),
45525adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
45625adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
45725adc294SAndre Przywara SUNXI_FUNCTION(0x2, "emac0"), /* ETXD1 */
45825adc294SAndre Przywara SUNXI_FUNCTION(0x3, "uart3"), /* TX */
45925adc294SAndre Przywara SUNXI_FUNCTION(0x4, "ts0"), /* D0 */
46025adc294SAndre Przywara SUNXI_FUNCTION(0x5, "i2c2"), /* SCK */
46125adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 7, 9)), /* PI_EINT9 */
46225adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 10),
46325adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
46425adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
46525adc294SAndre Przywara SUNXI_FUNCTION(0x2, "emac0"), /* ETXD0 */
46625adc294SAndre Przywara SUNXI_FUNCTION(0x3, "uart3"), /* RX */
46725adc294SAndre Przywara SUNXI_FUNCTION(0x4, "ts0"), /* D1 */
46825adc294SAndre Przywara SUNXI_FUNCTION(0x5, "i2c2"), /* SDA */
46925adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 7, 10)), /* PI_EINT10 */
47025adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 11),
47125adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
47225adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
47325adc294SAndre Przywara SUNXI_FUNCTION(0x2, "emac0"), /* ETXCK */
47425adc294SAndre Przywara SUNXI_FUNCTION(0x3, "uart3"), /* RTS */
47525adc294SAndre Przywara SUNXI_FUNCTION(0x4, "ts0"), /* D2 */
47625adc294SAndre Przywara SUNXI_FUNCTION(0x5, "pwm1"),
47725adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 7, 11)), /* PI_EINT11 */
47825adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 12),
47925adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
48025adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
48125adc294SAndre Przywara SUNXI_FUNCTION(0x2, "emac0"), /* ETXCTL */
48225adc294SAndre Przywara SUNXI_FUNCTION(0x3, "uart3"), /* CTS */
48325adc294SAndre Przywara SUNXI_FUNCTION(0x4, "ts0"), /* D3 */
48425adc294SAndre Przywara SUNXI_FUNCTION(0x5, "pwm2"),
48525adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 7, 12)), /* PI_EINT12 */
48625adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 13),
48725adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
48825adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
48925adc294SAndre Przywara SUNXI_FUNCTION(0x2, "emac0"), /* ECLKIN */
49025adc294SAndre Przywara SUNXI_FUNCTION(0x3, "uart4"), /* TX */
49125adc294SAndre Przywara SUNXI_FUNCTION(0x4, "ts0"), /* D4 */
49225adc294SAndre Przywara SUNXI_FUNCTION(0x5, "pwm3"),
49325adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 7, 13)), /* PI_EINT13 */
49425adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 14),
49525adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
49625adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
49725adc294SAndre Przywara SUNXI_FUNCTION(0x2, "emac0"), /* MDC */
49825adc294SAndre Przywara SUNXI_FUNCTION(0x3, "uart4"), /* RX */
49925adc294SAndre Przywara SUNXI_FUNCTION(0x4, "ts0"), /* D5 */
50025adc294SAndre Przywara SUNXI_FUNCTION(0x5, "pwm4"),
50125adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 7, 14)), /* PI_EINT14 */
50225adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 15),
50325adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
50425adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
50525adc294SAndre Przywara SUNXI_FUNCTION(0x2, "emac0"), /* MDIO */
50625adc294SAndre Przywara SUNXI_FUNCTION(0x3, "uart4"), /* RTS */
50725adc294SAndre Przywara SUNXI_FUNCTION(0x4, "ts0"), /* D6 */
50825adc294SAndre Przywara SUNXI_FUNCTION(0x5, "clock"), /* CLK_FANOUT0 */
50925adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 7, 15)), /* PI_EINT15 */
51025adc294SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 16),
51125adc294SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"),
51225adc294SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"),
51325adc294SAndre Przywara SUNXI_FUNCTION(0x2, "emac0"), /* EPHY_CLK */
51425adc294SAndre Przywara SUNXI_FUNCTION(0x3, "uart4"), /* CTS */
51525adc294SAndre Przywara SUNXI_FUNCTION(0x4, "ts0"), /* D7 */
51625adc294SAndre Przywara SUNXI_FUNCTION(0x5, "clock"), /* CLK_FANOUT1 */
51725adc294SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 7, 16)), /* PI_EINT16 */
51825adc294SAndre Przywara };
51925adc294SAndre Przywara static const unsigned int h616_irq_bank_map[] = { 0, 2, 3, 4, 5, 6, 7, 8 };
52025adc294SAndre Przywara
52125adc294SAndre Przywara static const struct sunxi_pinctrl_desc h616_pinctrl_data = {
52225adc294SAndre Przywara .pins = h616_pins,
52325adc294SAndre Przywara .npins = ARRAY_SIZE(h616_pins),
52425adc294SAndre Przywara .irq_banks = ARRAY_SIZE(h616_irq_bank_map),
52525adc294SAndre Przywara .irq_bank_map = h616_irq_bank_map,
52625adc294SAndre Przywara .irq_read_needs_mux = true,
527*88df36f2SSamuel Holland .io_bias_cfg_variant = BIAS_VOLTAGE_PIO_POW_MODE_CTL,
52825adc294SAndre Przywara };
52925adc294SAndre Przywara
h616_pinctrl_probe(struct platform_device * pdev)53025adc294SAndre Przywara static int h616_pinctrl_probe(struct platform_device *pdev)
53125adc294SAndre Przywara {
53225adc294SAndre Przywara return sunxi_pinctrl_init(pdev, &h616_pinctrl_data);
53325adc294SAndre Przywara }
53425adc294SAndre Przywara
53525adc294SAndre Przywara static const struct of_device_id h616_pinctrl_match[] = {
53625adc294SAndre Przywara { .compatible = "allwinner,sun50i-h616-pinctrl", },
53725adc294SAndre Przywara {}
53825adc294SAndre Przywara };
53925adc294SAndre Przywara
54025adc294SAndre Przywara static struct platform_driver h616_pinctrl_driver = {
54125adc294SAndre Przywara .probe = h616_pinctrl_probe,
54225adc294SAndre Przywara .driver = {
54325adc294SAndre Przywara .name = "sun50i-h616-pinctrl",
54425adc294SAndre Przywara .of_match_table = h616_pinctrl_match,
54525adc294SAndre Przywara },
54625adc294SAndre Przywara };
54725adc294SAndre Przywara builtin_platform_driver(h616_pinctrl_driver);
548