1*96851d39SAndre Przywara /* 2*96851d39SAndre Przywara * Allwinner A64 SoCs pinctrl driver. 3*96851d39SAndre Przywara * 4*96851d39SAndre Przywara * Copyright (C) 2016 - ARM Ltd. 5*96851d39SAndre Przywara * Author: Andre Przywara <andre.przywara@arm.com> 6*96851d39SAndre Przywara * 7*96851d39SAndre Przywara * Based on pinctrl-sun7i-a20.c, which is: 8*96851d39SAndre Przywara * Copyright (C) 2014 Maxime Ripard <maxime.ripard@free-electrons.com> 9*96851d39SAndre Przywara * 10*96851d39SAndre Przywara * This file is licensed under the terms of the GNU General Public 11*96851d39SAndre Przywara * License version 2. This program is licensed "as is" without any 12*96851d39SAndre Przywara * warranty of any kind, whether express or implied. 13*96851d39SAndre Przywara */ 14*96851d39SAndre Przywara 15*96851d39SAndre Przywara #include <linux/module.h> 16*96851d39SAndre Przywara #include <linux/platform_device.h> 17*96851d39SAndre Przywara #include <linux/of.h> 18*96851d39SAndre Przywara #include <linux/of_device.h> 19*96851d39SAndre Przywara #include <linux/pinctrl/pinctrl.h> 20*96851d39SAndre Przywara 21*96851d39SAndre Przywara #include "pinctrl-sunxi.h" 22*96851d39SAndre Przywara 23*96851d39SAndre Przywara static const struct sunxi_desc_pin a64_pins[] = { 24*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 0), 25*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 26*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 27*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "uart2"), /* TX */ 28*96851d39SAndre Przywara SUNXI_FUNCTION(0x4, "jtag"), /* MS0 */ 29*96851d39SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 0)), /* EINT0 */ 30*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 1), 31*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 32*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 33*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "uart2"), /* RX */ 34*96851d39SAndre Przywara SUNXI_FUNCTION(0x4, "jtag"), /* CK0 */ 35*96851d39SAndre Przywara SUNXI_FUNCTION(0x5, "sim"), /* VCCEN */ 36*96851d39SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 1)), /* EINT1 */ 37*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 2), 38*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 39*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 40*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "uart2"), /* RTS */ 41*96851d39SAndre Przywara SUNXI_FUNCTION(0x4, "jtag"), /* DO0 */ 42*96851d39SAndre Przywara SUNXI_FUNCTION(0x5, "sim"), /* VPPEN */ 43*96851d39SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 2)), /* EINT2 */ 44*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 3), 45*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 46*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 47*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "uart2"), /* CTS */ 48*96851d39SAndre Przywara SUNXI_FUNCTION(0x3, "i2s0"), /* MCLK */ 49*96851d39SAndre Przywara SUNXI_FUNCTION(0x4, "jtag"), /* DI0 */ 50*96851d39SAndre Przywara SUNXI_FUNCTION(0x5, "sim"), /* VPPPP */ 51*96851d39SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 3)), /* EINT3 */ 52*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 4), 53*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 54*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 55*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "aif2"), /* SYNC */ 56*96851d39SAndre Przywara SUNXI_FUNCTION(0x3, "i2s0"), /* SYNC */ 57*96851d39SAndre Przywara SUNXI_FUNCTION(0x5, "sim"), /* CLK */ 58*96851d39SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 4)), /* EINT4 */ 59*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 5), 60*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 61*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 62*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "aif2"), /* BCLK */ 63*96851d39SAndre Przywara SUNXI_FUNCTION(0x3, "i2s0"), /* BCLK */ 64*96851d39SAndre Przywara SUNXI_FUNCTION(0x5, "sim"), /* DATA */ 65*96851d39SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 5)), /* EINT5 */ 66*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 6), 67*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 68*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 69*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "aif2"), /* DOUT */ 70*96851d39SAndre Przywara SUNXI_FUNCTION(0x3, "i2s0"), /* DOUT */ 71*96851d39SAndre Przywara SUNXI_FUNCTION(0x5, "sim"), /* RST */ 72*96851d39SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 6)), /* EINT6 */ 73*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 7), 74*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 75*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 76*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "aif2"), /* DIN */ 77*96851d39SAndre Przywara SUNXI_FUNCTION(0x3, "i2s0"), /* DIN */ 78*96851d39SAndre Przywara SUNXI_FUNCTION(0x5, "sim"), /* DET */ 79*96851d39SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 7)), /* EINT7 */ 80*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 8), 81*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 82*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 83*96851d39SAndre Przywara SUNXI_FUNCTION(0x4, "uart0"), /* TX */ 84*96851d39SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 8)), /* EINT8 */ 85*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 9), 86*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 87*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 88*96851d39SAndre Przywara SUNXI_FUNCTION(0x4, "uart0"), /* RX */ 89*96851d39SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 9)), /* EINT9 */ 90*96851d39SAndre Przywara /* Hole */ 91*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 0), 92*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 93*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 94*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "nand0"), /* NWE */ 95*96851d39SAndre Przywara SUNXI_FUNCTION(0x4, "spi0")), /* MOSI */ 96*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 1), 97*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 98*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 99*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "nand0"), /* NALE */ 100*96851d39SAndre Przywara SUNXI_FUNCTION(0x3, "mmc2"), /* DS */ 101*96851d39SAndre Przywara SUNXI_FUNCTION(0x4, "spi0")), /* MISO */ 102*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 2), 103*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 104*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 105*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "nand0"), /* NCLE */ 106*96851d39SAndre Przywara SUNXI_FUNCTION(0x4, "spi0")), /* SCK */ 107*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 3), 108*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 109*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 110*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "nand0"), /* NCE1 */ 111*96851d39SAndre Przywara SUNXI_FUNCTION(0x4, "spi0")), /* CS */ 112*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 4), 113*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 114*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 115*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "nand0")), /* NCE0 */ 116*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 5), 117*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 118*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 119*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "nand0"), /* NRE# */ 120*96851d39SAndre Przywara SUNXI_FUNCTION(0x3, "mmc2")), /* CLK */ 121*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 6), 122*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 123*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 124*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "nand0"), /* NRB0 */ 125*96851d39SAndre Przywara SUNXI_FUNCTION(0x3, "mmc2")), /* CMD */ 126*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 7), 127*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 128*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 129*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "nand0")), /* NRB1 */ 130*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 8), 131*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 132*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 133*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "nand0"), /* NDQ0 */ 134*96851d39SAndre Przywara SUNXI_FUNCTION(0x3, "mmc2")), /* D0 */ 135*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 9), 136*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 137*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 138*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "nand0"), /* NDQ1 */ 139*96851d39SAndre Przywara SUNXI_FUNCTION(0x3, "mmc2")), /* D1 */ 140*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 10), 141*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 142*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 143*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "nand0"), /* NDQ2 */ 144*96851d39SAndre Przywara SUNXI_FUNCTION(0x3, "mmc2")), /* D2 */ 145*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 11), 146*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 147*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 148*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "nand0"), /* NDQ3 */ 149*96851d39SAndre Przywara SUNXI_FUNCTION(0x3, "mmc2")), /* D3 */ 150*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 12), 151*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 152*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 153*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "nand0"), /* NDQ4 */ 154*96851d39SAndre Przywara SUNXI_FUNCTION(0x3, "mmc2")), /* D4 */ 155*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 13), 156*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 157*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 158*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "nand0"), /* NDQ5 */ 159*96851d39SAndre Przywara SUNXI_FUNCTION(0x3, "mmc2")), /* D5 */ 160*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 14), 161*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 162*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 163*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "nand0"), /* NDQ6 */ 164*96851d39SAndre Przywara SUNXI_FUNCTION(0x3, "mmc2")), /* D6 */ 165*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 15), 166*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 167*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 168*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "nand0"), /* NDQ7 */ 169*96851d39SAndre Przywara SUNXI_FUNCTION(0x3, "mmc2")), /* D7 */ 170*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 16), 171*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 172*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 173*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "nand0"), /* NDQS */ 174*96851d39SAndre Przywara SUNXI_FUNCTION(0x3, "mmc2")), /* RST */ 175*96851d39SAndre Przywara /* Hole */ 176*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 0), 177*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 178*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 179*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "lcd0"), /* D2 */ 180*96851d39SAndre Przywara SUNXI_FUNCTION(0x3, "uart3"), /* TX */ 181*96851d39SAndre Przywara SUNXI_FUNCTION(0x4, "spi1"), /* CS */ 182*96851d39SAndre Przywara SUNXI_FUNCTION(0x5, "ccir")), /* CLK */ 183*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 1), 184*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 185*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 186*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "lcd0"), /* D3 */ 187*96851d39SAndre Przywara SUNXI_FUNCTION(0x3, "uart3"), /* RX */ 188*96851d39SAndre Przywara SUNXI_FUNCTION(0x4, "spi1"), /* CLK */ 189*96851d39SAndre Przywara SUNXI_FUNCTION(0x5, "ccir")), /* DE */ 190*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 2), 191*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 192*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 193*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "lcd0"), /* D4 */ 194*96851d39SAndre Przywara SUNXI_FUNCTION(0x3, "uart4"), /* TX */ 195*96851d39SAndre Przywara SUNXI_FUNCTION(0x4, "spi1"), /* MOSI */ 196*96851d39SAndre Przywara SUNXI_FUNCTION(0x5, "ccir")), /* HSYNC */ 197*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 3), 198*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 199*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 200*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "lcd0"), /* D5 */ 201*96851d39SAndre Przywara SUNXI_FUNCTION(0x3, "uart4"), /* RX */ 202*96851d39SAndre Przywara SUNXI_FUNCTION(0x4, "spi1"), /* MISO */ 203*96851d39SAndre Przywara SUNXI_FUNCTION(0x5, "ccir")), /* VSYNC */ 204*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 4), 205*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 206*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 207*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "lcd0"), /* D6 */ 208*96851d39SAndre Przywara SUNXI_FUNCTION(0x3, "uart4"), /* RTS */ 209*96851d39SAndre Przywara SUNXI_FUNCTION(0x5, "ccir")), /* D0 */ 210*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 5), 211*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 212*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 213*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "lcd0"), /* D7 */ 214*96851d39SAndre Przywara SUNXI_FUNCTION(0x3, "uart4"), /* CTS */ 215*96851d39SAndre Przywara SUNXI_FUNCTION(0x5, "ccir")), /* D1 */ 216*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 6), 217*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 218*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 219*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "lcd0"), /* D10 */ 220*96851d39SAndre Przywara SUNXI_FUNCTION(0x5, "ccir")), /* D2 */ 221*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 7), 222*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 223*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 224*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "lcd0"), /* D11 */ 225*96851d39SAndre Przywara SUNXI_FUNCTION(0x5, "ccir")), /* D3 */ 226*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 8), 227*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 228*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 229*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "lcd0"), /* D12 */ 230*96851d39SAndre Przywara SUNXI_FUNCTION(0x4, "emac"), /* ERXD3 */ 231*96851d39SAndre Przywara SUNXI_FUNCTION(0x5, "ccir")), /* D4 */ 232*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 9), 233*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 234*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 235*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "lcd0"), /* D13 */ 236*96851d39SAndre Przywara SUNXI_FUNCTION(0x4, "emac"), /* ERXD2 */ 237*96851d39SAndre Przywara SUNXI_FUNCTION(0x5, "ccir")), /* D5 */ 238*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 10), 239*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 240*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 241*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "lcd0"), /* D14 */ 242*96851d39SAndre Przywara SUNXI_FUNCTION(0x4, "emac")), /* ERXD1 */ 243*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 11), 244*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 245*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 246*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "lcd0"), /* D15 */ 247*96851d39SAndre Przywara SUNXI_FUNCTION(0x4, "emac")), /* ERXD0 */ 248*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 12), 249*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 250*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 251*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "lcd0"), /* D18 */ 252*96851d39SAndre Przywara SUNXI_FUNCTION(0x3, "lvds0"), /* VP0 */ 253*96851d39SAndre Przywara SUNXI_FUNCTION(0x4, "emac")), /* ERXCK */ 254*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 13), 255*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 256*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 257*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "lcd0"), /* D19 */ 258*96851d39SAndre Przywara SUNXI_FUNCTION(0x3, "lvds0"), /* VN0 */ 259*96851d39SAndre Przywara SUNXI_FUNCTION(0x4, "emac")), /* ERXCTL */ 260*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 14), 261*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 262*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 263*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "lcd0"), /* D20 */ 264*96851d39SAndre Przywara SUNXI_FUNCTION(0x3, "lvds0"), /* VP1 */ 265*96851d39SAndre Przywara SUNXI_FUNCTION(0x4, "emac")), /* ENULL */ 266*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 15), 267*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 268*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 269*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "lcd0"), /* D21 */ 270*96851d39SAndre Przywara SUNXI_FUNCTION(0x3, "lvds0"), /* VN1 */ 271*96851d39SAndre Przywara SUNXI_FUNCTION(0x4, "emac"), /* ETXD3 */ 272*96851d39SAndre Przywara SUNXI_FUNCTION(0x5, "ccir")), /* D6 */ 273*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 16), 274*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 275*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 276*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "lcd0"), /* D22 */ 277*96851d39SAndre Przywara SUNXI_FUNCTION(0x3, "lvds0"), /* VP2 */ 278*96851d39SAndre Przywara SUNXI_FUNCTION(0x4, "emac"), /* ETXD2 */ 279*96851d39SAndre Przywara SUNXI_FUNCTION(0x5, "ccir")), /* D7 */ 280*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 17), 281*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 282*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 283*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "lcd0"), /* D23 */ 284*96851d39SAndre Przywara SUNXI_FUNCTION(0x3, "lvds0"), /* VN2 */ 285*96851d39SAndre Przywara SUNXI_FUNCTION(0x4, "emac")), /* ETXD1 */ 286*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 18), 287*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 288*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 289*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "lcd0"), /* CLK */ 290*96851d39SAndre Przywara SUNXI_FUNCTION(0x3, "lvds0"), /* VPC */ 291*96851d39SAndre Przywara SUNXI_FUNCTION(0x4, "emac")), /* ETXD0 */ 292*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 19), 293*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 294*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 295*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "lcd0"), /* DE */ 296*96851d39SAndre Przywara SUNXI_FUNCTION(0x3, "lvds0"), /* VNC */ 297*96851d39SAndre Przywara SUNXI_FUNCTION(0x4, "emac")), /* ETXCK */ 298*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 20), 299*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 300*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 301*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "lcd0"), /* HSYNC */ 302*96851d39SAndre Przywara SUNXI_FUNCTION(0x3, "lvds0"), /* VP3 */ 303*96851d39SAndre Przywara SUNXI_FUNCTION(0x4, "emac")), /* ETXCTL */ 304*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 21), 305*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 306*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 307*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "lcd0"), /* VSYNC */ 308*96851d39SAndre Przywara SUNXI_FUNCTION(0x3, "lvds0"), /* VN3 */ 309*96851d39SAndre Przywara SUNXI_FUNCTION(0x4, "emac")), /* ECLKIN */ 310*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 22), 311*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 312*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 313*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "pwm"), /* PWM0 */ 314*96851d39SAndre Przywara SUNXI_FUNCTION(0x4, "emac")), /* EMDC */ 315*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 23), 316*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 317*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 318*96851d39SAndre Przywara SUNXI_FUNCTION(0x4, "emac")), /* EMDIO */ 319*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 24), 320*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 321*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out")), 322*96851d39SAndre Przywara /* Hole */ 323*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 0), 324*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 325*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 326*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "csi0"), /* PCK */ 327*96851d39SAndre Przywara SUNXI_FUNCTION(0x4, "ts0")), /* CLK */ 328*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 1), 329*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 330*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 331*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "csi0"), /* CK */ 332*96851d39SAndre Przywara SUNXI_FUNCTION(0x4, "ts0")), /* ERR */ 333*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 2), 334*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 335*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 336*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "csi0"), /* HSYNC */ 337*96851d39SAndre Przywara SUNXI_FUNCTION(0x4, "ts0")), /* SYNC */ 338*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 3), 339*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 340*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 341*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "csi0"), /* VSYNC */ 342*96851d39SAndre Przywara SUNXI_FUNCTION(0x4, "ts0")), /* DVLD */ 343*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 4), 344*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 345*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 346*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "csi0"), /* D0 */ 347*96851d39SAndre Przywara SUNXI_FUNCTION(0x4, "ts0")), /* D0 */ 348*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 5), 349*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 350*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 351*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "csi0"), /* D1 */ 352*96851d39SAndre Przywara SUNXI_FUNCTION(0x4, "ts0")), /* D1 */ 353*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 6), 354*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 355*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 356*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "csi0"), /* D2 */ 357*96851d39SAndre Przywara SUNXI_FUNCTION(0x4, "ts0")), /* D2 */ 358*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 7), 359*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 360*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 361*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "csi0"), /* D3 */ 362*96851d39SAndre Przywara SUNXI_FUNCTION(0x4, "ts0")), /* D3 */ 363*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 8), 364*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 365*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 366*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "csi0"), /* D4 */ 367*96851d39SAndre Przywara SUNXI_FUNCTION(0x4, "ts0")), /* D4 */ 368*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 9), 369*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 370*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 371*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "csi0"), /* D5 */ 372*96851d39SAndre Przywara SUNXI_FUNCTION(0x4, "ts0")), /* D5 */ 373*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 10), 374*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 375*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 376*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "csi0"), /* D6 */ 377*96851d39SAndre Przywara SUNXI_FUNCTION(0x4, "ts0")), /* D6 */ 378*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 11), 379*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 380*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 381*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "csi0"), /* D7 */ 382*96851d39SAndre Przywara SUNXI_FUNCTION(0x4, "ts0")), /* D7 */ 383*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 12), 384*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 385*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 386*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "csi0")), /* SCK */ 387*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 13), 388*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 389*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 390*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "csi0")), /* SDA */ 391*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 14), 392*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 393*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 394*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "pll"), /* LOCK_DBG */ 395*96851d39SAndre Przywara SUNXI_FUNCTION(0x3, "i2c2")), /* SCK */ 396*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 15), 397*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 398*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 399*96851d39SAndre Przywara SUNXI_FUNCTION(0x3, "i2c2")), /* SDA */ 400*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 16), 401*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 402*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out")), 403*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 17), 404*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 405*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out")), 406*96851d39SAndre Przywara /* Hole */ 407*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 0), 408*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 409*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 410*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "mmc0"), /* D1 */ 411*96851d39SAndre Przywara SUNXI_FUNCTION(0x3, "jtag")), /* MSI */ 412*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 1), 413*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 414*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 415*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "mmc0"), /* D0 */ 416*96851d39SAndre Przywara SUNXI_FUNCTION(0x3, "jtag")), /* DI1 */ 417*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 2), 418*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 419*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 420*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "mmc0"), /* CLK */ 421*96851d39SAndre Przywara SUNXI_FUNCTION(0x3, "uart0")), /* TX */ 422*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 3), 423*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 424*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 425*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "mmc0"), /* CMD */ 426*96851d39SAndre Przywara SUNXI_FUNCTION(0x3, "jtag")), /* DO1 */ 427*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 4), 428*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 429*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 430*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "mmc0"), /* D3 */ 431*96851d39SAndre Przywara SUNXI_FUNCTION(0x4, "uart0")), /* RX */ 432*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 5), 433*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 434*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 435*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "mmc0"), /* D2 */ 436*96851d39SAndre Przywara SUNXI_FUNCTION(0x3, "jtag")), /* CK1 */ 437*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 6), 438*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 439*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out")), 440*96851d39SAndre Przywara /* Hole */ 441*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 0), 442*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 443*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 444*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "mmc1"), /* CLK */ 445*96851d39SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 0)), /* EINT0 */ 446*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 1), 447*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 448*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 449*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "mmc1"), /* CMD */ 450*96851d39SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 1)), /* EINT1 */ 451*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 2), 452*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 453*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 454*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "mmc1"), /* D0 */ 455*96851d39SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 2)), /* EINT2 */ 456*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 3), 457*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 458*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 459*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "mmc1"), /* D1 */ 460*96851d39SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 3)), /* EINT3 */ 461*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 4), 462*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 463*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 464*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "mmc1"), /* D2 */ 465*96851d39SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 4)), /* EINT4 */ 466*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 5), 467*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 468*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 469*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "mmc1"), /* D3 */ 470*96851d39SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 5)), /* EINT5 */ 471*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 6), 472*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 473*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 474*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "uart1"), /* TX */ 475*96851d39SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 6)), /* EINT6 */ 476*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 7), 477*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 478*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 479*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "uart1"), /* RX */ 480*96851d39SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 7)), /* EINT7 */ 481*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 8), 482*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 483*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 484*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "uart1"), /* RTS */ 485*96851d39SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 8)), /* EINT8 */ 486*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 9), 487*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 488*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 489*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "uart1"), /* CTS */ 490*96851d39SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 9)), /* EINT9 */ 491*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 10), 492*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 493*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 494*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "aif3"), /* SYNC */ 495*96851d39SAndre Przywara SUNXI_FUNCTION(0x3, "i2s1"), /* SYNC */ 496*96851d39SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 10)), /* EINT10 */ 497*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 11), 498*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 499*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 500*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "aif3"), /* BCLK */ 501*96851d39SAndre Przywara SUNXI_FUNCTION(0x3, "i2s1"), /* BCLK */ 502*96851d39SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 11)), /* EINT11 */ 503*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 12), 504*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 505*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 506*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "aif3"), /* DOUT */ 507*96851d39SAndre Przywara SUNXI_FUNCTION(0x3, "i2s1"), /* DOUT */ 508*96851d39SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 12)), /* EINT12 */ 509*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 13), 510*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 511*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 512*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "aif3"), /* DIN */ 513*96851d39SAndre Przywara SUNXI_FUNCTION(0x3, "i2s1"), /* DIN */ 514*96851d39SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 13)), /* EINT13 */ 515*96851d39SAndre Przywara /* Hole */ 516*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 0), 517*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 518*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 519*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "i2c0"), /* SCK */ 520*96851d39SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 0)), /* EINT0 */ 521*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 1), 522*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 523*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 524*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "i2c0"), /* SDA */ 525*96851d39SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 1)), /* EINT1 */ 526*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 2), 527*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 528*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 529*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "i2c1"), /* SCK */ 530*96851d39SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 2)), /* EINT2 */ 531*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 3), 532*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 533*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 534*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "i2c1"), /* SDA */ 535*96851d39SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 3)), /* EINT3 */ 536*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 4), 537*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 538*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 539*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "uart3"), /* TX */ 540*96851d39SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 4)), /* EINT4 */ 541*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 5), 542*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 543*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 544*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "uart3"), /* RX */ 545*96851d39SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 5)), /* EINT5 */ 546*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 6), 547*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 548*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 549*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "uart3"), /* RTS */ 550*96851d39SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 6)), /* EINT6 */ 551*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 7), 552*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 553*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 554*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "uart3"), /* CTS */ 555*96851d39SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 7)), /* EINT7 */ 556*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 8), 557*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 558*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 559*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "spdif"), /* OUT */ 560*96851d39SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 8)), /* EINT8 */ 561*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 9), 562*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 563*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 564*96851d39SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 9)), /* EINT9 */ 565*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 10), 566*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 567*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 568*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "mic"), /* CLK */ 569*96851d39SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 10)), /* EINT10 */ 570*96851d39SAndre Przywara SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 11), 571*96851d39SAndre Przywara SUNXI_FUNCTION(0x0, "gpio_in"), 572*96851d39SAndre Przywara SUNXI_FUNCTION(0x1, "gpio_out"), 573*96851d39SAndre Przywara SUNXI_FUNCTION(0x2, "mic"), /* DATA */ 574*96851d39SAndre Przywara SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 11)), /* EINT11 */ 575*96851d39SAndre Przywara }; 576*96851d39SAndre Przywara 577*96851d39SAndre Przywara static const struct sunxi_pinctrl_desc a64_pinctrl_data = { 578*96851d39SAndre Przywara .pins = a64_pins, 579*96851d39SAndre Przywara .npins = ARRAY_SIZE(a64_pins), 580*96851d39SAndre Przywara .irq_banks = 3, 581*96851d39SAndre Przywara }; 582*96851d39SAndre Przywara 583*96851d39SAndre Przywara static int a64_pinctrl_probe(struct platform_device *pdev) 584*96851d39SAndre Przywara { 585*96851d39SAndre Przywara return sunxi_pinctrl_init(pdev, 586*96851d39SAndre Przywara &a64_pinctrl_data); 587*96851d39SAndre Przywara } 588*96851d39SAndre Przywara 589*96851d39SAndre Przywara static const struct of_device_id a64_pinctrl_match[] = { 590*96851d39SAndre Przywara { .compatible = "allwinner,sun50i-a64-pinctrl", }, 591*96851d39SAndre Przywara {} 592*96851d39SAndre Przywara }; 593*96851d39SAndre Przywara 594*96851d39SAndre Przywara static struct platform_driver a64_pinctrl_driver = { 595*96851d39SAndre Przywara .probe = a64_pinctrl_probe, 596*96851d39SAndre Przywara .driver = { 597*96851d39SAndre Przywara .name = "sun50i-a64-pinctrl", 598*96851d39SAndre Przywara .of_match_table = a64_pinctrl_match, 599*96851d39SAndre Przywara }, 600*96851d39SAndre Przywara }; 601*96851d39SAndre Przywara builtin_platform_driver(a64_pinctrl_driver); 602