clk-uniphier-mio.c 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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. #include "clk-uniphier.h"
  8. #define UNIPHIER_MIO_CLK_SD_GATE(id, ch) \
  9. UNIPHIER_CLK_GATE((id), 0x20 + 0x200 * (ch), 8)
  10. #define UNIPHIER_MIO_CLK_USB2(id, ch) \
  11. UNIPHIER_CLK_GATE((id), 0x20 + 0x200 * (ch), 28)
  12. #define UNIPHIER_MIO_CLK_USB2_PHY(id, ch) \
  13. UNIPHIER_CLK_GATE((id), 0x20 + 0x200 * (ch), 29)
  14. #define UNIPHIER_MIO_CLK_DMAC(id) \
  15. UNIPHIER_CLK_GATE((id), 0x20, 25)
  16. #define UNIPHIER_MIO_CLK_SD_MUX(_id, ch) \
  17. { \
  18. .id = (_id), \
  19. .nr_muxs = 8, \
  20. .reg = 0x30 + 0x200 * (ch), \
  21. .masks = { \
  22. 0x00031000, \
  23. 0x00031000, \
  24. 0x00031000, \
  25. 0x00031000, \
  26. 0x00001300, \
  27. 0x00001300, \
  28. 0x00001300, \
  29. 0x00001300, \
  30. }, \
  31. .vals = { \
  32. 0x00000000, \
  33. 0x00010000, \
  34. 0x00020000, \
  35. 0x00030000, \
  36. 0x00001000, \
  37. 0x00001100, \
  38. 0x00001200, \
  39. 0x00001300, \
  40. }, \
  41. .rates = { \
  42. 44444444, \
  43. 33333333, \
  44. 50000000, \
  45. 66666666, \
  46. 100000000, \
  47. 40000000, \
  48. 25000000, \
  49. 22222222, \
  50. }, \
  51. }
  52. static const struct uniphier_clk_gate_data uniphier_mio_clk_gate[] = {
  53. UNIPHIER_MIO_CLK_SD_GATE(0, 0),
  54. UNIPHIER_MIO_CLK_SD_GATE(1, 1),
  55. UNIPHIER_MIO_CLK_SD_GATE(2, 2), /* for PH1-Pro4 only */
  56. UNIPHIER_MIO_CLK_DMAC(7),
  57. UNIPHIER_MIO_CLK_USB2(8, 0),
  58. UNIPHIER_MIO_CLK_USB2(9, 1),
  59. UNIPHIER_MIO_CLK_USB2(10, 2),
  60. UNIPHIER_MIO_CLK_USB2(11, 3), /* for PH1-sLD3 only */
  61. UNIPHIER_MIO_CLK_USB2_PHY(12, 0),
  62. UNIPHIER_MIO_CLK_USB2_PHY(13, 1),
  63. UNIPHIER_MIO_CLK_USB2_PHY(14, 2),
  64. UNIPHIER_MIO_CLK_USB2_PHY(15, 3), /* for PH1-sLD3 only */
  65. UNIPHIER_CLK_END
  66. };
  67. static const struct uniphier_clk_mux_data uniphier_mio_clk_mux[] = {
  68. UNIPHIER_MIO_CLK_SD_MUX(0, 0),
  69. UNIPHIER_MIO_CLK_SD_MUX(1, 1),
  70. UNIPHIER_MIO_CLK_SD_MUX(2, 2), /* for PH1-Pro4 only */
  71. UNIPHIER_CLK_END
  72. };
  73. const struct uniphier_clk_data uniphier_mio_clk_data = {
  74. .gate = uniphier_mio_clk_gate,
  75. .mux = uniphier_mio_clk_mux,
  76. };