17164873eSVishnu Patekar /* 27164873eSVishnu Patekar * Allwinner a33 SoCs pinctrl driver. 37164873eSVishnu Patekar * 47164873eSVishnu Patekar * Copyright (C) 2015 Vishnu Patekar <vishnupatekar0510@gmail.com> 57164873eSVishnu Patekar * 67164873eSVishnu Patekar * Based on pinctrl-sun8i-a23.c, which is: 77164873eSVishnu Patekar * Copyright (C) 2014 Chen-Yu Tsai <wens@csie.org> 87164873eSVishnu Patekar * Copyright (C) 2014 Maxime Ripard <maxime.ripard@free-electrons.com> 97164873eSVishnu Patekar * 107164873eSVishnu Patekar * This file is licensed under the terms of the GNU General Public 117164873eSVishnu Patekar * License version 2. This program is licensed "as is" without any 127164873eSVishnu Patekar * warranty of any kind, whether express or implied. 137164873eSVishnu Patekar */ 147164873eSVishnu Patekar 157164873eSVishnu Patekar #include <linux/module.h> 167164873eSVishnu Patekar #include <linux/platform_device.h> 177164873eSVishnu Patekar #include <linux/of.h> 187164873eSVishnu Patekar #include <linux/of_device.h> 197164873eSVishnu Patekar #include <linux/pinctrl/pinctrl.h> 207164873eSVishnu Patekar 217164873eSVishnu Patekar #include "pinctrl-sunxi.h" 227164873eSVishnu Patekar 237164873eSVishnu Patekar static const struct sunxi_desc_pin sun8i_a33_pins[] = { 247164873eSVishnu Patekar /* Hole */ 257164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 0), 267164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 277164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 287164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "uart2"), /* TX */ 297164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "uart0"), /* TX */ 307164873eSVishnu Patekar SUNXI_FUNCTION_IRQ_BANK(0x4, 0, 0)), /* PB_EINT0 */ 317164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 1), 327164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 337164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 347164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "uart2"), /* RX */ 357164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "uart0"), /* RX */ 367164873eSVishnu Patekar SUNXI_FUNCTION_IRQ_BANK(0x4, 0, 1)), /* PB_EINT1 */ 377164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 2), 387164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 397164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 407164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "uart2"), /* RTS */ 417164873eSVishnu Patekar SUNXI_FUNCTION_IRQ_BANK(0x4, 0, 2)), /* PB_EINT2 */ 427164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 3), 437164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 447164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 457164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "uart2"), /* CTS */ 467164873eSVishnu Patekar SUNXI_FUNCTION_IRQ_BANK(0x4, 0, 3)), /* PB_EINT3 */ 477164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 4), 487164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 497164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 507164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "i2s0"), /* SYNC */ 517164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "aif2"), /* SYNC */ 527164873eSVishnu Patekar SUNXI_FUNCTION_IRQ_BANK(0x4, 0, 4)), /* PB_EINT4 */ 537164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 5), 547164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 557164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 567164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "i2s0"), /* BCLK */ 577164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "aif2"), /* BCLK */ 587164873eSVishnu Patekar SUNXI_FUNCTION_IRQ_BANK(0x4, 0, 5)), /* PB_EINT5 */ 597164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 6), 607164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 617164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 627164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "i2s0"), /* DOUT */ 637164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "aif2"), /* DOUT */ 647164873eSVishnu Patekar SUNXI_FUNCTION_IRQ_BANK(0x4, 0, 6)), /* PB_EINT6 */ 657164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 7), 667164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 677164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 687164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "i2s0"), /* DIN */ 697164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "aif2"), /* DIN */ 707164873eSVishnu Patekar SUNXI_FUNCTION_IRQ_BANK(0x4, 0, 7)), /* PB_EINT7 */ 717164873eSVishnu Patekar /* Hole */ 727164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 0), 737164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 747164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 757164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "nand0"), /* WE */ 767164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "spi0")), /* MOSI */ 777164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 1), 787164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 797164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 807164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "nand0"), /* ALE */ 817164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "spi0")), /* MISO */ 827164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 2), 837164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 847164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 857164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "nand0"), /* CLE */ 867164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "spi0")), /* CLK */ 877164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 3), 887164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 897164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 907164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "nand0"), /* CE1 */ 917164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "spi0")), /* CS */ 927164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 4), 937164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 947164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 957164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "nand0")), /* CE0 */ 967164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 5), 977164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 987164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 997164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "nand0"), /* RE */ 1007164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "mmc2")), /* CLK */ 1017164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 6), 1027164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 1037164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 1047164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "nand0"), /* RB0 */ 1057164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "mmc2")), /* CMD */ 1067164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 7), 1077164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 1087164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 1097164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "nand0")), /* RB1 */ 1107164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 8), 1117164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 1127164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 1137164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "nand0"), /* DQ0 */ 1147164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "mmc2")), /* D0 */ 1157164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 9), 1167164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 1177164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 1187164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "nand0"), /* DQ1 */ 1197164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "mmc2")), /* D1 */ 1207164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 10), 1217164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 1227164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 1237164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "nand0"), /* DQ2 */ 1247164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "mmc2")), /* D2 */ 1257164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 11), 1267164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 1277164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 1287164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "nand0"), /* DQ3 */ 1297164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "mmc2")), /* D3 */ 1307164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 12), 1317164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 1327164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 1337164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "nand0"), /* DQ4 */ 1347164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "mmc2")), /* D4 */ 1357164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 13), 1367164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 1377164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 1387164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "nand0"), /* DQ5 */ 1397164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "mmc2")), /* D5 */ 1407164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 14), 1417164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 1427164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 143bc0f566aSIcenowy Zheng SUNXI_FUNCTION(0x2, "nand0"), /* DQ6 */ 1447164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "mmc2")), /* D6 */ 1457164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 15), 1467164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 1477164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 148bc0f566aSIcenowy Zheng SUNXI_FUNCTION(0x2, "nand0"), /* DQ7 */ 1497164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "mmc2")), /* D7 */ 1507164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 16), 1517164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 1527164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 153bc0f566aSIcenowy Zheng SUNXI_FUNCTION(0x2, "nand0"), /* DQS */ 1547164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "mmc2")), /* RST */ 1557164873eSVishnu Patekar /* Hole */ 1567164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 2), 1577164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 1587164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 1597164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "lcd0"), /* D2 */ 1607164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "mmc1")), /* CLK */ 1617164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 3), 1627164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 1637164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 1647164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "lcd0"), /* D3 */ 1657164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "mmc1")), /* CMD */ 1667164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 4), 1677164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 1687164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 1697164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "lcd0"), /* D4 */ 1707164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "mmc1")), /* D0 */ 1717164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 5), 1727164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 1737164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 1747164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "lcd0"), /* D5 */ 1757164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "mmc1")), /* D1 */ 1767164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 6), 1777164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 1787164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 1797164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "lcd0"), /* D6 */ 1807164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "mmc1")), /* D2 */ 1817164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 7), 1827164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 1837164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 1847164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "lcd0"), /* D7 */ 1857164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "mmc1")), /* D3 */ 1867164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 10), 1877164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 1887164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 1897164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "lcd0"), /* D10 */ 1907164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "uart1")), /* TX */ 1917164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 11), 1927164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 1937164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 1947164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "lcd0"), /* D11 */ 1957164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "uart1")), /* RX */ 1967164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 12), 1977164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 1987164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 1997164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "lcd0"), /* D12 */ 2007164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "uart1")), /* RTS */ 2017164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 13), 2027164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 2037164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 2047164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "lcd0"), /* D13 */ 2057164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "uart1")), /* CTS */ 2067164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 14), 2077164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 2087164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 2097164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "lcd0")), /* D14 */ 2107164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 15), 2117164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 2127164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 2137164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "lcd0")), /* D15 */ 2147164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 18), 2157164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 2167164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 2177164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "lcd0"), /* D18 */ 2187164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "lvds0")), /* VP0 */ 2197164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 19), 2207164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 2217164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 2227164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "lcd0"), /* D19 */ 2237164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "lvds0")), /* VN0 */ 2247164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 20), 2257164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 2267164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 2277164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "lcd0"), /* D20 */ 2287164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "lvds0")), /* VP1 */ 2297164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 21), 2307164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 2317164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 2327164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "lcd0"), /* D21 */ 2337164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "lvds0")), /* VN1 */ 2347164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 22), 2357164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 2367164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 2377164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "lcd0"), /* D22 */ 2387164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "lvds0")), /* VP2 */ 2397164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 23), 2407164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 2417164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 2427164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "lcd0"), /* D23 */ 2437164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "lvds0")), /* VN2 */ 2447164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 24), 2457164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 2467164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 2477164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "lcd0"), /* CLK */ 2487164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "lvds0")), /* VPC */ 2497164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 25), 2507164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 2517164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 2527164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "lcd0"), /* DE */ 2537164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "lvds0")), /* VNC */ 2547164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 26), 2557164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 2567164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 2577164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "lcd0"), /* HSYNC */ 2587164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "lvds0")), /* VP3 */ 2597164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 27), 2607164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 2617164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 2627164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "lcd0"), /* VSYNC */ 2637164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "lvds0")), /* VN3 */ 2647164873eSVishnu Patekar /* Hole */ 2657164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 0), 2667164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 2677164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 2687164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "csi")), /* PCLK */ 2697164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 1), 2707164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 2717164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 2727164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "csi")), /* MCLK */ 2737164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 2), 2747164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 2757164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 2767164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "csi")), /* HSYNC */ 2777164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 3), 2787164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 2797164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 2807164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "csi")), /* VSYNC */ 2817164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 4), 2827164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 2837164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 2847164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "csi")), /* D0 */ 2857164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 5), 2867164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 2877164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 2887164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "csi")), /* D1 */ 2897164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 6), 2907164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 2917164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 2927164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "csi")), /* D2 */ 2937164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 7), 2947164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 2957164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 2967164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "csi")), /* D3 */ 2977164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 8), 2987164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 2997164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 3007164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "csi")), /* D4 */ 3017164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 9), 3027164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 3037164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 3047164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "csi")), /* D5 */ 3057164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 10), 3067164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 3077164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 3087164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "csi")), /* D6 */ 3097164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 11), 3107164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 3117164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 3127164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "csi")), /* D7 */ 3137164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 12), 3147164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 3157164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 3167164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "csi"), /* SCK */ 3177164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "i2c2")), /* SCK */ 3187164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 13), 3197164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 3207164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 3217164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "csi"), /* SDA */ 3227164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "i2c2")), /* SDA */ 3237164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 14), 3247164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 3257164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out")), 3267164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 15), 3277164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 3287164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out")), 3297164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 16), 3307164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 3317164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out")), 3327164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 17), 3337164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 3347164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out")), 3357164873eSVishnu Patekar /* Hole */ 3367164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 0), 3377164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 3387164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 3397164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "mmc0"), /* D1 */ 3407164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "jtag")), /* MS1 */ 3417164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 1), 3427164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 3437164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 3447164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "mmc0"), /* D0 */ 3457164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "jtag")), /* DI1 */ 3467164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 2), 3477164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 3487164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 3497164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "mmc0"), /* CLK */ 3507164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "uart0")), /* TX */ 3517164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 3), 3527164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 3537164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 3547164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "mmc0"), /* CMD */ 3557164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "jtag")), /* DO1 */ 3567164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 4), 3577164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 3587164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 3597164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "mmc0"), /* D3 */ 3607164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "uart0")), /* RX */ 3617164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 5), 3627164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 3637164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 3647164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "mmc0"), /* D2 */ 3657164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "jtag")), /* CK1 */ 3667164873eSVishnu Patekar /* Hole */ 3677164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 0), 3687164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 3697164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 3707164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "mmc1"), /* CLK */ 3717164873eSVishnu Patekar SUNXI_FUNCTION_IRQ_BANK(0x4, 1, 0)), /* PG_EINT0 */ 3727164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 1), 3737164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 3747164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 3757164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "mmc1"), /* CMD */ 3767164873eSVishnu Patekar SUNXI_FUNCTION_IRQ_BANK(0x4, 1, 1)), /* PG_EINT1 */ 3777164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 2), 3787164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 3797164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 3807164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "mmc1"), /* D0 */ 3817164873eSVishnu Patekar SUNXI_FUNCTION_IRQ_BANK(0x4, 1, 2)), /* PG_EINT2 */ 3827164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 3), 3837164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 3847164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 3857164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "mmc1"), /* D1 */ 3867164873eSVishnu Patekar SUNXI_FUNCTION_IRQ_BANK(0x4, 1, 3)), /* PG_EINT3 */ 3877164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 4), 3887164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 3897164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 3907164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "mmc1"), /* D2 */ 3917164873eSVishnu Patekar SUNXI_FUNCTION_IRQ_BANK(0x4, 1, 4)), /* PG_EINT4 */ 3927164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 5), 3937164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 3947164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 3957164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "mmc1"), /* D3 */ 3967164873eSVishnu Patekar SUNXI_FUNCTION_IRQ_BANK(0x4, 1, 5)), /* PG_EINT5 */ 3977164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 6), 3987164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 3997164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 4007164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "uart1"), /* TX */ 4017164873eSVishnu Patekar SUNXI_FUNCTION_IRQ_BANK(0x4, 1, 6)), /* PG_EINT6 */ 4027164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 7), 4037164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 4047164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 4057164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "uart1"), /* RX */ 4067164873eSVishnu Patekar SUNXI_FUNCTION_IRQ_BANK(0x4, 1, 7)), /* PG_EINT7 */ 4077164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 8), 4087164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 4097164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 4107164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "uart2"), /* RTS */ 4117164873eSVishnu Patekar SUNXI_FUNCTION_IRQ_BANK(0x4, 1, 8)), /* PG_EINT8 */ 4127164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 9), 4137164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 4147164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 4157164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "uart2"), /* CTS */ 4167164873eSVishnu Patekar SUNXI_FUNCTION_IRQ_BANK(0x4, 1, 9)), /* PG_EINT9 */ 4177164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 10), 4187164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 4197164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 4207164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "i2s1"), /* SYNC */ 4217164873eSVishnu Patekar SUNXI_FUNCTION_IRQ_BANK(0x4, 1, 10)), /* PG_EINT10 */ 4227164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 11), 4237164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 4247164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 4257164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "i2s1"), /* CLK */ 4267164873eSVishnu Patekar SUNXI_FUNCTION_IRQ_BANK(0x4, 1, 11)), /* PG_EINT11 */ 4277164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 12), 4287164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 4297164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 4307164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "i2s1"), /* DOUT */ 4317164873eSVishnu Patekar SUNXI_FUNCTION_IRQ_BANK(0x4, 1, 12)), /* PG_EINT12 */ 4327164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 13), 4337164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 4347164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 4357164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "i2s1"), /* DIN */ 4367164873eSVishnu Patekar SUNXI_FUNCTION_IRQ_BANK(0x4, 1, 13)), /* PG_EINT13 */ 4377164873eSVishnu Patekar /* Hole */ 4387164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 0), 4397164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 4407164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 4417164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "pwm0")), 4427164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 1), 4437164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 4447164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 4457164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "pwm1")), 4467164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 2), 4477164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 4487164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 4497164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "i2c0")), /* SCK */ 4507164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 3), 4517164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 4527164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 4537164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "i2c0")), /* SDA */ 4547164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 4), 4557164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 4567164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 4577164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "i2c1")), /* SCK */ 4587164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 5), 4597164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 4607164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 4617164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "i2c1")), /* SDA */ 4627164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 6), 4637164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 4647164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 4657164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "spi0"), /* CS */ 4667164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "uart3")), /* TX */ 4677164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 7), 4687164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 4697164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 4707164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "spi0"), /* CLK */ 4717164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "uart3")), /* RX */ 4727164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 8), 4737164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 4747164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 4757164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "spi0"), /* DOUT */ 4767164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "uart3")), /* RTS */ 4777164873eSVishnu Patekar SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 9), 4787164873eSVishnu Patekar SUNXI_FUNCTION(0x0, "gpio_in"), 4797164873eSVishnu Patekar SUNXI_FUNCTION(0x1, "gpio_out"), 4807164873eSVishnu Patekar SUNXI_FUNCTION(0x2, "spi0"), /* DIN */ 4817164873eSVishnu Patekar SUNXI_FUNCTION(0x3, "uart3")), /* CTS */ 4827164873eSVishnu Patekar }; 4837164873eSVishnu Patekar 4847164873eSVishnu Patekar static const struct sunxi_pinctrl_desc sun8i_a33_pinctrl_data = { 4857164873eSVishnu Patekar .pins = sun8i_a33_pins, 4867164873eSVishnu Patekar .npins = ARRAY_SIZE(sun8i_a33_pins), 4877164873eSVishnu Patekar .irq_banks = 2, 4885e7515baSHans de Goede .irq_bank_base = 1, 4897164873eSVishnu Patekar }; 4907164873eSVishnu Patekar 4917164873eSVishnu Patekar static int sun8i_a33_pinctrl_probe(struct platform_device *pdev) 4927164873eSVishnu Patekar { 4937164873eSVishnu Patekar return sunxi_pinctrl_init(pdev, 4947164873eSVishnu Patekar &sun8i_a33_pinctrl_data); 4957164873eSVishnu Patekar } 4967164873eSVishnu Patekar 4977164873eSVishnu Patekar static const struct of_device_id sun8i_a33_pinctrl_match[] = { 4987164873eSVishnu Patekar { .compatible = "allwinner,sun8i-a33-pinctrl", }, 4997164873eSVishnu Patekar {} 5007164873eSVishnu Patekar }; 5017164873eSVishnu Patekar MODULE_DEVICE_TABLE(of, sun8i_a33_pinctrl_match); 5027164873eSVishnu Patekar 5037164873eSVishnu Patekar static struct platform_driver sun8i_a33_pinctrl_driver = { 5047164873eSVishnu Patekar .probe = sun8i_a33_pinctrl_probe, 5057164873eSVishnu Patekar .driver = { 5067164873eSVishnu Patekar .name = "sun8i-a33-pinctrl", 5077164873eSVishnu Patekar .of_match_table = sun8i_a33_pinctrl_match, 5087164873eSVishnu Patekar }, 5097164873eSVishnu Patekar }; 5107164873eSVishnu Patekar module_platform_driver(sun8i_a33_pinctrl_driver); 5117164873eSVishnu Patekar 5127164873eSVishnu Patekar MODULE_AUTHOR("Vishnu Patekar <vishnupatekar0510@gmail.com>"); 5137164873eSVishnu Patekar MODULE_DESCRIPTION("Allwinner a33 pinctrl driver"); 5147164873eSVishnu Patekar MODULE_LICENSE("GPL"); 515