clk-uniphier.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. /*
  2. * Copyright (C) 2016 Socionext Inc.
  3. * Author: Masahiro Yamada <yamada.masahiro@socionext.com>
  4. *
  5. * SPDX-License-Identifier: GPL-2.0+
  6. */
  7. #ifndef __CLK_UNIPHIER_H__
  8. #define __CLK_UNIPHIER_H__
  9. #include <linux/kernel.h>
  10. #define UNIPHIER_CLK_MAX_NR_MUXS 8
  11. struct uniphier_clk_gate_data {
  12. unsigned int id;
  13. unsigned int reg;
  14. unsigned int bit;
  15. };
  16. struct uniphier_clk_mux_data {
  17. unsigned int id;
  18. unsigned int nr_muxs;
  19. unsigned int reg;
  20. unsigned int masks[UNIPHIER_CLK_MAX_NR_MUXS];
  21. unsigned int vals[UNIPHIER_CLK_MAX_NR_MUXS];
  22. unsigned long rates[UNIPHIER_CLK_MAX_NR_MUXS];
  23. };
  24. struct uniphier_clk_data {
  25. const struct uniphier_clk_gate_data *gate;
  26. const struct uniphier_clk_mux_data *mux;
  27. };
  28. #define UNIPHIER_CLK_ID_END (unsigned int)(-1)
  29. #define UNIPHIER_CLK_END \
  30. { .id = UNIPHIER_CLK_ID_END }
  31. #define UNIPHIER_CLK_GATE(_id, _reg, _bit) \
  32. { \
  33. .id = (_id), \
  34. .reg = (_reg), \
  35. .bit = (_bit), \
  36. }
  37. #define UNIPHIER_CLK_FIXED_RATE(_id, _rate) \
  38. { \
  39. .id = (_id), \
  40. .rates = {(_reg),}, \
  41. }
  42. extern const struct uniphier_clk_data uniphier_pxs2_sys_clk_data;
  43. extern const struct uniphier_clk_data uniphier_ld20_sys_clk_data;
  44. extern const struct uniphier_clk_data uniphier_mio_clk_data;
  45. #endif /* __CLK_UNIPHIER_H__ */