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 9 struct 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 42 extern const struct pinmux_ops meson8_pmx_ops; 43