wrap_pll_config.c 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. /*
  2. * Copyright (C) 2015 Marek Vasut <marex@denx.de>
  3. *
  4. * SPDX-License-Identifier: GPL-2.0+
  5. */
  6. #include <common.h>
  7. #include <asm/arch/clock_manager.h>
  8. #include <qts/pll_config.h>
  9. #define MAIN_VCO_BASE ( \
  10. (CONFIG_HPS_MAINPLLGRP_VCO_DENOM << \
  11. CLKMGR_MAINPLLGRP_VCO_DENOM_OFFSET) | \
  12. (CONFIG_HPS_MAINPLLGRP_VCO_NUMER << \
  13. CLKMGR_MAINPLLGRP_VCO_NUMER_OFFSET) \
  14. )
  15. #define PERI_VCO_BASE ( \
  16. (CONFIG_HPS_PERPLLGRP_VCO_PSRC << \
  17. CLKMGR_PERPLLGRP_VCO_PSRC_OFFSET) | \
  18. (CONFIG_HPS_PERPLLGRP_VCO_DENOM << \
  19. CLKMGR_PERPLLGRP_VCO_DENOM_OFFSET) | \
  20. (CONFIG_HPS_PERPLLGRP_VCO_NUMER << \
  21. CLKMGR_PERPLLGRP_VCO_NUMER_OFFSET) \
  22. )
  23. #define SDR_VCO_BASE ( \
  24. (CONFIG_HPS_SDRPLLGRP_VCO_SSRC << \
  25. CLKMGR_SDRPLLGRP_VCO_SSRC_OFFSET) | \
  26. (CONFIG_HPS_SDRPLLGRP_VCO_DENOM << \
  27. CLKMGR_SDRPLLGRP_VCO_DENOM_OFFSET) | \
  28. (CONFIG_HPS_SDRPLLGRP_VCO_NUMER << \
  29. CLKMGR_SDRPLLGRP_VCO_NUMER_OFFSET) \
  30. )
  31. static const struct cm_config cm_default_cfg = {
  32. /* main group */
  33. MAIN_VCO_BASE,
  34. (CONFIG_HPS_MAINPLLGRP_MPUCLK_CNT <<
  35. CLKMGR_MAINPLLGRP_MPUCLK_CNT_OFFSET),
  36. (CONFIG_HPS_MAINPLLGRP_MAINCLK_CNT <<
  37. CLKMGR_MAINPLLGRP_MAINCLK_CNT_OFFSET),
  38. (CONFIG_HPS_MAINPLLGRP_DBGATCLK_CNT <<
  39. CLKMGR_MAINPLLGRP_DBGATCLK_CNT_OFFSET),
  40. (CONFIG_HPS_MAINPLLGRP_MAINQSPICLK_CNT <<
  41. CLKMGR_MAINPLLGRP_MAINQSPICLK_CNT_OFFSET),
  42. (CONFIG_HPS_MAINPLLGRP_MAINNANDSDMMCCLK_CNT <<
  43. CLKMGR_PERPLLGRP_PERNANDSDMMCCLK_CNT_OFFSET),
  44. (CONFIG_HPS_MAINPLLGRP_CFGS2FUSER0CLK_CNT <<
  45. CLKMGR_MAINPLLGRP_CFGS2FUSER0CLK_CNT_OFFSET),
  46. (CONFIG_HPS_MAINPLLGRP_MAINDIV_L3MPCLK <<
  47. CLKMGR_MAINPLLGRP_MAINDIV_L3MPCLK_OFFSET) |
  48. (CONFIG_HPS_MAINPLLGRP_MAINDIV_L3SPCLK <<
  49. CLKMGR_MAINPLLGRP_MAINDIV_L3SPCLK_OFFSET) |
  50. (CONFIG_HPS_MAINPLLGRP_MAINDIV_L4MPCLK <<
  51. CLKMGR_MAINPLLGRP_MAINDIV_L4MPCLK_OFFSET) |
  52. (CONFIG_HPS_MAINPLLGRP_MAINDIV_L4SPCLK <<
  53. CLKMGR_MAINPLLGRP_MAINDIV_L4SPCLK_OFFSET),
  54. (CONFIG_HPS_MAINPLLGRP_DBGDIV_DBGATCLK <<
  55. CLKMGR_MAINPLLGRP_DBGDIV_DBGATCLK_OFFSET) |
  56. (CONFIG_HPS_MAINPLLGRP_DBGDIV_DBGCLK <<
  57. CLKMGR_MAINPLLGRP_DBGDIV_DBGCLK_OFFSET),
  58. (CONFIG_HPS_MAINPLLGRP_TRACEDIV_TRACECLK <<
  59. CLKMGR_MAINPLLGRP_TRACEDIV_TRACECLK_OFFSET),
  60. (CONFIG_HPS_MAINPLLGRP_L4SRC_L4MP <<
  61. CLKMGR_MAINPLLGRP_L4SRC_L4MP_OFFSET) |
  62. (CONFIG_HPS_MAINPLLGRP_L4SRC_L4SP <<
  63. CLKMGR_MAINPLLGRP_L4SRC_L4SP_OFFSET),
  64. /* peripheral group */
  65. PERI_VCO_BASE,
  66. (CONFIG_HPS_PERPLLGRP_EMAC0CLK_CNT <<
  67. CLKMGR_PERPLLGRP_EMAC0CLK_CNT_OFFSET),
  68. (CONFIG_HPS_PERPLLGRP_EMAC1CLK_CNT <<
  69. CLKMGR_PERPLLGRP_EMAC1CLK_CNT_OFFSET),
  70. (CONFIG_HPS_PERPLLGRP_PERQSPICLK_CNT <<
  71. CLKMGR_PERPLLGRP_PERQSPICLK_CNT_OFFSET),
  72. (CONFIG_HPS_PERPLLGRP_PERNANDSDMMCCLK_CNT <<
  73. CLKMGR_PERPLLGRP_PERNANDSDMMCCLK_CNT_OFFSET),
  74. (CONFIG_HPS_PERPLLGRP_PERBASECLK_CNT <<
  75. CLKMGR_PERPLLGRP_PERBASECLK_CNT_OFFSET),
  76. (CONFIG_HPS_PERPLLGRP_S2FUSER1CLK_CNT <<
  77. CLKMGR_PERPLLGRP_S2FUSER1CLK_CNT_OFFSET),
  78. (CONFIG_HPS_PERPLLGRP_DIV_USBCLK <<
  79. CLKMGR_PERPLLGRP_DIV_USBCLK_OFFSET) |
  80. (CONFIG_HPS_PERPLLGRP_DIV_SPIMCLK <<
  81. CLKMGR_PERPLLGRP_DIV_SPIMCLK_OFFSET) |
  82. (CONFIG_HPS_PERPLLGRP_DIV_CAN0CLK <<
  83. CLKMGR_PERPLLGRP_DIV_CAN0CLK_OFFSET) |
  84. (CONFIG_HPS_PERPLLGRP_DIV_CAN1CLK <<
  85. CLKMGR_PERPLLGRP_DIV_CAN1CLK_OFFSET),
  86. (CONFIG_HPS_PERPLLGRP_GPIODIV_GPIODBCLK <<
  87. CLKMGR_PERPLLGRP_GPIODIV_GPIODBCLK_OFFSET),
  88. (CONFIG_HPS_PERPLLGRP_SRC_QSPI <<
  89. CLKMGR_PERPLLGRP_SRC_QSPI_OFFSET) |
  90. (CONFIG_HPS_PERPLLGRP_SRC_NAND <<
  91. CLKMGR_PERPLLGRP_SRC_NAND_OFFSET) |
  92. (CONFIG_HPS_PERPLLGRP_SRC_SDMMC <<
  93. CLKMGR_PERPLLGRP_SRC_SDMMC_OFFSET),
  94. /* sdram pll group */
  95. SDR_VCO_BASE,
  96. (CONFIG_HPS_SDRPLLGRP_DDRDQSCLK_PHASE <<
  97. CLKMGR_SDRPLLGRP_DDRDQSCLK_PHASE_OFFSET) |
  98. (CONFIG_HPS_SDRPLLGRP_DDRDQSCLK_CNT <<
  99. CLKMGR_SDRPLLGRP_DDRDQSCLK_CNT_OFFSET),
  100. (CONFIG_HPS_SDRPLLGRP_DDR2XDQSCLK_PHASE <<
  101. CLKMGR_SDRPLLGRP_DDR2XDQSCLK_PHASE_OFFSET) |
  102. (CONFIG_HPS_SDRPLLGRP_DDR2XDQSCLK_CNT <<
  103. CLKMGR_SDRPLLGRP_DDR2XDQSCLK_CNT_OFFSET),
  104. (CONFIG_HPS_SDRPLLGRP_DDRDQCLK_PHASE <<
  105. CLKMGR_SDRPLLGRP_DDRDQCLK_PHASE_OFFSET) |
  106. (CONFIG_HPS_SDRPLLGRP_DDRDQCLK_CNT <<
  107. CLKMGR_SDRPLLGRP_DDRDQCLK_CNT_OFFSET),
  108. (CONFIG_HPS_SDRPLLGRP_S2FUSER2CLK_PHASE <<
  109. CLKMGR_SDRPLLGRP_S2FUSER2CLK_PHASE_OFFSET) |
  110. (CONFIG_HPS_SDRPLLGRP_S2FUSER2CLK_CNT <<
  111. CLKMGR_SDRPLLGRP_S2FUSER2CLK_CNT_OFFSET),
  112. /* altera group */
  113. CONFIG_HPS_ALTERAGRP_MPUCLK,
  114. };
  115. const struct cm_config * const cm_get_default_config(void)
  116. {
  117. return &cm_default_cfg;
  118. }
  119. const unsigned int cm_get_osc_clk_hz(const int osc)
  120. {
  121. if (osc == 1)
  122. return CONFIG_HPS_CLK_OSC1_HZ;
  123. else if (osc == 2)
  124. return CONFIG_HPS_CLK_OSC2_HZ;
  125. else
  126. return 0;
  127. }
  128. const unsigned int cm_get_f2s_per_ref_clk_hz(void)
  129. {
  130. return CONFIG_HPS_CLK_F2S_PER_REF_HZ;
  131. }
  132. const unsigned int cm_get_f2s_sdr_ref_clk_hz(void)
  133. {
  134. return CONFIG_HPS_CLK_F2S_SDR_REF_HZ;
  135. }