63 lines · c
1/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */2/*3 * Copyright (c) 2017 Baylibre SAS.4 * Author: Jerome Brunet <jbrunet@baylibre.com>5 *6 * Copyright (c) 2017 Amlogic, Inc. All rights reserved.7 * Author: Xingyu Chen <xingyu.chen@amlogic.com>8 *9 */10 11struct meson_pmx_bank {12 const char *name;13 unsigned int first;14 unsigned int last;15 unsigned int reg;16 unsigned int offset;17};18 19struct meson_axg_pmx_data {20 const struct meson_pmx_bank *pmx_banks;21 unsigned int num_pmx_banks;22};23 24#define BANK_PMX(n, f, l, r, o) \25 { \26 .name = n, \27 .first = f, \28 .last = l, \29 .reg = r, \30 .offset = o, \31 }32 33struct meson_pmx_axg_data {34 unsigned int func;35};36 37#define PMX_DATA(f) \38 { \39 .func = f, \40 }41 42#define GROUP(grp, f) \43 { \44 .name = #grp, \45 .pins = grp ## _pins, \46 .num_pins = ARRAY_SIZE(grp ## _pins), \47 .data = (const struct meson_pmx_axg_data[]){ \48 PMX_DATA(f), \49 }, \50 }51 52#define GPIO_GROUP(gpio) \53 { \54 .name = #gpio, \55 .pins = (const unsigned int[]){ gpio }, \56 .num_pins = 1, \57 .data = (const struct meson_pmx_axg_data[]){ \58 PMX_DATA(0), \59 }, \60 }61 62extern const struct pinmux_ops meson_axg_pmx_ops;63