1/* SPDX-License-Identifier: GPL-2.0-only */
2/*
3 * First generation of pinmux driver for Amlogic Meson SoCs
4 *
5 * Copyright (C) 2014 Beniamino Galvani <b.galvani@gmail.com>
6 * Copyright (C) 2017 Jerome Brunet <jbrunet@baylibre.com>
7 */
8
9struct meson8_pmx_data {
10 bool is_gpio;
11 unsigned int reg;
12 unsigned int bit;
13};
14
15#define PMX_DATA(r, b, g) \
16 { \
17 .reg = r, \
18 .bit = b, \
19 .is_gpio = g, \
20 }
21
22#define GROUP(grp, r, b) \
23 { \
24 .name = #grp, \
25 .pins = grp ## _pins, \
26 .num_pins = ARRAY_SIZE(grp ## _pins), \
27 .data = (const struct meson8_pmx_data[]){ \
28 PMX_DATA(r, b, false), \
29 }, \
30 }
31
32#define GPIO_GROUP(gpio) \
33 { \
34 .name = #gpio, \
35 .pins = (const unsigned int[]){ gpio }, \
36 .num_pins = 1, \
37 .data = (const struct meson8_pmx_data[]){ \
38 PMX_DATA(0, 0, true), \
39 }, \
40 }
41
42extern const struct pinmux_ops meson8_pmx_ops;
43

source code of linux/drivers/pinctrl/meson/pinctrl-meson8-pmx.h