900 lines · c
1// SPDX-License-Identifier: GPL-2.02/*3 * Allwinner H616 SoC pinctrl driver.4 *5 * Copyright (C) 2020 Arm Ltd.6 * based on the H6 pinctrl driver7 * Copyright (C) 2017 Icenowy Zheng <icenowy@aosc.io>8 */9 10#include <linux/module.h>11#include <linux/platform_device.h>12#include <linux/of.h>13#include <linux/pinctrl/pinctrl.h>14 15#include "pinctrl-sunxi.h"16 17static const struct sunxi_desc_pin h616_pins[] = {18 /* Internally connected to the AC200 part in the H616 SoC */19 SUNXI_PIN(SUNXI_PINCTRL_PIN(A, 0),20 SUNXI_FUNCTION(0x0, "gpio_in"),21 SUNXI_FUNCTION(0x1, "gpio_out"),22 SUNXI_FUNCTION(0x2, "emac1"), /* ERXD1 */23 SUNXI_FUNCTION(0x4, "i2c0"), /* SCK */24 SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 0)), /* PA_EINT0 */25 SUNXI_PIN(SUNXI_PINCTRL_PIN(A, 1),26 SUNXI_FUNCTION(0x0, "gpio_in"),27 SUNXI_FUNCTION(0x1, "gpio_out"),28 SUNXI_FUNCTION(0x2, "emac1"), /* ERXD0 */29 SUNXI_FUNCTION(0x4, "i2c0"), /* SDA */30 SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 1)), /* PA_EINT1 */31 SUNXI_PIN(SUNXI_PINCTRL_PIN(A, 2),32 SUNXI_FUNCTION(0x0, "gpio_in"),33 SUNXI_FUNCTION(0x1, "gpio_out"),34 SUNXI_FUNCTION(0x2, "emac1"), /* ECRS_DV */35 SUNXI_FUNCTION(0x4, "i2c1"), /* SCK */36 SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 2)), /* PA_EINT2 */37 SUNXI_PIN(SUNXI_PINCTRL_PIN(A, 3),38 SUNXI_FUNCTION(0x0, "gpio_in"),39 SUNXI_FUNCTION(0x1, "gpio_out"),40 SUNXI_FUNCTION(0x2, "emac1"), /* ERXERR */41 SUNXI_FUNCTION(0x4, "i2c1"), /* SDA */42 SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 3)), /* PA_EINT3 */43 SUNXI_PIN(SUNXI_PINCTRL_PIN(A, 4),44 SUNXI_FUNCTION(0x0, "gpio_in"),45 SUNXI_FUNCTION(0x1, "gpio_out"),46 SUNXI_FUNCTION(0x2, "emac1"), /* ETXD1 */47 SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 4)), /* PA_EINT4 */48 SUNXI_PIN(SUNXI_PINCTRL_PIN(A, 5),49 SUNXI_FUNCTION(0x0, "gpio_in"),50 SUNXI_FUNCTION(0x1, "gpio_out"),51 SUNXI_FUNCTION(0x2, "emac1"), /* ETXD0 */52 SUNXI_FUNCTION(0x3, "i2s0"), /* DOUT0 */53 SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 5)), /* PA_EINT5 */54 SUNXI_PIN(SUNXI_PINCTRL_PIN(A, 6),55 SUNXI_FUNCTION(0x0, "gpio_in"),56 SUNXI_FUNCTION(0x1, "gpio_out"),57 SUNXI_FUNCTION(0x2, "emac1"), /* ETXCK */58 SUNXI_FUNCTION(0x3, "i2s0"), /* MCLK */59 SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 6)), /* PA_EINT6 */60 SUNXI_PIN(SUNXI_PINCTRL_PIN(A, 7),61 SUNXI_FUNCTION(0x0, "gpio_in"),62 SUNXI_FUNCTION(0x1, "gpio_out"),63 SUNXI_FUNCTION(0x2, "emac1"), /* ETXEN */64 SUNXI_FUNCTION(0x3, "i2s0"), /* BCLK */65 SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 7)), /* PA_EINT7 */66 SUNXI_PIN(SUNXI_PINCTRL_PIN(A, 8),67 SUNXI_FUNCTION(0x0, "gpio_in"),68 SUNXI_FUNCTION(0x1, "gpio_out"),69 SUNXI_FUNCTION(0x2, "emac1"), /* EMDC */70 SUNXI_FUNCTION(0x3, "i2s0"), /* LRCK */71 SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 8)), /* PA_EINT8 */72 SUNXI_PIN(SUNXI_PINCTRL_PIN(A, 9),73 SUNXI_FUNCTION(0x0, "gpio_in"),74 SUNXI_FUNCTION(0x1, "gpio_out"),75 SUNXI_FUNCTION(0x2, "emac1"), /* EMDIO */76 SUNXI_FUNCTION(0x3, "i2s0"), /* DIN0 */77 SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 9)), /* PA_EINT9 */78 SUNXI_PIN(SUNXI_PINCTRL_PIN(A, 10),79 SUNXI_FUNCTION(0x0, "gpio_in"),80 SUNXI_FUNCTION(0x1, "gpio_out"),81 SUNXI_FUNCTION(0x2, "i2c3"), /* SCK */82 SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 10)), /* PA_EINT10 */83 SUNXI_PIN(SUNXI_PINCTRL_PIN(A, 11),84 SUNXI_FUNCTION(0x0, "gpio_in"),85 SUNXI_FUNCTION(0x1, "gpio_out"),86 SUNXI_FUNCTION(0x2, "i2c3"), /* SDA */87 SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 11)), /* PA_EINT11 */88 SUNXI_PIN(SUNXI_PINCTRL_PIN(A, 12),89 SUNXI_FUNCTION(0x0, "gpio_in"),90 SUNXI_FUNCTION(0x1, "gpio_out"),91 SUNXI_FUNCTION(0x2, "pwm5"),92 SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 12)), /* PA_EINT12 */93 /* Hole */94 SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 0),95 SUNXI_FUNCTION(0x0, "gpio_in"),96 SUNXI_FUNCTION(0x1, "gpio_out"),97 SUNXI_FUNCTION(0x2, "nand0"), /* WE */98 SUNXI_FUNCTION(0x3, "mmc2"), /* DS */99 SUNXI_FUNCTION(0x4, "spi0"), /* CLK */100 SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 0)), /* PC_EINT0 */101 SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 1),102 SUNXI_FUNCTION(0x0, "gpio_in"),103 SUNXI_FUNCTION(0x1, "gpio_out"),104 SUNXI_FUNCTION(0x2, "nand0"), /* ALE */105 SUNXI_FUNCTION(0x3, "mmc2"), /* RST */106 SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 1)), /* PC_EINT1 */107 SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 2),108 SUNXI_FUNCTION(0x0, "gpio_in"),109 SUNXI_FUNCTION(0x1, "gpio_out"),110 SUNXI_FUNCTION(0x2, "nand0"), /* CLE */111 SUNXI_FUNCTION(0x4, "spi0"), /* MOSI */112 SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 2)), /* PC_EINT2 */113 SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 3),114 SUNXI_FUNCTION(0x0, "gpio_in"),115 SUNXI_FUNCTION(0x1, "gpio_out"),116 SUNXI_FUNCTION(0x2, "nand0"), /* CE1 */117 SUNXI_FUNCTION(0x4, "spi0"), /* CS0 */118 SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 3)), /* PC_EINT3 */119 SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 4),120 SUNXI_FUNCTION(0x0, "gpio_in"),121 SUNXI_FUNCTION(0x1, "gpio_out"),122 SUNXI_FUNCTION(0x2, "nand0"), /* CE0 */123 SUNXI_FUNCTION(0x4, "spi0"), /* MISO */124 SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 4)), /* PC_EINT4 */125 SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 5),126 SUNXI_FUNCTION(0x0, "gpio_in"),127 SUNXI_FUNCTION(0x1, "gpio_out"),128 SUNXI_FUNCTION(0x2, "nand0"), /* RE */129 SUNXI_FUNCTION(0x3, "mmc2"), /* CLK */130 SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 5)), /* PC_EINT5 */131 SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 6),132 SUNXI_FUNCTION(0x0, "gpio_in"),133 SUNXI_FUNCTION(0x1, "gpio_out"),134 SUNXI_FUNCTION(0x2, "nand0"), /* RB0 */135 SUNXI_FUNCTION(0x3, "mmc2"), /* CMD */136 SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 6)), /* PC_EINT6 */137 SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 7),138 SUNXI_FUNCTION(0x0, "gpio_in"),139 SUNXI_FUNCTION(0x1, "gpio_out"),140 SUNXI_FUNCTION(0x2, "nand0"), /* RB1 */141 SUNXI_FUNCTION(0x4, "spi0"), /* CS1 */142 SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 7)), /* PC_EINT7 */143 SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 8),144 SUNXI_FUNCTION(0x0, "gpio_in"),145 SUNXI_FUNCTION(0x1, "gpio_out"),146 SUNXI_FUNCTION(0x2, "nand0"), /* DQ7 */147 SUNXI_FUNCTION(0x3, "mmc2"), /* D3 */148 SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 8)), /* PC_EINT8 */149 SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 9),150 SUNXI_FUNCTION(0x0, "gpio_in"),151 SUNXI_FUNCTION(0x1, "gpio_out"),152 SUNXI_FUNCTION(0x2, "nand0"), /* DQ6 */153 SUNXI_FUNCTION(0x3, "mmc2"), /* D4 */154 SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 9)), /* PC_EINT9 */155 SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 10),156 SUNXI_FUNCTION(0x0, "gpio_in"),157 SUNXI_FUNCTION(0x1, "gpio_out"),158 SUNXI_FUNCTION(0x2, "nand0"), /* DQ5 */159 SUNXI_FUNCTION(0x3, "mmc2"), /* D0 */160 SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 10)), /* PC_EINT10 */161 SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 11),162 SUNXI_FUNCTION(0x0, "gpio_in"),163 SUNXI_FUNCTION(0x1, "gpio_out"),164 SUNXI_FUNCTION(0x2, "nand0"), /* DQ4 */165 SUNXI_FUNCTION(0x3, "mmc2"), /* D5 */166 SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 11)), /* PC_EINT11 */167 SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 12),168 SUNXI_FUNCTION(0x0, "gpio_in"),169 SUNXI_FUNCTION(0x1, "gpio_out"),170 SUNXI_FUNCTION(0x2, "nand0"), /* DQS */171 SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 12)), /* PC_EINT12 */172 SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 13),173 SUNXI_FUNCTION(0x0, "gpio_in"),174 SUNXI_FUNCTION(0x1, "gpio_out"),175 SUNXI_FUNCTION(0x2, "nand0"), /* DQ3 */176 SUNXI_FUNCTION(0x3, "mmc2"), /* D1 */177 SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 13)), /* PC_EINT13 */178 SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 14),179 SUNXI_FUNCTION(0x0, "gpio_in"),180 SUNXI_FUNCTION(0x1, "gpio_out"),181 SUNXI_FUNCTION(0x2, "nand0"), /* DQ2 */182 SUNXI_FUNCTION(0x3, "mmc2"), /* D6 */183 SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 14)), /* PC_EINT14 */184 SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 15),185 SUNXI_FUNCTION(0x0, "gpio_in"),186 SUNXI_FUNCTION(0x1, "gpio_out"),187 SUNXI_FUNCTION(0x2, "nand0"), /* DQ1 */188 SUNXI_FUNCTION(0x3, "mmc2"), /* D2 */189 SUNXI_FUNCTION(0x4, "spi0"), /* WP */190 SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 15)), /* PC_EINT15 */191 SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 16),192 SUNXI_FUNCTION(0x0, "gpio_in"),193 SUNXI_FUNCTION(0x1, "gpio_out"),194 SUNXI_FUNCTION(0x2, "nand0"), /* DQ0 */195 SUNXI_FUNCTION(0x3, "mmc2"), /* D7 */196 SUNXI_FUNCTION(0x4, "spi0"), /* HOLD */197 SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 16)), /* PC_EINT16 */198 /* Hole */199 SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 0),200 SUNXI_FUNCTION(0x0, "gpio_in"),201 SUNXI_FUNCTION(0x1, "gpio_out"),202 SUNXI_FUNCTION(0x2, "lcd0"), /* D0 */203 SUNXI_FUNCTION(0x3, "lvds0"), /* VP0 */204 SUNXI_FUNCTION(0x4, "ts0"), /* CLK */205 SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 0)), /* PD_EINT0 */206 SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 1),207 SUNXI_FUNCTION(0x0, "gpio_in"),208 SUNXI_FUNCTION(0x1, "gpio_out"),209 SUNXI_FUNCTION(0x2, "lcd0"), /* D1 */210 SUNXI_FUNCTION(0x3, "lvds0"), /* VN0 */211 SUNXI_FUNCTION(0x4, "ts0"), /* ERR */212 SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 1)), /* PD_EINT1 */213 SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 2),214 SUNXI_FUNCTION(0x0, "gpio_in"),215 SUNXI_FUNCTION(0x1, "gpio_out"),216 SUNXI_FUNCTION(0x2, "lcd0"), /* D2 */217 SUNXI_FUNCTION(0x3, "lvds0"), /* VP1 */218 SUNXI_FUNCTION(0x4, "ts0"), /* SYNC */219 SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 2)), /* PD_EINT2 */220 SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 3),221 SUNXI_FUNCTION(0x0, "gpio_in"),222 SUNXI_FUNCTION(0x1, "gpio_out"),223 SUNXI_FUNCTION(0x2, "lcd0"), /* D3 */224 SUNXI_FUNCTION(0x3, "lvds0"), /* VN1 */225 SUNXI_FUNCTION(0x4, "ts0"), /* DVLD */226 SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 3)), /* PD_EINT3 */227 SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 4),228 SUNXI_FUNCTION(0x0, "gpio_in"),229 SUNXI_FUNCTION(0x1, "gpio_out"),230 SUNXI_FUNCTION(0x2, "lcd0"), /* D4 */231 SUNXI_FUNCTION(0x3, "lvds0"), /* VP2 */232 SUNXI_FUNCTION(0x4, "ts0"), /* D0 */233 SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 4)), /* PD_EINT4 */234 SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 5),235 SUNXI_FUNCTION(0x0, "gpio_in"),236 SUNXI_FUNCTION(0x1, "gpio_out"),237 SUNXI_FUNCTION(0x2, "lcd0"), /* D5 */238 SUNXI_FUNCTION(0x3, "lvds0"), /* VN2 */239 SUNXI_FUNCTION(0x4, "ts0"), /* D1 */240 SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 5)), /* PD_EINT5 */241 SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 6),242 SUNXI_FUNCTION(0x0, "gpio_in"),243 SUNXI_FUNCTION(0x1, "gpio_out"),244 SUNXI_FUNCTION(0x2, "lcd0"), /* D6 */245 SUNXI_FUNCTION(0x3, "lvds0"), /* VPC */246 SUNXI_FUNCTION(0x4, "ts0"), /* D2 */247 SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 6)), /* PD_EINT6 */248 SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 7),249 SUNXI_FUNCTION(0x0, "gpio_in"),250 SUNXI_FUNCTION(0x1, "gpio_out"),251 SUNXI_FUNCTION(0x2, "lcd0"), /* D7 */252 SUNXI_FUNCTION(0x3, "lvds0"), /* VNC */253 SUNXI_FUNCTION(0x4, "ts0"), /* D3 */254 SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 7)), /* PD_EINT7 */255 SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 8),256 SUNXI_FUNCTION(0x0, "gpio_in"),257 SUNXI_FUNCTION(0x1, "gpio_out"),258 SUNXI_FUNCTION(0x2, "lcd0"), /* D8 */259 SUNXI_FUNCTION(0x3, "lvds0"), /* VP3 */260 SUNXI_FUNCTION(0x4, "ts0"), /* D4 */261 SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 8)), /* PD_EINT8 */262 SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 9),263 SUNXI_FUNCTION(0x0, "gpio_in"),264 SUNXI_FUNCTION(0x1, "gpio_out"),265 SUNXI_FUNCTION(0x2, "lcd0"), /* D9 */266 SUNXI_FUNCTION(0x3, "lvds0"), /* VN3 */267 SUNXI_FUNCTION(0x4, "ts0"), /* D5 */268 SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 9)), /* PD_EINT9 */269 SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 10),270 SUNXI_FUNCTION(0x0, "gpio_in"),271 SUNXI_FUNCTION(0x1, "gpio_out"),272 SUNXI_FUNCTION(0x2, "lcd0"), /* D10 */273 SUNXI_FUNCTION(0x3, "lvds1"), /* VP0 */274 SUNXI_FUNCTION(0x4, "ts0"), /* D6 */275 SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 10)), /* PD_EINT10 */276 SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 11),277 SUNXI_FUNCTION(0x0, "gpio_in"),278 SUNXI_FUNCTION(0x1, "gpio_out"),279 SUNXI_FUNCTION(0x2, "lcd0"), /* D11 */280 SUNXI_FUNCTION(0x3, "lvds1"), /* VN0 */281 SUNXI_FUNCTION(0x4, "ts0"), /* D7 */282 SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 11)), /* PD_EINT11 */283 SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 12),284 SUNXI_FUNCTION(0x0, "gpio_in"),285 SUNXI_FUNCTION(0x1, "gpio_out"),286 SUNXI_FUNCTION(0x2, "lcd0"), /* D12 */287 SUNXI_FUNCTION(0x3, "lvds1"), /* VP1 */288 SUNXI_FUNCTION(0x4, "sim"), /* VPPEN */289 SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 12)), /* PD_EINT12 */290 SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 13),291 SUNXI_FUNCTION(0x0, "gpio_in"),292 SUNXI_FUNCTION(0x1, "gpio_out"),293 SUNXI_FUNCTION(0x2, "lcd0"), /* D13 */294 SUNXI_FUNCTION(0x3, "lvds1"), /* VN1 */295 SUNXI_FUNCTION(0x4, "sim"), /* VPPPP */296 SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 13)), /* PD_EINT13 */297 SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 14),298 SUNXI_FUNCTION(0x0, "gpio_in"),299 SUNXI_FUNCTION(0x1, "gpio_out"),300 SUNXI_FUNCTION(0x2, "lcd0"), /* D14 */301 SUNXI_FUNCTION(0x3, "lvds1"), /* VP2 */302 SUNXI_FUNCTION(0x4, "sim"), /* PWREN */303 SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 14)), /* PD_EINT14 */304 SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 15),305 SUNXI_FUNCTION(0x0, "gpio_in"),306 SUNXI_FUNCTION(0x1, "gpio_out"),307 SUNXI_FUNCTION(0x2, "lcd0"), /* D15 */308 SUNXI_FUNCTION(0x3, "lvds1"), /* VN2 */309 SUNXI_FUNCTION(0x4, "sim"), /* CLK */310 SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 15)), /* PD_EINT15 */311 SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 16),312 SUNXI_FUNCTION(0x0, "gpio_in"),313 SUNXI_FUNCTION(0x1, "gpio_out"),314 SUNXI_FUNCTION(0x2, "lcd0"), /* D16 */315 SUNXI_FUNCTION(0x3, "lvds1"), /* VPC */316 SUNXI_FUNCTION(0x4, "sim"), /* DATA */317 SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 16)), /* PD_EINT16 */318 SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 17),319 SUNXI_FUNCTION(0x0, "gpio_in"),320 SUNXI_FUNCTION(0x1, "gpio_out"),321 SUNXI_FUNCTION(0x2, "lcd0"), /* D17 */322 SUNXI_FUNCTION(0x3, "lvds1"), /* VNC */323 SUNXI_FUNCTION(0x4, "sim"), /* RST */324 SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 17)), /* PD_EINT17 */325 SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 18),326 SUNXI_FUNCTION(0x0, "gpio_in"),327 SUNXI_FUNCTION(0x1, "gpio_out"),328 SUNXI_FUNCTION(0x2, "lcd0"), /* D18 */329 SUNXI_FUNCTION(0x3, "lvds1"), /* VP3 */330 SUNXI_FUNCTION(0x4, "sim"), /* DET */331 SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 18)), /* PD_EINT18 */332 SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 19),333 SUNXI_FUNCTION(0x0, "gpio_in"),334 SUNXI_FUNCTION(0x1, "gpio_out"),335 SUNXI_FUNCTION(0x2, "lcd0"), /* D19 */336 SUNXI_FUNCTION(0x3, "lvds1"), /* VN3 */337 SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 19)), /* PD_EINT19 */338 SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 20),339 SUNXI_FUNCTION(0x0, "gpio_in"),340 SUNXI_FUNCTION(0x1, "gpio_out"),341 SUNXI_FUNCTION(0x2, "lcd0"), /* D20 */342 SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 20)), /* PD_EINT20 */343 SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 21),344 SUNXI_FUNCTION(0x0, "gpio_in"),345 SUNXI_FUNCTION(0x1, "gpio_out"),346 SUNXI_FUNCTION(0x2, "lcd0"), /* D21 */347 SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 21)), /* PD_EINT21 */348 SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 22),349 SUNXI_FUNCTION(0x0, "gpio_in"),350 SUNXI_FUNCTION(0x1, "gpio_out"),351 SUNXI_FUNCTION(0x2, "lcd0"), /* D22 */352 SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 22)), /* PD_EINT22 */353 SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 23),354 SUNXI_FUNCTION(0x0, "gpio_in"),355 SUNXI_FUNCTION(0x1, "gpio_out"),356 SUNXI_FUNCTION(0x2, "lcd0"), /* D23 */357 SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 23)), /* PD_EINT23 */358 SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 24),359 SUNXI_FUNCTION(0x0, "gpio_in"),360 SUNXI_FUNCTION(0x1, "gpio_out"),361 SUNXI_FUNCTION(0x2, "lcd0"), /* CLK */362 SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 24)), /* PD_EINT24 */363 SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 25),364 SUNXI_FUNCTION(0x0, "gpio_in"),365 SUNXI_FUNCTION(0x1, "gpio_out"),366 SUNXI_FUNCTION(0x2, "lcd0"), /* DE */367 SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 25)), /* PD_EINT25 */368 SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 26),369 SUNXI_FUNCTION(0x0, "gpio_in"),370 SUNXI_FUNCTION(0x1, "gpio_out"),371 SUNXI_FUNCTION(0x2, "lcd0"), /* HSYNC */372 SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 26)), /* PD_EINT26 */373 SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 27),374 SUNXI_FUNCTION(0x0, "gpio_in"),375 SUNXI_FUNCTION(0x1, "gpio_out"),376 SUNXI_FUNCTION(0x2, "lcd0"), /* VSYNC */377 SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 27)), /* PD_EINT27 */378 SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 28),379 SUNXI_FUNCTION(0x0, "gpio_in"),380 SUNXI_FUNCTION(0x1, "gpio_out"),381 SUNXI_FUNCTION(0x2, "pwm0"),382 SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 28)), /* PD_EINT28 */383 /* Hole */384 SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 0),385 SUNXI_FUNCTION(0x0, "gpio_in"),386 SUNXI_FUNCTION(0x1, "gpio_out"),387 SUNXI_FUNCTION(0x2, "csi"), /* PCLK */388 SUNXI_FUNCTION_IRQ_BANK(0x6, 3, 0)), /* PE_EINT0 */389 SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 1),390 SUNXI_FUNCTION(0x0, "gpio_in"),391 SUNXI_FUNCTION(0x1, "gpio_out"),392 SUNXI_FUNCTION(0x2, "csi"), /* MCLK */393 SUNXI_FUNCTION_IRQ_BANK(0x6, 3, 1)), /* PE_EINT1 */394 SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 2),395 SUNXI_FUNCTION(0x0, "gpio_in"),396 SUNXI_FUNCTION(0x1, "gpio_out"),397 SUNXI_FUNCTION(0x2, "csi"), /* HSYNC */398 SUNXI_FUNCTION_IRQ_BANK(0x6, 3, 2)), /* PE_EINT2 */399 SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 3),400 SUNXI_FUNCTION(0x0, "gpio_in"),401 SUNXI_FUNCTION(0x1, "gpio_out"),402 SUNXI_FUNCTION(0x2, "csi"), /* VSYNC */403 SUNXI_FUNCTION_IRQ_BANK(0x6, 3, 3)), /* PE_EINT3 */404 SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 4),405 SUNXI_FUNCTION(0x0, "gpio_in"),406 SUNXI_FUNCTION(0x1, "gpio_out"),407 SUNXI_FUNCTION(0x2, "csi"), /* D0 */408 SUNXI_FUNCTION_IRQ_BANK(0x6, 3, 4)), /* PE_EINT4 */409 SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 5),410 SUNXI_FUNCTION(0x0, "gpio_in"),411 SUNXI_FUNCTION(0x1, "gpio_out"),412 SUNXI_FUNCTION(0x2, "csi"), /* D1 */413 SUNXI_FUNCTION_IRQ_BANK(0x6, 3, 5)), /* PE_EINT5 */414 SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 6),415 SUNXI_FUNCTION(0x0, "gpio_in"),416 SUNXI_FUNCTION(0x1, "gpio_out"),417 SUNXI_FUNCTION(0x2, "csi"), /* D2 */418 SUNXI_FUNCTION_IRQ_BANK(0x6, 3, 6)), /* PE_EINT6 */419 SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 7),420 SUNXI_FUNCTION(0x0, "gpio_in"),421 SUNXI_FUNCTION(0x1, "gpio_out"),422 SUNXI_FUNCTION(0x2, "csi"), /* D3 */423 SUNXI_FUNCTION_IRQ_BANK(0x6, 3, 7)), /* PE_EINT7 */424 SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 8),425 SUNXI_FUNCTION(0x0, "gpio_in"),426 SUNXI_FUNCTION(0x1, "gpio_out"),427 SUNXI_FUNCTION(0x2, "csi"), /* D4 */428 SUNXI_FUNCTION_IRQ_BANK(0x6, 3, 8)), /* PE_EINT8 */429 SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 9),430 SUNXI_FUNCTION(0x0, "gpio_in"),431 SUNXI_FUNCTION(0x1, "gpio_out"),432 SUNXI_FUNCTION(0x2, "csi"), /* D5 */433 SUNXI_FUNCTION_IRQ_BANK(0x6, 3, 9)), /* PE_EINT9 */434 SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 10),435 SUNXI_FUNCTION(0x0, "gpio_in"),436 SUNXI_FUNCTION(0x1, "gpio_out"),437 SUNXI_FUNCTION(0x2, "csi"), /* D6 */438 SUNXI_FUNCTION_IRQ_BANK(0x6, 3, 10)), /* PE_EINT10 */439 SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 11),440 SUNXI_FUNCTION(0x0, "gpio_in"),441 SUNXI_FUNCTION(0x1, "gpio_out"),442 SUNXI_FUNCTION(0x2, "csi"), /* D7 */443 SUNXI_FUNCTION_IRQ_BANK(0x6, 3, 11)), /* PE_EINT11 */444 SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 12),445 SUNXI_FUNCTION(0x0, "gpio_in"),446 SUNXI_FUNCTION(0x1, "gpio_out"),447 SUNXI_FUNCTION(0x2, "csi"), /* D8 */448 SUNXI_FUNCTION_IRQ_BANK(0x6, 3, 12)), /* PE_EINT12 */449 SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 13),450 SUNXI_FUNCTION(0x0, "gpio_in"),451 SUNXI_FUNCTION(0x1, "gpio_out"),452 SUNXI_FUNCTION(0x2, "csi"), /* D9 */453 SUNXI_FUNCTION_IRQ_BANK(0x6, 3, 13)), /* PE_EINT13 */454 SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 14),455 SUNXI_FUNCTION(0x0, "gpio_in"),456 SUNXI_FUNCTION(0x1, "gpio_out"),457 SUNXI_FUNCTION(0x2, "csi"), /* D10 */458 SUNXI_FUNCTION_IRQ_BANK(0x6, 3, 14)), /* PE_EINT14 */459 SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 15),460 SUNXI_FUNCTION(0x0, "gpio_in"),461 SUNXI_FUNCTION(0x1, "gpio_out"),462 SUNXI_FUNCTION(0x2, "csi"), /* D11 */463 SUNXI_FUNCTION_IRQ_BANK(0x6, 3, 15)), /* PE_EINT15 */464 SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 16),465 SUNXI_FUNCTION(0x0, "gpio_in"),466 SUNXI_FUNCTION(0x1, "gpio_out"),467 SUNXI_FUNCTION(0x2, "csi"), /* D12 */468 SUNXI_FUNCTION_IRQ_BANK(0x6, 3, 16)), /* PE_EINT16 */469 SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 17),470 SUNXI_FUNCTION(0x0, "gpio_in"),471 SUNXI_FUNCTION(0x1, "gpio_out"),472 SUNXI_FUNCTION(0x2, "csi"), /* D13 */473 SUNXI_FUNCTION_IRQ_BANK(0x6, 3, 17)), /* PE_EINT17 */474 SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 18),475 SUNXI_FUNCTION(0x0, "gpio_in"),476 SUNXI_FUNCTION(0x1, "gpio_out"),477 SUNXI_FUNCTION(0x2, "csi"), /* D14 */478 SUNXI_FUNCTION_IRQ_BANK(0x6, 3, 18)), /* PE_EINT18 */479 SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 19),480 SUNXI_FUNCTION(0x0, "gpio_in"),481 SUNXI_FUNCTION(0x1, "gpio_out"),482 SUNXI_FUNCTION(0x2, "csi"), /* D15 */483 SUNXI_FUNCTION_IRQ_BANK(0x6, 3, 19)), /* PE_EINT19 */484 SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 20),485 SUNXI_FUNCTION(0x0, "gpio_in"),486 SUNXI_FUNCTION(0x1, "gpio_out"),487 SUNXI_FUNCTION(0x2, "csi"), /* SCK */488 SUNXI_FUNCTION(0x5, "i2c2"), /* SCK */489 SUNXI_FUNCTION_IRQ_BANK(0x6, 3, 20)), /* PE_EINT20 */490 SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 21),491 SUNXI_FUNCTION(0x0, "gpio_in"),492 SUNXI_FUNCTION(0x1, "gpio_out"),493 SUNXI_FUNCTION(0x2, "csi"), /* SDA */494 SUNXI_FUNCTION(0x5, "i2c2"), /* SDA */495 SUNXI_FUNCTION_IRQ_BANK(0x6, 3, 21)), /* PE_EINT21 */496 SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 22),497 SUNXI_FUNCTION(0x0, "gpio_in"),498 SUNXI_FUNCTION(0x1, "gpio_out"),499 SUNXI_FUNCTION(0x2, "csi"), /* FSIN0 */500 SUNXI_FUNCTION(0x4, "tcon0"), /* TRIG0 */501 SUNXI_FUNCTION_IRQ_BANK(0x6, 3, 22)), /* PE_EINT22 */502 /* Hole */503 SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 0),504 SUNXI_FUNCTION(0x0, "gpio_in"),505 SUNXI_FUNCTION(0x1, "gpio_out"),506 SUNXI_FUNCTION(0x2, "mmc0"), /* D1 */507 SUNXI_FUNCTION(0x3, "jtag"), /* MS */508 SUNXI_FUNCTION_IRQ_BANK(0x6, 4, 0)), /* PF_EINT0 */509 SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 1),510 SUNXI_FUNCTION(0x0, "gpio_in"),511 SUNXI_FUNCTION(0x1, "gpio_out"),512 SUNXI_FUNCTION(0x2, "mmc0"), /* D0 */513 SUNXI_FUNCTION(0x3, "jtag"), /* DI */514 SUNXI_FUNCTION_IRQ_BANK(0x6, 4, 1)), /* PF_EINT1 */515 SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 2),516 SUNXI_FUNCTION(0x0, "gpio_in"),517 SUNXI_FUNCTION(0x1, "gpio_out"),518 SUNXI_FUNCTION(0x2, "mmc0"), /* CLK */519 SUNXI_FUNCTION(0x3, "uart0"), /* TX */520 SUNXI_FUNCTION_IRQ_BANK(0x6, 4, 2)), /* PF_EINT2 */521 SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 3),522 SUNXI_FUNCTION(0x0, "gpio_in"),523 SUNXI_FUNCTION(0x1, "gpio_out"),524 SUNXI_FUNCTION(0x2, "mmc0"), /* CMD */525 SUNXI_FUNCTION(0x3, "jtag"), /* DO */526 SUNXI_FUNCTION_IRQ_BANK(0x6, 4, 3)), /* PF_EINT3 */527 SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 4),528 SUNXI_FUNCTION(0x0, "gpio_in"),529 SUNXI_FUNCTION(0x1, "gpio_out"),530 SUNXI_FUNCTION(0x2, "mmc0"), /* D3 */531 SUNXI_FUNCTION(0x3, "uart0"), /* RX */532 SUNXI_FUNCTION_IRQ_BANK(0x6, 4, 4)), /* PF_EINT4 */533 SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 5),534 SUNXI_FUNCTION(0x0, "gpio_in"),535 SUNXI_FUNCTION(0x1, "gpio_out"),536 SUNXI_FUNCTION(0x2, "mmc0"), /* D2 */537 SUNXI_FUNCTION(0x3, "jtag"), /* CK */538 SUNXI_FUNCTION_IRQ_BANK(0x6, 4, 5)), /* PF_EINT5 */539 SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 6),540 SUNXI_FUNCTION(0x0, "gpio_in"),541 SUNXI_FUNCTION(0x1, "gpio_out"),542 SUNXI_FUNCTION_IRQ_BANK(0x6, 4, 6)), /* PF_EINT6 */543 /* Hole */544 SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 0),545 SUNXI_FUNCTION(0x0, "gpio_in"),546 SUNXI_FUNCTION(0x1, "gpio_out"),547 SUNXI_FUNCTION(0x2, "mmc1"), /* CLK */548 SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 0)), /* PG_EINT0 */549 SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 1),550 SUNXI_FUNCTION(0x0, "gpio_in"),551 SUNXI_FUNCTION(0x1, "gpio_out"),552 SUNXI_FUNCTION(0x2, "mmc1"), /* CMD */553 SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 1)), /* PG_EINT1 */554 SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 2),555 SUNXI_FUNCTION(0x0, "gpio_in"),556 SUNXI_FUNCTION(0x1, "gpio_out"),557 SUNXI_FUNCTION(0x2, "mmc1"), /* D0 */558 SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 2)), /* PG_EINT2 */559 SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 3),560 SUNXI_FUNCTION(0x0, "gpio_in"),561 SUNXI_FUNCTION(0x1, "gpio_out"),562 SUNXI_FUNCTION(0x2, "mmc1"), /* D1 */563 SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 3)), /* PG_EINT3 */564 SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 4),565 SUNXI_FUNCTION(0x0, "gpio_in"),566 SUNXI_FUNCTION(0x1, "gpio_out"),567 SUNXI_FUNCTION(0x2, "mmc1"), /* D2 */568 SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 4)), /* PG_EINT4 */569 SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 5),570 SUNXI_FUNCTION(0x0, "gpio_in"),571 SUNXI_FUNCTION(0x1, "gpio_out"),572 SUNXI_FUNCTION(0x2, "mmc1"), /* D3 */573 SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 5)), /* PG_EINT5 */574 SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 6),575 SUNXI_FUNCTION(0x0, "gpio_in"),576 SUNXI_FUNCTION(0x1, "gpio_out"),577 SUNXI_FUNCTION(0x2, "uart1"), /* TX */578 SUNXI_FUNCTION(0x4, "jtag"), /* MS */579 SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 6)), /* PG_EINT6 */580 SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 7),581 SUNXI_FUNCTION(0x0, "gpio_in"),582 SUNXI_FUNCTION(0x1, "gpio_out"),583 SUNXI_FUNCTION(0x2, "uart1"), /* RX */584 SUNXI_FUNCTION(0x4, "jtag"), /* CK */585 SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 7)), /* PG_EINT7 */586 SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 8),587 SUNXI_FUNCTION(0x0, "gpio_in"),588 SUNXI_FUNCTION(0x1, "gpio_out"),589 SUNXI_FUNCTION(0x2, "uart1"), /* RTS */590 SUNXI_FUNCTION(0x3, "clock"), /* PLL_LOCK_DEBUG */591 SUNXI_FUNCTION(0x4, "jtag"), /* DO */592 SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 8)), /* PG_EINT8 */593 SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 9),594 SUNXI_FUNCTION(0x0, "gpio_in"),595 SUNXI_FUNCTION(0x1, "gpio_out"),596 SUNXI_FUNCTION(0x2, "uart1"), /* CTS */597 SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 9)), /* PG_EINT9 */598 SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 10),599 SUNXI_FUNCTION(0x0, "gpio_in"),600 SUNXI_FUNCTION(0x1, "gpio_out"),601 SUNXI_FUNCTION(0x2, "i2s2"), /* MCLK */602 SUNXI_FUNCTION(0x3, "clock"), /* X32KFOUT */603 SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 10)), /* PG_EINT10 */604 SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 11),605 SUNXI_FUNCTION(0x0, "gpio_in"),606 SUNXI_FUNCTION(0x1, "gpio_out"),607 SUNXI_FUNCTION(0x2, "i2s2"), /* BCLK */608 SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 11)), /* PG_EINT11 */609 SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 12),610 SUNXI_FUNCTION(0x0, "gpio_in"),611 SUNXI_FUNCTION(0x1, "gpio_out"),612 SUNXI_FUNCTION(0x2, "i2s2"), /* SYNC */613 SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 12)), /* PG_EINT12 */614 SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 13),615 SUNXI_FUNCTION(0x0, "gpio_in"),616 SUNXI_FUNCTION(0x1, "gpio_out"),617 SUNXI_FUNCTION(0x2, "i2s2"), /* DOUT */618 SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 13)), /* PG_EINT13 */619 SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 14),620 SUNXI_FUNCTION(0x0, "gpio_in"),621 SUNXI_FUNCTION(0x1, "gpio_out"),622 SUNXI_FUNCTION(0x2, "i2s2"), /* DIN */623 SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 14)), /* PG_EINT14 */624 SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 15),625 SUNXI_FUNCTION(0x0, "gpio_in"),626 SUNXI_FUNCTION(0x1, "gpio_out"),627 SUNXI_FUNCTION(0x2, "uart2"), /* TX */628 SUNXI_FUNCTION(0x5, "i2c4"), /* SCK */629 SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 15)), /* PG_EINT15 */630 SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 16),631 SUNXI_FUNCTION(0x0, "gpio_in"),632 SUNXI_FUNCTION(0x1, "gpio_out"),633 SUNXI_FUNCTION(0x2, "uart2"), /* RX */634 SUNXI_FUNCTION(0x5, "i2c4"), /* SDA */635 SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 16)), /* PG_EINT16 */636 SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 17),637 SUNXI_FUNCTION(0x0, "gpio_in"),638 SUNXI_FUNCTION(0x1, "gpio_out"),639 SUNXI_FUNCTION(0x2, "uart2"), /* RTS */640 SUNXI_FUNCTION(0x5, "i2c3"), /* SCK */641 SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 17)), /* PG_EINT17 */642 SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 18),643 SUNXI_FUNCTION(0x0, "gpio_in"),644 SUNXI_FUNCTION(0x1, "gpio_out"),645 SUNXI_FUNCTION(0x2, "uart2"), /* CTS */646 SUNXI_FUNCTION(0x5, "i2c3"), /* SDA */647 SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 18)), /* PG_EINT18 */648 SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 19),649 SUNXI_FUNCTION(0x0, "gpio_in"),650 SUNXI_FUNCTION(0x1, "gpio_out"),651 SUNXI_FUNCTION(0x4, "pwm1"),652 SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 19)), /* PG_EINT19 */653 /* Hole */654 SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 0),655 SUNXI_FUNCTION(0x0, "gpio_in"),656 SUNXI_FUNCTION(0x1, "gpio_out"),657 SUNXI_FUNCTION(0x2, "uart0"), /* TX */658 SUNXI_FUNCTION(0x4, "pwm3"),659 SUNXI_FUNCTION(0x5, "i2c1"), /* SCK */660 SUNXI_FUNCTION_IRQ_BANK(0x6, 6, 0)), /* PH_EINT0 */661 SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 1),662 SUNXI_FUNCTION(0x0, "gpio_in"),663 SUNXI_FUNCTION(0x1, "gpio_out"),664 SUNXI_FUNCTION(0x2, "uart0"), /* RX */665 SUNXI_FUNCTION(0x4, "pwm4"),666 SUNXI_FUNCTION(0x5, "i2c1"), /* SDA */667 SUNXI_FUNCTION_IRQ_BANK(0x6, 6, 1)), /* PH_EINT1 */668 SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 2),669 SUNXI_FUNCTION(0x0, "gpio_in"),670 SUNXI_FUNCTION(0x1, "gpio_out"),671 SUNXI_FUNCTION(0x2, "uart5"), /* TX */672 SUNXI_FUNCTION(0x3, "spdif"), /* MCLK */673 SUNXI_FUNCTION(0x4, "pwm2"),674 SUNXI_FUNCTION(0x5, "i2c2"), /* SCK */675 SUNXI_FUNCTION_IRQ_BANK(0x6, 6, 2)), /* PH_EINT2 */676 SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 3),677 SUNXI_FUNCTION(0x0, "gpio_in"),678 SUNXI_FUNCTION(0x1, "gpio_out"),679 SUNXI_FUNCTION(0x2, "uart5"), /* RX */680 SUNXI_FUNCTION(0x4, "pwm1"),681 SUNXI_FUNCTION(0x5, "i2c2"), /* SDA */682 SUNXI_FUNCTION_IRQ_BANK(0x6, 6, 3)), /* PH_EINT3 */683 SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 4),684 SUNXI_FUNCTION(0x0, "gpio_in"),685 SUNXI_FUNCTION(0x1, "gpio_out"),686 SUNXI_FUNCTION(0x3, "spdif"), /* OUT */687 SUNXI_FUNCTION(0x5, "i2c3"), /* SCK */688 SUNXI_FUNCTION_IRQ_BANK(0x6, 6, 4)), /* PH_EINT4 */689 SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 5),690 SUNXI_FUNCTION(0x0, "gpio_in"),691 SUNXI_FUNCTION(0x1, "gpio_out"),692 SUNXI_FUNCTION(0x2, "uart2"), /* TX */693 SUNXI_FUNCTION(0x3, "i2s3"), /* MCLK */694 SUNXI_FUNCTION(0x4, "spi1"), /* CS0 */695 SUNXI_FUNCTION(0x5, "i2c3"), /* SDA */696 SUNXI_FUNCTION_IRQ_BANK(0x6, 6, 5)), /* PH_EINT5 */697 SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 6),698 SUNXI_FUNCTION(0x0, "gpio_in"),699 SUNXI_FUNCTION(0x1, "gpio_out"),700 SUNXI_FUNCTION(0x2, "uart2"), /* RX */701 SUNXI_FUNCTION(0x3, "i2s3"), /* BCLK */702 SUNXI_FUNCTION(0x4, "spi1"), /* CLK */703 SUNXI_FUNCTION(0x5, "i2c4"), /* SCK */704 SUNXI_FUNCTION_IRQ_BANK(0x6, 6, 6)), /* PH_EINT6 */705 SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 7),706 SUNXI_FUNCTION(0x0, "gpio_in"),707 SUNXI_FUNCTION(0x1, "gpio_out"),708 SUNXI_FUNCTION(0x2, "uart2"), /* RTS */709 SUNXI_FUNCTION(0x3, "i2s3"), /* SYNC */710 SUNXI_FUNCTION(0x4, "spi1"), /* MOSI */711 SUNXI_FUNCTION(0x5, "i2c4"), /* SDA */712 SUNXI_FUNCTION_IRQ_BANK(0x6, 6, 7)), /* PH_EINT7 */713 SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 8),714 SUNXI_FUNCTION(0x0, "gpio_in"),715 SUNXI_FUNCTION(0x1, "gpio_out"),716 SUNXI_FUNCTION(0x2, "uart2"), /* CTS */717 SUNXI_FUNCTION(0x3, "i2s3_dout0"), /* DO0 */718 SUNXI_FUNCTION(0x4, "spi1"), /* MISO */719 SUNXI_FUNCTION(0x5, "i2s3_din1"), /* DI1 */720 SUNXI_FUNCTION_IRQ_BANK(0x6, 6, 8)), /* PH_EINT8 */721 SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 9),722 SUNXI_FUNCTION(0x0, "gpio_in"),723 SUNXI_FUNCTION(0x1, "gpio_out"),724 SUNXI_FUNCTION(0x3, "i2s3_din0"), /* DI0 */725 SUNXI_FUNCTION(0x4, "spi1"), /* CS1 */726 SUNXI_FUNCTION(0x5, "i2s3_dout1"), /* DO1 */727 SUNXI_FUNCTION_IRQ_BANK(0x6, 6, 9)), /* PH_EINT9 */728 SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 10),729 SUNXI_FUNCTION(0x0, "gpio_in"),730 SUNXI_FUNCTION(0x1, "gpio_out"),731 SUNXI_FUNCTION(0x3, "ir_rx"),732 SUNXI_FUNCTION_IRQ_BANK(0x6, 6, 10)), /* PH_EINT10 */733 /* Hole */734 SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 0),735 SUNXI_FUNCTION(0x0, "gpio_in"),736 SUNXI_FUNCTION(0x1, "gpio_out"),737 SUNXI_FUNCTION(0x2, "emac0"), /* ERXD3 */738 SUNXI_FUNCTION(0x3, "dmic"), /* CLK */739 SUNXI_FUNCTION(0x4, "i2s0"), /* MCLK */740 SUNXI_FUNCTION(0x5, "hdmi"), /* HSCL */741 SUNXI_FUNCTION_IRQ_BANK(0x6, 7, 0)), /* PI_EINT0 */742 SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 1),743 SUNXI_FUNCTION(0x0, "gpio_in"),744 SUNXI_FUNCTION(0x1, "gpio_out"),745 SUNXI_FUNCTION(0x2, "emac0"), /* ERXD2 */746 SUNXI_FUNCTION(0x3, "dmic"), /* DATA0 */747 SUNXI_FUNCTION(0x4, "i2s0"), /* BCLK */748 SUNXI_FUNCTION(0x5, "hdmi"), /* HSDA */749 SUNXI_FUNCTION_IRQ_BANK(0x6, 7, 1)), /* PI_EINT1 */750 SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 2),751 SUNXI_FUNCTION(0x0, "gpio_in"),752 SUNXI_FUNCTION(0x1, "gpio_out"),753 SUNXI_FUNCTION(0x2, "emac0"), /* ERXD1 */754 SUNXI_FUNCTION(0x3, "dmic"), /* DATA1 */755 SUNXI_FUNCTION(0x4, "i2s0"), /* SYNC */756 SUNXI_FUNCTION(0x5, "hdmi"), /* HCEC */757 SUNXI_FUNCTION_IRQ_BANK(0x6, 7, 2)), /* PI_EINT2 */758 SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 3),759 SUNXI_FUNCTION(0x0, "gpio_in"),760 SUNXI_FUNCTION(0x1, "gpio_out"),761 SUNXI_FUNCTION(0x2, "emac0"), /* ERXD0 */762 SUNXI_FUNCTION(0x3, "dmic"), /* DATA2 */763 SUNXI_FUNCTION(0x4, "i2s0_dout0"), /* DO0 */764 SUNXI_FUNCTION(0x5, "i2s0_din1"), /* DI1 */765 SUNXI_FUNCTION_IRQ_BANK(0x6, 7, 3)), /* PI_EINT3 */766 SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 4),767 SUNXI_FUNCTION(0x0, "gpio_in"),768 SUNXI_FUNCTION(0x1, "gpio_out"),769 SUNXI_FUNCTION(0x2, "emac0"), /* ERXCK */770 SUNXI_FUNCTION(0x3, "dmic"), /* DATA3 */771 SUNXI_FUNCTION(0x4, "i2s0_din0"), /* DI0 */772 SUNXI_FUNCTION(0x5, "i2s0_dout1"), /* DO1 */773 SUNXI_FUNCTION_IRQ_BANK(0x6, 7, 4)), /* PI_EINT4 */774 SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 5),775 SUNXI_FUNCTION(0x0, "gpio_in"),776 SUNXI_FUNCTION(0x1, "gpio_out"),777 SUNXI_FUNCTION(0x2, "emac0"), /* ERXCTL */778 SUNXI_FUNCTION(0x3, "uart2"), /* TX */779 SUNXI_FUNCTION(0x4, "ts0"), /* CLK */780 SUNXI_FUNCTION(0x5, "i2c0"), /* SCK */781 SUNXI_FUNCTION_IRQ_BANK(0x6, 7, 5)), /* PI_EINT5 */782 SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 6),783 SUNXI_FUNCTION(0x0, "gpio_in"),784 SUNXI_FUNCTION(0x1, "gpio_out"),785 SUNXI_FUNCTION(0x2, "emac0"), /* ENULL */786 SUNXI_FUNCTION(0x3, "uart2"), /* RX */787 SUNXI_FUNCTION(0x4, "ts0"), /* ERR */788 SUNXI_FUNCTION(0x5, "i2c0"), /* SDA */789 SUNXI_FUNCTION_IRQ_BANK(0x6, 7, 6)), /* PI_EINT6 */790 SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 7),791 SUNXI_FUNCTION(0x0, "gpio_in"),792 SUNXI_FUNCTION(0x1, "gpio_out"),793 SUNXI_FUNCTION(0x2, "emac0"), /* ETXD3 */794 SUNXI_FUNCTION(0x3, "uart2"), /* RTS */795 SUNXI_FUNCTION(0x4, "ts0"), /* SYNC */796 SUNXI_FUNCTION(0x5, "i2c1"), /* SCK */797 SUNXI_FUNCTION_IRQ_BANK(0x6, 7, 7)), /* PI_EINT7 */798 SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 8),799 SUNXI_FUNCTION(0x0, "gpio_in"),800 SUNXI_FUNCTION(0x1, "gpio_out"),801 SUNXI_FUNCTION(0x2, "emac0"), /* ETXD2 */802 SUNXI_FUNCTION(0x3, "uart2"), /* CTS */803 SUNXI_FUNCTION(0x4, "ts0"), /* DVLD */804 SUNXI_FUNCTION(0x5, "i2c1"), /* SDA */805 SUNXI_FUNCTION_IRQ_BANK(0x6, 7, 8)), /* PI_EINT8 */806 SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 9),807 SUNXI_FUNCTION(0x0, "gpio_in"),808 SUNXI_FUNCTION(0x1, "gpio_out"),809 SUNXI_FUNCTION(0x2, "emac0"), /* ETXD1 */810 SUNXI_FUNCTION(0x3, "uart3"), /* TX */811 SUNXI_FUNCTION(0x4, "ts0"), /* D0 */812 SUNXI_FUNCTION(0x5, "i2c2"), /* SCK */813 SUNXI_FUNCTION_IRQ_BANK(0x6, 7, 9)), /* PI_EINT9 */814 SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 10),815 SUNXI_FUNCTION(0x0, "gpio_in"),816 SUNXI_FUNCTION(0x1, "gpio_out"),817 SUNXI_FUNCTION(0x2, "emac0"), /* ETXD0 */818 SUNXI_FUNCTION(0x3, "uart3"), /* RX */819 SUNXI_FUNCTION(0x4, "ts0"), /* D1 */820 SUNXI_FUNCTION(0x5, "i2c2"), /* SDA */821 SUNXI_FUNCTION_IRQ_BANK(0x6, 7, 10)), /* PI_EINT10 */822 SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 11),823 SUNXI_FUNCTION(0x0, "gpio_in"),824 SUNXI_FUNCTION(0x1, "gpio_out"),825 SUNXI_FUNCTION(0x2, "emac0"), /* ETXCK */826 SUNXI_FUNCTION(0x3, "uart3"), /* RTS */827 SUNXI_FUNCTION(0x4, "ts0"), /* D2 */828 SUNXI_FUNCTION(0x5, "pwm1"),829 SUNXI_FUNCTION_IRQ_BANK(0x6, 7, 11)), /* PI_EINT11 */830 SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 12),831 SUNXI_FUNCTION(0x0, "gpio_in"),832 SUNXI_FUNCTION(0x1, "gpio_out"),833 SUNXI_FUNCTION(0x2, "emac0"), /* ETXCTL */834 SUNXI_FUNCTION(0x3, "uart3"), /* CTS */835 SUNXI_FUNCTION(0x4, "ts0"), /* D3 */836 SUNXI_FUNCTION(0x5, "pwm2"),837 SUNXI_FUNCTION_IRQ_BANK(0x6, 7, 12)), /* PI_EINT12 */838 SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 13),839 SUNXI_FUNCTION(0x0, "gpio_in"),840 SUNXI_FUNCTION(0x1, "gpio_out"),841 SUNXI_FUNCTION(0x2, "emac0"), /* ECLKIN */842 SUNXI_FUNCTION(0x3, "uart4"), /* TX */843 SUNXI_FUNCTION(0x4, "ts0"), /* D4 */844 SUNXI_FUNCTION(0x5, "pwm3"),845 SUNXI_FUNCTION_IRQ_BANK(0x6, 7, 13)), /* PI_EINT13 */846 SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 14),847 SUNXI_FUNCTION(0x0, "gpio_in"),848 SUNXI_FUNCTION(0x1, "gpio_out"),849 SUNXI_FUNCTION(0x2, "emac0"), /* MDC */850 SUNXI_FUNCTION(0x3, "uart4"), /* RX */851 SUNXI_FUNCTION(0x4, "ts0"), /* D5 */852 SUNXI_FUNCTION(0x5, "pwm4"),853 SUNXI_FUNCTION_IRQ_BANK(0x6, 7, 14)), /* PI_EINT14 */854 SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 15),855 SUNXI_FUNCTION(0x0, "gpio_in"),856 SUNXI_FUNCTION(0x1, "gpio_out"),857 SUNXI_FUNCTION(0x2, "emac0"), /* MDIO */858 SUNXI_FUNCTION(0x3, "uart4"), /* RTS */859 SUNXI_FUNCTION(0x4, "ts0"), /* D6 */860 SUNXI_FUNCTION(0x5, "clock"), /* CLK_FANOUT0 */861 SUNXI_FUNCTION_IRQ_BANK(0x6, 7, 15)), /* PI_EINT15 */862 SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 16),863 SUNXI_FUNCTION(0x0, "gpio_in"),864 SUNXI_FUNCTION(0x1, "gpio_out"),865 SUNXI_FUNCTION(0x2, "emac0"), /* EPHY_CLK */866 SUNXI_FUNCTION(0x3, "uart4"), /* CTS */867 SUNXI_FUNCTION(0x4, "ts0"), /* D7 */868 SUNXI_FUNCTION(0x5, "clock"), /* CLK_FANOUT1 */869 SUNXI_FUNCTION_IRQ_BANK(0x6, 7, 16)), /* PI_EINT16 */870};871static const unsigned int h616_irq_bank_map[] = { 0, 2, 3, 4, 5, 6, 7, 8 };872 873static const struct sunxi_pinctrl_desc h616_pinctrl_data = {874 .pins = h616_pins,875 .npins = ARRAY_SIZE(h616_pins),876 .irq_banks = ARRAY_SIZE(h616_irq_bank_map),877 .irq_bank_map = h616_irq_bank_map,878 .irq_read_needs_mux = true,879 .io_bias_cfg_variant = BIAS_VOLTAGE_PIO_POW_MODE_CTL,880};881 882static int h616_pinctrl_probe(struct platform_device *pdev)883{884 return sunxi_pinctrl_init(pdev, &h616_pinctrl_data);885}886 887static const struct of_device_id h616_pinctrl_match[] = {888 { .compatible = "allwinner,sun50i-h616-pinctrl", },889 {}890};891 892static struct platform_driver h616_pinctrl_driver = {893 .probe = h616_pinctrl_probe,894 .driver = {895 .name = "sun50i-h616-pinctrl",896 .of_match_table = h616_pinctrl_match,897 },898};899builtin_platform_driver(h616_pinctrl_driver);900