Home | History | Annotate | Line # | Download | only in amlogic
      1  1.1  ryo /* $NetBSD: mesong12a_pinctrl.c,v 1.1 2021/01/01 07:21:58 ryo Exp $ */
      2  1.1  ryo 
      3  1.1  ryo /*-
      4  1.1  ryo  * Copyright (c) 2019 Jared McNeill <jmcneill (at) invisible.ca>
      5  1.1  ryo  * All rights reserved.
      6  1.1  ryo  *
      7  1.1  ryo  * Redistribution and use in source and binary forms, with or without
      8  1.1  ryo  * modification, are permitted provided that the following conditions
      9  1.1  ryo  * are met:
     10  1.1  ryo  * 1. Redistributions of source code must retain the above copyright
     11  1.1  ryo  *    notice, this list of conditions and the following disclaimer.
     12  1.1  ryo  * 2. Redistributions in binary form must reproduce the above copyright
     13  1.1  ryo  *    notice, this list of conditions and the following disclaimer in the
     14  1.1  ryo  *    documentation and/or other materials provided with the distribution.
     15  1.1  ryo  *
     16  1.1  ryo  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
     17  1.1  ryo  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
     18  1.1  ryo  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
     19  1.1  ryo  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
     20  1.1  ryo  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
     21  1.1  ryo  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
     22  1.1  ryo  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
     23  1.1  ryo  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
     24  1.1  ryo  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
     25  1.1  ryo  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
     26  1.1  ryo  * SUCH DAMAGE.
     27  1.1  ryo  */
     28  1.1  ryo 
     29  1.1  ryo #include <sys/cdefs.h>
     30  1.1  ryo __KERNEL_RCSID(0, "$NetBSD: mesong12a_pinctrl.c,v 1.1 2021/01/01 07:21:58 ryo Exp $");
     31  1.1  ryo 
     32  1.1  ryo #include <sys/param.h>
     33  1.1  ryo #include <sys/types.h>
     34  1.1  ryo #include <sys/bus.h>
     35  1.1  ryo #include <sys/device.h>
     36  1.1  ryo 
     37  1.1  ryo #include <arm/amlogic/meson_pinctrl.h>
     38  1.1  ryo 
     39  1.1  ryo /* CBUS pinmux registers */
     40  1.1  ryo #define	CBUS_REG(n)	((n) << 2)
     41  1.1  ryo 
     42  1.1  ryo /*
     43  1.1  ryo  * GPIO banks.
     44  1.1  ryo  * The values must match those in dt-bindings/gpio/meson-g12a-gpio.h
     45  1.1  ryo  */
     46  1.1  ryo enum {
     47  1.1  ryo 	GPIOZ_0 = 0,
     48  1.1  ryo 	GPIOZ_1,
     49  1.1  ryo 	GPIOZ_2,
     50  1.1  ryo 	GPIOZ_3,
     51  1.1  ryo 	GPIOZ_4,
     52  1.1  ryo 	GPIOZ_5,
     53  1.1  ryo 	GPIOZ_6,
     54  1.1  ryo 	GPIOZ_7,
     55  1.1  ryo 	GPIOZ_8,
     56  1.1  ryo 	GPIOZ_9,
     57  1.1  ryo 	GPIOZ_10,
     58  1.1  ryo 	GPIOZ_11,
     59  1.1  ryo 	GPIOZ_12,
     60  1.1  ryo 	GPIOZ_13,
     61  1.1  ryo 	GPIOZ_14,
     62  1.1  ryo 	GPIOZ_15,
     63  1.1  ryo 
     64  1.1  ryo 	GPIOH_0 = 16,
     65  1.1  ryo 	GPIOH_1,
     66  1.1  ryo 	GPIOH_2,
     67  1.1  ryo 	GPIOH_3,
     68  1.1  ryo 	GPIOH_4,
     69  1.1  ryo 	GPIOH_5,
     70  1.1  ryo 	GPIOH_6,
     71  1.1  ryo 	GPIOH_7,
     72  1.1  ryo 	GPIOH_8,
     73  1.1  ryo 
     74  1.1  ryo 	BOOT_0 = 25,
     75  1.1  ryo 	BOOT_1,
     76  1.1  ryo 	BOOT_2,
     77  1.1  ryo 	BOOT_3,
     78  1.1  ryo 	BOOT_4,
     79  1.1  ryo 	BOOT_5,
     80  1.1  ryo 	BOOT_6,
     81  1.1  ryo 	BOOT_7,
     82  1.1  ryo 	BOOT_8,
     83  1.1  ryo 	BOOT_9,
     84  1.1  ryo 	BOOT_10,
     85  1.1  ryo 	BOOT_11,
     86  1.1  ryo 	BOOT_12,
     87  1.1  ryo 	BOOT_13,
     88  1.1  ryo 	BOOT_14,
     89  1.1  ryo 	BOOT_15,
     90  1.1  ryo 
     91  1.1  ryo 	GPIOC_0 = 41,
     92  1.1  ryo 	GPIOC_1,
     93  1.1  ryo 	GPIOC_2,
     94  1.1  ryo 	GPIOC_3,
     95  1.1  ryo 	GPIOC_4,
     96  1.1  ryo 	GPIOC_5,
     97  1.1  ryo 	GPIOC_6,
     98  1.1  ryo 	GPIOC_7,
     99  1.1  ryo 
    100  1.1  ryo 	GPIOA_0 = 49,
    101  1.1  ryo 	GPIOA_1,
    102  1.1  ryo 	GPIOA_2,
    103  1.1  ryo 	GPIOA_3,
    104  1.1  ryo 	GPIOA_4,
    105  1.1  ryo 	GPIOA_5,
    106  1.1  ryo 	GPIOA_6,
    107  1.1  ryo 	GPIOA_7,
    108  1.1  ryo 	GPIOA_8,
    109  1.1  ryo 	GPIOA_9,
    110  1.1  ryo 	GPIOA_10,
    111  1.1  ryo 	GPIOA_11,
    112  1.1  ryo 	GPIOA_12,
    113  1.1  ryo 	GPIOA_13,
    114  1.1  ryo 	GPIOA_14,
    115  1.1  ryo 	GPIOA_15,
    116  1.1  ryo 
    117  1.1  ryo 	GPIOX_0 = 65,
    118  1.1  ryo 	GPIOX_1,
    119  1.1  ryo 	GPIOX_2,
    120  1.1  ryo 	GPIOX_3,
    121  1.1  ryo 	GPIOX_4,
    122  1.1  ryo 	GPIOX_5,
    123  1.1  ryo 	GPIOX_6,
    124  1.1  ryo 	GPIOX_7,
    125  1.1  ryo 	GPIOX_8,
    126  1.1  ryo 	GPIOX_9,
    127  1.1  ryo 	GPIOX_10,
    128  1.1  ryo 	GPIOX_11,
    129  1.1  ryo 	GPIOX_12,
    130  1.1  ryo 	GPIOX_13,
    131  1.1  ryo 	GPIOX_14,
    132  1.1  ryo 	GPIOX_15,
    133  1.1  ryo 	GPIOX_16,
    134  1.1  ryo 	GPIOX_17,
    135  1.1  ryo 	GPIOX_18,
    136  1.1  ryo 	GPIOX_19,
    137  1.1  ryo 
    138  1.1  ryo 	GPIOAO_0 = 0,
    139  1.1  ryo 	GPIOAO_1,
    140  1.1  ryo 	GPIOAO_2,
    141  1.1  ryo 	GPIOAO_3,
    142  1.1  ryo 	GPIOAO_4,
    143  1.1  ryo 	GPIOAO_5,
    144  1.1  ryo 	GPIOAO_6,
    145  1.1  ryo 	GPIOAO_7,
    146  1.1  ryo 	GPIOAO_8,
    147  1.1  ryo 	GPIOAO_9,
    148  1.1  ryo 	GPIOAO_10,
    149  1.1  ryo 	GPIOAO_11,
    150  1.1  ryo 	GPIOE_0 = 12,
    151  1.1  ryo 	GPIOE_1,
    152  1.1  ryo 	GPIOE_2,
    153  1.1  ryo };
    154  1.1  ryo 
    155  1.1  ryo #define	CBUS_GPIO(_id, _off, _bit)					\
    156  1.1  ryo 	[_id] = {							\
    157  1.1  ryo 		.id = (_id),						\
    158  1.1  ryo 		.name = __STRING(_id),					\
    159  1.1  ryo 		.oen = {						\
    160  1.1  ryo 			.type = MESON_PINCTRL_REGTYPE_GPIO,		\
    161  1.1  ryo 			.reg = CBUS_REG((_off) * 3 + 0),		\
    162  1.1  ryo 			.mask = __BIT(_bit)				\
    163  1.1  ryo 		},							\
    164  1.1  ryo 		.out = {						\
    165  1.1  ryo 			.type = MESON_PINCTRL_REGTYPE_GPIO,		\
    166  1.1  ryo 			.reg = CBUS_REG((_off) * 3 + 1),		\
    167  1.1  ryo 			.mask = __BIT(_bit)				\
    168  1.1  ryo 		},							\
    169  1.1  ryo 		.in = {							\
    170  1.1  ryo 			.type = MESON_PINCTRL_REGTYPE_GPIO,		\
    171  1.1  ryo 			.reg = CBUS_REG((_off) * 3 + 2),		\
    172  1.1  ryo 			.mask = __BIT(_bit)				\
    173  1.1  ryo 		},							\
    174  1.1  ryo 		.pupden = {						\
    175  1.1  ryo 			.type = MESON_PINCTRL_REGTYPE_PULL_ENABLE,	\
    176  1.1  ryo 			.reg = CBUS_REG(_off),				\
    177  1.1  ryo 			.mask = __BIT(_bit)				\
    178  1.1  ryo 		},							\
    179  1.1  ryo 		.pupd = {						\
    180  1.1  ryo 			.type = MESON_PINCTRL_REGTYPE_PULL,		\
    181  1.1  ryo 			.reg = CBUS_REG(_off),				\
    182  1.1  ryo 			.mask = __BIT(_bit)				\
    183  1.1  ryo 		},							\
    184  1.1  ryo 	}
    185  1.1  ryo 
    186  1.1  ryo static const struct meson_pinctrl_gpio mesong12a_periphs_gpios[] = {
    187  1.1  ryo 	/* BOOT */
    188  1.1  ryo 	CBUS_GPIO(BOOT_0,   0, 0),
    189  1.1  ryo 	CBUS_GPIO(BOOT_1,   0, 1),
    190  1.1  ryo 	CBUS_GPIO(BOOT_2,   0, 2),
    191  1.1  ryo 	CBUS_GPIO(BOOT_3,   0, 3),
    192  1.1  ryo 	CBUS_GPIO(BOOT_4,   0, 4),
    193  1.1  ryo 	CBUS_GPIO(BOOT_5,   0, 5),
    194  1.1  ryo 	CBUS_GPIO(BOOT_6,   0, 6),
    195  1.1  ryo 	CBUS_GPIO(BOOT_7,   0, 7),
    196  1.1  ryo 	CBUS_GPIO(BOOT_8,   0, 8),
    197  1.1  ryo 	CBUS_GPIO(BOOT_9,   0, 9),
    198  1.1  ryo 	CBUS_GPIO(BOOT_10,  0, 10),
    199  1.1  ryo 	CBUS_GPIO(BOOT_11,  0, 11),
    200  1.1  ryo 	CBUS_GPIO(BOOT_12,  0, 12),
    201  1.1  ryo 	CBUS_GPIO(BOOT_13,  0, 13),
    202  1.1  ryo 	CBUS_GPIO(BOOT_14,  0, 14),
    203  1.1  ryo 	CBUS_GPIO(BOOT_15,  0, 15),
    204  1.1  ryo 
    205  1.1  ryo 	/* GPIOC */
    206  1.1  ryo 	CBUS_GPIO(GPIOC_0,  1, 0),
    207  1.1  ryo 	CBUS_GPIO(GPIOC_1,  1, 1),
    208  1.1  ryo 	CBUS_GPIO(GPIOC_2,  1, 2),
    209  1.1  ryo 	CBUS_GPIO(GPIOC_3,  1, 3),
    210  1.1  ryo 	CBUS_GPIO(GPIOC_4,  1, 4),
    211  1.1  ryo 	CBUS_GPIO(GPIOC_5,  1, 5),
    212  1.1  ryo 	CBUS_GPIO(GPIOC_6,  1, 6),
    213  1.1  ryo 	CBUS_GPIO(GPIOC_7,  1, 7),
    214  1.1  ryo 
    215  1.1  ryo 	/* GPIOX */
    216  1.1  ryo 	CBUS_GPIO(GPIOX_0,  2, 0),
    217  1.1  ryo 	CBUS_GPIO(GPIOX_1,  2, 1),
    218  1.1  ryo 	CBUS_GPIO(GPIOX_2,  2, 2),
    219  1.1  ryo 	CBUS_GPIO(GPIOX_3,  2, 3),
    220  1.1  ryo 	CBUS_GPIO(GPIOX_4,  2, 4),
    221  1.1  ryo 	CBUS_GPIO(GPIOX_5,  2, 5),
    222  1.1  ryo 	CBUS_GPIO(GPIOX_6,  2, 6),
    223  1.1  ryo 	CBUS_GPIO(GPIOX_7,  2, 7),
    224  1.1  ryo 	CBUS_GPIO(GPIOX_8,  2, 8),
    225  1.1  ryo 	CBUS_GPIO(GPIOX_9,  2, 9),
    226  1.1  ryo 	CBUS_GPIO(GPIOX_10, 2, 10),
    227  1.1  ryo 	CBUS_GPIO(GPIOX_11, 2, 11),
    228  1.1  ryo 	CBUS_GPIO(GPIOX_12, 2, 12),
    229  1.1  ryo 	CBUS_GPIO(GPIOX_13, 2, 13),
    230  1.1  ryo 	CBUS_GPIO(GPIOX_14, 2, 14),
    231  1.1  ryo 	CBUS_GPIO(GPIOX_15, 2, 15),
    232  1.1  ryo 	CBUS_GPIO(GPIOX_16, 2, 16),
    233  1.1  ryo 	CBUS_GPIO(GPIOX_17, 2, 17),
    234  1.1  ryo 	CBUS_GPIO(GPIOX_18, 2, 18),
    235  1.1  ryo 	CBUS_GPIO(GPIOX_19, 2, 19),
    236  1.1  ryo 
    237  1.1  ryo 	/* GPIOH */
    238  1.1  ryo 	CBUS_GPIO(GPIOH_0,  3, 0),
    239  1.1  ryo 	CBUS_GPIO(GPIOH_1,  3, 1),
    240  1.1  ryo 	CBUS_GPIO(GPIOH_2,  3, 2),
    241  1.1  ryo 	CBUS_GPIO(GPIOH_3,  3, 3),
    242  1.1  ryo 	CBUS_GPIO(GPIOH_4,  3, 4),
    243  1.1  ryo 	CBUS_GPIO(GPIOH_5,  3, 5),
    244  1.1  ryo 	CBUS_GPIO(GPIOH_6,  3, 6),
    245  1.1  ryo 	CBUS_GPIO(GPIOH_7,  3, 7),
    246  1.1  ryo 	CBUS_GPIO(GPIOH_8,  3, 8),
    247  1.1  ryo 
    248  1.1  ryo 	/* GPIOZ */
    249  1.1  ryo 	CBUS_GPIO(GPIOZ_0,  4, 0),
    250  1.1  ryo 	CBUS_GPIO(GPIOZ_1,  4, 1),
    251  1.1  ryo 	CBUS_GPIO(GPIOZ_2,  4, 2),
    252  1.1  ryo 	CBUS_GPIO(GPIOZ_3,  4, 3),
    253  1.1  ryo 	CBUS_GPIO(GPIOZ_4,  4, 4),
    254  1.1  ryo 	CBUS_GPIO(GPIOZ_5,  4, 5),
    255  1.1  ryo 	CBUS_GPIO(GPIOZ_6,  4, 6),
    256  1.1  ryo 	CBUS_GPIO(GPIOZ_7,  4, 7),
    257  1.1  ryo 	CBUS_GPIO(GPIOZ_8,  4, 8),
    258  1.1  ryo 	CBUS_GPIO(GPIOZ_9,  4, 9),
    259  1.1  ryo 	CBUS_GPIO(GPIOZ_10, 4, 10),
    260  1.1  ryo 	CBUS_GPIO(GPIOZ_11, 4, 11),
    261  1.1  ryo 	CBUS_GPIO(GPIOZ_12, 4, 12),
    262  1.1  ryo 	CBUS_GPIO(GPIOZ_13, 4, 13),
    263  1.1  ryo 	CBUS_GPIO(GPIOZ_14, 4, 14),
    264  1.1  ryo 	CBUS_GPIO(GPIOZ_15, 4, 15),
    265  1.1  ryo 
    266  1.1  ryo 	/* GPIOA */
    267  1.1  ryo 	CBUS_GPIO(GPIOA_0,  5, 0),
    268  1.1  ryo 	CBUS_GPIO(GPIOA_1,  5, 1),
    269  1.1  ryo 	CBUS_GPIO(GPIOA_2,  5, 2),
    270  1.1  ryo 	CBUS_GPIO(GPIOA_3,  5, 3),
    271  1.1  ryo 	CBUS_GPIO(GPIOA_4,  5, 4),
    272  1.1  ryo 	CBUS_GPIO(GPIOA_5,  5, 5),
    273  1.1  ryo 	CBUS_GPIO(GPIOA_6,  5, 6),
    274  1.1  ryo 	CBUS_GPIO(GPIOA_7,  5, 7),
    275  1.1  ryo 	CBUS_GPIO(GPIOA_8,  5, 8),
    276  1.1  ryo 	CBUS_GPIO(GPIOA_9,  5, 9),
    277  1.1  ryo 	CBUS_GPIO(GPIOA_10, 5, 10),
    278  1.1  ryo 	CBUS_GPIO(GPIOA_11, 5, 11),
    279  1.1  ryo 	CBUS_GPIO(GPIOA_12, 5, 12),
    280  1.1  ryo 	CBUS_GPIO(GPIOA_13, 5, 13),
    281  1.1  ryo 	CBUS_GPIO(GPIOA_14, 5, 14),
    282  1.1  ryo 	CBUS_GPIO(GPIOA_15, 5, 15),
    283  1.1  ryo };
    284  1.1  ryo 
    285  1.1  ryo #define	AO_GPIO(_id, _off, _bit)					\
    286  1.1  ryo 	[_id] = {							\
    287  1.1  ryo 		.id = (_id),						\
    288  1.1  ryo 		.name = __STRING(_id),					\
    289  1.1  ryo 		.oen = {						\
    290  1.1  ryo 			.type = MESON_PINCTRL_REGTYPE_GPIO,		\
    291  1.1  ryo 			.reg = CBUS_REG(_off),				\
    292  1.1  ryo 			.mask = __BIT(_bit)				\
    293  1.1  ryo 		},							\
    294  1.1  ryo 		.out = {						\
    295  1.1  ryo 			.type = MESON_PINCTRL_REGTYPE_GPIO,		\
    296  1.1  ryo 			.reg = CBUS_REG((_off) + 4),			\
    297  1.1  ryo 			.mask = __BIT(_bit)				\
    298  1.1  ryo 		},							\
    299  1.1  ryo 		.in = {							\
    300  1.1  ryo 			.type = MESON_PINCTRL_REGTYPE_GPIO,		\
    301  1.1  ryo 			.reg = CBUS_REG((_off) + 1),			\
    302  1.1  ryo 			.mask = __BIT(_bit)				\
    303  1.1  ryo 		},							\
    304  1.1  ryo 		.pupden = {						\
    305  1.1  ryo 			.type = MESON_PINCTRL_REGTYPE_GPIO,		\
    306  1.1  ryo 			.reg = CBUS_REG((_off) + 3),			\
    307  1.1  ryo 			.mask = __BIT(_bit)				\
    308  1.1  ryo 		},							\
    309  1.1  ryo 		.pupd = {						\
    310  1.1  ryo 			.type = MESON_PINCTRL_REGTYPE_GPIO,		\
    311  1.1  ryo 			.reg = CBUS_REG((_off) + 2),			\
    312  1.1  ryo 			.mask = __BIT(_bit)				\
    313  1.1  ryo 		},							\
    314  1.1  ryo 	}
    315  1.1  ryo 
    316  1.1  ryo static const struct meson_pinctrl_gpio mesong12a_aobus_gpios[] = {
    317  1.1  ryo 	/* GPIOAO */
    318  1.1  ryo 	AO_GPIO(GPIOAO_0,  0, 0),
    319  1.1  ryo 	AO_GPIO(GPIOAO_1,  0, 1),
    320  1.1  ryo 	AO_GPIO(GPIOAO_2,  0, 2),
    321  1.1  ryo 	AO_GPIO(GPIOAO_3,  0, 3),
    322  1.1  ryo 	AO_GPIO(GPIOAO_4,  0, 4),
    323  1.1  ryo 	AO_GPIO(GPIOAO_5,  0, 5),
    324  1.1  ryo 	AO_GPIO(GPIOAO_6,  0, 6),
    325  1.1  ryo 	AO_GPIO(GPIOAO_7,  0, 7),
    326  1.1  ryo 	AO_GPIO(GPIOAO_8,  0, 8),
    327  1.1  ryo 	AO_GPIO(GPIOAO_9,  0, 9),
    328  1.1  ryo 	AO_GPIO(GPIOAO_10, 0, 10),
    329  1.1  ryo 	AO_GPIO(GPIOAO_11, 0, 11),
    330  1.1  ryo 
    331  1.1  ryo 	/* GPIOE */
    332  1.1  ryo 	AO_GPIO(GPIOE_0,   0, 16),
    333  1.1  ryo 	AO_GPIO(GPIOE_1,   0, 17),
    334  1.1  ryo 	AO_GPIO(GPIOE_2,   0, 18),
    335  1.1  ryo };
    336  1.1  ryo 
    337  1.1  ryo #define GPIO_MUX_PINCTRL_GROUP(_name, _reg, _off, _group, _func)	\
    338  1.1  ryo 	{ .name = _name, .reg = CBUS_REG(_reg), .bit = (_func),		\
    339  1.1  ryo 	    .bank = { _group }, .nbank = 1,				\
    340  1.1  ryo 	    .func = (_func), .mask = (0xf << (4 * ((_off) & 7))) }
    341  1.1  ryo 
    342  1.1  ryo static const struct meson_pinctrl_group mesong12a_periphs_groups[] = {
    343  1.1  ryo 	/* BOOT (PERIPHS_PIN_MUX_0..1) */
    344  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("emmc_nand_d0",		0x0, 0, BOOT_0,   1),
    345  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("emmc_nand_d1",		0x0, 1, BOOT_1,   1),
    346  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("emmc_nand_d2",		0x0, 2, BOOT_2,   1),
    347  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("emmc_nand_d3",		0x0, 3, BOOT_3,   1),
    348  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("emmc_nand_d4",		0x0, 4, BOOT_4,   1),
    349  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("emmc_nand_d5",		0x0, 5, BOOT_5,   1),
    350  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("emmc_nand_d6",		0x0, 6, BOOT_6,   1),
    351  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("emmc_nand_d7",		0x0, 7, BOOT_7,   1),
    352  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("emmc_clk",		0x1, 0, BOOT_8,   1),
    353  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("emmc_cmd",		0x1, 2, BOOT_10,  1),
    354  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("emmc_nand_ds",		0x1, 5, BOOT_13,  1),
    355  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("nand_ce0",		0x1, 3, BOOT_11,  2),
    356  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("nand_ale",		0x1, 1, BOOT_9,   2),
    357  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("nand_cle",		0x1, 2, BOOT_10,  2),
    358  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("nand_wen_clk",		0x1, 0, BOOT_8,   2),
    359  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("nand_ren_wr",		0x1, 4, BOOT_12,  2),
    360  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("nand_rb0",		0x1, 6, BOOT_14,  2),
    361  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("nand_ce1",		0x1, 7, BOOT_15,  2),
    362  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("nor_hold",		0x0, 3, BOOT_3,   3),
    363  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("nor_d",			0x0, 4, BOOT_4,   3),
    364  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("nor_q",			0x0, 5, BOOT_5,   3),
    365  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("nor_c",			0x0, 6, BOOT_6,   3),
    366  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("nor_wp",		0x0, 7, BOOT_7,   3),
    367  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("nor_cs",		0x1, 6, BOOT_14,  3),
    368  1.1  ryo 
    369  1.1  ryo 	/* GPIOZ (PERIPHS_PIN_MUX_6..7) */
    370  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("sdcard_d0_z",		0x6, 2, GPIOZ_2,  5),
    371  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("sdcard_d1_z",		0x6, 3, GPIOZ_3,  5),
    372  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("sdcard_d2_z",		0x6, 4, GPIOZ_4,  5),
    373  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("sdcard_d3_z",		0x6, 5, GPIOZ_5,  5),
    374  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("sdcard_clk_z",		0x6, 6, GPIOZ_6,  5),
    375  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("sdcard_cmd_z",		0x6, 7, GPIOZ_7,  5),
    376  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("i2c0_sda_z0",		0x6, 0, GPIOZ_0,  4),
    377  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("i2c0_sck_z1",		0x6, 1, GPIOZ_1,  4),
    378  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("i2c0_sda_z7",		0x6, 7, GPIOZ_7,  7),
    379  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("i2c0_sck_z8",		0x7, 0, GPIOZ_8,  7),
    380  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("i2c2_sda_z",		0x7, 6, GPIOZ_14, 3),
    381  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("i2c2_sck_z",		0x7, 7, GPIOZ_15, 3),
    382  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("iso7816_clk_z",		0x6, 0, GPIOZ_0,  3),
    383  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("iso7816_data_z",	0x6, 1, GPIOZ_1,  3),
    384  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("eth_mdio",		0x6, 0, GPIOZ_0,  1),
    385  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("eth_mdc",		0x6, 1, GPIOZ_1,  1),
    386  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("eth_rgmii_rx_clk",	0x6, 2, GPIOZ_2,  1),
    387  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("eth_rx_dv",		0x6, 3, GPIOZ_3,  1),
    388  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("eth_rxd0",		0x6, 4, GPIOZ_4,  1),
    389  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("eth_rxd1",		0x6, 5, GPIOZ_5,  1),
    390  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("eth_rxd2_rgmii",	0x6, 6, GPIOZ_6,  1),
    391  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("eth_rxd3_rgmii",	0x6, 7, GPIOZ_7,  1),
    392  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("eth_rgmii_tx_clk",	0x7, 0, GPIOZ_8,  1),
    393  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("eth_txen",		0x7, 1, GPIOZ_9,  1),
    394  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("eth_txd0",		0x7, 2, GPIOZ_10, 1),
    395  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("eth_txd1",		0x7, 3, GPIOZ_11, 1),
    396  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("eth_txd2_rgmii",	0x7, 4, GPIOZ_12, 1),
    397  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("eth_txd3_rgmii",	0x7, 5, GPIOZ_13, 1),
    398  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("eth_link_led",		0x7, 6, GPIOZ_14, 1),
    399  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("eth_act_led",		0x7, 7, GPIOZ_15, 1),
    400  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("bt565_a_vs",		0x6, 0, GPIOZ_0,  2),
    401  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("bt565_a_hs",		0x6, 1, GPIOZ_1,  2),
    402  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("bt565_a_clk",		0x6, 3, GPIOZ_3,  2),
    403  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("bt565_a_din0",		0x6, 4, GPIOZ_4,  2),
    404  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("bt565_a_din1",		0x6, 5, GPIOZ_5,  2),
    405  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("bt565_a_din2",		0x6, 6, GPIOZ_6,  2),
    406  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("bt565_a_din3",		0x6, 7, GPIOZ_7,  2),
    407  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("bt565_a_din4",		0x7, 0, GPIOZ_8,  2),
    408  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("bt565_a_din5",		0x7, 1, GPIOZ_9,  2),
    409  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("bt565_a_din6",		0x7, 2, GPIOZ_10, 2),
    410  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("bt565_a_din7",		0x7, 3, GPIOZ_11, 2),
    411  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tsin_b_valid_z",	0x6, 2, GPIOZ_2,  3),
    412  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tsin_b_sop_z",		0x6, 3, GPIOZ_3,  3),
    413  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tsin_b_din0_z",		0x6, 4, GPIOZ_4,  3),
    414  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tsin_b_clk_z",		0x6, 5, GPIOZ_5,  3),
    415  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tsin_b_fail",		0x6, 6, GPIOZ_6,  3),
    416  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tsin_b_din1",		0x6, 7, GPIOZ_7,  3),
    417  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tsin_b_din2",		0x7, 0, GPIOZ_8,  3),
    418  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tsin_b_din3",		0x7, 1, GPIOZ_9,  3),
    419  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tsin_b_din4",		0x7, 2, GPIOZ_10, 3),
    420  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tsin_b_din5",		0x7, 3, GPIOZ_11, 3),
    421  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tsin_b_din6",		0x7, 4, GPIOZ_12, 3),
    422  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tsin_b_din7",		0x7, 5, GPIOZ_13, 3),
    423  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("pdm_din0_z",		0x6, 2, GPIOZ_2,  7),
    424  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("pdm_din1_z",		0x6, 3, GPIOZ_3,  7),
    425  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("pdm_din2_z",		0x6, 4, GPIOZ_4,  7),
    426  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("pdm_din3_z",		0x6, 5, GPIOZ_5,  7),
    427  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("pdm_dclk_z",		0x6, 6, GPIOZ_6,  7),
    428  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tdm_c_slv_sclk_z",	0x6, 7, GPIOZ_7,  6),
    429  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tdm_c_slv_fs_z",	0x6, 6, GPIOZ_6,  6),
    430  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tdm_c_din0_z",		0x6, 2, GPIOZ_2,  6),
    431  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tdm_c_din1_z",		0x6, 3, GPIOZ_3,  6),
    432  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tdm_c_din2_z",		0x6, 4, GPIOZ_4,  6),
    433  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tdm_c_din3_z",		0x6, 5, GPIOZ_5,  6),
    434  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tdm_c_sclk_z",		0x6, 7, GPIOZ_7,  4),
    435  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tdm_c_fs_z",		0x6, 6, GPIOZ_6,  4),
    436  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tdm_c_dout0_z",		0x6, 2, GPIOZ_2,  4),
    437  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tdm_c_dout1_z",		0x6, 3, GPIOZ_3,  4),
    438  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tdm_c_dout2_z",		0x6, 4, GPIOZ_4,  4),
    439  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tdm_c_dout3_z",		0x6, 5, GPIOZ_5,  4),
    440  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("mclk1_z",		0x7, 0, GPIOZ_8,  4),
    441  1.1  ryo 
    442  1.1  ryo 	/* GPIOX (PERIPHS_PIN_MUX_3..5) */
    443  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("sdio_d0",		0x3, 0, GPIOX_0,  1),
    444  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("sdio_d1",		0x3, 1, GPIOX_1,  1),
    445  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("sdio_d2",		0x3, 2, GPIOX_2,  1),
    446  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("sdio_d3",		0x3, 3, GPIOX_3,  1),
    447  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("sdio_clk",		0x3, 4, GPIOX_4,  1),
    448  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("sdio_cmd",		0x3, 5, GPIOX_5,  1),
    449  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("spi0_mosi_x",		0x4, 0, GPIOX_8,  4),
    450  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("spi0_miso_x",		0x4, 1, GPIOX_9,  4),
    451  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("spi0_ss0_x",		0x4, 2, GPIOX_10, 4),
    452  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("spi0_clk_x",		0x4, 3, GPIOX_11, 4),
    453  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("i2c1_sda_x",		0x4, 2, GPIOX_10, 5),
    454  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("i2c1_sck_x",		0x4, 3, GPIOX_11, 5),
    455  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("i2c2_sda_x",		0x5, 1, GPIOX_17, 1),
    456  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("i2c2_sck_x",		0x5, 2, GPIOX_18, 1),
    457  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("uart_a_tx",		0x4, 4, GPIOX_12, 1),
    458  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("uart_a_rx",		0x4, 5, GPIOX_13, 1),
    459  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("uart_a_cts",		0x4, 6, GPIOX_14, 1),
    460  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("uart_a_rts",		0x4, 7, GPIOX_15, 1),
    461  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("uart_b_tx",		0x3, 6, GPIOX_6,  2),
    462  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("uart_b_rx",		0x3, 7, GPIOX_7,  2),
    463  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("iso7816_clk_x",		0x4, 0, GPIOX_8,  6),
    464  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("iso7816_data_x",	0x4, 1, GPIOX_9,  6),
    465  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("pwm_a",			0x3, 6, GPIOX_6,  1),
    466  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("pwm_b_x7",		0x3, 7, GPIOX_7,  4),
    467  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("pwm_b_x19",		0x5, 3, GPIOX_19, 1),
    468  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("pwm_c_x5",		0x3, 5, GPIOX_5,  4),
    469  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("pwm_c_x8",		0x4, 0, GPIOX_8,  5),
    470  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("pwm_d_x3",		0x3, 3, GPIOX_3,  4),
    471  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("pwm_d_x6",		0x3, 6, GPIOX_6,  4),
    472  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("pwm_e",			0x5, 0, GPIOX_16, 1),
    473  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("pwm_f_x",		0x3, 7, GPIOX_7,  1),
    474  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tsin_a_valid",		0x3, 2, GPIOX_2,  3),
    475  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tsin_a_sop",		0x3, 1, GPIOX_1,  3),
    476  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tsin_a_din0",		0x3, 0, GPIOX_0,  3),
    477  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tsin_a_clk",		0x3, 3, GPIOX_3,  3),
    478  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tsin_b_valid_x",	0x4, 1, GPIOX_9,  3),
    479  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tsin_b_sop_x",		0x4, 0, GPIOX_8,  3),
    480  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tsin_b_din0_x",		0x4, 2, GPIOX_10, 3),
    481  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tsin_b_clk_x",		0x4, 3, GPIOX_11, 3),
    482  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("pdm_din0_x",		0x3, 0, GPIOX_0,  2),
    483  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("pdm_din1_x",		0x3, 1, GPIOX_1,  2),
    484  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("pdm_din2_x",		0x3, 2, GPIOX_2,  2),
    485  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("pdm_din3_x",		0x3, 3, GPIOX_3,  2),
    486  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("pdm_dclk_x",		0x3, 4, GPIOX_4,  2),
    487  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tdm_a_slv_sclk",	0x4, 3, GPIOX_11, 2),
    488  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tdm_a_slv_fs",		0x4, 2, GPIOX_10, 2),
    489  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tdm_a_din0",		0x4, 1, GPIOX_9,  2),
    490  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tdm_a_din1",		0x4, 0, GPIOX_8,  2),
    491  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tdm_a_sclk",		0x4, 3, GPIOX_11, 1),
    492  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tdm_a_fs",		0x4, 2, GPIOX_10, 1),
    493  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tdm_a_dout0",		0x4, 1, GPIOX_9,  1),
    494  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tdm_a_dout1",		0x4, 0, GPIOX_8,  1),
    495  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("mclk1_x",		0x3, 5, GPIOX_5,  2),
    496  1.1  ryo 
    497  1.1  ryo 	/* GPIOC (PERIPHS_PIN_MUX_9) */
    498  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("sdcard_d0_c",		0x9, 0, GPIOC_0,  1),
    499  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("sdcard_d1_c",		0x9, 1, GPIOC_1,  1),
    500  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("sdcard_d2_c",		0x9, 2, GPIOC_2,  1),
    501  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("sdcard_d3_c",		0x9, 3, GPIOC_3,  1),
    502  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("sdcard_clk_c",		0x9, 4, GPIOC_4,  1),
    503  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("sdcard_cmd_c",		0x9, 5, GPIOC_5,  1),
    504  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("spi0_mosi_c",		0x9, 0, GPIOC_0,  5),
    505  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("spi0_miso_c",		0x9, 1, GPIOC_1,  5),
    506  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("spi0_ss0_c",		0x9, 2, GPIOC_2,  5),
    507  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("spi0_clk_c",		0x9, 3, GPIOC_3,  5),
    508  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("i2c0_sda_c",		0x9, 5, GPIOC_5,  3),
    509  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("i2c0_sck_c",		0x9, 6, GPIOC_6,  3),
    510  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("uart_ao_a_rx_c",	0x9, 2, GPIOC_2,  2),
    511  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("uart_ao_a_tx_c",	0x9, 3, GPIOC_3,  2),
    512  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("iso7816_clk_c",		0x9, 5, GPIOC_5,  5),
    513  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("iso7816_data_c",	0x9, 6, GPIOC_6,  5),
    514  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("pwm_c_c",		0x9, 4, GPIOC_4,  5),
    515  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("jtag_b_tdo",		0x9, 0, GPIOC_0,  2),
    516  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("jtag_b_tdi",		0x9, 1, GPIOC_1,  2),
    517  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("jtag_b_clk",		0x9, 4, GPIOC_4,  2),
    518  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("jtag_b_tms",		0x9, 5, GPIOC_5,  2),
    519  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("pdm_din0_c",		0x9, 0, GPIOC_0,  4),
    520  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("pdm_din1_c",		0x9, 1, GPIOC_1,  4),
    521  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("pdm_din2_c",		0x9, 2, GPIOC_2,  4),
    522  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("pdm_din3_c",		0x9, 3, GPIOC_3,  4),
    523  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("pdm_dclk_c",		0x9, 4, GPIOC_4,  4),
    524  1.1  ryo 
    525  1.1  ryo 	/* GPIOH (PERIPHS_PIN_MUX_B..C) */
    526  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("spi1_mosi",		0xb, 4, GPIOH_4,  3),
    527  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("spi1_miso",		0xb, 5, GPIOH_5,  3),
    528  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("spi1_ss0",		0xb, 6, GPIOH_6,  3),
    529  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("spi1_clk",		0xb, 7, GPIOH_7,  3),
    530  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("i2c1_sda_h2",		0xb, 2, GPIOH_2,  2),
    531  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("i2c1_sck_h3",		0xb, 3, GPIOH_3,  2),
    532  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("i2c1_sda_h6",		0xb, 6, GPIOH_6,  4),
    533  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("i2c1_sck_h7",		0xb, 7, GPIOH_7,  4),
    534  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("i2c3_sda_h",		0xb, 0, GPIOH_0,  2),
    535  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("i2c3_sck_h",		0xb, 1, GPIOH_1,  2),
    536  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("uart_c_tx",		0xb, 7, GPIOH_7,  2),
    537  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("uart_c_rx",		0xb, 6, GPIOH_6,  2),
    538  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("uart_c_cts",		0xb, 5, GPIOH_5,  2),
    539  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("uart_c_rts",		0xb, 4, GPIOH_4,  2),
    540  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("iso7816_clk_h",		0xb, 6, GPIOH_6,  1),
    541  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("iso7816_data_h",	0xb, 7, GPIOH_7,  1),
    542  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("pwm_f_h",		0xb, 5, GPIOH_5,  4),
    543  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("cec_ao_a_h",		0xb, 3, GPIOH_3,  4),
    544  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("cec_ao_b_h",		0xb, 3, GPIOH_3,  5),
    545  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("hdmitx_sda",		0xb, 0, GPIOH_0,  1),
    546  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("hdmitx_sck",		0xb, 1, GPIOH_1,  1),
    547  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("hdmitx_hpd_in",		0xb, 2, GPIOH_2,  1),
    548  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("spdif_out_h",		0xb, 4, GPIOH_4,  1),
    549  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("spdif_in_h",		0xb, 5, GPIOH_5,  1),
    550  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tdm_b_din3_h",		0xb, 5, GPIOH_5,  6),
    551  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tdm_b_dout3_h",		0xb, 5, GPIOH_5,  5),
    552  1.1  ryo 
    553  1.1  ryo 	/* GPIOA (PERIPHS_PIN_MUX_D..E) */
    554  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("i2c3_sda_a",		0xe, 6, GPIOA_14, 2),
    555  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("i2c3_sck_a",		0xe, 7, GPIOA_15, 2),
    556  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("pdm_din0_a",		0xe, 0, GPIOA_8,  1),
    557  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("pdm_din1_a",		0xe, 1, GPIOA_9,  1),
    558  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("pdm_din2_a",		0xd, 6, GPIOA_6,  1),
    559  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("pdm_din3_a",		0xd, 5, GPIOA_5,  1),
    560  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("pdm_dclk_a",		0xd, 7, GPIOA_7,  1),
    561  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("spdif_in_a10",		0xe, 2, GPIOA_10, 1),
    562  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("spdif_in_a12",		0xe, 4, GPIOA_12, 1),
    563  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("spdif_out_a11",		0xe, 3, GPIOA_11, 1),
    564  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("spdif_out_a13",		0xe, 5, GPIOA_13, 1),
    565  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tdm_b_slv_sclk",	0xd, 1, GPIOA_1,  2),
    566  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tdm_b_slv_fs",		0xd, 2, GPIOA_2,  2),
    567  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tdm_b_din0",		0xd, 3, GPIOA_3,  2),
    568  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tdm_b_din1",		0xd, 4, GPIOA_4,  2),
    569  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tdm_b_din2",		0xd, 5, GPIOA_5,  2),
    570  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tdm_b_din3_a",		0xd, 6, GPIOA_6,  2),
    571  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tdm_b_sclk",		0xd, 1, GPIOA_1,  1),
    572  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tdm_b_fs",		0xd, 2, GPIOA_2,  1),
    573  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tdm_b_dout0",		0xd, 3, GPIOA_3,  1),
    574  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tdm_b_dout1",		0xd, 4, GPIOA_4,  1),
    575  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tdm_b_dout2",		0xd, 5, GPIOA_5,  3),
    576  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tdm_b_dout3_a",		0xd, 6, GPIOA_6,  3),
    577  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tdm_c_slv_sclk_a",	0xe, 4, GPIOA_12, 3),
    578  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tdm_c_slv_fs_a",	0xe, 5, GPIOA_13, 3),
    579  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tdm_c_din0_a",		0xe, 2, GPIOA_10, 3),
    580  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tdm_c_din1_a",		0xe, 1, GPIOA_9,  3),
    581  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tdm_c_din2_a",		0xe, 0, GPIOA_8,  3),
    582  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tdm_c_din3_a",		0xd, 7, GPIOA_7,  3),
    583  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tdm_c_sclk_a",		0xe, 4, GPIOA_12, 2),
    584  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tdm_c_fs_a",		0xe, 5, GPIOA_13, 2),
    585  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tdm_c_dout0_a",		0xe, 2, GPIOA_10, 2),
    586  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tdm_c_dout1_a",		0xe, 1, GPIOA_9,  2),
    587  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tdm_c_dout2_a",		0xe, 0, GPIOA_8,  2),
    588  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("tdm_c_dout3_a",		0xd, 7, GPIOA_7,  2),
    589  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("mclk0_a",		0xd, 0, GPIOA_0,  1),
    590  1.1  ryo 	GPIO_MUX_PINCTRL_GROUP("mclk1_a",		0xe, 3, GPIOA_11, 2),
    591  1.1  ryo };
    592  1.1  ryo 
    593  1.1  ryo #define AOBUS_MUX_PINCTRL_GROUP(_name, _bit, _group, _func)		\
    594  1.1  ryo 	{ .name = _name, .reg = CBUS_REG((_bit) / 8), .bit = (_func),	\
    595  1.1  ryo 	    .bank = { _group }, .nbank = 1,				\
    596  1.1  ryo 	    .func = (_func), .mask = (0xf << (4 * ((_bit) & 7))) }
    597  1.1  ryo 
    598  1.1  ryo static const struct meson_pinctrl_group mesong12a_aobus_groups[] = {
    599  1.1  ryo 	/* GPIOAO and GPIOE (AO_RTI_PINMUX_REG0..1) */
    600  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("uart_ao_a_rx",		 1, GPIOAO_1,  1),
    601  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("uart_ao_a_tx",		 0, GPIOAO_0,  1),
    602  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("uart_ao_a_cts",	16, GPIOE_0,   1),
    603  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("uart_ao_a_rts",	17, GPIOE_1,   1),
    604  1.1  ryo 
    605  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("uart_ao_b_tx_2",	 2, GPIOAO_2,  2),
    606  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("uart_ao_b_rx_3",	 3, GPIOAO_3,  2),
    607  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("uart_ao_b_tx_8",	 8, GPIOAO_8,  3),
    608  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("uart_ao_b_rx_9",	 9, GPIOAO_9,  3),
    609  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("uart_ao_b_cts",	12, GPIOE_0,   2),
    610  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("uart_ao_b_rts",	13, GPIOE_1,   2),
    611  1.1  ryo 
    612  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("i2c_ao_sck",		 2, GPIOAO_2,  1),
    613  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("i2c_ao_sda",		 3, GPIOAO_3,  1),
    614  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("i2c_ao_sck_e",		12, GPIOE_0,   4),
    615  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("i2c_ao_sda_e",		13, GPIOE_1,   4),
    616  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("i2c_ao_slave_sck",	 2, GPIOAO_2,  3),
    617  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("i2c_ao_slave_sda",	 3, GPIOAO_3,  3),
    618  1.1  ryo 
    619  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("remote_ao_input",	 5, GPIOAO_5,  1),
    620  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("remote_ao_out",	 4, GPIOAO_4,  1),
    621  1.1  ryo 
    622  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("pwm_a_e",		14, GPIOE_2,   3),
    623  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("pwm_ao_a",		11, GPIOAO_11, 3),
    624  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("pwm_ao_a_hiz",		11, GPIOAO_11, 2),
    625  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("pwm_ao_b",		12, GPIOE_0,   3),
    626  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("pwm_ao_c_4",		 4, GPIOAO_4,  3),
    627  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("pwm_ao_c_hiz",		 4, GPIOAO_4,  4),
    628  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("pwm_ao_c_6",		 6, GPIOAO_6,  3),
    629  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("pwm_ao_d_5",		 5, GPIOAO_5,  3),
    630  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("pwm_ao_d_10",		10, GPIOAO_10, 3),
    631  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("pwm_ao_d_e",		13, GPIOE_1,   3),
    632  1.1  ryo 
    633  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("jtag_a_tdi",		 8, GPIOAO_8,  1),
    634  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("jtag_a_tdo",		 9, GPIOAO_9,  1),
    635  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("jtag_a_clk",		 6, GPIOAO_6,  1),
    636  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("jtag_a_tms",		 7, GPIOAO_7,  1),
    637  1.1  ryo 
    638  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("cec_ao_a",		10, GPIOAO_10, 1),
    639  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("cec_ao_b",		10, GPIOAO_10, 2),
    640  1.1  ryo 
    641  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("tsin_ao_asop",		 6, GPIOAO_6,  4),
    642  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("tsin_ao_adin0",	 7, GPIOAO_7,  4),
    643  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("tsin_ao_aclk",		 8, GPIOAO_8,  4),
    644  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("tsin_ao_a_valid",	 9, GPIOAO_9,  4),
    645  1.1  ryo 
    646  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("spdif_ao_out",		10, GPIOAO_10, 4),
    647  1.1  ryo 
    648  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("tdm_ao_b_dout0",	 4, GPIOAO_4,  5),
    649  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("tdm_ao_b_dout1",	10, GPIOAO_10, 5),
    650  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("tdm_ao_b_dout2",	 6, GPIOAO_6,  5),
    651  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("tdm_ao_b_fs",		 7, GPIOAO_7,  5),
    652  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("tdm_ao_b_sclk",	 8, GPIOAO_8,  5),
    653  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("tdm_ao_b_din0",	 4, GPIOAO_4,  6),
    654  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("tdm_ao_b_din1",	10, GPIOAO_10, 6),
    655  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("tdm_ao_b_din2",	 6, GPIOAO_6,  6),
    656  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("tdm_ao_b_slv_fs",	 7, GPIOAO_7,  6),
    657  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("tdm_ao_b_slv_sclk",	 8, GPIOAO_8,  6),
    658  1.1  ryo 
    659  1.1  ryo 	AOBUS_MUX_PINCTRL_GROUP("mclk0_ao",		 9, GPIOAO_9,  5),
    660  1.1  ryo };
    661  1.1  ryo 
    662  1.1  ryo const struct meson_pinctrl_config mesong12a_periphs_pinctrl_config = {
    663  1.1  ryo 	.name = "Meson G12A periphs GPIO",
    664  1.1  ryo 	.groups = mesong12a_periphs_groups,
    665  1.1  ryo 	.ngroups = __arraycount(mesong12a_periphs_groups),
    666  1.1  ryo 	.gpios = mesong12a_periphs_gpios,
    667  1.1  ryo 	.ngpios = __arraycount(mesong12a_periphs_gpios),
    668  1.1  ryo };
    669  1.1  ryo 
    670  1.1  ryo const struct meson_pinctrl_config mesong12a_aobus_pinctrl_config = {
    671  1.1  ryo 	.name = "Meson G12A AO GPIO",
    672  1.1  ryo 	.groups = mesong12a_aobus_groups,
    673  1.1  ryo 	.ngroups = __arraycount(mesong12a_aobus_groups),
    674  1.1  ryo 	.gpios = mesong12a_aobus_gpios,
    675  1.1  ryo 	.ngpios = __arraycount(mesong12a_aobus_gpios),
    676  1.1  ryo };
    677