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