pinctrl-meson-axg-pmx.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. /* SPDX-License-Identifier: (GPL-2.0+ or MIT) */
  2. /*
  3. * Copyright (c) 2017 Baylibre SAS.
  4. * Author: Jerome Brunet <jbrunet@baylibre.com>
  5. *
  6. * Copyright (c) 2017 Amlogic, Inc. All rights reserved.
  7. * Author: Xingyu Chen <xingyu.chen@amlogic.com>
  8. *
  9. */
  10. struct meson_pmx_bank {
  11. const char *name;
  12. unsigned int first;
  13. unsigned int last;
  14. unsigned int reg;
  15. unsigned int offset;
  16. };
  17. struct meson_axg_pmx_data {
  18. struct meson_pmx_bank *pmx_banks;
  19. unsigned int num_pmx_banks;
  20. };
  21. #define BANK_PMX(n, f, l, r, o) \
  22. { \
  23. .name = n, \
  24. .first = f, \
  25. .last = l, \
  26. .reg = r, \
  27. .offset = o, \
  28. }
  29. struct meson_pmx_axg_data {
  30. unsigned int func;
  31. };
  32. #define PMX_DATA(f) \
  33. { \
  34. .func = f, \
  35. }
  36. #define GROUP(grp, f) \
  37. { \
  38. .name = #grp, \
  39. .pins = grp ## _pins, \
  40. .num_pins = ARRAY_SIZE(grp ## _pins), \
  41. .data = (const struct meson_pmx_axg_data[]){ \
  42. PMX_DATA(f), \
  43. }, \
  44. }
  45. #define GPIO_GROUP(gpio) \
  46. { \
  47. .name = #gpio, \
  48. .pins = (const unsigned int[]){ gpio }, \
  49. .num_pins = 1, \
  50. .data = (const struct meson_pmx_axg_data[]){ \
  51. PMX_DATA(0), \
  52. }, \
  53. }
  54. extern const struct pinmux_ops meson_axg_pmx_ops;