Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: (GPL-2.0+ or MIT) */
0002 /*
0003  * Copyright (c) 2017 Baylibre SAS.
0004  * Author:  Jerome Brunet  <jbrunet@baylibre.com>
0005  *
0006  * Copyright (c) 2017 Amlogic, Inc. All rights reserved.
0007  * Author: Xingyu Chen <xingyu.chen@amlogic.com>
0008  *
0009  */
0010 
0011 struct meson_pmx_bank {
0012     const char *name;
0013     unsigned int first;
0014     unsigned int last;
0015     unsigned int reg;
0016     unsigned int offset;
0017 };
0018 
0019 struct meson_axg_pmx_data {
0020     struct meson_pmx_bank *pmx_banks;
0021     unsigned int num_pmx_banks;
0022 };
0023 
0024 #define BANK_PMX(n, f, l, r, o)             \
0025     {                           \
0026         .name   = n,                    \
0027         .first  = f,                    \
0028         .last   = l,                    \
0029         .reg    = r,                    \
0030         .offset = o,                    \
0031     }
0032 
0033 struct meson_pmx_axg_data {
0034         unsigned int func;
0035 };
0036 
0037 #define PMX_DATA(f)                         \
0038     {                               \
0039         .func = f,                      \
0040     }
0041 
0042 #define GROUP(grp, f)                           \
0043     {                               \
0044         .name = #grp,                       \
0045         .pins = grp ## _pins,                                   \
0046         .num_pins = ARRAY_SIZE(grp ## _pins),           \
0047         .data = (const struct meson_pmx_axg_data[]){        \
0048             PMX_DATA(f),                    \
0049         },                          \
0050     }
0051 
0052 #define GPIO_GROUP(gpio)                        \
0053     {                               \
0054         .name = #gpio,                      \
0055         .pins = (const unsigned int[]){ gpio },         \
0056         .num_pins = 1,                      \
0057         .data = (const struct meson_pmx_axg_data[]){        \
0058             PMX_DATA(0),                    \
0059         },                          \
0060     }
0061 
0062 extern const struct pinmux_ops meson_axg_pmx_ops;