Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  * First generation of pinmux driver for Amlogic Meson SoCs
0004  *
0005  * Copyright (C) 2014 Beniamino Galvani <b.galvani@gmail.com>
0006  * Copyright (C) 2017 Jerome Brunet  <jbrunet@baylibre.com>
0007  */
0008 
0009 struct meson8_pmx_data {
0010     bool is_gpio;
0011     unsigned int reg;
0012     unsigned int bit;
0013 };
0014 
0015 #define PMX_DATA(r, b, g)                       \
0016     {                               \
0017         .reg = r,                       \
0018         .bit = b,                       \
0019         .is_gpio = g,                       \
0020     }
0021 
0022 #define GROUP(grp, r, b)                        \
0023     {                               \
0024         .name = #grp,                       \
0025         .pins = grp ## _pins,                   \
0026         .num_pins = ARRAY_SIZE(grp ## _pins),           \
0027         .data = (const struct meson8_pmx_data[]){       \
0028             PMX_DATA(r, b, false),              \
0029         },                          \
0030      }
0031 
0032 #define GPIO_GROUP(gpio)                        \
0033     {                               \
0034         .name = #gpio,                      \
0035         .pins = (const unsigned int[]){ gpio },         \
0036         .num_pins = 1,                      \
0037         .data = (const struct meson8_pmx_data[]){       \
0038             PMX_DATA(0, 0, true),               \
0039         },                          \
0040     }
0041 
0042 extern const struct pinmux_ops meson8_pmx_ops;