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