pinctrl-meson8-pmx.h 945 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  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. struct meson8_pmx_data {
  9. bool is_gpio;
  10. unsigned int reg;
  11. unsigned int bit;
  12. };
  13. #define PMX_DATA(r, b, g) \
  14. { \
  15. .reg = r, \
  16. .bit = b, \
  17. .is_gpio = g, \
  18. }
  19. #define GROUP(grp, r, b) \
  20. { \
  21. .name = #grp, \
  22. .pins = grp ## _pins, \
  23. .num_pins = ARRAY_SIZE(grp ## _pins), \
  24. .data = (const struct meson8_pmx_data[]){ \
  25. PMX_DATA(r, b, false), \
  26. }, \
  27. }
  28. #define GPIO_GROUP(gpio) \
  29. { \
  30. .name = #gpio, \
  31. .pins = (const unsigned int[]){ gpio }, \
  32. .num_pins = 1, \
  33. .data = (const struct meson8_pmx_data[]){ \
  34. PMX_DATA(0, 0, true), \
  35. }, \
  36. }
  37. extern const struct pinmux_ops meson8_pmx_ops;