1 /* SPDX-License-Identifier: GPL-2.0+ */ 2 /* 3 * Copyright (C) 2014 Beniamino Galvani <b.galvani@gmail.com> 4 * Copyright (C) 2017 Jerome Brunet <jbrunet@baylibre.com> 5 */ 6 7 #ifndef __PINCTRL_MESON_GX_H__ 8 #define __PINCTRL_MESON_GX_H__ 9 10 #include "pinctrl-meson.h" 11 12 struct meson_gx_pmx_data { 13 bool is_gpio; 14 unsigned int reg; 15 unsigned int bit; 16 }; 17 18 #define PMX_DATA(r, b, g) \ 19 { \ 20 .reg = r, \ 21 .bit = b, \ 22 .is_gpio = g, \ 23 } 24 25 #define GROUP(grp, r, b) \ 26 { \ 27 .name = #grp, \ 28 .pins = grp ## _pins, \ 29 .num_pins = ARRAY_SIZE(grp ## _pins), \ 30 .data = (const struct meson_gx_pmx_data[]){ \ 31 PMX_DATA(r, b, false), \ 32 }, \ 33 } 34 35 #define GPIO_GROUP(gpio, b) \ 36 { \ 37 .name = #gpio, \ 38 .pins = (const unsigned int[]){ PIN(gpio, b) }, \ 39 .num_pins = 1, \ 40 .data = (const struct meson_gx_pmx_data[]){ \ 41 PMX_DATA(0, 0, true), \ 42 }, \ 43 } 44 45 extern const struct pinctrl_ops meson_gx_pinctrl_ops; 46 extern const struct driver meson_gx_gpio_driver; 47 48 #endif /* __PINCTRL_MESON_GX_H__ */ 49