1858f559fSMaxime Ripard /* 2858f559fSMaxime Ripard * Allwinner sun5i SoCs pinctrl driver. 3858f559fSMaxime Ripard * 4858f559fSMaxime Ripard * Copyright (C) 2014-2016 Maxime Ripard <maxime.ripard@free-electrons.com> 5858f559fSMaxime Ripard * Copyright (C) 2016 Mylene Josserand <mylene.josserand@free-electrons.com> 6858f559fSMaxime Ripard * 7cff1f7a9SPaul Gortmaker * This file is licensed under the terms of the GNU General Public 8858f559fSMaxime Ripard * License version 2. This program is licensed "as is" without any 9858f559fSMaxime Ripard * warranty of any kind, whether express or implied. 10858f559fSMaxime Ripard */ 11858f559fSMaxime Ripard 12cff1f7a9SPaul Gortmaker #include <linux/init.h> 13858f559fSMaxime Ripard #include <linux/platform_device.h> 14858f559fSMaxime Ripard #include <linux/of.h> 15858f559fSMaxime Ripard #include <linux/of_device.h> 16858f559fSMaxime Ripard #include <linux/pinctrl/pinctrl.h> 17858f559fSMaxime Ripard 18858f559fSMaxime Ripard #include "pinctrl-sunxi.h" 19858f559fSMaxime Ripard 20858f559fSMaxime Ripard static const struct sunxi_desc_pin sun5i_pins[] = { 21858f559fSMaxime Ripard SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(A, 0), 22858f559fSMaxime Ripard PINCTRL_SUN5I_A10S, 23858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 24858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 25858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "emac"), /* ERXD3 */ 26858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "ts0"), /* CLK */ 27858f559fSMaxime Ripard SUNXI_FUNCTION(0x5, "keypad")), /* IN0 */ 28858f559fSMaxime Ripard SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(A, 1), 29858f559fSMaxime Ripard PINCTRL_SUN5I_A10S, 30858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 31858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 32858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "emac"), /* ERXD2 */ 33858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "ts0"), /* ERR */ 34858f559fSMaxime Ripard SUNXI_FUNCTION(0x5, "keypad")), /* IN1 */ 35858f559fSMaxime Ripard SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(A, 2), 36858f559fSMaxime Ripard PINCTRL_SUN5I_A10S, 37858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 38858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 39858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "emac"), /* ERXD1 */ 40858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "ts0"), /* SYNC */ 41858f559fSMaxime Ripard SUNXI_FUNCTION(0x5, "keypad")), /* IN2 */ 42858f559fSMaxime Ripard SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(A, 3), 43858f559fSMaxime Ripard PINCTRL_SUN5I_A10S, 44858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 45858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 46858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "emac"), /* ERXD0 */ 47858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "ts0"), /* DLVD */ 48858f559fSMaxime Ripard SUNXI_FUNCTION(0x5, "keypad")), /* IN3 */ 49858f559fSMaxime Ripard SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(A, 4), 50858f559fSMaxime Ripard PINCTRL_SUN5I_A10S, 51858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 52858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 53858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "emac"), /* ETXD3 */ 54858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "ts0"), /* D0 */ 55858f559fSMaxime Ripard SUNXI_FUNCTION(0x5, "keypad")), /* IN4 */ 56858f559fSMaxime Ripard SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(A, 5), 57858f559fSMaxime Ripard PINCTRL_SUN5I_A10S, 58858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 59858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 60858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "emac"), /* ETXD2 */ 61858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "ts0"), /* D1 */ 62858f559fSMaxime Ripard SUNXI_FUNCTION(0x5, "keypad")), /* IN5 */ 63858f559fSMaxime Ripard SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(A, 6), 64858f559fSMaxime Ripard PINCTRL_SUN5I_A10S, 65858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 66858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 67858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "emac"), /* ETXD1 */ 68858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "ts0"), /* D2 */ 69858f559fSMaxime Ripard SUNXI_FUNCTION(0x5, "keypad")), /* IN6 */ 70858f559fSMaxime Ripard SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(A, 7), 71858f559fSMaxime Ripard PINCTRL_SUN5I_A10S, 72858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 73858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 74858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "emac"), /* ETXD0 */ 75858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "ts0"), /* D3 */ 76858f559fSMaxime Ripard SUNXI_FUNCTION(0x5, "keypad")), /* IN7 */ 77858f559fSMaxime Ripard SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(A, 8), 78858f559fSMaxime Ripard PINCTRL_SUN5I_A10S, 79858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 80858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 81858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "emac"), /* ERXCK */ 82858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "ts0"), /* D4 */ 83858f559fSMaxime Ripard SUNXI_FUNCTION(0x4, "uart1"), /* DTR */ 84858f559fSMaxime Ripard SUNXI_FUNCTION(0x5, "keypad")), /* OUT0 */ 85858f559fSMaxime Ripard SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(A, 9), 86858f559fSMaxime Ripard PINCTRL_SUN5I_A10S, 87858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 88858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 89858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "emac"), /* ERXERR */ 90858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "ts0"), /* D5 */ 91858f559fSMaxime Ripard SUNXI_FUNCTION(0x4, "uart1"), /* DSR */ 92858f559fSMaxime Ripard SUNXI_FUNCTION(0x5, "keypad")), /* OUT1 */ 93858f559fSMaxime Ripard SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(A, 10), 94858f559fSMaxime Ripard PINCTRL_SUN5I_A10S, 95858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 96858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 97858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "emac"), /* ERXDV */ 98858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "ts0"), /* D6 */ 99858f559fSMaxime Ripard SUNXI_FUNCTION(0x4, "uart1"), /* DCD */ 100858f559fSMaxime Ripard SUNXI_FUNCTION(0x5, "keypad")), /* OUT2 */ 101858f559fSMaxime Ripard SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(A, 11), 102858f559fSMaxime Ripard PINCTRL_SUN5I_A10S, 103858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 104858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 105858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "emac"), /* EMDC */ 106858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "ts0"), /* D7 */ 107858f559fSMaxime Ripard SUNXI_FUNCTION(0x4, "uart1"), /* RING */ 108858f559fSMaxime Ripard SUNXI_FUNCTION(0x5, "keypad")), /* OUT3 */ 109858f559fSMaxime Ripard SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(A, 12), 110858f559fSMaxime Ripard PINCTRL_SUN5I_A10S, 111858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 112858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 113858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "emac"), /* EMDIO */ 114858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "uart1"), /* TX */ 115858f559fSMaxime Ripard SUNXI_FUNCTION(0x5, "keypad")), /* OUT4 */ 116858f559fSMaxime Ripard SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(A, 13), 117858f559fSMaxime Ripard PINCTRL_SUN5I_A10S, 118858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 119858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 120858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "emac"), /* ETXEN */ 121858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "uart1"), /* RX */ 122858f559fSMaxime Ripard SUNXI_FUNCTION(0x5, "keypad")), /* OUT5 */ 123858f559fSMaxime Ripard SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(A, 14), 124858f559fSMaxime Ripard PINCTRL_SUN5I_A10S, 125858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 126858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 127858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "emac"), /* ETXCK */ 128858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "uart1"), /* CTS */ 129858f559fSMaxime Ripard SUNXI_FUNCTION(0x4, "uart3"), /* TX */ 130858f559fSMaxime Ripard SUNXI_FUNCTION(0x5, "keypad")), /* OUT6 */ 131858f559fSMaxime Ripard SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(A, 15), 132858f559fSMaxime Ripard PINCTRL_SUN5I_A10S, 133858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 134858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 135858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "emac"), /* ECRS */ 136858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "uart1"), /* RTS */ 137858f559fSMaxime Ripard SUNXI_FUNCTION(0x4, "uart3"), /* RX */ 138858f559fSMaxime Ripard SUNXI_FUNCTION(0x5, "keypad")), /* OUT7 */ 139858f559fSMaxime Ripard SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(A, 16), 140858f559fSMaxime Ripard PINCTRL_SUN5I_A10S, 141858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 142858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 143858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "emac"), /* ECOL */ 144858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "uart2")), /* TX */ 145858f559fSMaxime Ripard SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(A, 17), 146858f559fSMaxime Ripard PINCTRL_SUN5I_A10S, 147858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 148858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 149858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "emac"), /* ETXERR */ 150858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "uart2"), /* RX */ 151858f559fSMaxime Ripard SUNXI_FUNCTION_IRQ(0x6, 31)), /* EINT31 */ 152858f559fSMaxime Ripard /* Hole */ 153858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 0), 154858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 155858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 156858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "i2c0")), /* SCK */ 157858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 1), 158858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 159858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 160858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "i2c0")), /* SDA */ 161858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 2), 162858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 163858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 164858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "pwm"), /* PWM0 */ 165858f559fSMaxime Ripard SUNXI_FUNCTION_VARIANT(0x3, 166858f559fSMaxime Ripard "spdif", /* DO */ 167858f559fSMaxime Ripard PINCTRL_SUN5I_GR8), 168858f559fSMaxime Ripard SUNXI_FUNCTION_IRQ(0x6, 16)), /* EINT16 */ 169858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 3), 170858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 171858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 172858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "ir0"), /* TX */ 173858f559fSMaxime Ripard SUNXI_FUNCTION_IRQ(0x6, 17)), /* EINT17 */ 174858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 4), 175858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 176858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 177858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "ir0"), /* RX */ 178858f559fSMaxime Ripard SUNXI_FUNCTION_IRQ(0x6, 18)), /* EINT18 */ 179858f559fSMaxime Ripard SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(B, 5), 180858f559fSMaxime Ripard PINCTRL_SUN5I_A10S | PINCTRL_SUN5I_GR8, 181858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 182858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 183858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "i2s"), /* MCLK */ 184858f559fSMaxime Ripard SUNXI_FUNCTION_IRQ(0x6, 19)), /* EINT19 */ 185858f559fSMaxime Ripard SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(B, 6), 186858f559fSMaxime Ripard PINCTRL_SUN5I_A10S | PINCTRL_SUN5I_GR8, 187858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 188858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 189858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "i2s"), /* BCLK */ 190858f559fSMaxime Ripard SUNXI_FUNCTION_IRQ(0x6, 20)), /* EINT20 */ 191858f559fSMaxime Ripard SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(B, 7), 192858f559fSMaxime Ripard PINCTRL_SUN5I_A10S | PINCTRL_SUN5I_GR8, 193858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 194858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 195858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "i2s"), /* LRCK */ 196858f559fSMaxime Ripard SUNXI_FUNCTION_IRQ(0x6, 21)), /* EINT21 */ 197858f559fSMaxime Ripard SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(B, 8), 198858f559fSMaxime Ripard PINCTRL_SUN5I_A10S | PINCTRL_SUN5I_GR8, 199858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 200858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 201858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "i2s"), /* DO */ 202858f559fSMaxime Ripard SUNXI_FUNCTION_IRQ(0x6, 22)), /* EINT22 */ 203858f559fSMaxime Ripard SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(B, 9), 204858f559fSMaxime Ripard PINCTRL_SUN5I_A10S | PINCTRL_SUN5I_GR8, 205858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 206858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 207858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "i2s"), /* DI */ 208858f559fSMaxime Ripard SUNXI_FUNCTION_VARIANT(0x3, 209858f559fSMaxime Ripard "spdif", /* DI */ 210858f559fSMaxime Ripard PINCTRL_SUN5I_GR8), 211858f559fSMaxime Ripard SUNXI_FUNCTION_IRQ(0x6, 23)), /* EINT23 */ 212858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 10), 213858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 214858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 215858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "spi2"), /* CS1 */ 216858f559fSMaxime Ripard SUNXI_FUNCTION_VARIANT(0x3, 217858f559fSMaxime Ripard "spdif", /* DO */ 218858f559fSMaxime Ripard PINCTRL_SUN5I_GR8), 219858f559fSMaxime Ripard SUNXI_FUNCTION_IRQ(0x6, 24)), /* EINT24 */ 220858f559fSMaxime Ripard SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(B, 11), 221858f559fSMaxime Ripard PINCTRL_SUN5I_A10S | PINCTRL_SUN5I_GR8, 222858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 223858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 224858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "spi2"), /* CS0 */ 225858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "jtag"), /* MS0 */ 226858f559fSMaxime Ripard SUNXI_FUNCTION_IRQ(0x6, 25)), /* EINT25 */ 227858f559fSMaxime Ripard SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(B, 12), 228858f559fSMaxime Ripard PINCTRL_SUN5I_A10S | PINCTRL_SUN5I_GR8, 229858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 230858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 231858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "spi2"), /* CLK */ 232858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "jtag"), /* CK0 */ 233858f559fSMaxime Ripard SUNXI_FUNCTION_IRQ(0x6, 26)), /* EINT26 */ 234858f559fSMaxime Ripard SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(B, 13), 235858f559fSMaxime Ripard PINCTRL_SUN5I_A10S | PINCTRL_SUN5I_GR8, 236858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 237858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 238858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "spi2"), /* MOSI */ 239858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "jtag"), /* DO0 */ 240858f559fSMaxime Ripard SUNXI_FUNCTION_IRQ(0x6, 27)), /* EINT27 */ 241858f559fSMaxime Ripard SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(B, 14), 242858f559fSMaxime Ripard PINCTRL_SUN5I_A10S | PINCTRL_SUN5I_GR8, 243858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 244858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 245858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "spi2"), /* MISO */ 246858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "jtag"), /* DI0 */ 247858f559fSMaxime Ripard SUNXI_FUNCTION_IRQ(0x6, 28)), /* EINT28 */ 248858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 15), 249858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 250858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 251858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "i2c1")), /* SCK */ 252858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 16), 253858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 254858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 255858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "i2c1")), /* SDA */ 256858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 17), 257858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 258858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 259858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "i2c2")), /* SCK */ 260858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 18), 261858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 262858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 263858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "i2c2")), /* SDA */ 264858f559fSMaxime Ripard SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(B, 19), 265858f559fSMaxime Ripard PINCTRL_SUN5I_A10S, 266858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 267858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 268858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "uart0"), /* TX */ 269858f559fSMaxime Ripard SUNXI_FUNCTION_IRQ(0x6, 29)), /* EINT29 */ 270858f559fSMaxime Ripard SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(B, 20), 271858f559fSMaxime Ripard PINCTRL_SUN5I_A10S, 272858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 273858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 274858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "uart0"), /* RX */ 275858f559fSMaxime Ripard SUNXI_FUNCTION_IRQ(0x6, 30)), /* EINT30 */ 276858f559fSMaxime Ripard /* Hole */ 277858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 0), 278858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 279858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 280858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "nand0"), /* NWE */ 281858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "spi0")), /* MOSI */ 282858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 1), 283858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 284858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 285858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "nand0"), /* NALE */ 286858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "spi0")), /* MISO */ 287858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 2), 288858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 289858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 290858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "nand0"), /* NCLE */ 291858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "spi0")), /* CLK */ 292858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 3), 293858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 294858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 295858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "nand0"), /* NCE1 */ 296858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "spi0")), /* CS0 */ 297858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 4), 298858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 299858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 300858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "nand0")), /* NCE0 */ 301858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 5), 302858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 303858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 304858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "nand0")), /* NRE */ 305858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 6), 306858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 307858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 308858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "nand0"), /* NRB0 */ 309858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "mmc2")), /* CMD */ 310858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 7), 311858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 312858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 313858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "nand0"), /* NRB1 */ 314858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "mmc2")), /* CLK */ 315858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 8), 316858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 317858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 318858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "nand0"), /* NDQ0 */ 319858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "mmc2")), /* D0 */ 320858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 9), 321858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 322858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 323858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "nand0"), /* NDQ1 */ 324858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "mmc2")), /* D1 */ 325858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 10), 326858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 327858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 328858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "nand0"), /* NDQ2 */ 329858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "mmc2")), /* D2 */ 330858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 11), 331858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 332858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 333858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "nand0"), /* NDQ3 */ 334858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "mmc2")), /* D3 */ 335858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 12), 336858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 337858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 338858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "nand0"), /* NDQ4 */ 339858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "mmc2")), /* D4 */ 340858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 13), 341858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 342858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 343858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "nand0"), /* NDQ5 */ 344858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "mmc2")), /* D5 */ 345858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 14), 346858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 347858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 348858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "nand0"), /* NDQ6 */ 349858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "mmc2")), /* D6 */ 350858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 15), 351858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 352858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 353858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "nand0"), /* NDQ7 */ 354858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "mmc2")), /* D7 */ 355858f559fSMaxime Ripard SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(C, 16), 356858f559fSMaxime Ripard PINCTRL_SUN5I_A10S, 357858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 358858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 359858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "nand0"), /* NWP */ 360858f559fSMaxime Ripard SUNXI_FUNCTION(0x4, "uart3")), /* TX */ 361858f559fSMaxime Ripard SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(C, 17), 362858f559fSMaxime Ripard PINCTRL_SUN5I_A10S, 363858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 364858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 365858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "nand0"), /* NCE2 */ 366858f559fSMaxime Ripard SUNXI_FUNCTION(0x4, "uart3")), /* RX */ 367858f559fSMaxime Ripard SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(C, 18), 368858f559fSMaxime Ripard PINCTRL_SUN5I_A10S, 369858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 370858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 371858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "nand0"), /* NCE3 */ 372858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "uart2"), /* TX */ 373858f559fSMaxime Ripard SUNXI_FUNCTION(0x4, "uart3")), /* CTS */ 374858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 19), 375858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 376858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 377858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "nand0"), /* NCE4 */ 378858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "uart2"), /* RX */ 379858f559fSMaxime Ripard SUNXI_FUNCTION(0x4, "uart3")), /* RTS */ 380858f559fSMaxime Ripard /* Hole */ 381858f559fSMaxime Ripard SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(D, 0), 382858f559fSMaxime Ripard PINCTRL_SUN5I_A10S, 383858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 384858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 385858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "lcd0")), /* D0 */ 386858f559fSMaxime Ripard SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(D, 1), 387858f559fSMaxime Ripard PINCTRL_SUN5I_A10S, 388858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 389858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 390858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "lcd0")), /* D1 */ 391858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 2), 392858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 393858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 394858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "lcd0"), /* D2 */ 395858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "uart2")), /* TX */ 396858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 3), 397858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 398858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 399858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "lcd0"), /* D3 */ 400858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "uart2")), /* RX */ 401858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 4), 402858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 403858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 404858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "lcd0"), /* D4 */ 405858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "uart2")), /* CTS */ 406858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 5), 407858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 408858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 409858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "lcd0"), /* D5 */ 410858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "uart2")), /* RTS */ 411858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 6), 412858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 413858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 414858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "lcd0"), /* D6 */ 415858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "emac")), /* ECRS */ 416858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 7), 417858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 418858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 419858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "lcd0"), /* D7 */ 420858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "emac")), /* ECOL */ 421858f559fSMaxime Ripard SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(D, 8), 422858f559fSMaxime Ripard PINCTRL_SUN5I_A10S, 423858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 424858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 425858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "lcd0")), /* D8 */ 426858f559fSMaxime Ripard SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(D, 9), 427858f559fSMaxime Ripard PINCTRL_SUN5I_A10S, 428858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 429858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 430858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "lcd0")), /* D9 */ 431858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 10), 432858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 433858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 434858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "lcd0"), /* D10 */ 435858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "emac")), /* ERXD0 */ 436858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 11), 437858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 438858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 439858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "lcd0"), /* D11 */ 440858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "emac")), /* ERXD1 */ 441858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 12), 442858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 443858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 444858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "lcd0"), /* D12 */ 445858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "emac")), /* ERXD2 */ 446858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 13), 447858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 448858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 449858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "lcd0"), /* D13 */ 450858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "emac")), /* ERXD3 */ 451858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 14), 452858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 453858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 454858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "lcd0"), /* D14 */ 455858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "emac")), /* ERXCK */ 456858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 15), 457858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 458858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 459858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "lcd0"), /* D15 */ 460858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "emac")), /* ERXERR */ 461858f559fSMaxime Ripard SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(D, 16), 462858f559fSMaxime Ripard PINCTRL_SUN5I_A10S, 463858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 464858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 465858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "lcd0")), /* D16 */ 466858f559fSMaxime Ripard SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(D, 17), 467858f559fSMaxime Ripard PINCTRL_SUN5I_A10S, 468858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 469858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 470858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "lcd0")), /* D17 */ 471858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 18), 472858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 473858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 474858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "lcd0"), /* D18 */ 475858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "emac")), /* ERXDV */ 476858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 19), 477858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 478858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 479858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "lcd0"), /* D19 */ 480858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "emac")), /* ETXD0 */ 481858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 20), 482858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 483858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 484858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "lcd0"), /* D20 */ 485858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "emac")), /* ETXD1 */ 486858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 21), 487858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 488858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 489858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "lcd0"), /* D21 */ 490858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "emac")), /* ETXD2 */ 491858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 22), 492858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 493858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 494858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "lcd0"), /* D22 */ 495858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "emac")), /* ETXD3 */ 496858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 23), 497858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 498858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 499858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "lcd0"), /* D23 */ 500858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "emac")), /* ETXEN */ 501858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 24), 502858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 503858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 504858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "lcd0"), /* CLK */ 505858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "emac")), /* ETXCK */ 506858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 25), 507858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 508858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 509858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "lcd0"), /* DE */ 510858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "emac")), /* ETXERR */ 511858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 26), 512858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 513858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 514858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "lcd0"), /* HSYNC */ 515858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "emac")), /* EMDC */ 516858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 27), 517858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 518858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 519858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "lcd0"), /* VSYNC */ 520858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "emac")), /* EMDIO */ 521858f559fSMaxime Ripard /* Hole */ 522858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 0), 523858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 524858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "ts0"), /* CLK */ 525858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "csi0"), /* PCK */ 526858f559fSMaxime Ripard SUNXI_FUNCTION(0x4, "spi2"), /* CS0 */ 527858f559fSMaxime Ripard SUNXI_FUNCTION_IRQ(0x6, 14)), /* EINT14 */ 528858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 1), 529858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 530858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "ts0"), /* ERR */ 531858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "csi0"), /* CK */ 532858f559fSMaxime Ripard SUNXI_FUNCTION(0x4, "spi2"), /* CLK */ 533858f559fSMaxime Ripard SUNXI_FUNCTION_IRQ(0x6, 15)), /* EINT15 */ 534858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 2), 535858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 536858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "ts0"), /* SYNC */ 537858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "csi0"), /* HSYNC */ 538858f559fSMaxime Ripard SUNXI_FUNCTION(0x4, "spi2")), /* MOSI */ 539858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 3), 540858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 541858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 542858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "ts0"), /* DVLD */ 543858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "csi0"), /* VSYNC */ 544858f559fSMaxime Ripard SUNXI_FUNCTION(0x4, "spi2")), /* MISO */ 545858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 4), 546858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 547858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 548858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "ts0"), /* D0 */ 549858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "csi0"), /* D0 */ 550858f559fSMaxime Ripard SUNXI_FUNCTION(0x4, "mmc2")), /* D0 */ 551858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 5), 552858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 553858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 554858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "ts0"), /* D1 */ 555858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "csi0"), /* D1 */ 556858f559fSMaxime Ripard SUNXI_FUNCTION(0x4, "mmc2")), /* D1 */ 557858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 6), 558858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 559858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 560858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "ts0"), /* D2 */ 561858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "csi0"), /* D2 */ 562858f559fSMaxime Ripard SUNXI_FUNCTION(0x4, "mmc2")), /* D2 */ 563858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 7), 564858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 565858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 566858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "ts0"), /* D3 */ 567858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "csi0"), /* D3 */ 568858f559fSMaxime Ripard SUNXI_FUNCTION(0x4, "mmc2")), /* D3 */ 569858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 8), 570858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 571858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 572858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "ts0"), /* D4 */ 573858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "csi0"), /* D4 */ 574858f559fSMaxime Ripard SUNXI_FUNCTION(0x4, "mmc2")), /* CMD */ 575858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 9), 576858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 577858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 578858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "ts0"), /* D5 */ 579858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "csi0"), /* D5 */ 580858f559fSMaxime Ripard SUNXI_FUNCTION(0x4, "mmc2")), /* CLK */ 581858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 10), 582858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 583858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 584858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "ts0"), /* D6 */ 585858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "csi0"), /* D6 */ 586858f559fSMaxime Ripard SUNXI_FUNCTION(0x4, "uart1")), /* TX */ 587858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 11), 588858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 589858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 590858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "ts0"), /* D7 */ 591858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "csi0"), /* D7 */ 592858f559fSMaxime Ripard SUNXI_FUNCTION(0x4, "uart1")), /* RX */ 593858f559fSMaxime Ripard /* Hole */ 594858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 0), 595858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 596858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 597858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "mmc0"), /* D1 */ 598858f559fSMaxime Ripard SUNXI_FUNCTION(0x4, "jtag")), /* MS1 */ 599858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 1), 600858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 601858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 602858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "mmc0"), /* D0 */ 603858f559fSMaxime Ripard SUNXI_FUNCTION(0x4, "jtag")), /* DI1 */ 604858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 2), 605858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 606858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 607858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "mmc0"), /* CLK */ 608858f559fSMaxime Ripard SUNXI_FUNCTION(0x4, "uart0")), /* TX */ 609858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 3), 610858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 611858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 612858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "mmc0"), /* CMD */ 613858f559fSMaxime Ripard SUNXI_FUNCTION(0x4, "jtag")), /* DO1 */ 614858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 4), 615858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 616858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 617858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "mmc0"), /* D3 */ 618858f559fSMaxime Ripard SUNXI_FUNCTION(0x4, "uart0")), /* RX */ 619858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 5), 620858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 621858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 622858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "mmc0"), /* D2 */ 623858f559fSMaxime Ripard SUNXI_FUNCTION(0x4, "jtag")), /* CK1 */ 624858f559fSMaxime Ripard /* Hole */ 625858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 0), 626858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 627858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "gps"), /* CLK */ 628858f559fSMaxime Ripard SUNXI_FUNCTION_IRQ(0x6, 0)), /* EINT0 */ 629858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 1), 630858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 631858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "gps"), /* SIGN */ 632858f559fSMaxime Ripard SUNXI_FUNCTION_IRQ(0x6, 1)), /* EINT1 */ 633858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 2), 634858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 635858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "gps"), /* MAG */ 636858f559fSMaxime Ripard SUNXI_FUNCTION_IRQ(0x6, 2)), /* EINT2 */ 637858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 3), 638858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 639858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 640858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "mmc1"), /* CMD */ 641858f559fSMaxime Ripard SUNXI_FUNCTION(0x4, "uart1"), /* TX */ 642858f559fSMaxime Ripard SUNXI_FUNCTION_IRQ(0x6, 3)), /* EINT3 */ 643858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 4), 644858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 645858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 646858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "mmc1"), /* CLK */ 647858f559fSMaxime Ripard SUNXI_FUNCTION(0x4, "uart1"), /* RX */ 648858f559fSMaxime Ripard SUNXI_FUNCTION_IRQ(0x6, 4)), /* EINT4 */ 649858f559fSMaxime Ripard SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(G, 5), 650858f559fSMaxime Ripard PINCTRL_SUN5I_A10S | PINCTRL_SUN5I_GR8, 651858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 652858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 653858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "mmc1"), /* DO */ 654858f559fSMaxime Ripard SUNXI_FUNCTION(0x4, "uart1"), /* CTS */ 655858f559fSMaxime Ripard SUNXI_FUNCTION_IRQ(0x6, 5)), /* EINT5 */ 656858f559fSMaxime Ripard SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(G, 6), 657858f559fSMaxime Ripard PINCTRL_SUN5I_A10S | PINCTRL_SUN5I_GR8, 658858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 659858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 660858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "mmc1"), /* D1 */ 661858f559fSMaxime Ripard SUNXI_FUNCTION(0x4, "uart1"), /* RTS */ 662858f559fSMaxime Ripard SUNXI_FUNCTION(0x5, "uart2"), /* RTS */ 663858f559fSMaxime Ripard SUNXI_FUNCTION_IRQ(0x6, 6)), /* EINT6 */ 664858f559fSMaxime Ripard SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(G, 7), 665858f559fSMaxime Ripard PINCTRL_SUN5I_A10S | PINCTRL_SUN5I_GR8, 666858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 667858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 668858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "mmc1"), /* D2 */ 669858f559fSMaxime Ripard SUNXI_FUNCTION(0x5, "uart2"), /* TX */ 670858f559fSMaxime Ripard SUNXI_FUNCTION_IRQ(0x6, 7)), /* EINT7 */ 671858f559fSMaxime Ripard SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(G, 8), 672858f559fSMaxime Ripard PINCTRL_SUN5I_A10S | PINCTRL_SUN5I_GR8, 673858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 674858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 675858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "mmc1"), /* D3 */ 676858f559fSMaxime Ripard SUNXI_FUNCTION(0x5, "uart2"), /* RX */ 677858f559fSMaxime Ripard SUNXI_FUNCTION_IRQ(0x6, 8)), /* EINT8 */ 678858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 9), 679858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 680858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 681858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "spi1"), /* CS0 */ 682858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "uart3"), /* TX */ 683858f559fSMaxime Ripard SUNXI_FUNCTION_IRQ(0x6, 9)), /* EINT9 */ 684858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 10), 685858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 686858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 687858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "spi1"), /* CLK */ 688858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "uart3"), /* RX */ 689858f559fSMaxime Ripard SUNXI_FUNCTION_IRQ(0x6, 10)), /* EINT10 */ 690858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 11), 691858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 692858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 693858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "spi1"), /* MOSI */ 694858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "uart3"), /* CTS */ 695858f559fSMaxime Ripard SUNXI_FUNCTION_IRQ(0x6, 11)), /* EINT11 */ 696858f559fSMaxime Ripard SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 12), 697858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 698858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 699858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "spi1"), /* MISO */ 700858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "uart3"), /* RTS */ 701858f559fSMaxime Ripard SUNXI_FUNCTION_IRQ(0x6, 12)), /* EINT12 */ 702858f559fSMaxime Ripard SUNXI_PIN_VARIANT(SUNXI_PINCTRL_PIN(G, 13), 703858f559fSMaxime Ripard PINCTRL_SUN5I_A10S | PINCTRL_SUN5I_GR8, 704858f559fSMaxime Ripard SUNXI_FUNCTION(0x0, "gpio_in"), 705858f559fSMaxime Ripard SUNXI_FUNCTION(0x1, "gpio_out"), 706858f559fSMaxime Ripard SUNXI_FUNCTION(0x2, "spi1"), /* CS1 */ 707858f559fSMaxime Ripard SUNXI_FUNCTION(0x3, "pwm"), /* PWM1 */ 708858f559fSMaxime Ripard SUNXI_FUNCTION(0x5, "uart2"), /* CTS */ 709858f559fSMaxime Ripard SUNXI_FUNCTION_IRQ(0x6, 13)), /* EINT13 */ 710858f559fSMaxime Ripard }; 711858f559fSMaxime Ripard 712858f559fSMaxime Ripard static const struct sunxi_pinctrl_desc sun5i_pinctrl_data = { 713858f559fSMaxime Ripard .pins = sun5i_pins, 714858f559fSMaxime Ripard .npins = ARRAY_SIZE(sun5i_pins), 715858f559fSMaxime Ripard .irq_banks = 1, 716*cd70387fSMaxime Ripard .disable_strict_mode = true, 717858f559fSMaxime Ripard }; 718858f559fSMaxime Ripard 719858f559fSMaxime Ripard static int sun5i_pinctrl_probe(struct platform_device *pdev) 720858f559fSMaxime Ripard { 721858f559fSMaxime Ripard unsigned long variant = (unsigned long)of_device_get_match_data(&pdev->dev); 722858f559fSMaxime Ripard 723858f559fSMaxime Ripard return sunxi_pinctrl_init_with_variant(pdev, &sun5i_pinctrl_data, 724858f559fSMaxime Ripard variant); 725858f559fSMaxime Ripard } 726858f559fSMaxime Ripard 727858f559fSMaxime Ripard static const struct of_device_id sun5i_pinctrl_match[] = { 728858f559fSMaxime Ripard { 729858f559fSMaxime Ripard .compatible = "allwinner,sun5i-a10s-pinctrl", 730858f559fSMaxime Ripard .data = (void *)PINCTRL_SUN5I_A10S 731858f559fSMaxime Ripard }, 732858f559fSMaxime Ripard { 733858f559fSMaxime Ripard .compatible = "allwinner,sun5i-a13-pinctrl", 734858f559fSMaxime Ripard .data = (void *)PINCTRL_SUN5I_A13 735858f559fSMaxime Ripard }, 736858f559fSMaxime Ripard { 737858f559fSMaxime Ripard .compatible = "nextthing,gr8-pinctrl", 738858f559fSMaxime Ripard .data = (void *)PINCTRL_SUN5I_GR8 739858f559fSMaxime Ripard }, 740858f559fSMaxime Ripard { }, 741858f559fSMaxime Ripard }; 742858f559fSMaxime Ripard 743858f559fSMaxime Ripard static struct platform_driver sun5i_pinctrl_driver = { 744858f559fSMaxime Ripard .probe = sun5i_pinctrl_probe, 745858f559fSMaxime Ripard .driver = { 746858f559fSMaxime Ripard .name = "sun5i-pinctrl", 747858f559fSMaxime Ripard .of_match_table = sun5i_pinctrl_match, 748858f559fSMaxime Ripard }, 749858f559fSMaxime Ripard }; 750cff1f7a9SPaul Gortmaker builtin_platform_driver(sun5i_pinctrl_driver); 751