18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: (GPL-2.0+ or MIT) */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Copyright (c) 2017 Baylibre SAS. 48c2ecf20Sopenharmony_ci * Author: Jerome Brunet <jbrunet@baylibre.com> 58c2ecf20Sopenharmony_ci * 68c2ecf20Sopenharmony_ci * Copyright (c) 2017 Amlogic, Inc. All rights reserved. 78c2ecf20Sopenharmony_ci * Author: Xingyu Chen <xingyu.chen@amlogic.com> 88c2ecf20Sopenharmony_ci * 98c2ecf20Sopenharmony_ci */ 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_cistruct meson_pmx_bank { 128c2ecf20Sopenharmony_ci const char *name; 138c2ecf20Sopenharmony_ci unsigned int first; 148c2ecf20Sopenharmony_ci unsigned int last; 158c2ecf20Sopenharmony_ci unsigned int reg; 168c2ecf20Sopenharmony_ci unsigned int offset; 178c2ecf20Sopenharmony_ci}; 188c2ecf20Sopenharmony_ci 198c2ecf20Sopenharmony_cistruct meson_axg_pmx_data { 208c2ecf20Sopenharmony_ci struct meson_pmx_bank *pmx_banks; 218c2ecf20Sopenharmony_ci unsigned int num_pmx_banks; 228c2ecf20Sopenharmony_ci}; 238c2ecf20Sopenharmony_ci 248c2ecf20Sopenharmony_ci#define BANK_PMX(n, f, l, r, o) \ 258c2ecf20Sopenharmony_ci { \ 268c2ecf20Sopenharmony_ci .name = n, \ 278c2ecf20Sopenharmony_ci .first = f, \ 288c2ecf20Sopenharmony_ci .last = l, \ 298c2ecf20Sopenharmony_ci .reg = r, \ 308c2ecf20Sopenharmony_ci .offset = o, \ 318c2ecf20Sopenharmony_ci } 328c2ecf20Sopenharmony_ci 338c2ecf20Sopenharmony_cistruct meson_pmx_axg_data { 348c2ecf20Sopenharmony_ci unsigned int func; 358c2ecf20Sopenharmony_ci}; 368c2ecf20Sopenharmony_ci 378c2ecf20Sopenharmony_ci#define PMX_DATA(f) \ 388c2ecf20Sopenharmony_ci { \ 398c2ecf20Sopenharmony_ci .func = f, \ 408c2ecf20Sopenharmony_ci } 418c2ecf20Sopenharmony_ci 428c2ecf20Sopenharmony_ci#define GROUP(grp, f) \ 438c2ecf20Sopenharmony_ci { \ 448c2ecf20Sopenharmony_ci .name = #grp, \ 458c2ecf20Sopenharmony_ci .pins = grp ## _pins, \ 468c2ecf20Sopenharmony_ci .num_pins = ARRAY_SIZE(grp ## _pins), \ 478c2ecf20Sopenharmony_ci .data = (const struct meson_pmx_axg_data[]){ \ 488c2ecf20Sopenharmony_ci PMX_DATA(f), \ 498c2ecf20Sopenharmony_ci }, \ 508c2ecf20Sopenharmony_ci } 518c2ecf20Sopenharmony_ci 528c2ecf20Sopenharmony_ci#define GPIO_GROUP(gpio) \ 538c2ecf20Sopenharmony_ci { \ 548c2ecf20Sopenharmony_ci .name = #gpio, \ 558c2ecf20Sopenharmony_ci .pins = (const unsigned int[]){ gpio }, \ 568c2ecf20Sopenharmony_ci .num_pins = 1, \ 578c2ecf20Sopenharmony_ci .data = (const struct meson_pmx_axg_data[]){ \ 588c2ecf20Sopenharmony_ci PMX_DATA(0), \ 598c2ecf20Sopenharmony_ci }, \ 608c2ecf20Sopenharmony_ci } 618c2ecf20Sopenharmony_ci 628c2ecf20Sopenharmony_ciextern const struct pinmux_ops meson_axg_pmx_ops; 63