clk-uniphier.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  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_mio_clk_data;
  43. #endif /* __CLK_UNIPHIER_H__ */