cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

pinctrl-sun50i-a100.c (27650B)


      1// SPDX-License-Identifier: GPL-2.0
      2/*
      3 * Copyright (c) 2020 Yangtao Li <frank@allwinnertech.com>
      4 *
      5 * Based on:
      6 * huangshuosheng <huangshuosheng@allwinnertech.com>
      7 */
      8
      9#include <linux/module.h>
     10#include <linux/of.h>
     11#include <linux/of_device.h>
     12#include <linux/pinctrl/pinctrl.h>
     13#include <linux/platform_device.h>
     14
     15#include "pinctrl-sunxi.h"
     16
     17static const struct sunxi_desc_pin a100_pins[] = {
     18	SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 0),
     19		  SUNXI_FUNCTION(0x0, "gpio_in"),
     20		  SUNXI_FUNCTION(0x1, "gpio_out"),
     21		  SUNXI_FUNCTION(0x2, "uart2"),		/* TX */
     22		  SUNXI_FUNCTION(0x3, "spi2"),		/* CS */
     23		  SUNXI_FUNCTION(0x4, "jtag"),		/* MS */
     24		  SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 0)),
     25	SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 1),
     26		  SUNXI_FUNCTION(0x0, "gpio_in"),
     27		  SUNXI_FUNCTION(0x1, "gpio_out"),
     28		  SUNXI_FUNCTION(0x2, "uart2"),		/* RX */
     29		  SUNXI_FUNCTION(0x3, "spi2"),		/* CLK */
     30		  SUNXI_FUNCTION(0x4, "jtag"),		/* CK */
     31		  SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 1)),
     32	SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 2),
     33		  SUNXI_FUNCTION(0x0, "gpio_in"),
     34		  SUNXI_FUNCTION(0x1, "gpio_out"),
     35		  SUNXI_FUNCTION(0x2, "uart2"),		/* RTS */
     36		  SUNXI_FUNCTION(0x3, "spi2"),		/* MOSI */
     37		  SUNXI_FUNCTION(0x4, "jtag"),		/* DO */
     38		  SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 2)),
     39	SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 3),
     40		  SUNXI_FUNCTION(0x0, "gpio_in"),
     41		  SUNXI_FUNCTION(0x1, "gpio_out"),
     42		  SUNXI_FUNCTION(0x2, "uart2"),		/* CTS */
     43		  SUNXI_FUNCTION(0x3, "spi2"),		/* MISO */
     44		  SUNXI_FUNCTION(0x4, "jtag"),		/* DI */
     45		  SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 3)),
     46	SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 4),
     47		  SUNXI_FUNCTION(0x0, "gpio_in"),
     48		  SUNXI_FUNCTION(0x1, "gpio_out"),
     49		  SUNXI_FUNCTION(0x2, "i2c1"),		/* SCK */
     50		  SUNXI_FUNCTION(0x3, "i2s0"),		/* MCLK */
     51		  SUNXI_FUNCTION(0x4, "jtag_gpu"),	/* MS_GPU */
     52		  SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 4)),
     53	SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 5),
     54		  SUNXI_FUNCTION(0x0, "gpio_in"),
     55		  SUNXI_FUNCTION(0x1, "gpio_out"),
     56		  SUNXI_FUNCTION(0x2, "i2c1"),		/* SDA */
     57		  SUNXI_FUNCTION(0x3, "i2s0"),		/* BCLK */
     58		  SUNXI_FUNCTION(0x4, "jtag_gpu"),	/* CK_GPU */
     59		  SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 5)),
     60	SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 6),
     61		  SUNXI_FUNCTION(0x0, "gpio_in"),
     62		  SUNXI_FUNCTION(0x1, "gpio_out"),
     63		  SUNXI_FUNCTION(0x3, "i2s0"),		/* LRCK */
     64		  SUNXI_FUNCTION(0x4, "jtag_gpu"),	/* DO_GPU */
     65		  SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 6)),
     66	SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 7),
     67		  SUNXI_FUNCTION(0x0, "gpio_in"),
     68		  SUNXI_FUNCTION(0x1, "gpio_out"),
     69		  SUNXI_FUNCTION(0x2, "spdif"),		/* DIN */
     70		  SUNXI_FUNCTION(0x3, "i2s0_dout0"),	/* DOUT0 */
     71		  SUNXI_FUNCTION(0x4, "i2s0_din1"),	/* DIN1 */
     72		  SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 7)),
     73	SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 8),
     74		  SUNXI_FUNCTION(0x0, "gpio_in"),
     75		  SUNXI_FUNCTION(0x1, "gpio_out"),
     76		  SUNXI_FUNCTION(0x2, "spdif"),		/* DOUT */
     77		  SUNXI_FUNCTION(0x3, "i2s0_din0"),	/* DIN0 */
     78		  SUNXI_FUNCTION(0x4, "i2s0_dout1"),	/* DOUT1 */
     79		  SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 8)),
     80	SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 9),
     81		  SUNXI_FUNCTION(0x0, "gpio_in"),
     82		  SUNXI_FUNCTION(0x1, "gpio_out"),
     83		  SUNXI_FUNCTION(0x2, "uart0"),		/* TX */
     84		  SUNXI_FUNCTION(0x3, "i2c0"),		/* SCK */
     85		  SUNXI_FUNCTION(0x4, "jtag_gpu"),	/* DI_GPU */
     86		  SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 9)),
     87	SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 10),
     88		  SUNXI_FUNCTION(0x0, "gpio_in"),
     89		  SUNXI_FUNCTION(0x1, "gpio_out"),
     90		  SUNXI_FUNCTION(0x2, "uart0"),		/* RX */
     91		  SUNXI_FUNCTION(0x3, "i2c0"),		/* SDA */
     92		  SUNXI_FUNCTION(0x4, "pwm1"),
     93		  SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 10)),
     94	/* HOLE */
     95	SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 0),
     96		  SUNXI_FUNCTION(0x0, "gpio_in"),
     97		  SUNXI_FUNCTION(0x1, "gpio_out"),
     98		  SUNXI_FUNCTION(0x2, "nand0"),		/* WE */
     99		  SUNXI_FUNCTION(0x3, "mmc2"),		/* DS */
    100		  SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 0)),
    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)),
    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)),
    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)),
    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)),
    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)),
    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)),
    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)),
    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)),
    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)),
    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)),
    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)),
    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(0x4, "spi0"),		/* CLK */
    172		  SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 12)),
    173	SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 13),
    174		  SUNXI_FUNCTION(0x0, "gpio_in"),
    175		  SUNXI_FUNCTION(0x1, "gpio_out"),
    176		  SUNXI_FUNCTION(0x2, "nand0"),		/* DQ3 */
    177		  SUNXI_FUNCTION(0x3, "mmc2"),		/* D1 */
    178		  SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 13)),
    179	SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 14),
    180		  SUNXI_FUNCTION(0x0, "gpio_in"),
    181		  SUNXI_FUNCTION(0x1, "gpio_out"),
    182		  SUNXI_FUNCTION(0x2, "nand0"),		/* DQ2 */
    183		  SUNXI_FUNCTION(0x3, "mmc2"),		/* D6 */
    184		  SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 14)),
    185	SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 15),
    186		  SUNXI_FUNCTION(0x0, "gpio_in"),
    187		  SUNXI_FUNCTION(0x1, "gpio_out"),
    188		  SUNXI_FUNCTION(0x2, "nand0"),		/* DQ1 */
    189		  SUNXI_FUNCTION(0x3, "mmc2"),		/* D2 */
    190		  SUNXI_FUNCTION(0x4, "spi0"),		/* WP */
    191		  SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 15)),
    192	SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 16),
    193		  SUNXI_FUNCTION(0x0, "gpio_in"),
    194		  SUNXI_FUNCTION(0x1, "gpio_out"),
    195		  SUNXI_FUNCTION(0x2, "nand0"),		/* DQ0 */
    196		  SUNXI_FUNCTION(0x3, "mmc2"),		/* D7 */
    197		  SUNXI_FUNCTION(0x4, "spi0"),		/* HOLD */
    198		  SUNXI_FUNCTION_IRQ_BANK(0x6, 1, 16)),
    199	/* HOLE */
    200	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 0),
    201		  SUNXI_FUNCTION(0x0, "gpio_in"),
    202		  SUNXI_FUNCTION(0x1, "gpio_out"),
    203		  SUNXI_FUNCTION(0x2, "lcd0"),		/* D2 */
    204		  SUNXI_FUNCTION(0x3, "lvds0"),		/* D0P */
    205		  SUNXI_FUNCTION(0x4, "dsi0"),		/* DP0 */
    206		  SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 0)),
    207	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 1),
    208		  SUNXI_FUNCTION(0x0, "gpio_in"),
    209		  SUNXI_FUNCTION(0x1, "gpio_out"),
    210		  SUNXI_FUNCTION(0x2, "lcd0"),		/* D3 */
    211		  SUNXI_FUNCTION(0x3, "lvds0"),		/* D0N */
    212		  SUNXI_FUNCTION(0x4, "dsi0"),		/* DM0 */
    213		  SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 1)),
    214	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 2),
    215		  SUNXI_FUNCTION(0x0, "gpio_in"),
    216		  SUNXI_FUNCTION(0x1, "gpio_out"),
    217		  SUNXI_FUNCTION(0x2, "lcd0"),		/* D4 */
    218		  SUNXI_FUNCTION(0x3, "lvds0"),		/* D1P */
    219		  SUNXI_FUNCTION(0x4, "dsi0"),		/* DP1 */
    220		  SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 2)),
    221	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 3),
    222		  SUNXI_FUNCTION(0x0, "gpio_in"),
    223		  SUNXI_FUNCTION(0x1, "gpio_out"),
    224		  SUNXI_FUNCTION(0x2, "lcd0"),		/* D5 */
    225		  SUNXI_FUNCTION(0x3, "lvds0"),		/* D1N */
    226		  SUNXI_FUNCTION(0x4, "dsi0"),		/* DM1 */
    227		  SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 3)),
    228	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 4),
    229		  SUNXI_FUNCTION(0x0, "gpio_in"),
    230		  SUNXI_FUNCTION(0x1, "gpio_out"),
    231		  SUNXI_FUNCTION(0x2, "lcd0"),		/* D6 */
    232		  SUNXI_FUNCTION(0x3, "lvds0"),		/* D2P */
    233		  SUNXI_FUNCTION(0x4, "dsi0"),		/* CKP */
    234		  SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 4)),
    235	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 5),
    236		  SUNXI_FUNCTION(0x0, "gpio_in"),
    237		  SUNXI_FUNCTION(0x1, "gpio_out"),
    238		  SUNXI_FUNCTION(0x2, "lcd0"),		/* D7 */
    239		  SUNXI_FUNCTION(0x3, "lvds0"),		/* D2N */
    240		  SUNXI_FUNCTION(0x4, "dsi0"),		/* CKM */
    241		  SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 5)),
    242	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 6),
    243		  SUNXI_FUNCTION(0x0, "gpio_in"),
    244		  SUNXI_FUNCTION(0x1, "gpio_out"),
    245		  SUNXI_FUNCTION(0x2, "lcd0"),		/* D10 */
    246		  SUNXI_FUNCTION(0x3, "lvds0"),		/* CKP */
    247		  SUNXI_FUNCTION(0x4, "dsi0"),		/* DP2 */
    248		  SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 6)),
    249	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 7),
    250		  SUNXI_FUNCTION(0x0, "gpio_in"),
    251		  SUNXI_FUNCTION(0x1, "gpio_out"),
    252		  SUNXI_FUNCTION(0x2, "lcd0"),		/* D11 */
    253		  SUNXI_FUNCTION(0x3, "lvds0"),		/* CKN */
    254		  SUNXI_FUNCTION(0x4, "dsi0"),		/* DM2 */
    255		  SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 7)),
    256	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 8),
    257		  SUNXI_FUNCTION(0x0, "gpio_in"),
    258		  SUNXI_FUNCTION(0x1, "gpio_out"),
    259		  SUNXI_FUNCTION(0x2, "lcd0"),		/* D12 */
    260		  SUNXI_FUNCTION(0x4, "dsi0"),		/* DP3 */
    261		  SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 8)),
    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"),		/* D13 */
    266		  SUNXI_FUNCTION(0x4, "dsi0"),		/* DM3 */
    267		  SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 9)),
    268	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 10),
    269		  SUNXI_FUNCTION(0x0, "gpio_in"),
    270		  SUNXI_FUNCTION(0x1, "gpio_out"),
    271		  SUNXI_FUNCTION(0x2, "lcd0"),		/* D14 */
    272		  SUNXI_FUNCTION(0x4, "spi1"),		/* CS */
    273		  SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 10)),
    274	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 11),
    275		  SUNXI_FUNCTION(0x0, "gpio_in"),
    276		  SUNXI_FUNCTION(0x1, "gpio_out"),
    277		  SUNXI_FUNCTION(0x2, "lcd0"),		/* D15 */
    278		  SUNXI_FUNCTION(0x4, "spi1"),		/* CLK */
    279		  SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 11)),
    280	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 12),
    281		  SUNXI_FUNCTION(0x0, "gpio_in"),
    282		  SUNXI_FUNCTION(0x1, "gpio_out"),
    283		  SUNXI_FUNCTION(0x2, "lcd0"),		/* D18 */
    284		  SUNXI_FUNCTION(0x4, "spi1"),		/* MOSI */
    285		  SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 12)),
    286	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 13),
    287		  SUNXI_FUNCTION(0x0, "gpio_in"),
    288		  SUNXI_FUNCTION(0x1, "gpio_out"),
    289		  SUNXI_FUNCTION(0x2, "lcd0"),		/* D19 */
    290		  SUNXI_FUNCTION(0x4, "spi1"),		/* MISO */
    291		  SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 13)),
    292	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 14),
    293		  SUNXI_FUNCTION(0x0, "gpio_in"),
    294		  SUNXI_FUNCTION(0x1, "gpio_out"),
    295		  SUNXI_FUNCTION(0x2, "lcd0"),		/* D20 */
    296		  SUNXI_FUNCTION(0x4, "uart3"),		/* TX */
    297		  SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 14)),
    298	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 15),
    299		  SUNXI_FUNCTION(0x0, "gpio_in"),
    300		  SUNXI_FUNCTION(0x1, "gpio_out"),
    301		  SUNXI_FUNCTION(0x2, "lcd0"),		/* D21 */
    302		  SUNXI_FUNCTION(0x4, "uart3"),		/* RX */
    303		  SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 15)),
    304	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 16),
    305		  SUNXI_FUNCTION(0x0, "gpio_in"),
    306		  SUNXI_FUNCTION(0x1, "gpio_out"),
    307		  SUNXI_FUNCTION(0x2, "lcd0"),		/* D22 */
    308		  SUNXI_FUNCTION(0x4, "uart3"),		/* RTS */
    309		  SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 16)),
    310	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 17),
    311		  SUNXI_FUNCTION(0x0, "gpio_in"),
    312		  SUNXI_FUNCTION(0x1, "gpio_out"),
    313		  SUNXI_FUNCTION(0x2, "lcd0"),		/* D23 */
    314		  SUNXI_FUNCTION(0x4, "uart3"),		/* CTS */
    315		  SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 17)),
    316	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 18),
    317		  SUNXI_FUNCTION(0x0, "gpio_in"),
    318		  SUNXI_FUNCTION(0x1, "gpio_out"),
    319		  SUNXI_FUNCTION(0x2, "lcd0"),		/* CLK */
    320		  SUNXI_FUNCTION(0x4, "uart4"),		/* TX */
    321		  SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 18)),
    322	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 19),
    323		  SUNXI_FUNCTION(0x0, "gpio_in"),
    324		  SUNXI_FUNCTION(0x1, "gpio_out"),
    325		  SUNXI_FUNCTION(0x2, "lcd0"),		/* DE */
    326		  SUNXI_FUNCTION(0x4, "uart4"),		/* RX */
    327		  SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 19)),
    328	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 20),
    329		  SUNXI_FUNCTION(0x0, "gpio_in"),
    330		  SUNXI_FUNCTION(0x1, "gpio_out"),
    331		  SUNXI_FUNCTION(0x2, "lcd0"),		/* HSYNC */
    332		  SUNXI_FUNCTION(0x3, "pwm2"),
    333		  SUNXI_FUNCTION(0x4, "uart4"),		/* RTS */
    334		  SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 20)),
    335	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 21),
    336		  SUNXI_FUNCTION(0x0, "gpio_in"),
    337		  SUNXI_FUNCTION(0x1, "gpio_out"),
    338		  SUNXI_FUNCTION(0x2, "lcd0"),		/* VSYNC */
    339		  SUNXI_FUNCTION(0x3, "pwm3"),
    340		  SUNXI_FUNCTION(0x4, "uart4"),		/* CTS */
    341		  SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 21)),
    342	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 22),
    343		  SUNXI_FUNCTION(0x0, "gpio_in"),
    344		  SUNXI_FUNCTION(0x1, "gpio_out"),
    345		  SUNXI_FUNCTION(0x2, "pwm1"),
    346		  SUNXI_FUNCTION(0x4, "i2c0"),		/* SCK */
    347		  SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 22)),
    348	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 23),
    349		  SUNXI_FUNCTION(0x0, "gpio_in"),
    350		  SUNXI_FUNCTION(0x1, "gpio_out"),
    351		  SUNXI_FUNCTION(0x2, "pwm0"),
    352		  SUNXI_FUNCTION(0x4, "i2c0"),		/* SDA */
    353		  SUNXI_FUNCTION_IRQ_BANK(0x6, 2, 23)),
    354	/* HOLE */
    355	SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 0),
    356		  SUNXI_FUNCTION(0x0, "gpio_in"),
    357		  SUNXI_FUNCTION(0x1, "gpio_out"),
    358		  SUNXI_FUNCTION(0x2, "csi"),		/* MCLK */
    359		  SUNXI_FUNCTION_IRQ_BANK(0x6, 3, 0)),
    360	SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 1),
    361		  SUNXI_FUNCTION(0x0, "gpio_in"),
    362		  SUNXI_FUNCTION(0x1, "gpio_out"),
    363		  SUNXI_FUNCTION(0x2, "i2c2"),		/* SCK */
    364		  SUNXI_FUNCTION_IRQ_BANK(0x6, 3, 1)),
    365	SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 2),
    366		  SUNXI_FUNCTION(0x0, "gpio_in"),
    367		  SUNXI_FUNCTION(0x1, "gpio_out"),
    368		  SUNXI_FUNCTION(0x2, "i2c2"),		/* SDA */
    369		  SUNXI_FUNCTION_IRQ_BANK(0x6, 3, 2)),
    370	SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 3),
    371		  SUNXI_FUNCTION(0x0, "gpio_in"),
    372		  SUNXI_FUNCTION(0x1, "gpio_out"),
    373		  SUNXI_FUNCTION(0x2, "i2c3"),		/* SCK */
    374		  SUNXI_FUNCTION_IRQ_BANK(0x6, 3, 3)),
    375	SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 4),
    376		  SUNXI_FUNCTION(0x0, "gpio_in"),
    377		  SUNXI_FUNCTION(0x1, "gpio_out"),
    378		  SUNXI_FUNCTION(0x2, "i2c3"),		/* SDA */
    379		  SUNXI_FUNCTION_IRQ_BANK(0x6, 3, 4)),
    380	SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 5),
    381		  SUNXI_FUNCTION(0x0, "gpio_in"),
    382		  SUNXI_FUNCTION(0x1, "gpio_out"),
    383		  SUNXI_FUNCTION(0x2, "csi"),		/* MCLK */
    384		  SUNXI_FUNCTION(0x3, "pll"),		/* LOCK_DBG */
    385		  SUNXI_FUNCTION(0x4, "i2s2"),		/* MCLK */
    386		  SUNXI_FUNCTION(0x5, "ledc"),		/* LEDC */
    387		  SUNXI_FUNCTION_IRQ_BANK(0x6, 3, 5)),
    388	SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 6),
    389		  SUNXI_FUNCTION(0x0, "gpio_in"),
    390		  SUNXI_FUNCTION(0x1, "gpio_out"),
    391		  SUNXI_FUNCTION(0x3, "bist0"),		/* RESULT0 */
    392		  SUNXI_FUNCTION(0x4, "i2s2"),		/* BCLK */
    393		  SUNXI_FUNCTION_IRQ_BANK(0x6, 3, 6)),
    394	SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 7),
    395		  SUNXI_FUNCTION(0x0, "gpio_in"),
    396		  SUNXI_FUNCTION(0x1, "gpio_out"),
    397		  SUNXI_FUNCTION(0x2, "csi"),		/* SM_VS */
    398		  SUNXI_FUNCTION(0x3, "bist0"),		/* RESULT1 */
    399		  SUNXI_FUNCTION(0x4, "i2s2"),		/* LRCK */
    400		  SUNXI_FUNCTION(0x5, "tcon0"),		/* TRIG */
    401		  SUNXI_FUNCTION_IRQ_BANK(0x6, 3,	7)),
    402	SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 8),
    403		  SUNXI_FUNCTION(0x0, "gpio_in"),
    404		  SUNXI_FUNCTION(0x1, "gpio_out"),
    405		  SUNXI_FUNCTION(0x3, "bist0"),		/* RESULT2 */
    406		  SUNXI_FUNCTION(0x4, "i2s2"),		/* DOUT0 */
    407		  SUNXI_FUNCTION_IRQ_BANK(0x6, 3, 8)),
    408	SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 9),
    409		  SUNXI_FUNCTION(0x0, "gpio_in"),
    410		  SUNXI_FUNCTION(0x1, "gpio_out"),
    411		  SUNXI_FUNCTION(0x3, "bist0"),		/* RESULT3 */
    412		  SUNXI_FUNCTION(0x4, "i2s2"),		/* DIN0 */
    413		  SUNXI_FUNCTION_IRQ_BANK(0x6, 3, 9)),
    414	/* HOLE */
    415	SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 0),
    416		  SUNXI_FUNCTION(0x0, "gpio_in"),
    417		  SUNXI_FUNCTION(0x1, "gpio_out"),
    418		  SUNXI_FUNCTION(0x2, "mmc0"),		/* D1 */
    419		  SUNXI_FUNCTION(0x3, "jtag"),		/* MS1 */
    420		  SUNXI_FUNCTION(0x4, "jtag_gpu"),	/* MS_GPU */
    421		  SUNXI_FUNCTION_IRQ_BANK(0x6, 4, 0)),
    422	SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 1),
    423		  SUNXI_FUNCTION(0x0, "gpio_in"),
    424		  SUNXI_FUNCTION(0x1, "gpio_out"),
    425		  SUNXI_FUNCTION(0x2, "mmc0"),		/* D0 */
    426		  SUNXI_FUNCTION(0x3, "jtag"),		/* DI1 */
    427		  SUNXI_FUNCTION(0x4, "jtag_gpu"),	/* DI_GPU */
    428		  SUNXI_FUNCTION_IRQ_BANK(0x6, 4, 1)),
    429	SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 2),
    430		  SUNXI_FUNCTION(0x0, "gpio_in"),
    431		  SUNXI_FUNCTION(0x1, "gpio_out"),
    432		  SUNXI_FUNCTION(0x2, "mmc0"),		/* CLK */
    433		  SUNXI_FUNCTION(0x3, "uart0"),		/* TX */
    434		  SUNXI_FUNCTION_IRQ_BANK(0x6, 4, 2)),
    435	SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 3),
    436		  SUNXI_FUNCTION(0x0, "gpio_in"),
    437		  SUNXI_FUNCTION(0x1, "gpio_out"),
    438		  SUNXI_FUNCTION(0x2, "mmc0"),		/* CMD */
    439		  SUNXI_FUNCTION(0x3, "jtag"),		/* DO */
    440		  SUNXI_FUNCTION(0x4, "jtag_gpu"),	/* DO_GPU */
    441		  SUNXI_FUNCTION_IRQ_BANK(0x6, 4, 3)),
    442	SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 4),
    443		  SUNXI_FUNCTION(0x0, "gpio_in"),
    444		  SUNXI_FUNCTION(0x1, "gpio_out"),
    445		  SUNXI_FUNCTION(0x2, "mmc0"),		/* D3 */
    446		  SUNXI_FUNCTION(0x3, "uart0"),		/* RX */
    447		  SUNXI_FUNCTION_IRQ_BANK(0x6, 4, 4)),
    448	SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 5),
    449		  SUNXI_FUNCTION(0x0, "gpio_in"),
    450		  SUNXI_FUNCTION(0x1, "gpio_out"),
    451		  SUNXI_FUNCTION(0x2, "mmc0"),		/* D2 */
    452		  SUNXI_FUNCTION(0x3, "jtag"),		/* CK */
    453		  SUNXI_FUNCTION(0x4, "jtag_gpu"),	/* CK_GPU */
    454		  SUNXI_FUNCTION_IRQ_BANK(0x6, 4, 5)),
    455	SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 6),
    456		  SUNXI_FUNCTION(0x0, "gpio_in"),
    457		  SUNXI_FUNCTION(0x1, "gpio_out"),
    458		  SUNXI_FUNCTION_IRQ_BANK(0x6, 4, 6)),
    459	/* HOLE */
    460	SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 0),
    461		  SUNXI_FUNCTION(0x0, "gpio_in"),
    462		  SUNXI_FUNCTION(0x1, "gpio_out"),
    463		  SUNXI_FUNCTION(0x2, "mmc1"),		/* CLK */
    464		  SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 0)),
    465	SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 1),
    466		  SUNXI_FUNCTION(0x0, "gpio_in"),
    467		  SUNXI_FUNCTION(0x1, "gpio_out"),
    468		  SUNXI_FUNCTION(0x2, "mmc1"),		/* CMD */
    469		  SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 1)),
    470	SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 2),
    471		  SUNXI_FUNCTION(0x0, "gpio_in"),
    472		  SUNXI_FUNCTION(0x1, "gpio_out"),
    473		  SUNXI_FUNCTION(0x2, "mmc1"),		/* D0 */
    474		  SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 2)),
    475	SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 3),
    476		  SUNXI_FUNCTION(0x0, "gpio_in"),
    477		  SUNXI_FUNCTION(0x1, "gpio_out"),
    478		  SUNXI_FUNCTION(0x2, "mmc1"),		/* D1 */
    479		  SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 3)),
    480	SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 4),
    481		  SUNXI_FUNCTION(0x0, "gpio_in"),
    482		  SUNXI_FUNCTION(0x1, "gpio_out"),
    483		  SUNXI_FUNCTION(0x2, "mmc1"),		/* D2 */
    484		  SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 4)),
    485	SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 5),
    486		  SUNXI_FUNCTION(0x0, "gpio_in"),
    487		  SUNXI_FUNCTION(0x1, "gpio_out"),
    488		  SUNXI_FUNCTION(0x2, "mmc1"),		/* D3 */
    489		  SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 5)),
    490	SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 6),
    491		  SUNXI_FUNCTION(0x0, "gpio_in"),
    492		  SUNXI_FUNCTION(0x1, "gpio_out"),
    493		  SUNXI_FUNCTION(0x2, "uart1"),		/* TX */
    494		  SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 6)),
    495	SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 7),
    496		  SUNXI_FUNCTION(0x0, "gpio_in"),
    497		  SUNXI_FUNCTION(0x1, "gpio_out"),
    498		  SUNXI_FUNCTION(0x2, "uart1"),		/* RX */
    499		  SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 7)),
    500	SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 8),
    501		  SUNXI_FUNCTION(0x0, "gpio_in"),
    502		  SUNXI_FUNCTION(0x1, "gpio_out"),
    503		  SUNXI_FUNCTION(0x2, "uart1"),		/* RTS */
    504		  SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 8)),
    505	SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 9),
    506		  SUNXI_FUNCTION(0x0, "gpio_in"),
    507		  SUNXI_FUNCTION(0x1, "gpio_out"),
    508		  SUNXI_FUNCTION(0x2, "uart1"),		/* CTS */
    509		  SUNXI_FUNCTION(0x3, "i2s1"),		/* MCLK */
    510		  SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 9)),
    511	SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 10),
    512		  SUNXI_FUNCTION(0x0, "gpio_in"),
    513		  SUNXI_FUNCTION(0x1, "gpio_out"),
    514		  SUNXI_FUNCTION(0x3, "i2s1"),		/* BCLK */
    515		  SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 10)),
    516	SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 11),
    517		  SUNXI_FUNCTION(0x0, "gpio_in"),
    518		  SUNXI_FUNCTION(0x1, "gpio_out"),
    519		  SUNXI_FUNCTION(0x3, "i2s1"),		/* LRCK */
    520		  SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 11)),
    521	SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 12),
    522		  SUNXI_FUNCTION(0x0, "gpio_in"),
    523		  SUNXI_FUNCTION(0x1, "gpio_out"),
    524		  SUNXI_FUNCTION(0x3, "i2s1_dout0"),	/* DOUT0 */
    525		  SUNXI_FUNCTION(0x4, "i2s1_din1"),	/* DIN1 */
    526		  SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 12)),
    527	SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 13),
    528		  SUNXI_FUNCTION(0x0, "gpio_in"),
    529		  SUNXI_FUNCTION(0x1, "gpio_out"),
    530		  SUNXI_FUNCTION(0x3, "i2s1_din0"),	/* DIN0 */
    531		  SUNXI_FUNCTION(0x4, "i2s1_dout1"),	/* DOUT1 */
    532		  SUNXI_FUNCTION_IRQ_BANK(0x6, 5, 13)),
    533	/* HOLE */
    534	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 0),
    535		  SUNXI_FUNCTION(0x0, "gpio_in"),
    536		  SUNXI_FUNCTION(0x1, "gpio_out"),
    537		  SUNXI_FUNCTION(0x2, "i2c0"),		/* SCK */
    538		  SUNXI_FUNCTION(0x5, "emac0"),		/* RXD1 */
    539		  SUNXI_FUNCTION_IRQ_BANK(0x6, 6, 0)),
    540	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 1),
    541		  SUNXI_FUNCTION(0x0, "gpio_in"),
    542		  SUNXI_FUNCTION(0x1, "gpio_out"),
    543		  SUNXI_FUNCTION(0x2, "i2c0"),		/* SDA */
    544		  SUNXI_FUNCTION(0x5, "emac0"),		/* RXD0 */
    545		  SUNXI_FUNCTION_IRQ_BANK(0x6, 6, 1)),
    546	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 2),
    547		  SUNXI_FUNCTION(0x0, "gpio_in"),
    548		  SUNXI_FUNCTION(0x1, "gpio_out"),
    549		  SUNXI_FUNCTION(0x2, "i2c1"),		/* SCK */
    550		  SUNXI_FUNCTION(0x5, "emac0"),		/* RXCTL */
    551		  SUNXI_FUNCTION_IRQ_BANK(0x6, 6, 2)),
    552	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 3),
    553		  SUNXI_FUNCTION(0x0, "gpio_in"),
    554		  SUNXI_FUNCTION(0x1, "gpio_out"),
    555		  SUNXI_FUNCTION(0x2, "i2c1"),		/* SDA */
    556		  SUNXI_FUNCTION(0x3, "cir0"),		/* OUT */
    557		  SUNXI_FUNCTION(0x5, "emac0"),		/* CLKIN */
    558		  SUNXI_FUNCTION_IRQ_BANK(0x6, 6, 3)),
    559	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 4),
    560		  SUNXI_FUNCTION(0x0, "gpio_in"),
    561		  SUNXI_FUNCTION(0x1, "gpio_out"),
    562		  SUNXI_FUNCTION(0x2, "uart3"),		/* TX */
    563		  SUNXI_FUNCTION(0x3, "spi1"),		/* CS */
    564		  SUNXI_FUNCTION(0x5, "emac0"),		/* TXD1 */
    565		  SUNXI_FUNCTION_IRQ_BANK(0x6, 6, 4)),
    566	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 5),
    567		  SUNXI_FUNCTION(0x0, "gpio_in"),
    568		  SUNXI_FUNCTION(0x1, "gpio_out"),
    569		  SUNXI_FUNCTION(0x2, "uart3"),		/* RX */
    570		  SUNXI_FUNCTION(0x3, "spi1"),		/* CLK */
    571		  SUNXI_FUNCTION(0x4, "ledc"),
    572		  SUNXI_FUNCTION(0x5, "emac0"),		/* TXD0 */
    573		  SUNXI_FUNCTION_IRQ_BANK(0x6, 6, 5)),
    574	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 6),
    575		  SUNXI_FUNCTION(0x0, "gpio_in"),
    576		  SUNXI_FUNCTION(0x1, "gpio_out"),
    577		  SUNXI_FUNCTION(0x2, "uart3"),		/* RTS */
    578		  SUNXI_FUNCTION(0x3, "spi1"),		/* MOSI */
    579		  SUNXI_FUNCTION(0x5, "emac0"),		/* TXCK */
    580		  SUNXI_FUNCTION_IRQ_BANK(0x6, 6, 6)),
    581	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 7),
    582		  SUNXI_FUNCTION(0x0, "gpio_in"),
    583		  SUNXI_FUNCTION(0x1, "gpio_out"),
    584		  SUNXI_FUNCTION(0x2, "uart3"),		/* CTS */
    585		  SUNXI_FUNCTION(0x3, "spi1"),		/* MISO */
    586		  SUNXI_FUNCTION(0x4, "spdif"),		/* OUT */
    587		  SUNXI_FUNCTION(0x5, "emac0"),		/* TXCTL */
    588		  SUNXI_FUNCTION_IRQ_BANK(0x6, 6, 7)),
    589	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 8),
    590		  SUNXI_FUNCTION(0x0, "gpio_in"),
    591		  SUNXI_FUNCTION(0x1, "gpio_out"),
    592		  SUNXI_FUNCTION(0x2, "dmic"),		/* CLK */
    593		  SUNXI_FUNCTION(0x3, "spi2"),		/* CS */
    594		  SUNXI_FUNCTION(0x4, "i2s2"),		/* MCLK */
    595		  SUNXI_FUNCTION(0x5, "i2s2_din2"),	/* DIN2 */
    596		  SUNXI_FUNCTION_IRQ_BANK(0x6, 6, 8)),
    597	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 9),
    598		  SUNXI_FUNCTION(0x0, "gpio_in"),
    599		  SUNXI_FUNCTION(0x1, "gpio_out"),
    600		  SUNXI_FUNCTION(0x2, "dmic"),		/* DATA0 */
    601		  SUNXI_FUNCTION(0x3, "spi2"),		/* CLK */
    602		  SUNXI_FUNCTION(0x4, "i2s2"),		/* BCLK */
    603		  SUNXI_FUNCTION(0x5, "emac0"),		/* MDC */
    604		  SUNXI_FUNCTION_IRQ_BANK(0x6, 6, 9)),
    605	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 10),
    606		  SUNXI_FUNCTION(0x0, "gpio_in"),
    607		  SUNXI_FUNCTION(0x1, "gpio_out"),
    608		  SUNXI_FUNCTION(0x2, "dmic"),		/* DATA1 */
    609		  SUNXI_FUNCTION(0x3, "spi2"),		/* MOSI */
    610		  SUNXI_FUNCTION(0x4, "i2s2"),		/* LRCK */
    611		  SUNXI_FUNCTION(0x5, "emac0"),		/* MDIO */
    612		  SUNXI_FUNCTION_IRQ_BANK(0x6, 6, 10)),
    613	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 11),
    614		  SUNXI_FUNCTION(0x0, "gpio_in"),
    615		  SUNXI_FUNCTION(0x1, "gpio_out"),
    616		  SUNXI_FUNCTION(0x2, "dmic"),		/* DATA2 */
    617		  SUNXI_FUNCTION(0x3, "spi2"),		/* MISO */
    618		  SUNXI_FUNCTION(0x4, "i2s2_dout0"),	/* DOUT0 */
    619		  SUNXI_FUNCTION(0x5, "i2s2_din1"),	/* DIN1 */
    620		  SUNXI_FUNCTION_IRQ_BANK(0x6, 6, 11)),
    621	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 12),
    622		  SUNXI_FUNCTION(0x0, "gpio_in"),
    623		  SUNXI_FUNCTION(0x1, "gpio_out"),
    624		  SUNXI_FUNCTION(0x2, "dmic"),		/* DATA3 */
    625		  SUNXI_FUNCTION(0x3, "i2c3"),		/* SCK */
    626		  SUNXI_FUNCTION(0x4, "i2s2_din0"),	/* DIN0 */
    627		  SUNXI_FUNCTION(0x5, "i2s2_dout1"),	/* DOUT1 */
    628		  SUNXI_FUNCTION_IRQ_BANK(0x6, 6, 12)),
    629	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 13),
    630		  SUNXI_FUNCTION(0x0, "gpio_in"),
    631		  SUNXI_FUNCTION(0x1, "gpio_out"),
    632		  SUNXI_FUNCTION(0x3, "i2c3"),		/* SCK */
    633		  SUNXI_FUNCTION(0x4, "i2s3"),		/* MCLK */
    634		  SUNXI_FUNCTION(0x5, "emac0"),		/* EPHY */
    635		  SUNXI_FUNCTION_IRQ_BANK(0x6, 6, 13)),
    636	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 14),
    637		  SUNXI_FUNCTION(0x0, "gpio_in"),
    638		  SUNXI_FUNCTION(0x1, "gpio_out"),
    639		  SUNXI_FUNCTION(0x4, "i2s3"),		/* BCLK */
    640		  SUNXI_FUNCTION(0x5, "emac0"),		/* RXD3 */
    641		  SUNXI_FUNCTION_IRQ_BANK(0x6, 6, 14)),
    642	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 15),
    643		  SUNXI_FUNCTION(0x0, "gpio_in"),
    644		  SUNXI_FUNCTION(0x1, "gpio_out"),
    645		  SUNXI_FUNCTION(0x4, "i2s3"),		/* LRCK */
    646		  SUNXI_FUNCTION(0x5, "emac0"),		/* RXD2 */
    647		  SUNXI_FUNCTION_IRQ_BANK(0x6, 6, 15)),
    648	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 16),
    649		  SUNXI_FUNCTION(0x0, "gpio_in"),
    650		  SUNXI_FUNCTION(0x1, "gpio_out"),
    651		  SUNXI_FUNCTION(0x3, "i2s3_dout0"),	/* DOUT0 */
    652		  SUNXI_FUNCTION(0x4, "i2s3_din1"),	/* DIN1 */
    653		  SUNXI_FUNCTION(0x5, "emac0"),		/* RXCK */
    654		  SUNXI_FUNCTION_IRQ_BANK(0x6, 6, 16)),
    655	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 17),
    656		  SUNXI_FUNCTION(0x0, "gpio_in"),
    657		  SUNXI_FUNCTION(0x1, "gpio_out"),
    658		  SUNXI_FUNCTION(0x3, "i2s3_dout1"),	/* DOUT1 */
    659		  SUNXI_FUNCTION(0x4, "i2s3_din0"),	/* DIN0 */
    660		  SUNXI_FUNCTION(0x5, "emac0"),		/* TXD3 */
    661		  SUNXI_FUNCTION_IRQ_BANK(0x6, 6, 17)),
    662	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 18),
    663		  SUNXI_FUNCTION(0x0, "gpio_in"),
    664		  SUNXI_FUNCTION(0x1, "gpio_out"),
    665		  SUNXI_FUNCTION(0x2, "cir0"),		/* OUT */
    666		  SUNXI_FUNCTION(0x3, "i2s3_dout2"),	/* DOUT2 */
    667		  SUNXI_FUNCTION(0x4, "i2s3_din2"),	/* DIN2 */
    668		  SUNXI_FUNCTION(0x5, "emac0"),		/* TXD2 */
    669		  SUNXI_FUNCTION_IRQ_BANK(0x6, 6, 18)),
    670	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 19),
    671		  SUNXI_FUNCTION(0x0, "gpio_in"),
    672		  SUNXI_FUNCTION(0x1, "gpio_out"),
    673		  SUNXI_FUNCTION(0x2, "cir0"),		/* IN */
    674		  SUNXI_FUNCTION(0x3, "i2s3_dout3"),	/* DOUT3 */
    675		  SUNXI_FUNCTION(0x4, "i2s3_din3"),	/* DIN3 */
    676		  SUNXI_FUNCTION(0x5, "ledc"),
    677		  SUNXI_FUNCTION_IRQ_BANK(0x6, 6, 19)),
    678};
    679
    680static const unsigned int a100_irq_bank_map[] = { 1, 2, 3, 4, 5, 6, 7};
    681
    682static const struct sunxi_pinctrl_desc a100_pinctrl_data = {
    683	.pins = a100_pins,
    684	.npins = ARRAY_SIZE(a100_pins),
    685	.irq_banks = 7,
    686	.irq_bank_map = a100_irq_bank_map,
    687	.io_bias_cfg_variant = BIAS_VOLTAGE_PIO_POW_MODE_SEL,
    688};
    689
    690static int a100_pinctrl_probe(struct platform_device *pdev)
    691{
    692	return sunxi_pinctrl_init(pdev, &a100_pinctrl_data);
    693}
    694
    695static const struct of_device_id a100_pinctrl_match[] = {
    696	{ .compatible = "allwinner,sun50i-a100-pinctrl", },
    697	{}
    698};
    699MODULE_DEVICE_TABLE(of, a100_pinctrl_match);
    700
    701static struct platform_driver a100_pinctrl_driver = {
    702	.probe	= a100_pinctrl_probe,
    703	.driver	= {
    704		.name		= "sun50i-a100-pinctrl",
    705		.of_match_table	= a100_pinctrl_match,
    706	},
    707};
    708module_platform_driver(a100_pinctrl_driver);