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-sun4i-a10.c (50816B)


      1/*
      2 * Allwinner A10 SoCs pinctrl driver.
      3 *
      4 * Copyright (C) 2014 Maxime Ripard
      5 *
      6 * Maxime Ripard <maxime.ripard@free-electrons.com>
      7 *
      8 * This file is licensed under the terms of the GNU General Public
      9 * License version 2.  This program is licensed "as is" without any
     10 * warranty of any kind, whether express or implied.
     11 */
     12
     13#include <linux/init.h>
     14#include <linux/platform_device.h>
     15#include <linux/of.h>
     16#include <linux/of_device.h>
     17#include <linux/pinctrl/pinctrl.h>
     18
     19#include "pinctrl-sunxi.h"
     20
     21static const struct sunxi_desc_pin sun4i_a10_pins[] = {
     22	SUNXI_PIN(SUNXI_PINCTRL_PIN(A, 0),
     23		  SUNXI_FUNCTION(0x0, "gpio_in"),
     24		  SUNXI_FUNCTION(0x1, "gpio_out"),
     25		  SUNXI_FUNCTION(0x2, "emac"),		/* ERXD3 */
     26		  SUNXI_FUNCTION(0x3, "spi1"),		/* CS0 */
     27		  SUNXI_FUNCTION(0x4, "uart2"),		/* RTS */
     28		  SUNXI_FUNCTION_VARIANT(0x5, "gmac",	/* GRXD3 */
     29					 PINCTRL_SUN7I_A20 |
     30					 PINCTRL_SUN8I_R40)),
     31	SUNXI_PIN(SUNXI_PINCTRL_PIN(A, 1),
     32		  SUNXI_FUNCTION(0x0, "gpio_in"),
     33		  SUNXI_FUNCTION(0x1, "gpio_out"),
     34		  SUNXI_FUNCTION(0x2, "emac"),		/* ERXD2 */
     35		  SUNXI_FUNCTION(0x3, "spi1"),		/* CLK */
     36		  SUNXI_FUNCTION(0x4, "uart2"),		/* CTS */
     37		  SUNXI_FUNCTION_VARIANT(0x5, "gmac",	/* GRXD2 */
     38					 PINCTRL_SUN7I_A20 |
     39					 PINCTRL_SUN8I_R40)),
     40	SUNXI_PIN(SUNXI_PINCTRL_PIN(A, 2),
     41		  SUNXI_FUNCTION(0x0, "gpio_in"),
     42		  SUNXI_FUNCTION(0x1, "gpio_out"),
     43		  SUNXI_FUNCTION(0x2, "emac"),		/* ERXD1 */
     44		  SUNXI_FUNCTION(0x3, "spi1"),		/* MOSI */
     45		  SUNXI_FUNCTION(0x4, "uart2"),		/* TX */
     46		  SUNXI_FUNCTION_VARIANT(0x5, "gmac",	/* GRXD1 */
     47					 PINCTRL_SUN7I_A20 |
     48					 PINCTRL_SUN8I_R40)),
     49	SUNXI_PIN(SUNXI_PINCTRL_PIN(A, 3),
     50		  SUNXI_FUNCTION(0x0, "gpio_in"),
     51		  SUNXI_FUNCTION(0x1, "gpio_out"),
     52		  SUNXI_FUNCTION(0x2, "emac"),		/* ERXD0 */
     53		  SUNXI_FUNCTION(0x3, "spi1"),		/* MISO */
     54		  SUNXI_FUNCTION(0x4, "uart2"),		/* RX */
     55		  SUNXI_FUNCTION_VARIANT(0x5, "gmac",	/* GRXD0 */
     56					 PINCTRL_SUN7I_A20 |
     57					 PINCTRL_SUN8I_R40)),
     58	SUNXI_PIN(SUNXI_PINCTRL_PIN(A, 4),
     59		  SUNXI_FUNCTION(0x0, "gpio_in"),
     60		  SUNXI_FUNCTION(0x1, "gpio_out"),
     61		  SUNXI_FUNCTION(0x2, "emac"),		/* ETXD3 */
     62		  SUNXI_FUNCTION(0x3, "spi1"),		/* CS1 */
     63		  SUNXI_FUNCTION_VARIANT(0x5, "gmac",	/* GTXD3 */
     64					 PINCTRL_SUN7I_A20 |
     65					 PINCTRL_SUN8I_R40)),
     66	SUNXI_PIN(SUNXI_PINCTRL_PIN(A, 5),
     67		  SUNXI_FUNCTION(0x0, "gpio_in"),
     68		  SUNXI_FUNCTION(0x1, "gpio_out"),
     69		  SUNXI_FUNCTION(0x2, "emac"),		/* ETXD2 */
     70		  SUNXI_FUNCTION(0x3, "spi3"),		/* CS0 */
     71		  SUNXI_FUNCTION_VARIANT(0x5, "gmac",	/* GTXD2 */
     72					 PINCTRL_SUN7I_A20 |
     73					 PINCTRL_SUN8I_R40)),
     74	SUNXI_PIN(SUNXI_PINCTRL_PIN(A, 6),
     75		  SUNXI_FUNCTION(0x0, "gpio_in"),
     76		  SUNXI_FUNCTION(0x1, "gpio_out"),
     77		  SUNXI_FUNCTION(0x2, "emac"),		/* ETXD1 */
     78		  SUNXI_FUNCTION(0x3, "spi3"),		/* CLK */
     79		  SUNXI_FUNCTION_VARIANT(0x5, "gmac",	/* GTXD1 */
     80					 PINCTRL_SUN7I_A20 |
     81					 PINCTRL_SUN8I_R40)),
     82	SUNXI_PIN(SUNXI_PINCTRL_PIN(A, 7),
     83		  SUNXI_FUNCTION(0x0, "gpio_in"),
     84		  SUNXI_FUNCTION(0x1, "gpio_out"),
     85		  SUNXI_FUNCTION(0x2, "emac"),		/* ETXD0 */
     86		  SUNXI_FUNCTION(0x3, "spi3"),		/* MOSI */
     87		  SUNXI_FUNCTION_VARIANT(0x5, "gmac",	/* GTXD0 */
     88					 PINCTRL_SUN7I_A20 |
     89					 PINCTRL_SUN8I_R40)),
     90	SUNXI_PIN(SUNXI_PINCTRL_PIN(A, 8),
     91		  SUNXI_FUNCTION(0x0, "gpio_in"),
     92		  SUNXI_FUNCTION(0x1, "gpio_out"),
     93		  SUNXI_FUNCTION(0x2, "emac"),		/* ERXCK */
     94		  SUNXI_FUNCTION(0x3, "spi3"),		/* MISO */
     95		  SUNXI_FUNCTION_VARIANT(0x5, "gmac",	/* GRXCK */
     96					 PINCTRL_SUN7I_A20 |
     97					 PINCTRL_SUN8I_R40)),
     98	SUNXI_PIN(SUNXI_PINCTRL_PIN(A, 9),
     99		  SUNXI_FUNCTION(0x0, "gpio_in"),
    100		  SUNXI_FUNCTION(0x1, "gpio_out"),
    101		  SUNXI_FUNCTION(0x2, "emac"),		/* ERXERR */
    102		  SUNXI_FUNCTION(0x3, "spi3"),		/* CS1 */
    103		  SUNXI_FUNCTION_VARIANT(0x5, "gmac",	/* GNULL / ERXERR */
    104					 PINCTRL_SUN7I_A20 |
    105					 PINCTRL_SUN8I_R40),
    106		  SUNXI_FUNCTION_VARIANT(0x6, "i2s1",	/* MCLK */
    107					 PINCTRL_SUN7I_A20 |
    108					 PINCTRL_SUN8I_R40)),
    109	SUNXI_PIN(SUNXI_PINCTRL_PIN(A, 10),
    110		  SUNXI_FUNCTION(0x0, "gpio_in"),
    111		  SUNXI_FUNCTION(0x1, "gpio_out"),
    112		  SUNXI_FUNCTION(0x2, "emac"),		/* ERXDV */
    113		  SUNXI_FUNCTION(0x4, "uart1"),		/* TX */
    114		  SUNXI_FUNCTION_VARIANT(0x5, "gmac",	/* GRXDV */
    115					 PINCTRL_SUN7I_A20 |
    116					 PINCTRL_SUN8I_R40)),
    117	SUNXI_PIN(SUNXI_PINCTRL_PIN(A, 11),
    118		  SUNXI_FUNCTION(0x0, "gpio_in"),
    119		  SUNXI_FUNCTION(0x1, "gpio_out"),
    120		  SUNXI_FUNCTION(0x2, "emac"),		/* EMDC */
    121		  SUNXI_FUNCTION(0x4, "uart1"),		/* RX */
    122		  SUNXI_FUNCTION_VARIANT(0x5, "gmac",	/* EMDC */
    123					 PINCTRL_SUN7I_A20 |
    124					 PINCTRL_SUN8I_R40)),
    125	SUNXI_PIN(SUNXI_PINCTRL_PIN(A, 12),
    126		  SUNXI_FUNCTION(0x0, "gpio_in"),
    127		  SUNXI_FUNCTION(0x1, "gpio_out"),
    128		  SUNXI_FUNCTION(0x2, "emac"),		/* EMDIO */
    129		  SUNXI_FUNCTION(0x3, "uart6"),		/* TX */
    130		  SUNXI_FUNCTION(0x4, "uart1"),		/* RTS */
    131		  SUNXI_FUNCTION_VARIANT(0x5, "gmac",	/* EMDIO */
    132					 PINCTRL_SUN7I_A20 |
    133					 PINCTRL_SUN8I_R40)),
    134	SUNXI_PIN(SUNXI_PINCTRL_PIN(A, 13),
    135		  SUNXI_FUNCTION(0x0, "gpio_in"),
    136		  SUNXI_FUNCTION(0x1, "gpio_out"),
    137		  SUNXI_FUNCTION(0x2, "emac"),		/* ETXEN */
    138		  SUNXI_FUNCTION(0x3, "uart6"),		/* RX */
    139		  SUNXI_FUNCTION(0x4, "uart1"),		/* CTS */
    140		  SUNXI_FUNCTION_VARIANT(0x5, "gmac",	/* GTXCTL / ETXEN */
    141					 PINCTRL_SUN7I_A20 |
    142					 PINCTRL_SUN8I_R40)),
    143	SUNXI_PIN(SUNXI_PINCTRL_PIN(A, 14),
    144		  SUNXI_FUNCTION(0x0, "gpio_in"),
    145		  SUNXI_FUNCTION(0x1, "gpio_out"),
    146		  SUNXI_FUNCTION(0x2, "emac"),		/* ETXCK */
    147		  SUNXI_FUNCTION(0x3, "uart7"),		/* TX */
    148		  SUNXI_FUNCTION(0x4, "uart1"),		/* DTR */
    149		  SUNXI_FUNCTION_VARIANT(0x5, "gmac",	/* GNULL / ETXCK */
    150					 PINCTRL_SUN7I_A20 |
    151					 PINCTRL_SUN8I_R40),
    152		  SUNXI_FUNCTION_VARIANT(0x6, "i2s1",	/* BCLK */
    153					 PINCTRL_SUN7I_A20 |
    154					 PINCTRL_SUN8I_R40)),
    155	SUNXI_PIN(SUNXI_PINCTRL_PIN(A, 15),
    156		  SUNXI_FUNCTION(0x0, "gpio_in"),
    157		  SUNXI_FUNCTION(0x1, "gpio_out"),
    158		  SUNXI_FUNCTION(0x2, "emac"),		/* ECRS */
    159		  SUNXI_FUNCTION(0x3, "uart7"),		/* RX */
    160		  SUNXI_FUNCTION(0x4, "uart1"),		/* DSR */
    161		  SUNXI_FUNCTION_VARIANT(0x5, "gmac",	/* GTXCK / ECRS */
    162					 PINCTRL_SUN7I_A20 |
    163					 PINCTRL_SUN8I_R40),
    164		  SUNXI_FUNCTION_VARIANT(0x6, "i2s1",	/* LRCK */
    165					 PINCTRL_SUN7I_A20 |
    166					 PINCTRL_SUN8I_R40)),
    167	SUNXI_PIN(SUNXI_PINCTRL_PIN(A, 16),
    168		  SUNXI_FUNCTION(0x0, "gpio_in"),
    169		  SUNXI_FUNCTION(0x1, "gpio_out"),
    170		  SUNXI_FUNCTION(0x2, "emac"),		/* ECOL */
    171		  SUNXI_FUNCTION(0x3, "can"),		/* TX */
    172		  SUNXI_FUNCTION(0x4, "uart1"),		/* DCD */
    173		  SUNXI_FUNCTION_VARIANT(0x5, "gmac",	/* GCLKIN / ECOL */
    174					 PINCTRL_SUN7I_A20 |
    175					 PINCTRL_SUN8I_R40),
    176		  SUNXI_FUNCTION_VARIANT(0x6, "i2s1",	/* DO */
    177					 PINCTRL_SUN7I_A20 |
    178					 PINCTRL_SUN8I_R40)),
    179	SUNXI_PIN(SUNXI_PINCTRL_PIN(A, 17),
    180		  SUNXI_FUNCTION(0x0, "gpio_in"),
    181		  SUNXI_FUNCTION(0x1, "gpio_out"),
    182		  SUNXI_FUNCTION(0x2, "emac"),		/* ETXERR */
    183		  SUNXI_FUNCTION(0x3, "can"),		/* RX */
    184		  SUNXI_FUNCTION(0x4, "uart1"),		/* RING */
    185		  SUNXI_FUNCTION_VARIANT(0x5, "gmac",	/* GNULL / ETXERR */
    186					 PINCTRL_SUN7I_A20 |
    187					 PINCTRL_SUN8I_R40),
    188		  SUNXI_FUNCTION_VARIANT(0x6, "i2s1",	/* DI */
    189					 PINCTRL_SUN7I_A20 |
    190					 PINCTRL_SUN8I_R40)),
    191	/* Hole */
    192	SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 0),
    193		  SUNXI_FUNCTION(0x0, "gpio_in"),
    194		  SUNXI_FUNCTION(0x1, "gpio_out"),
    195		  SUNXI_FUNCTION(0x2, "i2c0"),		/* SCK */
    196		  SUNXI_FUNCTION_VARIANT(0x3, "pll_lock_dbg",
    197					 PINCTRL_SUN8I_R40)),
    198	SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 1),
    199		  SUNXI_FUNCTION(0x0, "gpio_in"),
    200		  SUNXI_FUNCTION(0x1, "gpio_out"),
    201		  SUNXI_FUNCTION(0x2, "i2c0")),		/* SDA */
    202	SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 2),
    203		  SUNXI_FUNCTION(0x0, "gpio_in"),
    204		  SUNXI_FUNCTION(0x1, "gpio_out"),
    205		  SUNXI_FUNCTION_VARIANT(0x2, "pwm",	/* PWM0 */
    206					 PINCTRL_SUN4I_A10 |
    207					 PINCTRL_SUN7I_A20),
    208		  SUNXI_FUNCTION_VARIANT(0x3, "pwm",	/* PWM0 */
    209					 PINCTRL_SUN8I_R40)),
    210	SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 3),
    211		  SUNXI_FUNCTION(0x0, "gpio_in"),
    212		  SUNXI_FUNCTION(0x1, "gpio_out"),
    213		  SUNXI_FUNCTION_VARIANT(0x2, "ir0",	/* TX */
    214					 PINCTRL_SUN4I_A10 |
    215					 PINCTRL_SUN7I_A20),
    216		  SUNXI_FUNCTION_VARIANT(0x3, "pwm",	/* PWM1 */
    217					 PINCTRL_SUN8I_R40),
    218		/*
    219		 * The SPDIF block is not referenced at all in the A10 user
    220		 * manual. However it is described in the code leaked and the
    221		 * pin descriptions are declared in the A20 user manual which
    222		 * is pin compatible with this device.
    223		 */
    224		  SUNXI_FUNCTION(0x4, "spdif")),        /* SPDIF MCLK */
    225	SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 4),
    226		  SUNXI_FUNCTION(0x0, "gpio_in"),
    227		  SUNXI_FUNCTION(0x1, "gpio_out"),
    228		  SUNXI_FUNCTION(0x2, "ir0")),		/* RX */
    229	SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 5),
    230		  SUNXI_FUNCTION(0x0, "gpio_in"),
    231		  SUNXI_FUNCTION(0x1, "gpio_out"),
    232		  /*
    233		   * On A10 there's only one I2S controller and the pin group
    234		   * is simply named "i2s". On A20 there's two and thus it's
    235		   * renamed to "i2s0". Deal with these name here, in order
    236		   * to satisfy existing device trees.
    237		   */
    238		  SUNXI_FUNCTION_VARIANT(0x2, "i2s",	/* MCLK */
    239					 PINCTRL_SUN4I_A10),
    240		  SUNXI_FUNCTION_VARIANT(0x2, "i2s0",	/* MCLK */
    241					 PINCTRL_SUN7I_A20 |
    242					 PINCTRL_SUN8I_R40),
    243		  SUNXI_FUNCTION(0x3, "ac97")),		/* MCLK */
    244	SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 6),
    245		  SUNXI_FUNCTION(0x0, "gpio_in"),
    246		  SUNXI_FUNCTION(0x1, "gpio_out"),
    247		  SUNXI_FUNCTION_VARIANT(0x2, "i2s",	/* BCLK */
    248					 PINCTRL_SUN4I_A10),
    249		  SUNXI_FUNCTION_VARIANT(0x2, "i2s0",	/* BCLK */
    250					 PINCTRL_SUN7I_A20 |
    251					 PINCTRL_SUN8I_R40),
    252		  SUNXI_FUNCTION(0x3, "ac97")),		/* BCLK */
    253	SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 7),
    254		  SUNXI_FUNCTION(0x0, "gpio_in"),
    255		  SUNXI_FUNCTION(0x1, "gpio_out"),
    256		  SUNXI_FUNCTION_VARIANT(0x2, "i2s",	/* LRCK */
    257					 PINCTRL_SUN4I_A10),
    258		  SUNXI_FUNCTION_VARIANT(0x2, "i2s0",	/* LRCK */
    259					 PINCTRL_SUN7I_A20 |
    260					 PINCTRL_SUN8I_R40),
    261		  SUNXI_FUNCTION(0x3, "ac97")),		/* SYNC */
    262	SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 8),
    263		  SUNXI_FUNCTION(0x0, "gpio_in"),
    264		  SUNXI_FUNCTION(0x1, "gpio_out"),
    265		  SUNXI_FUNCTION_VARIANT(0x2, "i2s",	/* DO0 */
    266					 PINCTRL_SUN4I_A10),
    267		  SUNXI_FUNCTION_VARIANT(0x2, "i2s0",	/* DO0 */
    268					 PINCTRL_SUN7I_A20 |
    269					 PINCTRL_SUN8I_R40),
    270		  SUNXI_FUNCTION(0x3, "ac97")),		/* DO */
    271	SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 9),
    272		  SUNXI_FUNCTION(0x0, "gpio_in"),
    273		  SUNXI_FUNCTION(0x1, "gpio_out"),
    274		  SUNXI_FUNCTION_VARIANT(0x2, "i2s",	/* DO1 */
    275					 PINCTRL_SUN4I_A10),
    276		  SUNXI_FUNCTION_VARIANT(0x2, "i2s0",	/* DO1 */
    277					 PINCTRL_SUN7I_A20 |
    278					 PINCTRL_SUN8I_R40),
    279		  SUNXI_FUNCTION_VARIANT(0x4, "pwm",	/* PWM6 */
    280					 PINCTRL_SUN8I_R40)),
    281	SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 10),
    282		  SUNXI_FUNCTION(0x0, "gpio_in"),
    283		  SUNXI_FUNCTION(0x1, "gpio_out"),
    284		  SUNXI_FUNCTION_VARIANT(0x2, "i2s",	/* DO2 */
    285					 PINCTRL_SUN4I_A10),
    286		  SUNXI_FUNCTION_VARIANT(0x2, "i2s0",	/* DO2 */
    287					 PINCTRL_SUN7I_A20 |
    288					 PINCTRL_SUN8I_R40),
    289		  SUNXI_FUNCTION_VARIANT(0x4, "pwm",	/* PWM7 */
    290					 PINCTRL_SUN8I_R40)),
    291	SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 11),
    292		  SUNXI_FUNCTION(0x0, "gpio_in"),
    293		  SUNXI_FUNCTION(0x1, "gpio_out"),
    294		  SUNXI_FUNCTION_VARIANT(0x2, "i2s",	/* DO3 */
    295					 PINCTRL_SUN4I_A10),
    296		  SUNXI_FUNCTION_VARIANT(0x2, "i2s0",	/* DO3 */
    297					 PINCTRL_SUN7I_A20 |
    298					 PINCTRL_SUN8I_R40)),
    299	SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 12),
    300		  SUNXI_FUNCTION(0x0, "gpio_in"),
    301		  SUNXI_FUNCTION(0x1, "gpio_out"),
    302		  SUNXI_FUNCTION_VARIANT(0x2, "i2s",	/* DI */
    303					 PINCTRL_SUN4I_A10),
    304		  SUNXI_FUNCTION_VARIANT(0x2, "i2s0",	/* DI */
    305					 PINCTRL_SUN7I_A20 |
    306					 PINCTRL_SUN8I_R40),
    307		  SUNXI_FUNCTION(0x3, "ac97"),		/* DI */
    308		/* Undocumented mux function on A10 - See SPDIF MCLK above */
    309		  SUNXI_FUNCTION_VARIANT(0x4, "spdif",	/* SPDIF IN */
    310					 PINCTRL_SUN4I_A10 |
    311					 PINCTRL_SUN7I_A20)),
    312	SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 13),
    313		  SUNXI_FUNCTION(0x0, "gpio_in"),
    314		  SUNXI_FUNCTION(0x1, "gpio_out"),
    315		  SUNXI_FUNCTION(0x2, "spi2"),		/* CS1 */
    316		/* Undocumented mux function on A10 - See SPDIF MCLK above */
    317		  SUNXI_FUNCTION(0x4, "spdif")),        /* SPDIF OUT */
    318	SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 14),
    319		  SUNXI_FUNCTION(0x0, "gpio_in"),
    320		  SUNXI_FUNCTION(0x1, "gpio_out"),
    321		  SUNXI_FUNCTION(0x2, "spi2"),		/* CS0 */
    322		  SUNXI_FUNCTION(0x3, "jtag")),		/* MS0 */
    323	SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 15),
    324		  SUNXI_FUNCTION(0x0, "gpio_in"),
    325		  SUNXI_FUNCTION(0x1, "gpio_out"),
    326		  SUNXI_FUNCTION(0x2, "spi2"),		/* CLK */
    327		  SUNXI_FUNCTION(0x3, "jtag")),		/* CK0 */
    328	SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 16),
    329		  SUNXI_FUNCTION(0x0, "gpio_in"),
    330		  SUNXI_FUNCTION(0x1, "gpio_out"),
    331		  SUNXI_FUNCTION(0x2, "spi2"),		/* MOSI */
    332		  SUNXI_FUNCTION(0x3, "jtag")),		/* DO0 */
    333	SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 17),
    334		  SUNXI_FUNCTION(0x0, "gpio_in"),
    335		  SUNXI_FUNCTION(0x1, "gpio_out"),
    336		  SUNXI_FUNCTION(0x2, "spi2"),		/* MISO */
    337		  SUNXI_FUNCTION(0x3, "jtag")),		/* DI0 */
    338	SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 18),
    339		  SUNXI_FUNCTION(0x0, "gpio_in"),
    340		  SUNXI_FUNCTION(0x1, "gpio_out"),
    341		  SUNXI_FUNCTION(0x2, "i2c1")),		/* SCK */
    342	SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 19),
    343		  SUNXI_FUNCTION(0x0, "gpio_in"),
    344		  SUNXI_FUNCTION(0x1, "gpio_out"),
    345		  SUNXI_FUNCTION(0x2, "i2c1")),		/* SDA */
    346	SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 20),
    347		  SUNXI_FUNCTION(0x0, "gpio_in"),
    348		  SUNXI_FUNCTION(0x1, "gpio_out"),
    349		  SUNXI_FUNCTION(0x2, "i2c2"),		/* SCK */
    350		  SUNXI_FUNCTION_VARIANT(0x4, "pwm",	/* PWM4 */
    351					 PINCTRL_SUN8I_R40)),
    352	SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 21),
    353		  SUNXI_FUNCTION(0x0, "gpio_in"),
    354		  SUNXI_FUNCTION(0x1, "gpio_out"),
    355		  SUNXI_FUNCTION(0x2, "i2c2"),		/* SDA */
    356		  SUNXI_FUNCTION_VARIANT(0x4, "pwm",	/* PWM5 */
    357					 PINCTRL_SUN8I_R40)),
    358	SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 22),
    359		  SUNXI_FUNCTION(0x0, "gpio_in"),
    360		  SUNXI_FUNCTION(0x1, "gpio_out"),
    361		  SUNXI_FUNCTION(0x2, "uart0"),		/* TX */
    362		  SUNXI_FUNCTION_VARIANT(0x3, "ir1",	/* TX */
    363					 PINCTRL_SUN4I_A10 |
    364					 PINCTRL_SUN7I_A20)),
    365	SUNXI_PIN(SUNXI_PINCTRL_PIN(B, 23),
    366		  SUNXI_FUNCTION(0x0, "gpio_in"),
    367		  SUNXI_FUNCTION(0x1, "gpio_out"),
    368		  SUNXI_FUNCTION(0x2, "uart0"),		/* RX */
    369		  SUNXI_FUNCTION(0x3, "ir1")),		/* RX */
    370	/* Hole */
    371	SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 0),
    372		  SUNXI_FUNCTION(0x0, "gpio_in"),
    373		  SUNXI_FUNCTION(0x1, "gpio_out"),
    374		  SUNXI_FUNCTION(0x2, "nand0"),		/* NWE */
    375		  SUNXI_FUNCTION(0x3, "spi0")),		/* MOSI */
    376	SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 1),
    377		  SUNXI_FUNCTION(0x0, "gpio_in"),
    378		  SUNXI_FUNCTION(0x1, "gpio_out"),
    379		  SUNXI_FUNCTION(0x2, "nand0"),		/* NALE */
    380		  SUNXI_FUNCTION(0x3, "spi0")),		/* MISO */
    381	SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 2),
    382		  SUNXI_FUNCTION(0x0, "gpio_in"),
    383		  SUNXI_FUNCTION(0x1, "gpio_out"),
    384		  SUNXI_FUNCTION(0x2, "nand0"),		/* NCLE */
    385		  SUNXI_FUNCTION(0x3, "spi0")),		/* SCK */
    386	SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 3),
    387		  SUNXI_FUNCTION(0x0, "gpio_in"),
    388		  SUNXI_FUNCTION(0x1, "gpio_out"),
    389		  SUNXI_FUNCTION(0x2, "nand0")),	/* NCE1 */
    390	SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 4),
    391		  SUNXI_FUNCTION(0x0, "gpio_in"),
    392		  SUNXI_FUNCTION(0x1, "gpio_out"),
    393		  SUNXI_FUNCTION(0x2, "nand0")),	/* NCE0 */
    394	SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 5),
    395		  SUNXI_FUNCTION(0x0, "gpio_in"),
    396		  SUNXI_FUNCTION(0x1, "gpio_out"),
    397		  SUNXI_FUNCTION(0x2, "nand0"),		/* NRE# */
    398		  SUNXI_FUNCTION_VARIANT(0x3, "mmc2",	/* DS */
    399					 PINCTRL_SUN8I_R40)),
    400	SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 6),
    401		  SUNXI_FUNCTION(0x0, "gpio_in"),
    402		  SUNXI_FUNCTION(0x1, "gpio_out"),
    403		  SUNXI_FUNCTION(0x2, "nand0"),		/* NRB0 */
    404		  SUNXI_FUNCTION(0x3, "mmc2")),		/* CMD */
    405	SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 7),
    406		  SUNXI_FUNCTION(0x0, "gpio_in"),
    407		  SUNXI_FUNCTION(0x1, "gpio_out"),
    408		  SUNXI_FUNCTION(0x2, "nand0"),		/* NRB1 */
    409		  SUNXI_FUNCTION(0x3, "mmc2")),		/* CLK */
    410	SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 8),
    411		  SUNXI_FUNCTION(0x0, "gpio_in"),
    412		  SUNXI_FUNCTION(0x1, "gpio_out"),
    413		  SUNXI_FUNCTION(0x2, "nand0"),		/* NDQ0 */
    414		  SUNXI_FUNCTION(0x3, "mmc2")),		/* D0 */
    415	SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 9),
    416		  SUNXI_FUNCTION(0x0, "gpio_in"),
    417		  SUNXI_FUNCTION(0x1, "gpio_out"),
    418		  SUNXI_FUNCTION(0x2, "nand0"),		/* NDQ1 */
    419		  SUNXI_FUNCTION(0x3, "mmc2")),		/* D1 */
    420	SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 10),
    421		  SUNXI_FUNCTION(0x0, "gpio_in"),
    422		  SUNXI_FUNCTION(0x1, "gpio_out"),
    423		  SUNXI_FUNCTION(0x2, "nand0"),		/* NDQ2 */
    424		  SUNXI_FUNCTION(0x3, "mmc2")),		/* D2 */
    425	SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 11),
    426		  SUNXI_FUNCTION(0x0, "gpio_in"),
    427		  SUNXI_FUNCTION(0x1, "gpio_out"),
    428		  SUNXI_FUNCTION(0x2, "nand0"),		/* NDQ3 */
    429		  SUNXI_FUNCTION(0x3, "mmc2")),		/* D3 */
    430	SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 12),
    431		  SUNXI_FUNCTION(0x0, "gpio_in"),
    432		  SUNXI_FUNCTION(0x1, "gpio_out"),
    433		  SUNXI_FUNCTION(0x2, "nand0"),		/* NDQ4 */
    434		  SUNXI_FUNCTION_VARIANT(0x3, "mmc2",	/* D4 */
    435					 PINCTRL_SUN8I_R40)),
    436	SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 13),
    437		  SUNXI_FUNCTION(0x0, "gpio_in"),
    438		  SUNXI_FUNCTION(0x1, "gpio_out"),
    439		  SUNXI_FUNCTION(0x2, "nand0"),		/* NDQ5 */
    440		  SUNXI_FUNCTION_VARIANT(0x3, "mmc2",	/* D5 */
    441					 PINCTRL_SUN8I_R40)),
    442	SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 14),
    443		  SUNXI_FUNCTION(0x0, "gpio_in"),
    444		  SUNXI_FUNCTION(0x1, "gpio_out"),
    445		  SUNXI_FUNCTION(0x2, "nand0"),		/* NDQ6 */
    446		  SUNXI_FUNCTION_VARIANT(0x3, "mmc2",	/* D6 */
    447					 PINCTRL_SUN8I_R40)),
    448	SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 15),
    449		  SUNXI_FUNCTION(0x0, "gpio_in"),
    450		  SUNXI_FUNCTION(0x1, "gpio_out"),
    451		  SUNXI_FUNCTION(0x2, "nand0"),		/* NDQ7 */
    452		  SUNXI_FUNCTION_VARIANT(0x3, "mmc2",	/* D7 */
    453					 PINCTRL_SUN8I_R40)),
    454	SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 16),
    455		  SUNXI_FUNCTION(0x0, "gpio_in"),
    456		  SUNXI_FUNCTION(0x1, "gpio_out"),
    457		  SUNXI_FUNCTION(0x2, "nand0")),	/* NWP */
    458	SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 17),
    459		  SUNXI_FUNCTION(0x0, "gpio_in"),
    460		  SUNXI_FUNCTION(0x1, "gpio_out"),
    461		  SUNXI_FUNCTION(0x2, "nand0")),	/* NCE2 */
    462	SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 18),
    463		  SUNXI_FUNCTION(0x0, "gpio_in"),
    464		  SUNXI_FUNCTION(0x1, "gpio_out"),
    465		  SUNXI_FUNCTION(0x2, "nand0")),	/* NCE3 */
    466	SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 19),
    467		  SUNXI_FUNCTION(0x0, "gpio_in"),
    468		  SUNXI_FUNCTION(0x1, "gpio_out"),
    469		  SUNXI_FUNCTION(0x2, "nand0"),		/* NCE4 */
    470		  SUNXI_FUNCTION(0x3, "spi2")),		/* CS0 */
    471	SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 20),
    472		  SUNXI_FUNCTION(0x0, "gpio_in"),
    473		  SUNXI_FUNCTION(0x1, "gpio_out"),
    474		  SUNXI_FUNCTION(0x2, "nand0"),		/* NCE5 */
    475		  SUNXI_FUNCTION(0x3, "spi2")),		/* CLK */
    476	SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 21),
    477		  SUNXI_FUNCTION(0x0, "gpio_in"),
    478		  SUNXI_FUNCTION(0x1, "gpio_out"),
    479		  SUNXI_FUNCTION(0x2, "nand0"),		/* NCE6 */
    480		  SUNXI_FUNCTION(0x3, "spi2")),		/* MOSI */
    481	SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 22),
    482		  SUNXI_FUNCTION(0x0, "gpio_in"),
    483		  SUNXI_FUNCTION(0x1, "gpio_out"),
    484		  SUNXI_FUNCTION(0x2, "nand0"),		/* NCE7 */
    485		  SUNXI_FUNCTION(0x3, "spi2")),		/* MISO */
    486	SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 23),
    487		  SUNXI_FUNCTION(0x0, "gpio_in"),
    488		  SUNXI_FUNCTION(0x1, "gpio_out"),
    489		  SUNXI_FUNCTION(0x3, "spi0")),		/* CS0 */
    490	SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 24),
    491		  SUNXI_FUNCTION(0x0, "gpio_in"),
    492		  SUNXI_FUNCTION(0x1, "gpio_out"),
    493		  SUNXI_FUNCTION(0x2, "nand0"),		/* NDQS */
    494		  SUNXI_FUNCTION_VARIANT(0x3, "mmc2",	/* RST */
    495					 PINCTRL_SUN8I_R40)),
    496	/* Hole */
    497	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 0),
    498		  SUNXI_FUNCTION(0x0, "gpio_in"),
    499		  SUNXI_FUNCTION(0x1, "gpio_out"),
    500		  SUNXI_FUNCTION(0x2, "lcd0"),		/* D0 */
    501		  SUNXI_FUNCTION(0x3, "lvds0")),	/* VP0 */
    502	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 1),
    503		  SUNXI_FUNCTION(0x0, "gpio_in"),
    504		  SUNXI_FUNCTION(0x1, "gpio_out"),
    505		  SUNXI_FUNCTION(0x2, "lcd0"),		/* D1 */
    506		  SUNXI_FUNCTION(0x3, "lvds0")),	/* VN0 */
    507	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 2),
    508		  SUNXI_FUNCTION(0x0, "gpio_in"),
    509		  SUNXI_FUNCTION(0x1, "gpio_out"),
    510		  SUNXI_FUNCTION(0x2, "lcd0"),		/* D2 */
    511		  SUNXI_FUNCTION(0x3, "lvds0")),	/* VP1 */
    512	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 3),
    513		  SUNXI_FUNCTION(0x0, "gpio_in"),
    514		  SUNXI_FUNCTION(0x1, "gpio_out"),
    515		  SUNXI_FUNCTION(0x2, "lcd0"),		/* D3 */
    516		  SUNXI_FUNCTION(0x3, "lvds0")),	/* VN1 */
    517	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 4),
    518		  SUNXI_FUNCTION(0x0, "gpio_in"),
    519		  SUNXI_FUNCTION(0x1, "gpio_out"),
    520		  SUNXI_FUNCTION(0x2, "lcd0"),		/* D4 */
    521		  SUNXI_FUNCTION(0x3, "lvds0")),	/* VP2 */
    522	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 5),
    523		  SUNXI_FUNCTION(0x0, "gpio_in"),
    524		  SUNXI_FUNCTION(0x1, "gpio_out"),
    525		  SUNXI_FUNCTION(0x2, "lcd0"),		/* D5 */
    526		  SUNXI_FUNCTION(0x3, "lvds0")),	/* VN2 */
    527	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 6),
    528		  SUNXI_FUNCTION(0x0, "gpio_in"),
    529		  SUNXI_FUNCTION(0x1, "gpio_out"),
    530		  SUNXI_FUNCTION(0x2, "lcd0"),		/* D6 */
    531		  SUNXI_FUNCTION(0x3, "lvds0")),	/* VPC */
    532	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 7),
    533		  SUNXI_FUNCTION(0x0, "gpio_in"),
    534		  SUNXI_FUNCTION(0x1, "gpio_out"),
    535		  SUNXI_FUNCTION(0x2, "lcd0"),		/* D7 */
    536		  SUNXI_FUNCTION(0x3, "lvds0")),	/* VNC */
    537	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 8),
    538		  SUNXI_FUNCTION(0x0, "gpio_in"),
    539		  SUNXI_FUNCTION(0x1, "gpio_out"),
    540		  SUNXI_FUNCTION(0x2, "lcd0"),		/* D8 */
    541		  SUNXI_FUNCTION(0x3, "lvds0")),	/* VP3 */
    542	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 9),
    543		  SUNXI_FUNCTION(0x0, "gpio_in"),
    544		  SUNXI_FUNCTION(0x1, "gpio_out"),
    545		  SUNXI_FUNCTION(0x2, "lcd0"),		/* D9 */
    546		  SUNXI_FUNCTION(0x3, "lvds0")),	/* VM3 */
    547	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 10),
    548		  SUNXI_FUNCTION(0x0, "gpio_in"),
    549		  SUNXI_FUNCTION(0x1, "gpio_out"),
    550		  SUNXI_FUNCTION(0x2, "lcd0"),		/* D10 */
    551		  SUNXI_FUNCTION(0x3, "lvds1")),	/* VP0 */
    552	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 11),
    553		  SUNXI_FUNCTION(0x0, "gpio_in"),
    554		  SUNXI_FUNCTION(0x1, "gpio_out"),
    555		  SUNXI_FUNCTION(0x2, "lcd0"),		/* D11 */
    556		  SUNXI_FUNCTION(0x3, "lvds1")),	/* VN0 */
    557	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 12),
    558		  SUNXI_FUNCTION(0x0, "gpio_in"),
    559		  SUNXI_FUNCTION(0x1, "gpio_out"),
    560		  SUNXI_FUNCTION(0x2, "lcd0"),		/* D12 */
    561		  SUNXI_FUNCTION(0x3, "lvds1")),	/* VP1 */
    562	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 13),
    563		  SUNXI_FUNCTION(0x0, "gpio_in"),
    564		  SUNXI_FUNCTION(0x1, "gpio_out"),
    565		  SUNXI_FUNCTION(0x2, "lcd0"),		/* D13 */
    566		  SUNXI_FUNCTION(0x3, "lvds1")),	/* VN1 */
    567	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 14),
    568		  SUNXI_FUNCTION(0x0, "gpio_in"),
    569		  SUNXI_FUNCTION(0x1, "gpio_out"),
    570		  SUNXI_FUNCTION(0x2, "lcd0"),		/* D14 */
    571		  SUNXI_FUNCTION(0x3, "lvds1")),	/* VP2 */
    572	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 15),
    573		  SUNXI_FUNCTION(0x0, "gpio_in"),
    574		  SUNXI_FUNCTION(0x1, "gpio_out"),
    575		  SUNXI_FUNCTION(0x2, "lcd0"),		/* D15 */
    576		  SUNXI_FUNCTION(0x3, "lvds1")),	/* VN2 */
    577	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 16),
    578		  SUNXI_FUNCTION(0x0, "gpio_in"),
    579		  SUNXI_FUNCTION(0x1, "gpio_out"),
    580		  SUNXI_FUNCTION(0x2, "lcd0"),		/* D16 */
    581		  SUNXI_FUNCTION(0x3, "lvds1")),	/* VPC */
    582	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 17),
    583		  SUNXI_FUNCTION(0x0, "gpio_in"),
    584		  SUNXI_FUNCTION(0x1, "gpio_out"),
    585		  SUNXI_FUNCTION(0x2, "lcd0"),		/* D17 */
    586		  SUNXI_FUNCTION(0x3, "lvds1")),	/* VNC */
    587	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 18),
    588		  SUNXI_FUNCTION(0x0, "gpio_in"),
    589		  SUNXI_FUNCTION(0x1, "gpio_out"),
    590		  SUNXI_FUNCTION(0x2, "lcd0"),		/* D18 */
    591		  SUNXI_FUNCTION(0x3, "lvds1")),	/* VP3 */
    592	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 19),
    593		  SUNXI_FUNCTION(0x0, "gpio_in"),
    594		  SUNXI_FUNCTION(0x1, "gpio_out"),
    595		  SUNXI_FUNCTION(0x2, "lcd0"),		/* D19 */
    596		  SUNXI_FUNCTION(0x3, "lvds1")),	/* VN3 */
    597	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 20),
    598		  SUNXI_FUNCTION(0x0, "gpio_in"),
    599		  SUNXI_FUNCTION(0x1, "gpio_out"),
    600		  SUNXI_FUNCTION(0x2, "lcd0"),		/* D20 */
    601		  SUNXI_FUNCTION(0x3, "csi1")),		/* MCLK */
    602	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 21),
    603		  SUNXI_FUNCTION(0x0, "gpio_in"),
    604		  SUNXI_FUNCTION(0x1, "gpio_out"),
    605		  SUNXI_FUNCTION(0x2, "lcd0"),		/* D21 */
    606		  SUNXI_FUNCTION(0x3, "sim")),		/* VPPEN */
    607	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 22),
    608		  SUNXI_FUNCTION(0x0, "gpio_in"),
    609		  SUNXI_FUNCTION(0x1, "gpio_out"),
    610		  SUNXI_FUNCTION(0x2, "lcd0"),		/* D22 */
    611		  SUNXI_FUNCTION(0x3, "sim")),		/* VPPPP */
    612	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 23),
    613		  SUNXI_FUNCTION(0x0, "gpio_in"),
    614		  SUNXI_FUNCTION(0x1, "gpio_out"),
    615		  SUNXI_FUNCTION(0x2, "lcd0"),		/* D23 */
    616		  SUNXI_FUNCTION(0x3, "sim")),		/* DET */
    617	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 24),
    618		  SUNXI_FUNCTION(0x0, "gpio_in"),
    619		  SUNXI_FUNCTION(0x1, "gpio_out"),
    620		  SUNXI_FUNCTION(0x2, "lcd0"),		/* CLK */
    621		  SUNXI_FUNCTION(0x3, "sim")),		/* VCCEN */
    622	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 25),
    623		  SUNXI_FUNCTION(0x0, "gpio_in"),
    624		  SUNXI_FUNCTION(0x1, "gpio_out"),
    625		  SUNXI_FUNCTION(0x2, "lcd0"),		/* DE */
    626		  SUNXI_FUNCTION(0x3, "sim")),		/* RST */
    627	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 26),
    628		  SUNXI_FUNCTION(0x0, "gpio_in"),
    629		  SUNXI_FUNCTION(0x1, "gpio_out"),
    630		  SUNXI_FUNCTION(0x2, "lcd0"),		/* HSYNC */
    631		  SUNXI_FUNCTION(0x3, "sim")),		/* SCK */
    632	SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 27),
    633		  SUNXI_FUNCTION(0x0, "gpio_in"),
    634		  SUNXI_FUNCTION(0x1, "gpio_out"),
    635		  SUNXI_FUNCTION(0x2, "lcd0"),		/* VSYNC */
    636		  SUNXI_FUNCTION(0x3, "sim")),		/* SDA */
    637	/* Hole */
    638	SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 0),
    639		  SUNXI_FUNCTION(0x0, "gpio_in"),
    640		  SUNXI_FUNCTION(0x1, "gpio_out"),
    641		  SUNXI_FUNCTION(0x2, "ts0"),		/* CLK */
    642		  SUNXI_FUNCTION(0x3, "csi0")),		/* PCK */
    643	SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 1),
    644		  SUNXI_FUNCTION(0x0, "gpio_in"),
    645		  SUNXI_FUNCTION(0x1, "gpio_out"),
    646		  SUNXI_FUNCTION(0x2, "ts0"),		/* ERR */
    647		  SUNXI_FUNCTION(0x3, "csi0")),		/* CK */
    648	SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 2),
    649		  SUNXI_FUNCTION(0x0, "gpio_in"),
    650		  SUNXI_FUNCTION(0x1, "gpio_out"),
    651		  SUNXI_FUNCTION(0x2, "ts0"),		/* SYNC */
    652		  SUNXI_FUNCTION(0x3, "csi0")),		/* HSYNC */
    653	SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 3),
    654		  SUNXI_FUNCTION(0x0, "gpio_in"),
    655		  SUNXI_FUNCTION(0x1, "gpio_out"),
    656		  SUNXI_FUNCTION(0x2, "ts0"),		/* DVLD */
    657		  SUNXI_FUNCTION(0x3, "csi0")),		/* VSYNC */
    658	SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 4),
    659		  SUNXI_FUNCTION(0x0, "gpio_in"),
    660		  SUNXI_FUNCTION(0x1, "gpio_out"),
    661		  SUNXI_FUNCTION(0x2, "ts0"),		/* D0 */
    662		  SUNXI_FUNCTION(0x3, "csi0")),		/* D0 */
    663	SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 5),
    664		  SUNXI_FUNCTION(0x0, "gpio_in"),
    665		  SUNXI_FUNCTION(0x1, "gpio_out"),
    666		  SUNXI_FUNCTION(0x2, "ts0"),		/* D1 */
    667		  SUNXI_FUNCTION(0x3, "csi0"),		/* D1 */
    668		  SUNXI_FUNCTION(0x4, "sim")),		/* VPPEN */
    669	SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 6),
    670		  SUNXI_FUNCTION(0x0, "gpio_in"),
    671		  SUNXI_FUNCTION(0x1, "gpio_out"),
    672		  SUNXI_FUNCTION(0x2, "ts0"),		/* D2 */
    673		  SUNXI_FUNCTION(0x3, "csi0")),		/* D2 */
    674	SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 7),
    675		  SUNXI_FUNCTION(0x0, "gpio_in"),
    676		  SUNXI_FUNCTION(0x1, "gpio_out"),
    677		  SUNXI_FUNCTION(0x2, "ts0"),		/* D3 */
    678		  SUNXI_FUNCTION(0x3, "csi0")),		/* D3 */
    679	SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 8),
    680		  SUNXI_FUNCTION(0x0, "gpio_in"),
    681		  SUNXI_FUNCTION(0x1, "gpio_out"),
    682		  SUNXI_FUNCTION(0x2, "ts0"),		/* D4 */
    683		  SUNXI_FUNCTION(0x3, "csi0")),		/* D4 */
    684	SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 9),
    685		  SUNXI_FUNCTION(0x0, "gpio_in"),
    686		  SUNXI_FUNCTION(0x1, "gpio_out"),
    687		  SUNXI_FUNCTION(0x2, "ts0"),		/* D5 */
    688		  SUNXI_FUNCTION(0x3, "csi0")),		/* D5 */
    689	SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 10),
    690		  SUNXI_FUNCTION(0x0, "gpio_in"),
    691		  SUNXI_FUNCTION(0x1, "gpio_out"),
    692		  SUNXI_FUNCTION(0x2, "ts0"),		/* D6 */
    693		  SUNXI_FUNCTION(0x3, "csi0")),		/* D6 */
    694	SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 11),
    695		  SUNXI_FUNCTION(0x0, "gpio_in"),
    696		  SUNXI_FUNCTION(0x1, "gpio_out"),
    697		  SUNXI_FUNCTION(0x2, "ts0"),		/* D7 */
    698		  SUNXI_FUNCTION(0x3, "csi0")),		/* D7 */
    699	/* Hole */
    700	SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 0),
    701		  SUNXI_FUNCTION(0x0, "gpio_in"),
    702		  SUNXI_FUNCTION(0x1, "gpio_out"),
    703		  SUNXI_FUNCTION(0x2, "mmc0"),		/* D1 */
    704		  SUNXI_FUNCTION(0x4, "jtag")),		/* MSI */
    705	SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 1),
    706		  SUNXI_FUNCTION(0x0, "gpio_in"),
    707		  SUNXI_FUNCTION(0x1, "gpio_out"),
    708		  SUNXI_FUNCTION(0x2, "mmc0"),		/* D0 */
    709		  SUNXI_FUNCTION(0x4, "jtag")),		/* DI1 */
    710	SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 2),
    711		  SUNXI_FUNCTION(0x0, "gpio_in"),
    712		  SUNXI_FUNCTION(0x1, "gpio_out"),
    713		  SUNXI_FUNCTION(0x2, "mmc0"),		/* CLK */
    714		  SUNXI_FUNCTION(0x4, "uart0")),	/* TX */
    715	SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 3),
    716		  SUNXI_FUNCTION(0x0, "gpio_in"),
    717		  SUNXI_FUNCTION(0x1, "gpio_out"),
    718		  SUNXI_FUNCTION(0x2, "mmc0"),		/* CMD */
    719		  SUNXI_FUNCTION(0x4, "jtag")),		/* DO1 */
    720	SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 4),
    721		  SUNXI_FUNCTION(0x0, "gpio_in"),
    722		  SUNXI_FUNCTION(0x1, "gpio_out"),
    723		  SUNXI_FUNCTION(0x2, "mmc0"),		/* D3 */
    724		  SUNXI_FUNCTION(0x4, "uart0")),	/* RX */
    725	SUNXI_PIN(SUNXI_PINCTRL_PIN(F, 5),
    726		  SUNXI_FUNCTION(0x0, "gpio_in"),
    727		  SUNXI_FUNCTION(0x1, "gpio_out"),
    728		  SUNXI_FUNCTION(0x2, "mmc0"),		/* D2 */
    729		  SUNXI_FUNCTION(0x4, "jtag")),		/* CK1 */
    730	/* Hole */
    731	SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 0),
    732		  SUNXI_FUNCTION(0x0, "gpio_in"),
    733		  SUNXI_FUNCTION(0x1, "gpio_out"),
    734		  SUNXI_FUNCTION(0x2, "ts1"),		/* CLK */
    735		  SUNXI_FUNCTION(0x3, "csi1"),		/* PCK */
    736		  SUNXI_FUNCTION(0x4, "mmc1")),		/* CMD */
    737	SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 1),
    738		  SUNXI_FUNCTION(0x0, "gpio_in"),
    739		  SUNXI_FUNCTION(0x1, "gpio_out"),
    740		  SUNXI_FUNCTION(0x2, "ts1"),		/* ERR */
    741		  SUNXI_FUNCTION(0x3, "csi1"),		/* CK */
    742		  SUNXI_FUNCTION(0x4, "mmc1")),		/* CLK */
    743	SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 2),
    744		  SUNXI_FUNCTION(0x0, "gpio_in"),
    745		  SUNXI_FUNCTION(0x1, "gpio_out"),
    746		  SUNXI_FUNCTION(0x2, "ts1"),		/* SYNC */
    747		  SUNXI_FUNCTION(0x3, "csi1"),		/* HSYNC */
    748		  SUNXI_FUNCTION(0x4, "mmc1")),		/* D0 */
    749	SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 3),
    750		  SUNXI_FUNCTION(0x0, "gpio_in"),
    751		  SUNXI_FUNCTION(0x1, "gpio_out"),
    752		  SUNXI_FUNCTION(0x2, "ts1"),		/* DVLD */
    753		  SUNXI_FUNCTION(0x3, "csi1"),		/* VSYNC */
    754		  SUNXI_FUNCTION(0x4, "mmc1")),		/* D1 */
    755	SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 4),
    756		  SUNXI_FUNCTION(0x0, "gpio_in"),
    757		  SUNXI_FUNCTION(0x1, "gpio_out"),
    758		  SUNXI_FUNCTION(0x2, "ts1"),		/* D0 */
    759		  SUNXI_FUNCTION(0x3, "csi1"),		/* D0 */
    760		  SUNXI_FUNCTION(0x4, "mmc1"),		/* D2 */
    761		  SUNXI_FUNCTION(0x5, "csi0")),		/* D8 */
    762	SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 5),
    763		  SUNXI_FUNCTION(0x0, "gpio_in"),
    764		  SUNXI_FUNCTION(0x1, "gpio_out"),
    765		  SUNXI_FUNCTION(0x2, "ts1"),		/* D1 */
    766		  SUNXI_FUNCTION(0x3, "csi1"),		/* D1 */
    767		  SUNXI_FUNCTION(0x4, "mmc1"),		/* D3 */
    768		  SUNXI_FUNCTION(0x5, "csi0")),		/* D9 */
    769	SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 6),
    770		  SUNXI_FUNCTION(0x0, "gpio_in"),
    771		  SUNXI_FUNCTION(0x1, "gpio_out"),
    772		  SUNXI_FUNCTION(0x2, "ts1"),		/* D2 */
    773		  SUNXI_FUNCTION(0x3, "csi1"),		/* D2 */
    774		  SUNXI_FUNCTION(0x4, "uart3"),		/* TX */
    775		  SUNXI_FUNCTION(0x5, "csi0")),		/* D10 */
    776	SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 7),
    777		  SUNXI_FUNCTION(0x0, "gpio_in"),
    778		  SUNXI_FUNCTION(0x1, "gpio_out"),
    779		  SUNXI_FUNCTION(0x2, "ts1"),		/* D3 */
    780		  SUNXI_FUNCTION(0x3, "csi1"),		/* D3 */
    781		  SUNXI_FUNCTION(0x4, "uart3"),		/* RX */
    782		  SUNXI_FUNCTION(0x5, "csi0")),		/* D11 */
    783	SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 8),
    784		  SUNXI_FUNCTION(0x0, "gpio_in"),
    785		  SUNXI_FUNCTION(0x1, "gpio_out"),
    786		  SUNXI_FUNCTION(0x2, "ts1"),		/* D4 */
    787		  SUNXI_FUNCTION(0x3, "csi1"),		/* D4 */
    788		  SUNXI_FUNCTION(0x4, "uart3"),		/* RTS */
    789		  SUNXI_FUNCTION(0x5, "csi0")),		/* D12 */
    790	SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 9),
    791		  SUNXI_FUNCTION(0x0, "gpio_in"),
    792		  SUNXI_FUNCTION(0x1, "gpio_out"),
    793		  SUNXI_FUNCTION(0x2, "ts1"),		/* D5 */
    794		  SUNXI_FUNCTION(0x3, "csi1"),		/* D5 */
    795		  SUNXI_FUNCTION(0x4, "uart3"),		/* CTS */
    796		  SUNXI_FUNCTION(0x5, "csi0"),		/* D13 */
    797		  SUNXI_FUNCTION_VARIANT(0x6, "bist",	/* RESULT0 */
    798					 PINCTRL_SUN8I_R40)),
    799	SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 10),
    800		  SUNXI_FUNCTION(0x0, "gpio_in"),
    801		  SUNXI_FUNCTION(0x1, "gpio_out"),
    802		  SUNXI_FUNCTION(0x2, "ts1"),		/* D6 */
    803		  SUNXI_FUNCTION(0x3, "csi1"),		/* D6 */
    804		  SUNXI_FUNCTION(0x4, "uart4"),		/* TX */
    805		  SUNXI_FUNCTION(0x5, "csi0"),		/* D14 */
    806		  SUNXI_FUNCTION_VARIANT(0x6, "bist",	/* RESULT1 */
    807					 PINCTRL_SUN8I_R40)),
    808	SUNXI_PIN(SUNXI_PINCTRL_PIN(G, 11),
    809		  SUNXI_FUNCTION(0x0, "gpio_in"),
    810		  SUNXI_FUNCTION(0x1, "gpio_out"),
    811		  SUNXI_FUNCTION(0x2, "ts1"),		/* D7 */
    812		  SUNXI_FUNCTION(0x3, "csi1"),		/* D7 */
    813		  SUNXI_FUNCTION(0x4, "uart4"),		/* RX */
    814		  SUNXI_FUNCTION(0x5, "csi0")),		/* D15 */
    815	/* Hole */
    816	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 0),
    817		  SUNXI_FUNCTION(0x0, "gpio_in"),
    818		  SUNXI_FUNCTION(0x1, "gpio_out"),
    819		  SUNXI_FUNCTION(0x2, "lcd1"),		/* D0 */
    820		  SUNXI_FUNCTION_VARIANT(0x3, "pata",	/* ATAA0 */
    821					 PINCTRL_SUN4I_A10),
    822		  SUNXI_FUNCTION(0x4, "uart3"),		/* TX */
    823		  SUNXI_FUNCTION_IRQ(0x6, 0),		/* EINT0 */
    824		  SUNXI_FUNCTION(0x7, "csi1")),		/* D0 */
    825	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 1),
    826		  SUNXI_FUNCTION(0x0, "gpio_in"),
    827		  SUNXI_FUNCTION(0x1, "gpio_out"),
    828		  SUNXI_FUNCTION(0x2, "lcd1"),		/* D1 */
    829		  SUNXI_FUNCTION_VARIANT(0x3, "pata",	/* ATAA1 */
    830					 PINCTRL_SUN4I_A10),
    831		  SUNXI_FUNCTION(0x4, "uart3"),		/* RX */
    832		  SUNXI_FUNCTION_IRQ(0x6, 1),		/* EINT1 */
    833		  SUNXI_FUNCTION(0x7, "csi1")),		/* D1 */
    834	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 2),
    835		  SUNXI_FUNCTION(0x0, "gpio_in"),
    836		  SUNXI_FUNCTION(0x1, "gpio_out"),
    837		  SUNXI_FUNCTION(0x2, "lcd1"),		/* D2 */
    838		  SUNXI_FUNCTION_VARIANT(0x3, "pata",	/* ATAA2 */
    839					 PINCTRL_SUN4I_A10),
    840		  SUNXI_FUNCTION(0x4, "uart3"),		/* RTS */
    841		  SUNXI_FUNCTION_IRQ(0x6, 2),		/* EINT2 */
    842		  SUNXI_FUNCTION(0x7, "csi1")),		/* D2 */
    843	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 3),
    844		  SUNXI_FUNCTION(0x0, "gpio_in"),
    845		  SUNXI_FUNCTION(0x1, "gpio_out"),
    846		  SUNXI_FUNCTION(0x2, "lcd1"),		/* D3 */
    847		  SUNXI_FUNCTION_VARIANT(0x3, "pata",	/* ATAIRQ */
    848					 PINCTRL_SUN4I_A10),
    849		  SUNXI_FUNCTION(0x4, "uart3"),		/* CTS */
    850		  SUNXI_FUNCTION_IRQ(0x6, 3),		/* EINT3 */
    851		  SUNXI_FUNCTION(0x7, "csi1")),		/* D3 */
    852	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 4),
    853		  SUNXI_FUNCTION(0x0, "gpio_in"),
    854		  SUNXI_FUNCTION(0x1, "gpio_out"),
    855		  SUNXI_FUNCTION(0x2, "lcd1"),		/* D4 */
    856		  SUNXI_FUNCTION_VARIANT(0x3, "pata",	/* ATAD0 */
    857					 PINCTRL_SUN4I_A10),
    858		  SUNXI_FUNCTION(0x4, "uart4"),		/* TX */
    859		  SUNXI_FUNCTION_IRQ(0x6, 4),		/* EINT4 */
    860		  SUNXI_FUNCTION(0x7, "csi1")),		/* D4 */
    861	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 5),
    862		  SUNXI_FUNCTION(0x0, "gpio_in"),
    863		  SUNXI_FUNCTION(0x1, "gpio_out"),
    864		  SUNXI_FUNCTION(0x2, "lcd1"),		/* D5 */
    865		  SUNXI_FUNCTION_VARIANT(0x3, "pata",	/* ATAD1 */
    866					 PINCTRL_SUN4I_A10),
    867		  SUNXI_FUNCTION(0x4, "uart4"),		/* RX */
    868		  SUNXI_FUNCTION_IRQ(0x6, 5),		/* EINT5 */
    869		  SUNXI_FUNCTION(0x7, "csi1")),		/* D5 */
    870	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 6),
    871		  SUNXI_FUNCTION(0x0, "gpio_in"),
    872		  SUNXI_FUNCTION(0x1, "gpio_out"),
    873		  SUNXI_FUNCTION(0x2, "lcd1"),		/* D6 */
    874		  SUNXI_FUNCTION_VARIANT(0x3, "pata",	/* ATAD2 */
    875					 PINCTRL_SUN4I_A10),
    876		  SUNXI_FUNCTION(0x4, "uart5"),		/* TX */
    877		  SUNXI_FUNCTION_VARIANT(0x5, "ms",	/* BS */
    878					 PINCTRL_SUN4I_A10 |
    879					 PINCTRL_SUN7I_A20),
    880		  SUNXI_FUNCTION_IRQ(0x6, 6),		/* EINT6 */
    881		  SUNXI_FUNCTION(0x7, "csi1")),		/* D6 */
    882	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 7),
    883		  SUNXI_FUNCTION(0x0, "gpio_in"),
    884		  SUNXI_FUNCTION(0x1, "gpio_out"),
    885		  SUNXI_FUNCTION(0x2, "lcd1"),		/* D7 */
    886		  SUNXI_FUNCTION_VARIANT(0x3, "pata",	/* ATAD3 */
    887					 PINCTRL_SUN4I_A10),
    888		  SUNXI_FUNCTION(0x4, "uart5"),		/* RX */
    889		  SUNXI_FUNCTION_VARIANT(0x5, "ms",	/* CLK */
    890					 PINCTRL_SUN4I_A10 |
    891					 PINCTRL_SUN7I_A20),
    892		  SUNXI_FUNCTION_IRQ(0x6, 7),		/* EINT7 */
    893		  SUNXI_FUNCTION(0x7, "csi1")),		/* D7 */
    894	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 8),
    895		  SUNXI_FUNCTION(0x0, "gpio_in"),
    896		  SUNXI_FUNCTION(0x1, "gpio_out"),
    897		  SUNXI_FUNCTION(0x2, "lcd1"),		/* D8 */
    898		  SUNXI_FUNCTION_VARIANT(0x3, "pata",	/* ATAD4 */
    899					 PINCTRL_SUN4I_A10),
    900		  SUNXI_FUNCTION_VARIANT(0x3, "emac",	/* ERXD3 */
    901					 PINCTRL_SUN7I_A20 |
    902					 PINCTRL_SUN8I_R40),
    903		  SUNXI_FUNCTION(0x4, "keypad"),	/* IN0 */
    904		  SUNXI_FUNCTION_VARIANT(0x5, "ms",	/* D0 */
    905					 PINCTRL_SUN4I_A10 |
    906					 PINCTRL_SUN7I_A20),
    907		  SUNXI_FUNCTION_IRQ(0x6, 8),		/* EINT8 */
    908		  SUNXI_FUNCTION(0x7, "csi1")),		/* D8 */
    909	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 9),
    910		  SUNXI_FUNCTION(0x0, "gpio_in"),
    911		  SUNXI_FUNCTION(0x1, "gpio_out"),
    912		  SUNXI_FUNCTION(0x2, "lcd1"),		/* D9 */
    913		  SUNXI_FUNCTION_VARIANT(0x3, "pata",	/* ATAD5 */
    914					 PINCTRL_SUN4I_A10),
    915		  SUNXI_FUNCTION_VARIANT(0x3, "emac",	/* ERXD2 */
    916					 PINCTRL_SUN7I_A20 |
    917					 PINCTRL_SUN8I_R40),
    918		  SUNXI_FUNCTION(0x4, "keypad"),	/* IN1 */
    919		  SUNXI_FUNCTION_VARIANT(0x5, "ms",	/* D1 */
    920					 PINCTRL_SUN4I_A10 |
    921					 PINCTRL_SUN7I_A20),
    922		  SUNXI_FUNCTION_IRQ(0x6, 9),		/* EINT9 */
    923		  SUNXI_FUNCTION(0x7, "csi1")),		/* D9 */
    924	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 10),
    925		  SUNXI_FUNCTION(0x0, "gpio_in"),
    926		  SUNXI_FUNCTION(0x1, "gpio_out"),
    927		  SUNXI_FUNCTION(0x2, "lcd1"),		/* D10 */
    928		  SUNXI_FUNCTION_VARIANT(0x3, "pata",	/* ATAD6 */
    929					 PINCTRL_SUN4I_A10),
    930		  SUNXI_FUNCTION_VARIANT(0x3, "emac",	/* ERXD1 */
    931					 PINCTRL_SUN7I_A20 |
    932					 PINCTRL_SUN8I_R40),
    933		  SUNXI_FUNCTION(0x4, "keypad"),	/* IN2 */
    934		  SUNXI_FUNCTION_VARIANT(0x5, "ms",	/* D2 */
    935					 PINCTRL_SUN4I_A10 |
    936					 PINCTRL_SUN7I_A20),
    937		  SUNXI_FUNCTION_IRQ(0x6, 10),		/* EINT10 */
    938		  SUNXI_FUNCTION(0x7, "csi1")),		/* D10 */
    939	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 11),
    940		  SUNXI_FUNCTION(0x0, "gpio_in"),
    941		  SUNXI_FUNCTION(0x1, "gpio_out"),
    942		  SUNXI_FUNCTION(0x2, "lcd1"),		/* D11 */
    943		  SUNXI_FUNCTION_VARIANT(0x3, "pata",	/* ATAD7 */
    944					 PINCTRL_SUN4I_A10),
    945		  SUNXI_FUNCTION_VARIANT(0x3, "emac",	/* ERXD0 */
    946					 PINCTRL_SUN7I_A20 |
    947					 PINCTRL_SUN8I_R40),
    948		  SUNXI_FUNCTION(0x4, "keypad"),	/* IN3 */
    949		  SUNXI_FUNCTION_VARIANT(0x5, "ms",	/* D3 */
    950					 PINCTRL_SUN4I_A10 |
    951					 PINCTRL_SUN7I_A20),
    952		  SUNXI_FUNCTION_IRQ(0x6, 11),		/* EINT11 */
    953		  SUNXI_FUNCTION(0x7, "csi1")),		/* D11 */
    954	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 12),
    955		  SUNXI_FUNCTION(0x0, "gpio_in"),
    956		  SUNXI_FUNCTION(0x1, "gpio_out"),
    957		  SUNXI_FUNCTION(0x2, "lcd1"),		/* D12 */
    958		  SUNXI_FUNCTION_VARIANT(0x3, "pata",	/* ATAD8 */
    959					 PINCTRL_SUN4I_A10),
    960		  SUNXI_FUNCTION(0x4, "ps2"),		/* SCK1 */
    961		  SUNXI_FUNCTION_IRQ(0x6, 12),		/* EINT12 */
    962		  SUNXI_FUNCTION(0x7, "csi1")),		/* D12 */
    963	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 13),
    964		  SUNXI_FUNCTION(0x0, "gpio_in"),
    965		  SUNXI_FUNCTION(0x1, "gpio_out"),
    966		  SUNXI_FUNCTION(0x2, "lcd1"),		/* D13 */
    967		  SUNXI_FUNCTION_VARIANT(0x3, "pata",	/* ATAD9 */
    968					 PINCTRL_SUN4I_A10),
    969		  SUNXI_FUNCTION(0x4, "ps2"),		/* SDA1 */
    970		  SUNXI_FUNCTION(0x5, "sim"),		/* RST */
    971		  SUNXI_FUNCTION_IRQ(0x6, 13),		/* EINT13 */
    972		  SUNXI_FUNCTION(0x7, "csi1")),		/* D13 */
    973	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 14),
    974		  SUNXI_FUNCTION(0x0, "gpio_in"),
    975		  SUNXI_FUNCTION(0x1, "gpio_out"),
    976		  SUNXI_FUNCTION(0x2, "lcd1"),		/* D14 */
    977		  SUNXI_FUNCTION_VARIANT(0x3, "pata",	/* ATAD10 */
    978					 PINCTRL_SUN4I_A10),
    979		  SUNXI_FUNCTION_VARIANT(0x3, "emac",	/* ETXD3 */
    980					 PINCTRL_SUN7I_A20 |
    981					 PINCTRL_SUN8I_R40),
    982		  SUNXI_FUNCTION(0x4, "keypad"),	/* IN4 */
    983		  SUNXI_FUNCTION(0x5, "sim"),		/* VPPEN */
    984		  SUNXI_FUNCTION_IRQ(0x6, 14),		/* EINT14 */
    985		  SUNXI_FUNCTION(0x7, "csi1")),		/* D14 */
    986	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 15),
    987		  SUNXI_FUNCTION(0x0, "gpio_in"),
    988		  SUNXI_FUNCTION(0x1, "gpio_out"),
    989		  SUNXI_FUNCTION(0x2, "lcd1"),		/* D15 */
    990		  SUNXI_FUNCTION_VARIANT(0x3, "pata",	/* ATAD11 */
    991					 PINCTRL_SUN4I_A10),
    992		  SUNXI_FUNCTION_VARIANT(0x3, "emac",	/* ETXD2 */
    993					 PINCTRL_SUN7I_A20 |
    994					 PINCTRL_SUN8I_R40),
    995		  SUNXI_FUNCTION(0x4, "keypad"),	/* IN5 */
    996		  SUNXI_FUNCTION(0x5, "sim"),		/* VPPPP */
    997		  SUNXI_FUNCTION_IRQ(0x6, 15),		/* EINT15 */
    998		  SUNXI_FUNCTION(0x7, "csi1")),		/* D15 */
    999	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 16),
   1000		  SUNXI_FUNCTION(0x0, "gpio_in"),
   1001		  SUNXI_FUNCTION(0x1, "gpio_out"),
   1002		  SUNXI_FUNCTION(0x2, "lcd1"),		/* D16 */
   1003		  SUNXI_FUNCTION_VARIANT(0x3, "pata",	/* ATAD12 */
   1004					 PINCTRL_SUN4I_A10),
   1005		  SUNXI_FUNCTION_VARIANT(0x3, "emac",	/* ETXD1 */
   1006					 PINCTRL_SUN7I_A20 |
   1007					 PINCTRL_SUN8I_R40),
   1008		  SUNXI_FUNCTION(0x4, "keypad"),	/* IN6 */
   1009		  SUNXI_FUNCTION(0x5, "sim"),		/* DET */
   1010		  SUNXI_FUNCTION_IRQ(0x6, 16),		/* EINT16 */
   1011		  SUNXI_FUNCTION(0x7, "csi1")),		/* D16 */
   1012	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 17),
   1013		  SUNXI_FUNCTION(0x0, "gpio_in"),
   1014		  SUNXI_FUNCTION(0x1, "gpio_out"),
   1015		  SUNXI_FUNCTION(0x2, "lcd1"),		/* D17 */
   1016		  SUNXI_FUNCTION_VARIANT(0x3, "pata",	/* ATAD13 */
   1017					 PINCTRL_SUN4I_A10),
   1018		  SUNXI_FUNCTION_VARIANT(0x3, "emac",	/* ETXD0 */
   1019					 PINCTRL_SUN7I_A20 |
   1020					 PINCTRL_SUN8I_R40),
   1021		  SUNXI_FUNCTION(0x4, "keypad"),	/* IN7 */
   1022		  SUNXI_FUNCTION(0x5, "sim"),		/* VCCEN */
   1023		  SUNXI_FUNCTION_IRQ(0x6, 17),		/* EINT17 */
   1024		  SUNXI_FUNCTION(0x7, "csi1")),		/* D17 */
   1025	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 18),
   1026		  SUNXI_FUNCTION(0x0, "gpio_in"),
   1027		  SUNXI_FUNCTION(0x1, "gpio_out"),
   1028		  SUNXI_FUNCTION(0x2, "lcd1"),		/* D18 */
   1029		  SUNXI_FUNCTION_VARIANT(0x3, "pata",	/* ATAD14 */
   1030					 PINCTRL_SUN4I_A10),
   1031		  SUNXI_FUNCTION_VARIANT(0x3, "emac",	/* ERXCK */
   1032					 PINCTRL_SUN7I_A20 |
   1033					 PINCTRL_SUN8I_R40),
   1034		  SUNXI_FUNCTION(0x4, "keypad"),	/* OUT0 */
   1035		  SUNXI_FUNCTION(0x5, "sim"),		/* SCK */
   1036		  SUNXI_FUNCTION_IRQ(0x6, 18),		/* EINT18 */
   1037		  SUNXI_FUNCTION(0x7, "csi1")),		/* D18 */
   1038	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 19),
   1039		  SUNXI_FUNCTION(0x0, "gpio_in"),
   1040		  SUNXI_FUNCTION(0x1, "gpio_out"),
   1041		  SUNXI_FUNCTION(0x2, "lcd1"),		/* D19 */
   1042		  SUNXI_FUNCTION_VARIANT(0x3, "pata",	/* ATAD15 */
   1043					 PINCTRL_SUN4I_A10),
   1044		  SUNXI_FUNCTION_VARIANT(0x3, "emac",	/* ERXERR */
   1045					 PINCTRL_SUN7I_A20 |
   1046					 PINCTRL_SUN8I_R40),
   1047		  SUNXI_FUNCTION(0x4, "keypad"),	/* OUT1 */
   1048		  SUNXI_FUNCTION(0x5, "sim"),		/* SDA */
   1049		  SUNXI_FUNCTION_IRQ(0x6, 19),		/* EINT19 */
   1050		  SUNXI_FUNCTION(0x7, "csi1")),		/* D19 */
   1051	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 20),
   1052		  SUNXI_FUNCTION(0x0, "gpio_in"),
   1053		  SUNXI_FUNCTION(0x1, "gpio_out"),
   1054		  SUNXI_FUNCTION(0x2, "lcd1"),		/* D20 */
   1055		  SUNXI_FUNCTION_VARIANT(0x3, "pata",	/* ATAOE */
   1056					 PINCTRL_SUN4I_A10),
   1057		  SUNXI_FUNCTION_VARIANT(0x3, "emac",	/* ERXDV */
   1058					 PINCTRL_SUN7I_A20 |
   1059					 PINCTRL_SUN8I_R40),
   1060		  SUNXI_FUNCTION(0x4, "can"),		/* TX */
   1061		  SUNXI_FUNCTION_IRQ(0x6, 20),		/* EINT20 */
   1062		  SUNXI_FUNCTION(0x7, "csi1")),		/* D20 */
   1063	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 21),
   1064		  SUNXI_FUNCTION(0x0, "gpio_in"),
   1065		  SUNXI_FUNCTION(0x1, "gpio_out"),
   1066		  SUNXI_FUNCTION(0x2, "lcd1"),		/* D21 */
   1067		  SUNXI_FUNCTION_VARIANT(0x3, "pata",	/* ATADREQ */
   1068					 PINCTRL_SUN4I_A10),
   1069		  SUNXI_FUNCTION_VARIANT(0x3, "emac",	/* EMDC */
   1070					 PINCTRL_SUN7I_A20 |
   1071					 PINCTRL_SUN8I_R40),
   1072		  SUNXI_FUNCTION(0x4, "can"),		/* RX */
   1073		  SUNXI_FUNCTION_IRQ(0x6, 21),		/* EINT21 */
   1074		  SUNXI_FUNCTION(0x7, "csi1")),		/* D21 */
   1075	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 22),
   1076		  SUNXI_FUNCTION(0x0, "gpio_in"),
   1077		  SUNXI_FUNCTION(0x1, "gpio_out"),
   1078		  SUNXI_FUNCTION(0x2, "lcd1"),		/* D22 */
   1079		  SUNXI_FUNCTION_VARIANT(0x3, "pata",	/* ATADACK */
   1080					 PINCTRL_SUN4I_A10),
   1081		  SUNXI_FUNCTION_VARIANT(0x3, "emac",	/* EMDIO */
   1082					 PINCTRL_SUN7I_A20 |
   1083					 PINCTRL_SUN8I_R40),
   1084		  SUNXI_FUNCTION(0x4, "keypad"),	/* OUT2 */
   1085		  SUNXI_FUNCTION(0x5, "mmc1"),		/* CMD */
   1086		  SUNXI_FUNCTION(0x7, "csi1")),		/* D22 */
   1087	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 23),
   1088		  SUNXI_FUNCTION(0x0, "gpio_in"),
   1089		  SUNXI_FUNCTION(0x1, "gpio_out"),
   1090		  SUNXI_FUNCTION(0x2, "lcd1"),		/* D23 */
   1091		  SUNXI_FUNCTION_VARIANT(0x3, "pata",	/* ATACS0 */
   1092					 PINCTRL_SUN4I_A10),
   1093		  SUNXI_FUNCTION_VARIANT(0x3, "emac",	/* ETXEN */
   1094					 PINCTRL_SUN7I_A20 |
   1095					 PINCTRL_SUN8I_R40),
   1096		  SUNXI_FUNCTION(0x4, "keypad"),	/* OUT3 */
   1097		  SUNXI_FUNCTION(0x5, "mmc1"),		/* CLK */
   1098		  SUNXI_FUNCTION(0x7, "csi1")),		/* D23 */
   1099	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 24),
   1100		  SUNXI_FUNCTION(0x0, "gpio_in"),
   1101		  SUNXI_FUNCTION(0x1, "gpio_out"),
   1102		  SUNXI_FUNCTION(0x2, "lcd1"),		/* CLK */
   1103		  SUNXI_FUNCTION_VARIANT(0x3, "pata",	/* ATACS1 */
   1104					 PINCTRL_SUN4I_A10),
   1105		  SUNXI_FUNCTION_VARIANT(0x3, "emac",	/* ETXCK */
   1106					 PINCTRL_SUN7I_A20 |
   1107					 PINCTRL_SUN8I_R40),
   1108		  SUNXI_FUNCTION(0x4, "keypad"),	/* OUT4 */
   1109		  SUNXI_FUNCTION(0x5, "mmc1"),		/* D0 */
   1110		  SUNXI_FUNCTION(0x7, "csi1")),		/* PCLK */
   1111	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 25),
   1112		  SUNXI_FUNCTION(0x0, "gpio_in"),
   1113		  SUNXI_FUNCTION(0x1, "gpio_out"),
   1114		  SUNXI_FUNCTION(0x2, "lcd1"),		/* DE */
   1115		  SUNXI_FUNCTION_VARIANT(0x3, "pata",	/* ATAIORDY */
   1116					 PINCTRL_SUN4I_A10),
   1117		  SUNXI_FUNCTION_VARIANT(0x3, "emac",	/* ECRS */
   1118					 PINCTRL_SUN7I_A20 |
   1119					 PINCTRL_SUN8I_R40),
   1120		  SUNXI_FUNCTION(0x4, "keypad"),	/* OUT5 */
   1121		  SUNXI_FUNCTION(0x5, "mmc1"),		/* D1 */
   1122		  SUNXI_FUNCTION(0x7, "csi1")),		/* FIELD */
   1123	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 26),
   1124		  SUNXI_FUNCTION(0x0, "gpio_in"),
   1125		  SUNXI_FUNCTION(0x1, "gpio_out"),
   1126		  SUNXI_FUNCTION(0x2, "lcd1"),		/* HSYNC */
   1127		  SUNXI_FUNCTION_VARIANT(0x3, "pata",	/* ATAIOR */
   1128					 PINCTRL_SUN4I_A10),
   1129		  SUNXI_FUNCTION_VARIANT(0x3, "emac",	/* ECOL */
   1130					 PINCTRL_SUN7I_A20 |
   1131					 PINCTRL_SUN8I_R40),
   1132		  SUNXI_FUNCTION(0x4, "keypad"),	/* OUT6 */
   1133		  SUNXI_FUNCTION(0x5, "mmc1"),		/* D2 */
   1134		  SUNXI_FUNCTION(0x7, "csi1")),		/* HSYNC */
   1135	SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 27),
   1136		  SUNXI_FUNCTION(0x0, "gpio_in"),
   1137		  SUNXI_FUNCTION(0x1, "gpio_out"),
   1138		  SUNXI_FUNCTION(0x2, "lcd1"),		/* VSYNC */
   1139		  SUNXI_FUNCTION_VARIANT(0x3, "pata",	/* ATAIOW */
   1140					 PINCTRL_SUN4I_A10),
   1141		  SUNXI_FUNCTION_VARIANT(0x3, "emac",	/* ETXERR */
   1142					 PINCTRL_SUN7I_A20 |
   1143					 PINCTRL_SUN8I_R40),
   1144		  SUNXI_FUNCTION(0x4, "keypad"),	/* OUT7 */
   1145		  SUNXI_FUNCTION(0x5, "mmc1"),		/* D3 */
   1146		  SUNXI_FUNCTION(0x7, "csi1")),		/* VSYNC */
   1147	/* Hole */
   1148	SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 0),
   1149		  SUNXI_FUNCTION(0x0, "gpio_in"),
   1150		  SUNXI_FUNCTION(0x1, "gpio_out"),
   1151		  SUNXI_FUNCTION_VARIANT(0x3, "i2c3",	/* SCK */
   1152					 PINCTRL_SUN7I_A20 |
   1153					 PINCTRL_SUN8I_R40)),
   1154	SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 1),
   1155		  SUNXI_FUNCTION(0x0, "gpio_in"),
   1156		  SUNXI_FUNCTION(0x1, "gpio_out"),
   1157		  SUNXI_FUNCTION_VARIANT(0x3, "i2c3",	/* SDA */
   1158					 PINCTRL_SUN7I_A20 |
   1159					 PINCTRL_SUN8I_R40)),
   1160	SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 2),
   1161		  SUNXI_FUNCTION(0x0, "gpio_in"),
   1162		  SUNXI_FUNCTION(0x1, "gpio_out"),
   1163		  SUNXI_FUNCTION_VARIANT(0x3, "i2c4",	/* SCK */
   1164					 PINCTRL_SUN7I_A20 |
   1165					 PINCTRL_SUN8I_R40)),
   1166	SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 3),
   1167		  SUNXI_FUNCTION(0x0, "gpio_in"),
   1168		  SUNXI_FUNCTION(0x1, "gpio_out"),
   1169		  SUNXI_FUNCTION(0x2, "pwm"),		/* PWM1 */
   1170		  SUNXI_FUNCTION_VARIANT(0x3, "i2c4",	/* SDA */
   1171					 PINCTRL_SUN7I_A20 |
   1172					 PINCTRL_SUN8I_R40)),
   1173	SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 4),
   1174		  SUNXI_FUNCTION(0x0, "gpio_in"),
   1175		  SUNXI_FUNCTION(0x1, "gpio_out"),
   1176		  SUNXI_FUNCTION(0x2, "mmc3")),		/* CMD */
   1177	SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 5),
   1178		  SUNXI_FUNCTION(0x0, "gpio_in"),
   1179		  SUNXI_FUNCTION(0x1, "gpio_out"),
   1180		  SUNXI_FUNCTION(0x2, "mmc3")),		/* CLK */
   1181	SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 6),
   1182		  SUNXI_FUNCTION(0x0, "gpio_in"),
   1183		  SUNXI_FUNCTION(0x1, "gpio_out"),
   1184		  SUNXI_FUNCTION(0x2, "mmc3")),		/* D0 */
   1185	SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 7),
   1186		  SUNXI_FUNCTION(0x0, "gpio_in"),
   1187		  SUNXI_FUNCTION(0x1, "gpio_out"),
   1188		  SUNXI_FUNCTION(0x2, "mmc3")),		/* D1 */
   1189	SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 8),
   1190		  SUNXI_FUNCTION(0x0, "gpio_in"),
   1191		  SUNXI_FUNCTION(0x1, "gpio_out"),
   1192		  SUNXI_FUNCTION(0x2, "mmc3")),		/* D2 */
   1193	SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 9),
   1194		  SUNXI_FUNCTION(0x0, "gpio_in"),
   1195		  SUNXI_FUNCTION(0x1, "gpio_out"),
   1196		  SUNXI_FUNCTION(0x2, "mmc3")),		/* D3 */
   1197	SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 10),
   1198		  SUNXI_FUNCTION(0x0, "gpio_in"),
   1199		  SUNXI_FUNCTION(0x1, "gpio_out"),
   1200		  SUNXI_FUNCTION(0x2, "spi0"),		/* CS0 */
   1201		  SUNXI_FUNCTION(0x3, "uart5"),		/* TX */
   1202		  SUNXI_FUNCTION_IRQ(0x6, 22)),		/* EINT22 */
   1203	SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 11),
   1204		  SUNXI_FUNCTION(0x0, "gpio_in"),
   1205		  SUNXI_FUNCTION(0x1, "gpio_out"),
   1206		  SUNXI_FUNCTION(0x2, "spi0"),		/* CLK */
   1207		  SUNXI_FUNCTION(0x3, "uart5"),		/* RX */
   1208		  SUNXI_FUNCTION_IRQ(0x6, 23)),		/* EINT23 */
   1209	SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 12),
   1210		  SUNXI_FUNCTION(0x0, "gpio_in"),
   1211		  SUNXI_FUNCTION(0x1, "gpio_out"),
   1212		  SUNXI_FUNCTION(0x2, "spi0"),		/* MOSI */
   1213		  SUNXI_FUNCTION(0x3, "uart6"),		/* TX */
   1214		  SUNXI_FUNCTION_VARIANT(0x4, "clk_out_a",
   1215					 PINCTRL_SUN7I_A20 |
   1216					 PINCTRL_SUN8I_R40),
   1217		  SUNXI_FUNCTION_IRQ(0x6, 24)),		/* EINT24 */
   1218	SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 13),
   1219		  SUNXI_FUNCTION(0x0, "gpio_in"),
   1220		  SUNXI_FUNCTION(0x1, "gpio_out"),
   1221		  SUNXI_FUNCTION(0x2, "spi0"),		/* MISO */
   1222		  SUNXI_FUNCTION(0x3, "uart6"),		/* RX */
   1223		  SUNXI_FUNCTION_VARIANT(0x4, "clk_out_b",
   1224					 PINCTRL_SUN7I_A20 |
   1225					 PINCTRL_SUN8I_R40),
   1226		  SUNXI_FUNCTION_IRQ(0x6, 25)),		/* EINT25 */
   1227	SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 14),
   1228		  SUNXI_FUNCTION(0x0, "gpio_in"),
   1229		  SUNXI_FUNCTION(0x1, "gpio_out"),
   1230		  SUNXI_FUNCTION(0x2, "spi0"),		/* CS1 */
   1231		  SUNXI_FUNCTION(0x3, "ps2"),		/* SCK1 */
   1232		  SUNXI_FUNCTION(0x4, "timer4"),	/* TCLKIN0 */
   1233		  SUNXI_FUNCTION_IRQ(0x6, 26)),		/* EINT26 */
   1234	SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 15),
   1235		  SUNXI_FUNCTION(0x0, "gpio_in"),
   1236		  SUNXI_FUNCTION(0x1, "gpio_out"),
   1237		  SUNXI_FUNCTION(0x2, "spi1"),		/* CS1 */
   1238		  SUNXI_FUNCTION(0x3, "ps2"),		/* SDA1 */
   1239		  SUNXI_FUNCTION(0x4, "timer5"),	/* TCLKIN1 */
   1240		  SUNXI_FUNCTION_IRQ(0x6, 27)),		/* EINT27 */
   1241	SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 16),
   1242		  SUNXI_FUNCTION(0x0, "gpio_in"),
   1243		  SUNXI_FUNCTION(0x1, "gpio_out"),
   1244		  SUNXI_FUNCTION(0x2, "spi1"),		/* CS0 */
   1245		  SUNXI_FUNCTION(0x3, "uart2"),		/* RTS */
   1246		  SUNXI_FUNCTION_IRQ(0x6, 28)),		/* EINT28 */
   1247	SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 17),
   1248		  SUNXI_FUNCTION(0x0, "gpio_in"),
   1249		  SUNXI_FUNCTION(0x1, "gpio_out"),
   1250		  SUNXI_FUNCTION(0x2, "spi1"),		/* CLK */
   1251		  SUNXI_FUNCTION(0x3, "uart2"),		/* CTS */
   1252		  SUNXI_FUNCTION_IRQ(0x6, 29)),		/* EINT29 */
   1253	SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 18),
   1254		  SUNXI_FUNCTION(0x0, "gpio_in"),
   1255		  SUNXI_FUNCTION(0x1, "gpio_out"),
   1256		  SUNXI_FUNCTION(0x2, "spi1"),		/* MOSI */
   1257		  SUNXI_FUNCTION(0x3, "uart2"),		/* TX */
   1258		  SUNXI_FUNCTION_IRQ(0x6, 30)),		/* EINT30 */
   1259	SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 19),
   1260		  SUNXI_FUNCTION(0x0, "gpio_in"),
   1261		  SUNXI_FUNCTION(0x1, "gpio_out"),
   1262		  SUNXI_FUNCTION(0x2, "spi1"),		/* MISO */
   1263		  SUNXI_FUNCTION(0x3, "uart2"),		/* RX */
   1264		  SUNXI_FUNCTION_IRQ(0x6, 31)),		/* EINT31 */
   1265	SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 20),
   1266		  SUNXI_FUNCTION(0x0, "gpio_in"),
   1267		  SUNXI_FUNCTION(0x1, "gpio_out"),
   1268		  SUNXI_FUNCTION(0x2, "ps2"),		/* SCK0 */
   1269		  SUNXI_FUNCTION(0x3, "uart7"),		/* TX */
   1270		  SUNXI_FUNCTION_VARIANT(0x4, "hdmi",	/* HSCL */
   1271					 PINCTRL_SUN4I_A10 |
   1272					 PINCTRL_SUN7I_A20),
   1273		  SUNXI_FUNCTION_VARIANT(0x6, "pwm",	/* PWM2 */
   1274					 PINCTRL_SUN8I_R40)),
   1275	SUNXI_PIN(SUNXI_PINCTRL_PIN(I, 21),
   1276		  SUNXI_FUNCTION(0x0, "gpio_in"),
   1277		  SUNXI_FUNCTION(0x1, "gpio_out"),
   1278		  SUNXI_FUNCTION(0x2, "ps2"),		/* SDA0 */
   1279		  SUNXI_FUNCTION(0x3, "uart7"),		/* RX */
   1280		  SUNXI_FUNCTION_VARIANT(0x4, "hdmi",	/* HSDA */
   1281					 PINCTRL_SUN4I_A10 |
   1282					 PINCTRL_SUN7I_A20),
   1283		  SUNXI_FUNCTION_VARIANT(0x6, "pwm",	/* PWM3 */
   1284					 PINCTRL_SUN8I_R40)),
   1285};
   1286
   1287static const struct sunxi_pinctrl_desc sun4i_a10_pinctrl_data = {
   1288	.pins = sun4i_a10_pins,
   1289	.npins = ARRAY_SIZE(sun4i_a10_pins),
   1290	.irq_banks = 1,
   1291	.irq_read_needs_mux = true,
   1292	.disable_strict_mode = true,
   1293};
   1294
   1295static int sun4i_a10_pinctrl_probe(struct platform_device *pdev)
   1296{
   1297	unsigned long variant = (unsigned long)of_device_get_match_data(&pdev->dev);
   1298
   1299	return sunxi_pinctrl_init_with_variant(pdev, &sun4i_a10_pinctrl_data,
   1300					       variant);
   1301}
   1302
   1303static const struct of_device_id sun4i_a10_pinctrl_match[] = {
   1304	{
   1305		.compatible = "allwinner,sun4i-a10-pinctrl",
   1306		.data = (void *)PINCTRL_SUN4I_A10
   1307	},
   1308	{
   1309		.compatible = "allwinner,sun7i-a20-pinctrl",
   1310		.data = (void *)PINCTRL_SUN7I_A20
   1311	},
   1312	{
   1313		.compatible = "allwinner,sun8i-r40-pinctrl",
   1314		.data = (void *)PINCTRL_SUN8I_R40
   1315	},
   1316	{}
   1317};
   1318
   1319static struct platform_driver sun4i_a10_pinctrl_driver = {
   1320	.probe	= sun4i_a10_pinctrl_probe,
   1321	.driver	= {
   1322		.name		= "sun4i-pinctrl",
   1323		.of_match_table	= sun4i_a10_pinctrl_match,
   1324	},
   1325};
   1326builtin_platform_driver(sun4i_a10_pinctrl_driver);