xref: /openbmc/linux/drivers/pinctrl/sunxi/pinctrl-sun50i-h616.c (revision c900529f3d9161bfde5cca0754f83b4d3c3e0220)
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