linux/drivers/pinctrl/meson/pinctrl-meson-gxbb.c
<<
>>
Prefs
   1/*
   2 * Pin controller and GPIO driver for Amlogic Meson GXBB.
   3 *
   4 * Copyright (C) 2016 Endless Mobile, Inc.
   5 * Author: Carlo Caione <carlo@endlessm.com>
   6 *
   7 * This program is free software; you can redistribute it and/or
   8 * modify it under the terms of the GNU General Public License
   9 * version 2 as published by the Free Software Foundation.
  10 *
  11 * You should have received a copy of the GNU General Public License
  12 * along with this program. If not, see <http://www.gnu.org/licenses/>.
  13 */
  14
  15#include <dt-bindings/gpio/meson-gxbb-gpio.h>
  16#include "pinctrl-meson.h"
  17
  18#define EE_OFF  14
  19
  20static const struct pinctrl_pin_desc meson_gxbb_periphs_pins[] = {
  21        MESON_PIN(GPIOZ_0, EE_OFF),
  22        MESON_PIN(GPIOZ_1, EE_OFF),
  23        MESON_PIN(GPIOZ_2, EE_OFF),
  24        MESON_PIN(GPIOZ_3, EE_OFF),
  25        MESON_PIN(GPIOZ_4, EE_OFF),
  26        MESON_PIN(GPIOZ_5, EE_OFF),
  27        MESON_PIN(GPIOZ_6, EE_OFF),
  28        MESON_PIN(GPIOZ_7, EE_OFF),
  29        MESON_PIN(GPIOZ_8, EE_OFF),
  30        MESON_PIN(GPIOZ_9, EE_OFF),
  31        MESON_PIN(GPIOZ_10, EE_OFF),
  32        MESON_PIN(GPIOZ_11, EE_OFF),
  33        MESON_PIN(GPIOZ_12, EE_OFF),
  34        MESON_PIN(GPIOZ_13, EE_OFF),
  35        MESON_PIN(GPIOZ_14, EE_OFF),
  36        MESON_PIN(GPIOZ_15, EE_OFF),
  37
  38        MESON_PIN(GPIOH_0, EE_OFF),
  39        MESON_PIN(GPIOH_1, EE_OFF),
  40        MESON_PIN(GPIOH_2, EE_OFF),
  41        MESON_PIN(GPIOH_3, EE_OFF),
  42
  43        MESON_PIN(BOOT_0, EE_OFF),
  44        MESON_PIN(BOOT_1, EE_OFF),
  45        MESON_PIN(BOOT_2, EE_OFF),
  46        MESON_PIN(BOOT_3, EE_OFF),
  47        MESON_PIN(BOOT_4, EE_OFF),
  48        MESON_PIN(BOOT_5, EE_OFF),
  49        MESON_PIN(BOOT_6, EE_OFF),
  50        MESON_PIN(BOOT_7, EE_OFF),
  51        MESON_PIN(BOOT_8, EE_OFF),
  52        MESON_PIN(BOOT_9, EE_OFF),
  53        MESON_PIN(BOOT_10, EE_OFF),
  54        MESON_PIN(BOOT_11, EE_OFF),
  55        MESON_PIN(BOOT_12, EE_OFF),
  56        MESON_PIN(BOOT_13, EE_OFF),
  57        MESON_PIN(BOOT_14, EE_OFF),
  58        MESON_PIN(BOOT_15, EE_OFF),
  59        MESON_PIN(BOOT_16, EE_OFF),
  60        MESON_PIN(BOOT_17, EE_OFF),
  61
  62        MESON_PIN(CARD_0, EE_OFF),
  63        MESON_PIN(CARD_1, EE_OFF),
  64        MESON_PIN(CARD_2, EE_OFF),
  65        MESON_PIN(CARD_3, EE_OFF),
  66        MESON_PIN(CARD_4, EE_OFF),
  67        MESON_PIN(CARD_5, EE_OFF),
  68        MESON_PIN(CARD_6, EE_OFF),
  69
  70        MESON_PIN(GPIODV_0, EE_OFF),
  71        MESON_PIN(GPIODV_1, EE_OFF),
  72        MESON_PIN(GPIODV_2, EE_OFF),
  73        MESON_PIN(GPIODV_3, EE_OFF),
  74        MESON_PIN(GPIODV_4, EE_OFF),
  75        MESON_PIN(GPIODV_5, EE_OFF),
  76        MESON_PIN(GPIODV_6, EE_OFF),
  77        MESON_PIN(GPIODV_7, EE_OFF),
  78        MESON_PIN(GPIODV_8, EE_OFF),
  79        MESON_PIN(GPIODV_9, EE_OFF),
  80        MESON_PIN(GPIODV_10, EE_OFF),
  81        MESON_PIN(GPIODV_11, EE_OFF),
  82        MESON_PIN(GPIODV_12, EE_OFF),
  83        MESON_PIN(GPIODV_13, EE_OFF),
  84        MESON_PIN(GPIODV_14, EE_OFF),
  85        MESON_PIN(GPIODV_15, EE_OFF),
  86        MESON_PIN(GPIODV_16, EE_OFF),
  87        MESON_PIN(GPIODV_17, EE_OFF),
  88        MESON_PIN(GPIODV_19, EE_OFF),
  89        MESON_PIN(GPIODV_20, EE_OFF),
  90        MESON_PIN(GPIODV_21, EE_OFF),
  91        MESON_PIN(GPIODV_22, EE_OFF),
  92        MESON_PIN(GPIODV_23, EE_OFF),
  93        MESON_PIN(GPIODV_24, EE_OFF),
  94        MESON_PIN(GPIODV_25, EE_OFF),
  95        MESON_PIN(GPIODV_26, EE_OFF),
  96        MESON_PIN(GPIODV_27, EE_OFF),
  97        MESON_PIN(GPIODV_28, EE_OFF),
  98        MESON_PIN(GPIODV_29, EE_OFF),
  99
 100        MESON_PIN(GPIOY_0, EE_OFF),
 101        MESON_PIN(GPIOY_1, EE_OFF),
 102        MESON_PIN(GPIOY_2, EE_OFF),
 103        MESON_PIN(GPIOY_3, EE_OFF),
 104        MESON_PIN(GPIOY_4, EE_OFF),
 105        MESON_PIN(GPIOY_5, EE_OFF),
 106        MESON_PIN(GPIOY_6, EE_OFF),
 107        MESON_PIN(GPIOY_7, EE_OFF),
 108        MESON_PIN(GPIOY_8, EE_OFF),
 109        MESON_PIN(GPIOY_9, EE_OFF),
 110        MESON_PIN(GPIOY_10, EE_OFF),
 111        MESON_PIN(GPIOY_11, EE_OFF),
 112        MESON_PIN(GPIOY_12, EE_OFF),
 113        MESON_PIN(GPIOY_13, EE_OFF),
 114        MESON_PIN(GPIOY_14, EE_OFF),
 115        MESON_PIN(GPIOY_15, EE_OFF),
 116        MESON_PIN(GPIOY_16, EE_OFF),
 117
 118        MESON_PIN(GPIOX_0, EE_OFF),
 119        MESON_PIN(GPIOX_1, EE_OFF),
 120        MESON_PIN(GPIOX_2, EE_OFF),
 121        MESON_PIN(GPIOX_3, EE_OFF),
 122        MESON_PIN(GPIOX_4, EE_OFF),
 123        MESON_PIN(GPIOX_5, EE_OFF),
 124        MESON_PIN(GPIOX_6, EE_OFF),
 125        MESON_PIN(GPIOX_7, EE_OFF),
 126        MESON_PIN(GPIOX_8, EE_OFF),
 127        MESON_PIN(GPIOX_9, EE_OFF),
 128        MESON_PIN(GPIOX_10, EE_OFF),
 129        MESON_PIN(GPIOX_11, EE_OFF),
 130        MESON_PIN(GPIOX_12, EE_OFF),
 131        MESON_PIN(GPIOX_13, EE_OFF),
 132        MESON_PIN(GPIOX_14, EE_OFF),
 133        MESON_PIN(GPIOX_15, EE_OFF),
 134        MESON_PIN(GPIOX_16, EE_OFF),
 135        MESON_PIN(GPIOX_17, EE_OFF),
 136        MESON_PIN(GPIOX_18, EE_OFF),
 137        MESON_PIN(GPIOX_19, EE_OFF),
 138        MESON_PIN(GPIOX_20, EE_OFF),
 139        MESON_PIN(GPIOX_21, EE_OFF),
 140        MESON_PIN(GPIOX_22, EE_OFF),
 141
 142        MESON_PIN(GPIOCLK_0, EE_OFF),
 143        MESON_PIN(GPIOCLK_1, EE_OFF),
 144        MESON_PIN(GPIOCLK_2, EE_OFF),
 145        MESON_PIN(GPIOCLK_3, EE_OFF),
 146
 147        MESON_PIN(GPIO_TEST_N, EE_OFF),
 148};
 149
 150static const unsigned int emmc_nand_d07_pins[] = {
 151        PIN(BOOT_0, EE_OFF), PIN(BOOT_1, EE_OFF), PIN(BOOT_2, EE_OFF),
 152        PIN(BOOT_3, EE_OFF), PIN(BOOT_4, EE_OFF), PIN(BOOT_5, EE_OFF),
 153        PIN(BOOT_6, EE_OFF), PIN(BOOT_7, EE_OFF),
 154};
 155static const unsigned int emmc_clk_pins[] = { PIN(BOOT_8, EE_OFF) };
 156static const unsigned int emmc_cmd_pins[] = { PIN(BOOT_10, EE_OFF) };
 157static const unsigned int emmc_ds_pins[] = { PIN(BOOT_15, EE_OFF) };
 158
 159static const unsigned int nor_d_pins[]          = { PIN(BOOT_11, EE_OFF) };
 160static const unsigned int nor_q_pins[]          = { PIN(BOOT_12, EE_OFF) };
 161static const unsigned int nor_c_pins[]          = { PIN(BOOT_13, EE_OFF) };
 162static const unsigned int nor_cs_pins[]         = { PIN(BOOT_15, EE_OFF) };
 163
 164static const unsigned int sdcard_d0_pins[] = { PIN(CARD_1, EE_OFF) };
 165static const unsigned int sdcard_d1_pins[] = { PIN(CARD_0, EE_OFF) };
 166static const unsigned int sdcard_d2_pins[] = { PIN(CARD_5, EE_OFF) };
 167static const unsigned int sdcard_d3_pins[] = { PIN(CARD_4, EE_OFF) };
 168static const unsigned int sdcard_cmd_pins[] = { PIN(CARD_3, EE_OFF) };
 169static const unsigned int sdcard_clk_pins[] = { PIN(CARD_2, EE_OFF) };
 170
 171static const unsigned int sdio_d0_pins[] = { PIN(GPIOX_0, EE_OFF) };
 172static const unsigned int sdio_d1_pins[] = { PIN(GPIOX_1, EE_OFF) };
 173static const unsigned int sdio_d2_pins[] = { PIN(GPIOX_2, EE_OFF) };
 174static const unsigned int sdio_d3_pins[] = { PIN(GPIOX_3, EE_OFF) };
 175static const unsigned int sdio_cmd_pins[] = { PIN(GPIOX_4, EE_OFF) };
 176static const unsigned int sdio_clk_pins[] = { PIN(GPIOX_5, EE_OFF) };
 177static const unsigned int sdio_irq_pins[] = { PIN(GPIOX_7, EE_OFF) };
 178
 179static const unsigned int nand_ce0_pins[]       = { PIN(BOOT_8, EE_OFF) };
 180static const unsigned int nand_ce1_pins[]       = { PIN(BOOT_9, EE_OFF) };
 181static const unsigned int nand_rb0_pins[]       = { PIN(BOOT_10, EE_OFF) };
 182static const unsigned int nand_ale_pins[]       = { PIN(BOOT_11, EE_OFF) };
 183static const unsigned int nand_cle_pins[]       = { PIN(BOOT_12, EE_OFF) };
 184static const unsigned int nand_wen_clk_pins[]   = { PIN(BOOT_13, EE_OFF) };
 185static const unsigned int nand_ren_wr_pins[]    = { PIN(BOOT_14, EE_OFF) };
 186static const unsigned int nand_dqs_pins[]       = { PIN(BOOT_15, EE_OFF) };
 187
 188static const unsigned int uart_tx_a_pins[]      = { PIN(GPIOX_12, EE_OFF) };
 189static const unsigned int uart_rx_a_pins[]      = { PIN(GPIOX_13, EE_OFF) };
 190static const unsigned int uart_cts_a_pins[]     = { PIN(GPIOX_14, EE_OFF) };
 191static const unsigned int uart_rts_a_pins[]     = { PIN(GPIOX_15, EE_OFF) };
 192
 193static const unsigned int uart_tx_b_pins[]      = { PIN(GPIODV_24, EE_OFF) };
 194static const unsigned int uart_rx_b_pins[]      = { PIN(GPIODV_25, EE_OFF) };
 195static const unsigned int uart_cts_b_pins[]     = { PIN(GPIODV_26, EE_OFF) };
 196static const unsigned int uart_rts_b_pins[]     = { PIN(GPIODV_27, EE_OFF) };
 197
 198static const unsigned int uart_tx_c_pins[]      = { PIN(GPIOY_13, EE_OFF) };
 199static const unsigned int uart_rx_c_pins[]      = { PIN(GPIOY_14, EE_OFF) };
 200static const unsigned int uart_cts_c_pins[]     = { PIN(GPIOX_11, EE_OFF) };
 201static const unsigned int uart_rts_c_pins[]     = { PIN(GPIOX_12, EE_OFF) };
 202
 203static const unsigned int i2c_sck_a_pins[]      = { PIN(GPIODV_25, EE_OFF) };
 204static const unsigned int i2c_sda_a_pins[]      = { PIN(GPIODV_24, EE_OFF) };
 205
 206static const unsigned int i2c_sck_b_pins[]      = { PIN(GPIODV_27, EE_OFF) };
 207static const unsigned int i2c_sda_b_pins[]      = { PIN(GPIODV_26, EE_OFF) };
 208
 209static const unsigned int i2c_sck_c_pins[]      = { PIN(GPIODV_29, EE_OFF) };
 210static const unsigned int i2c_sda_c_pins[]      = { PIN(GPIODV_28, EE_OFF) };
 211
 212static const unsigned int eth_mdio_pins[]       = { PIN(GPIOZ_0, EE_OFF) };
 213static const unsigned int eth_mdc_pins[]        = { PIN(GPIOZ_1, EE_OFF) };
 214static const unsigned int eth_clk_rx_clk_pins[] = { PIN(GPIOZ_2, EE_OFF) };
 215static const unsigned int eth_rx_dv_pins[]      = { PIN(GPIOZ_3, EE_OFF) };
 216static const unsigned int eth_rxd0_pins[]       = { PIN(GPIOZ_4, EE_OFF) };
 217static const unsigned int eth_rxd1_pins[]       = { PIN(GPIOZ_5, EE_OFF) };
 218static const unsigned int eth_rxd2_pins[]       = { PIN(GPIOZ_6, EE_OFF) };
 219static const unsigned int eth_rxd3_pins[]       = { PIN(GPIOZ_7, EE_OFF) };
 220static const unsigned int eth_rgmii_tx_clk_pins[] = { PIN(GPIOZ_8, EE_OFF) };
 221static const unsigned int eth_tx_en_pins[]      = { PIN(GPIOZ_9, EE_OFF) };
 222static const unsigned int eth_txd0_pins[]       = { PIN(GPIOZ_10, EE_OFF) };
 223static const unsigned int eth_txd1_pins[]       = { PIN(GPIOZ_11, EE_OFF) };
 224static const unsigned int eth_txd2_pins[]       = { PIN(GPIOZ_12, EE_OFF) };
 225static const unsigned int eth_txd3_pins[]       = { PIN(GPIOZ_13, EE_OFF) };
 226
 227static const unsigned int pwm_a_x_pins[]        = { PIN(GPIOX_6, EE_OFF) };
 228static const unsigned int pwm_a_y_pins[]        = { PIN(GPIOY_16, EE_OFF) };
 229static const unsigned int pwm_b_pins[]          = { PIN(GPIODV_29, EE_OFF) };
 230static const unsigned int pwm_d_pins[]          = { PIN(GPIODV_28, EE_OFF) };
 231static const unsigned int pwm_e_pins[]          = { PIN(GPIOX_19, EE_OFF) };
 232static const unsigned int pwm_f_x_pins[]        = { PIN(GPIOX_7, EE_OFF) };
 233static const unsigned int pwm_f_y_pins[]        = { PIN(GPIOY_15, EE_OFF) };
 234
 235static const unsigned int hdmi_hpd_pins[]       = { PIN(GPIOH_0, EE_OFF) };
 236static const unsigned int hdmi_sda_pins[]       = { PIN(GPIOH_1, EE_OFF) };
 237static const unsigned int hdmi_scl_pins[]       = { PIN(GPIOH_2, EE_OFF) };
 238
 239static const unsigned int i2s_out_ch23_y_pins[] = { PIN(GPIOY_8, EE_OFF) };
 240static const unsigned int i2s_out_ch45_y_pins[] = { PIN(GPIOY_9, EE_OFF) };
 241static const unsigned int i2s_out_ch67_y_pins[] = { PIN(GPIOY_10, EE_OFF) };
 242
 243static const unsigned int spdif_out_y_pins[]    = { PIN(GPIOY_12, EE_OFF) };
 244
 245static const struct pinctrl_pin_desc meson_gxbb_aobus_pins[] = {
 246        MESON_PIN(GPIOAO_0, 0),
 247        MESON_PIN(GPIOAO_1, 0),
 248        MESON_PIN(GPIOAO_2, 0),
 249        MESON_PIN(GPIOAO_3, 0),
 250        MESON_PIN(GPIOAO_4, 0),
 251        MESON_PIN(GPIOAO_5, 0),
 252        MESON_PIN(GPIOAO_6, 0),
 253        MESON_PIN(GPIOAO_7, 0),
 254        MESON_PIN(GPIOAO_8, 0),
 255        MESON_PIN(GPIOAO_9, 0),
 256        MESON_PIN(GPIOAO_10, 0),
 257        MESON_PIN(GPIOAO_11, 0),
 258        MESON_PIN(GPIOAO_12, 0),
 259        MESON_PIN(GPIOAO_13, 0),
 260};
 261
 262static const unsigned int uart_tx_ao_a_pins[]   = { PIN(GPIOAO_0, 0) };
 263static const unsigned int uart_rx_ao_a_pins[]   = { PIN(GPIOAO_1, 0) };
 264static const unsigned int uart_cts_ao_a_pins[]  = { PIN(GPIOAO_2, 0) };
 265static const unsigned int uart_rts_ao_a_pins[]  = { PIN(GPIOAO_3, 0) };
 266static const unsigned int uart_tx_ao_b_pins[]   = { PIN(GPIOAO_4, 0) };
 267static const unsigned int uart_rx_ao_b_pins[]   = { PIN(GPIOAO_5, 0) };
 268static const unsigned int uart_cts_ao_b_pins[]  = { PIN(GPIOAO_2, 0) };
 269static const unsigned int uart_rts_ao_b_pins[]  = { PIN(GPIOAO_3, 0) };
 270
 271static const unsigned int i2c_sck_ao_pins[] = {PIN(GPIOAO_4, 0) };
 272static const unsigned int i2c_sda_ao_pins[] = {PIN(GPIOAO_5, 0) };
 273static const unsigned int i2c_slave_sck_ao_pins[] = {PIN(GPIOAO_4, 0) };
 274static const unsigned int i2c_slave_sda_ao_pins[] = {PIN(GPIOAO_5, 0) };
 275
 276static const unsigned int remote_input_ao_pins[] = {PIN(GPIOAO_7, 0) };
 277
 278static const unsigned int pwm_ao_a_3_pins[]     = { PIN(GPIOAO_3, 0) };
 279static const unsigned int pwm_ao_a_6_pins[]     = { PIN(GPIOAO_6, 0) };
 280static const unsigned int pwm_ao_a_12_pins[]    = { PIN(GPIOAO_12, 0) };
 281static const unsigned int pwm_ao_b_pins[]       = { PIN(GPIOAO_13, 0) };
 282
 283static const unsigned int i2s_am_clk_pins[]      = { PIN(GPIOAO_8, 0) };
 284static const unsigned int i2s_out_ao_clk_pins[]  = { PIN(GPIOAO_9, 0) };
 285static const unsigned int i2s_out_lr_clk_pins[]  = { PIN(GPIOAO_10, 0) };
 286static const unsigned int i2s_out_ch01_ao_pins[] = { PIN(GPIOAO_11, 0) };
 287static const unsigned int i2s_out_ch23_ao_pins[] = { PIN(GPIOAO_12, 0) };
 288static const unsigned int i2s_out_ch45_ao_pins[] = { PIN(GPIOAO_13, 0) };
 289
 290static const unsigned int spdif_out_ao_6_pins[] = { PIN(GPIOAO_6, 0) };
 291static const unsigned int spdif_out_ao_13_pins[] = { PIN(GPIOAO_13, 0) };
 292
 293static struct meson_pmx_group meson_gxbb_periphs_groups[] = {
 294        GPIO_GROUP(GPIOZ_0, EE_OFF),
 295        GPIO_GROUP(GPIOZ_1, EE_OFF),
 296        GPIO_GROUP(GPIOZ_2, EE_OFF),
 297        GPIO_GROUP(GPIOZ_3, EE_OFF),
 298        GPIO_GROUP(GPIOZ_4, EE_OFF),
 299        GPIO_GROUP(GPIOZ_5, EE_OFF),
 300        GPIO_GROUP(GPIOZ_6, EE_OFF),
 301        GPIO_GROUP(GPIOZ_7, EE_OFF),
 302        GPIO_GROUP(GPIOZ_8, EE_OFF),
 303        GPIO_GROUP(GPIOZ_9, EE_OFF),
 304        GPIO_GROUP(GPIOZ_10, EE_OFF),
 305        GPIO_GROUP(GPIOZ_11, EE_OFF),
 306        GPIO_GROUP(GPIOZ_12, EE_OFF),
 307        GPIO_GROUP(GPIOZ_13, EE_OFF),
 308        GPIO_GROUP(GPIOZ_14, EE_OFF),
 309        GPIO_GROUP(GPIOZ_15, EE_OFF),
 310
 311        GPIO_GROUP(GPIOH_0, EE_OFF),
 312        GPIO_GROUP(GPIOH_1, EE_OFF),
 313        GPIO_GROUP(GPIOH_2, EE_OFF),
 314        GPIO_GROUP(GPIOH_3, EE_OFF),
 315
 316        GPIO_GROUP(BOOT_0, EE_OFF),
 317        GPIO_GROUP(BOOT_1, EE_OFF),
 318        GPIO_GROUP(BOOT_2, EE_OFF),
 319        GPIO_GROUP(BOOT_3, EE_OFF),
 320        GPIO_GROUP(BOOT_4, EE_OFF),
 321        GPIO_GROUP(BOOT_5, EE_OFF),
 322        GPIO_GROUP(BOOT_6, EE_OFF),
 323        GPIO_GROUP(BOOT_7, EE_OFF),
 324        GPIO_GROUP(BOOT_8, EE_OFF),
 325        GPIO_GROUP(BOOT_9, EE_OFF),
 326        GPIO_GROUP(BOOT_10, EE_OFF),
 327        GPIO_GROUP(BOOT_11, EE_OFF),
 328        GPIO_GROUP(BOOT_12, EE_OFF),
 329        GPIO_GROUP(BOOT_13, EE_OFF),
 330        GPIO_GROUP(BOOT_14, EE_OFF),
 331        GPIO_GROUP(BOOT_15, EE_OFF),
 332        GPIO_GROUP(BOOT_16, EE_OFF),
 333        GPIO_GROUP(BOOT_17, EE_OFF),
 334
 335        GPIO_GROUP(CARD_0, EE_OFF),
 336        GPIO_GROUP(CARD_1, EE_OFF),
 337        GPIO_GROUP(CARD_2, EE_OFF),
 338        GPIO_GROUP(CARD_3, EE_OFF),
 339        GPIO_GROUP(CARD_4, EE_OFF),
 340        GPIO_GROUP(CARD_5, EE_OFF),
 341        GPIO_GROUP(CARD_6, EE_OFF),
 342
 343        GPIO_GROUP(GPIODV_0, EE_OFF),
 344        GPIO_GROUP(GPIODV_1, EE_OFF),
 345        GPIO_GROUP(GPIODV_2, EE_OFF),
 346        GPIO_GROUP(GPIODV_3, EE_OFF),
 347        GPIO_GROUP(GPIODV_4, EE_OFF),
 348        GPIO_GROUP(GPIODV_5, EE_OFF),
 349        GPIO_GROUP(GPIODV_6, EE_OFF),
 350        GPIO_GROUP(GPIODV_7, EE_OFF),
 351        GPIO_GROUP(GPIODV_8, EE_OFF),
 352        GPIO_GROUP(GPIODV_9, EE_OFF),
 353        GPIO_GROUP(GPIODV_10, EE_OFF),
 354        GPIO_GROUP(GPIODV_11, EE_OFF),
 355        GPIO_GROUP(GPIODV_12, EE_OFF),
 356        GPIO_GROUP(GPIODV_13, EE_OFF),
 357        GPIO_GROUP(GPIODV_14, EE_OFF),
 358        GPIO_GROUP(GPIODV_15, EE_OFF),
 359        GPIO_GROUP(GPIODV_16, EE_OFF),
 360        GPIO_GROUP(GPIODV_17, EE_OFF),
 361        GPIO_GROUP(GPIODV_19, EE_OFF),
 362        GPIO_GROUP(GPIODV_20, EE_OFF),
 363        GPIO_GROUP(GPIODV_21, EE_OFF),
 364        GPIO_GROUP(GPIODV_22, EE_OFF),
 365        GPIO_GROUP(GPIODV_23, EE_OFF),
 366        GPIO_GROUP(GPIODV_24, EE_OFF),
 367        GPIO_GROUP(GPIODV_25, EE_OFF),
 368        GPIO_GROUP(GPIODV_26, EE_OFF),
 369        GPIO_GROUP(GPIODV_27, EE_OFF),
 370        GPIO_GROUP(GPIODV_28, EE_OFF),
 371        GPIO_GROUP(GPIODV_29, EE_OFF),
 372
 373        GPIO_GROUP(GPIOY_0, EE_OFF),
 374        GPIO_GROUP(GPIOY_1, EE_OFF),
 375        GPIO_GROUP(GPIOY_2, EE_OFF),
 376        GPIO_GROUP(GPIOY_3, EE_OFF),
 377        GPIO_GROUP(GPIOY_4, EE_OFF),
 378        GPIO_GROUP(GPIOY_5, EE_OFF),
 379        GPIO_GROUP(GPIOY_6, EE_OFF),
 380        GPIO_GROUP(GPIOY_7, EE_OFF),
 381        GPIO_GROUP(GPIOY_8, EE_OFF),
 382        GPIO_GROUP(GPIOY_9, EE_OFF),
 383        GPIO_GROUP(GPIOY_10, EE_OFF),
 384        GPIO_GROUP(GPIOY_11, EE_OFF),
 385        GPIO_GROUP(GPIOY_12, EE_OFF),
 386        GPIO_GROUP(GPIOY_13, EE_OFF),
 387        GPIO_GROUP(GPIOY_14, EE_OFF),
 388        GPIO_GROUP(GPIOY_15, EE_OFF),
 389        GPIO_GROUP(GPIOY_16, EE_OFF),
 390
 391        GPIO_GROUP(GPIOX_0, EE_OFF),
 392        GPIO_GROUP(GPIOX_1, EE_OFF),
 393        GPIO_GROUP(GPIOX_2, EE_OFF),
 394        GPIO_GROUP(GPIOX_3, EE_OFF),
 395        GPIO_GROUP(GPIOX_4, EE_OFF),
 396        GPIO_GROUP(GPIOX_5, EE_OFF),
 397        GPIO_GROUP(GPIOX_6, EE_OFF),
 398        GPIO_GROUP(GPIOX_7, EE_OFF),
 399        GPIO_GROUP(GPIOX_8, EE_OFF),
 400        GPIO_GROUP(GPIOX_9, EE_OFF),
 401        GPIO_GROUP(GPIOX_10, EE_OFF),
 402        GPIO_GROUP(GPIOX_11, EE_OFF),
 403        GPIO_GROUP(GPIOX_12, EE_OFF),
 404        GPIO_GROUP(GPIOX_13, EE_OFF),
 405        GPIO_GROUP(GPIOX_14, EE_OFF),
 406        GPIO_GROUP(GPIOX_15, EE_OFF),
 407        GPIO_GROUP(GPIOX_16, EE_OFF),
 408        GPIO_GROUP(GPIOX_17, EE_OFF),
 409        GPIO_GROUP(GPIOX_18, EE_OFF),
 410        GPIO_GROUP(GPIOX_19, EE_OFF),
 411        GPIO_GROUP(GPIOX_20, EE_OFF),
 412        GPIO_GROUP(GPIOX_21, EE_OFF),
 413        GPIO_GROUP(GPIOX_22, EE_OFF),
 414
 415        GPIO_GROUP(GPIOCLK_0, EE_OFF),
 416        GPIO_GROUP(GPIOCLK_1, EE_OFF),
 417        GPIO_GROUP(GPIOCLK_2, EE_OFF),
 418        GPIO_GROUP(GPIOCLK_3, EE_OFF),
 419
 420        GPIO_GROUP(GPIO_TEST_N, EE_OFF),
 421
 422        /* Bank X */
 423        GROUP(sdio_d0,          8,      5),
 424        GROUP(sdio_d1,          8,      4),
 425        GROUP(sdio_d2,          8,      3),
 426        GROUP(sdio_d3,          8,      2),
 427        GROUP(sdio_cmd,         8,      1),
 428        GROUP(sdio_clk,         8,      0),
 429        GROUP(sdio_irq,         8,      11),
 430        GROUP(uart_tx_a,        4,      13),
 431        GROUP(uart_rx_a,        4,      12),
 432        GROUP(uart_cts_a,       4,      11),
 433        GROUP(uart_rts_a,       4,      10),
 434        GROUP(pwm_a_x,          3,      17),
 435        GROUP(pwm_e,            2,      30),
 436        GROUP(pwm_f_x,          3,      18),
 437
 438        /* Bank Y */
 439        GROUP(uart_cts_c,       1,      19),
 440        GROUP(uart_rts_c,       1,      18),
 441        GROUP(uart_tx_c,        1,      17),
 442        GROUP(uart_rx_c,        1,      16),
 443        GROUP(pwm_a_y,          1,      21),
 444        GROUP(pwm_f_y,          1,      20),
 445        GROUP(i2s_out_ch23_y,   1,      5),
 446        GROUP(i2s_out_ch45_y,   1,      6),
 447        GROUP(i2s_out_ch67_y,   1,      7),
 448        GROUP(spdif_out_y,      1,      9),
 449
 450        /* Bank Z */
 451        GROUP(eth_mdio,         6,      1),
 452        GROUP(eth_mdc,          6,      0),
 453        GROUP(eth_clk_rx_clk,   6,      13),
 454        GROUP(eth_rx_dv,        6,      12),
 455        GROUP(eth_rxd0,         6,      11),
 456        GROUP(eth_rxd1,         6,      10),
 457        GROUP(eth_rxd2,         6,      9),
 458        GROUP(eth_rxd3,         6,      8),
 459        GROUP(eth_rgmii_tx_clk, 6,      7),
 460        GROUP(eth_tx_en,        6,      6),
 461        GROUP(eth_txd0,         6,      5),
 462        GROUP(eth_txd1,         6,      4),
 463        GROUP(eth_txd2,         6,      3),
 464        GROUP(eth_txd3,         6,      2),
 465
 466        /* Bank H */
 467        GROUP(hdmi_hpd,         1,      26),
 468        GROUP(hdmi_sda,         1,      25),
 469        GROUP(hdmi_scl,         1,      24),
 470
 471        /* Bank DV */
 472        GROUP(uart_tx_b,        2,      29),
 473        GROUP(uart_rx_b,        2,      28),
 474        GROUP(uart_cts_b,       2,      27),
 475        GROUP(uart_rts_b,       2,      26),
 476        GROUP(pwm_b,            3,      21),
 477        GROUP(pwm_d,            3,      20),
 478        GROUP(i2c_sck_a,        7,      27),
 479        GROUP(i2c_sda_a,        7,      26),
 480        GROUP(i2c_sck_b,        7,      25),
 481        GROUP(i2c_sda_b,        7,      24),
 482        GROUP(i2c_sck_c,        7,      23),
 483        GROUP(i2c_sda_c,        7,      22),
 484
 485        /* Bank BOOT */
 486        GROUP(emmc_nand_d07,    4,      30),
 487        GROUP(emmc_clk,         4,      18),
 488        GROUP(emmc_cmd,         4,      19),
 489        GROUP(emmc_ds,          4,      31),
 490        GROUP(nor_d,            5,      1),
 491        GROUP(nor_q,            5,      3),
 492        GROUP(nor_c,            5,      2),
 493        GROUP(nor_cs,           5,      0),
 494        GROUP(nand_ce0,         4,      26),
 495        GROUP(nand_ce1,         4,      27),
 496        GROUP(nand_rb0,         4,      25),
 497        GROUP(nand_ale,         4,      24),
 498        GROUP(nand_cle,         4,      23),
 499        GROUP(nand_wen_clk,     4,      22),
 500        GROUP(nand_ren_wr,      4,      21),
 501        GROUP(nand_dqs,         4,      20),
 502
 503        /* Bank CARD */
 504        GROUP(sdcard_d1,        2,      14),
 505        GROUP(sdcard_d0,        2,      15),
 506        GROUP(sdcard_d3,        2,      12),
 507        GROUP(sdcard_d2,        2,      13),
 508        GROUP(sdcard_cmd,       2,      10),
 509        GROUP(sdcard_clk,       2,      11),
 510};
 511
 512static struct meson_pmx_group meson_gxbb_aobus_groups[] = {
 513        GPIO_GROUP(GPIOAO_0, 0),
 514        GPIO_GROUP(GPIOAO_1, 0),
 515        GPIO_GROUP(GPIOAO_2, 0),
 516        GPIO_GROUP(GPIOAO_3, 0),
 517        GPIO_GROUP(GPIOAO_4, 0),
 518        GPIO_GROUP(GPIOAO_5, 0),
 519        GPIO_GROUP(GPIOAO_6, 0),
 520        GPIO_GROUP(GPIOAO_7, 0),
 521        GPIO_GROUP(GPIOAO_8, 0),
 522        GPIO_GROUP(GPIOAO_9, 0),
 523        GPIO_GROUP(GPIOAO_10, 0),
 524        GPIO_GROUP(GPIOAO_11, 0),
 525        GPIO_GROUP(GPIOAO_12, 0),
 526        GPIO_GROUP(GPIOAO_13, 0),
 527
 528        /* bank AO */
 529        GROUP(uart_tx_ao_b,     0,      24),
 530        GROUP(uart_rx_ao_b,     0,      25),
 531        GROUP(uart_tx_ao_a,     0,      12),
 532        GROUP(uart_rx_ao_a,     0,      11),
 533        GROUP(uart_cts_ao_a,    0,      10),
 534        GROUP(uart_rts_ao_a,    0,      9),
 535        GROUP(uart_cts_ao_b,    0,      8),
 536        GROUP(uart_rts_ao_b,    0,      7),
 537        GROUP(i2c_sck_ao,       0,      6),
 538        GROUP(i2c_sda_ao,       0,      5),
 539        GROUP(i2c_slave_sck_ao, 0,      2),
 540        GROUP(i2c_slave_sda_ao, 0,      1),
 541        GROUP(remote_input_ao,  0,      0),
 542        GROUP(pwm_ao_a_3,       0,      22),
 543        GROUP(pwm_ao_a_6,       0,      18),
 544        GROUP(pwm_ao_a_12,      0,      17),
 545        GROUP(pwm_ao_b,         0,      3),
 546        GROUP(i2s_am_clk,       0,      30),
 547        GROUP(i2s_out_ao_clk,   0,      29),
 548        GROUP(i2s_out_lr_clk,   0,      28),
 549        GROUP(i2s_out_ch01_ao,  0,      27),
 550        GROUP(i2s_out_ch23_ao,  1,      0),
 551        GROUP(i2s_out_ch45_ao,  1,      1),
 552        GROUP(spdif_out_ao_6,   0,      16),
 553        GROUP(spdif_out_ao_13,  0,      4),
 554};
 555
 556static const char * const gpio_periphs_groups[] = {
 557        "GPIOZ_0", "GPIOZ_1", "GPIOZ_2", "GPIOZ_3", "GPIOZ_4",
 558        "GPIOZ_5", "GPIOZ_6", "GPIOZ_7", "GPIOZ_8", "GPIOZ_9",
 559        "GPIOZ_10", "GPIOZ_11", "GPIOZ_12", "GPIOZ_13", "GPIOZ_14",
 560        "GPIOZ_15",
 561
 562        "GPIOH_0", "GPIOH_1", "GPIOH_2", "GPIOH_3",
 563
 564        "BOOT_0", "BOOT_1", "BOOT_2", "BOOT_3", "BOOT_4",
 565        "BOOT_5", "BOOT_6", "BOOT_7", "BOOT_8", "BOOT_9",
 566        "BOOT_10", "BOOT_11", "BOOT_12", "BOOT_13", "BOOT_14",
 567        "BOOT_15", "BOOT_16", "BOOT_17",
 568
 569        "CARD_0", "CARD_1", "CARD_2", "CARD_3", "CARD_4",
 570        "CARD_5", "CARD_6",
 571
 572        "GPIODV_0", "GPIODV_1", "GPIODV_2", "GPIODV_3", "GPIODV_4",
 573        "GPIODV_5", "GPIODV_6", "GPIODV_7", "GPIODV_8", "GPIODV_9",
 574        "GPIODV_10", "GPIODV_11", "GPIODV_12", "GPIODV_13", "GPIODV_14",
 575        "GPIODV_15", "GPIODV_16", "GPIODV_17", "GPIODV_18", "GPIODV_19",
 576        "GPIODV_20", "GPIODV_21", "GPIODV_22", "GPIODV_23", "GPIODV_24",
 577        "GPIODV_25", "GPIODV_26", "GPIODV_27", "GPIODV_28", "GPIODV_29",
 578
 579        "GPIOY_0", "GPIOY_1", "GPIOY_2", "GPIOY_3", "GPIOY_4",
 580        "GPIOY_5", "GPIOY_6", "GPIOY_7", "GPIOY_8", "GPIOY_9",
 581        "GPIOY_10", "GPIOY_11", "GPIOY_12", "GPIOY_13", "GPIOY_14",
 582        "GPIOY_15", "GPIOY_16",
 583
 584        "GPIOX_0", "GPIOX_1", "GPIOX_2", "GPIOX_3", "GPIOX_4",
 585        "GPIOX_5", "GPIOX_6", "GPIOX_7", "GPIOX_8", "GPIOX_9",
 586        "GPIOX_10", "GPIOX_11", "GPIOX_12", "GPIOX_13", "GPIOX_14",
 587        "GPIOX_15", "GPIOX_16", "GPIOX_17", "GPIOX_18", "GPIOX_19",
 588        "GPIOX_20", "GPIOX_21", "GPIOX_22",
 589
 590        "GPIO_TEST_N",
 591};
 592
 593static const char * const emmc_groups[] = {
 594        "emmc_nand_d07", "emmc_clk", "emmc_cmd", "emmc_ds",
 595};
 596
 597static const char * const nor_groups[] = {
 598        "nor_d", "nor_q", "nor_c", "nor_cs",
 599};
 600
 601static const char * const sdcard_groups[] = {
 602        "sdcard_d0", "sdcard_d1", "sdcard_d2", "sdcard_d3",
 603        "sdcard_cmd", "sdcard_clk",
 604};
 605
 606static const char * const sdio_groups[] = {
 607        "sdio_d0", "sdio_d1", "sdio_d2", "sdio_d3",
 608        "sdio_cmd", "sdio_clk", "sdio_irq",
 609};
 610
 611static const char * const nand_groups[] = {
 612        "nand_ce0", "nand_ce1", "nand_rb0", "nand_ale", "nand_cle",
 613        "nand_wen_clk", "nand_ren_wr", "nand_dqs",
 614};
 615
 616static const char * const uart_a_groups[] = {
 617        "uart_tx_a", "uart_rx_a", "uart_cts_a", "uart_rts_a",
 618};
 619
 620static const char * const uart_b_groups[] = {
 621        "uart_tx_b", "uart_rx_b", "uart_cts_b", "uart_rts_b",
 622};
 623
 624static const char * const uart_c_groups[] = {
 625        "uart_tx_c", "uart_rx_c", "uart_cts_c", "uart_rts_c",
 626};
 627
 628static const char * const i2c_a_groups[] = {
 629        "i2c_sck_a", "i2c_sda_a",
 630};
 631
 632static const char * const i2c_b_groups[] = {
 633        "i2c_sck_b", "i2c_sda_b",
 634};
 635
 636static const char * const i2c_c_groups[] = {
 637        "i2c_sck_c", "i2c_sda_c",
 638};
 639
 640static const char * const eth_groups[] = {
 641        "eth_mdio", "eth_mdc", "eth_clk_rx_clk", "eth_rx_dv",
 642        "eth_rxd0", "eth_rxd1", "eth_rxd2", "eth_rxd3",
 643        "eth_rgmii_tx_clk", "eth_tx_en",
 644        "eth_txd0", "eth_txd1", "eth_txd2", "eth_txd3",
 645};
 646
 647static const char * const pwm_a_x_groups[] = {
 648        "pwm_a_x",
 649};
 650
 651static const char * const pwm_a_y_groups[] = {
 652        "pwm_a_y",
 653};
 654
 655static const char * const pwm_b_groups[] = {
 656        "pwm_b",
 657};
 658
 659static const char * const pwm_d_groups[] = {
 660        "pwm_d",
 661};
 662
 663static const char * const pwm_e_groups[] = {
 664        "pwm_e",
 665};
 666
 667static const char * const pwm_f_x_groups[] = {
 668        "pwm_f_x",
 669};
 670
 671static const char * const pwm_f_y_groups[] = {
 672        "pwm_f_y",
 673};
 674
 675static const char * const hdmi_hpd_groups[] = {
 676        "hdmi_hpd",
 677};
 678
 679static const char * const hdmi_i2c_groups[] = {
 680        "hdmi_sda", "hdmi_scl",
 681};
 682
 683static const char * const i2s_out_groups[] = {
 684        "i2s_out_ch23_y", "i2s_out_ch45_y", "i2s_out_ch67_y",
 685};
 686
 687static const char * const spdif_out_groups[] = {
 688        "spdif_out_y",
 689};
 690
 691static const char * const gpio_aobus_groups[] = {
 692        "GPIOAO_0", "GPIOAO_1", "GPIOAO_2", "GPIOAO_3", "GPIOAO_4",
 693        "GPIOAO_5", "GPIOAO_6", "GPIOAO_7", "GPIOAO_8", "GPIOAO_9",
 694        "GPIOAO_10", "GPIOAO_11", "GPIOAO_12", "GPIOAO_13",
 695};
 696
 697static const char * const uart_ao_groups[] = {
 698        "uart_tx_ao_a", "uart_rx_ao_a", "uart_cts_ao_a", "uart_rts_ao_a",
 699};
 700
 701static const char * const uart_ao_b_groups[] = {
 702        "uart_tx_ao_b", "uart_rx_ao_b", "uart_cts_ao_b", "uart_rts_ao_b",
 703};
 704
 705static const char * const i2c_ao_groups[] = {
 706        "i2c_sck_ao", "i2c_sda_ao",
 707};
 708
 709static const char * const i2c_slave_ao_groups[] = {
 710        "i2c_slave_sck_ao", "i2c_slave_sda_ao",
 711};
 712
 713static const char * const remote_input_ao_groups[] = {
 714        "remote_input_ao",
 715};
 716
 717static const char * const pwm_ao_a_3_groups[] = {
 718        "pwm_ao_a_3",
 719};
 720
 721static const char * const pwm_ao_a_6_groups[] = {
 722        "pwm_ao_a_6",
 723};
 724
 725static const char * const pwm_ao_a_12_groups[] = {
 726        "pwm_ao_a_12",
 727};
 728
 729static const char * const pwm_ao_b_groups[] = {
 730        "pwm_ao_b",
 731};
 732
 733static const char * const i2s_out_ao_groups[] = {
 734        "i2s_am_clk", "i2s_out_ao_clk", "i2s_out_lr_clk",
 735        "i2s_out_ch01_ao", "i2s_out_ch23_ao", "i2s_out_ch45_ao",
 736};
 737
 738static const char * const spdif_out_ao_groups[] = {
 739        "spdif_out_ao_6", "spdif_out_ao_13",
 740};
 741
 742static struct meson_pmx_func meson_gxbb_periphs_functions[] = {
 743        FUNCTION(gpio_periphs),
 744        FUNCTION(emmc),
 745        FUNCTION(nor),
 746        FUNCTION(sdcard),
 747        FUNCTION(sdio),
 748        FUNCTION(nand),
 749        FUNCTION(uart_a),
 750        FUNCTION(uart_b),
 751        FUNCTION(uart_c),
 752        FUNCTION(i2c_a),
 753        FUNCTION(i2c_b),
 754        FUNCTION(i2c_c),
 755        FUNCTION(eth),
 756        FUNCTION(pwm_a_x),
 757        FUNCTION(pwm_a_y),
 758        FUNCTION(pwm_b),
 759        FUNCTION(pwm_d),
 760        FUNCTION(pwm_e),
 761        FUNCTION(pwm_f_x),
 762        FUNCTION(pwm_f_y),
 763        FUNCTION(hdmi_hpd),
 764        FUNCTION(hdmi_i2c),
 765        FUNCTION(i2s_out),
 766        FUNCTION(spdif_out),
 767};
 768
 769static struct meson_pmx_func meson_gxbb_aobus_functions[] = {
 770        FUNCTION(gpio_aobus),
 771        FUNCTION(uart_ao),
 772        FUNCTION(uart_ao_b),
 773        FUNCTION(i2c_ao),
 774        FUNCTION(i2c_slave_ao),
 775        FUNCTION(remote_input_ao),
 776        FUNCTION(pwm_ao_a_3),
 777        FUNCTION(pwm_ao_a_6),
 778        FUNCTION(pwm_ao_a_12),
 779        FUNCTION(pwm_ao_b),
 780        FUNCTION(i2s_out_ao),
 781        FUNCTION(spdif_out_ao),
 782};
 783
 784static struct meson_bank meson_gxbb_periphs_banks[] = {
 785        /*   name    first                      last                    pullen  pull    dir     out     in  */
 786        BANK("X",    PIN(GPIOX_0, EE_OFF),      PIN(GPIOX_22, EE_OFF),  4,  0,  4,  0,  12, 0,  13, 0,  14, 0),
 787        BANK("Y",    PIN(GPIOY_0, EE_OFF),      PIN(GPIOY_16, EE_OFF),  1,  0,  1,  0,  3,  0,  4,  0,  5,  0),
 788        BANK("DV",   PIN(GPIODV_0, EE_OFF),     PIN(GPIODV_29, EE_OFF), 0,  0,  0,  0,  0,  0,  1,  0,  2,  0),
 789        BANK("H",    PIN(GPIOH_0, EE_OFF),      PIN(GPIOH_3, EE_OFF),   1, 20,  1, 20,  3, 20,  4, 20,  5, 20),
 790        BANK("Z",    PIN(GPIOZ_0, EE_OFF),      PIN(GPIOZ_15, EE_OFF),  3,  0,  3,  0,  9,  0,  10, 0, 11,  0),
 791        BANK("CARD", PIN(CARD_0, EE_OFF),       PIN(CARD_6, EE_OFF),    2, 20,  2, 20,  6, 20,  7, 20,  8, 20),
 792        BANK("BOOT", PIN(BOOT_0, EE_OFF),       PIN(BOOT_17, EE_OFF),   2,  0,  2,  0,  6,  0,  7,  0,  8,  0),
 793        BANK("CLK",  PIN(GPIOCLK_0, EE_OFF),    PIN(GPIOCLK_3, EE_OFF), 3, 28,  3, 28,  9, 28, 10, 28, 11, 28),
 794};
 795
 796static struct meson_bank meson_gxbb_aobus_banks[] = {
 797        /*   name    first              last               pullen  pull    dir     out     in  */
 798        BANK("AO",   PIN(GPIOAO_0, 0),  PIN(GPIOAO_13, 0), 0,  0,  0, 16,  0,  0,  0, 16,  1,  0),
 799};
 800
 801struct meson_pinctrl_data meson_gxbb_periphs_pinctrl_data = {
 802        .name           = "periphs-banks",
 803        .pin_base       = 14,
 804        .pins           = meson_gxbb_periphs_pins,
 805        .groups         = meson_gxbb_periphs_groups,
 806        .funcs          = meson_gxbb_periphs_functions,
 807        .banks          = meson_gxbb_periphs_banks,
 808        .num_pins       = ARRAY_SIZE(meson_gxbb_periphs_pins),
 809        .num_groups     = ARRAY_SIZE(meson_gxbb_periphs_groups),
 810        .num_funcs      = ARRAY_SIZE(meson_gxbb_periphs_functions),
 811        .num_banks      = ARRAY_SIZE(meson_gxbb_periphs_banks),
 812};
 813
 814struct meson_pinctrl_data meson_gxbb_aobus_pinctrl_data = {
 815        .name           = "aobus-banks",
 816        .pin_base       = 0,
 817        .pins           = meson_gxbb_aobus_pins,
 818        .groups         = meson_gxbb_aobus_groups,
 819        .funcs          = meson_gxbb_aobus_functions,
 820        .banks          = meson_gxbb_aobus_banks,
 821        .num_pins       = ARRAY_SIZE(meson_gxbb_aobus_pins),
 822        .num_groups     = ARRAY_SIZE(meson_gxbb_aobus_groups),
 823        .num_funcs      = ARRAY_SIZE(meson_gxbb_aobus_functions),
 824        .num_banks      = ARRAY_SIZE(meson_gxbb_aobus_banks),
 825};
 826