pinctrl-meson-gx.h 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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. #ifndef __PINCTRL_MESON_GX_H__
  7. #define __PINCTRL_MESON_GX_H__
  8. #include "pinctrl-meson.h"
  9. struct meson_gx_pmx_data {
  10. bool is_gpio;
  11. unsigned int reg;
  12. unsigned int bit;
  13. };
  14. #define PMX_DATA(r, b, g) \
  15. { \
  16. .reg = r, \
  17. .bit = b, \
  18. .is_gpio = g, \
  19. }
  20. #define GROUP(grp, r, b) \
  21. { \
  22. .name = #grp, \
  23. .pins = grp ## _pins, \
  24. .num_pins = ARRAY_SIZE(grp ## _pins), \
  25. .data = (const struct meson_gx_pmx_data[]){ \
  26. PMX_DATA(r, b, false), \
  27. }, \
  28. }
  29. #define GPIO_GROUP(gpio, b) \
  30. { \
  31. .name = #gpio, \
  32. .pins = (const unsigned int[]){ PIN(gpio, b) }, \
  33. .num_pins = 1, \
  34. .data = (const struct meson_gx_pmx_data[]){ \
  35. PMX_DATA(0, 0, true), \
  36. }, \
  37. }
  38. extern const struct pinctrl_ops meson_gx_pinctrl_ops;
  39. extern const struct driver meson_gx_gpio_driver;
  40. #endif /* __PINCTRL_MESON_GX_H__ */