clockdomains33xx_data.c 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. // SPDX-License-Identifier: GPL-2.0-only
  2. /*
  3. * AM33XX Clock Domain data.
  4. *
  5. * Copyright (C) 2011-2012 Texas Instruments Incorporated - https://www.ti.com/
  6. * Vaibhav Hiremath <[email protected]>
  7. */
  8. #include <linux/kernel.h>
  9. #include <linux/io.h>
  10. #include "clockdomain.h"
  11. #include "cm.h"
  12. #include "cm33xx.h"
  13. #include "cm-regbits-33xx.h"
  14. static struct clockdomain l4ls_am33xx_clkdm = {
  15. .name = "l4ls_clkdm",
  16. .pwrdm = { .name = "per_pwrdm" },
  17. .cm_inst = AM33XX_CM_PER_MOD,
  18. .clkdm_offs = AM33XX_CM_PER_L4LS_CLKSTCTRL_OFFSET,
  19. .flags = CLKDM_CAN_SWSUP,
  20. };
  21. static struct clockdomain l3s_am33xx_clkdm = {
  22. .name = "l3s_clkdm",
  23. .pwrdm = { .name = "per_pwrdm" },
  24. .cm_inst = AM33XX_CM_PER_MOD,
  25. .clkdm_offs = AM33XX_CM_PER_L3S_CLKSTCTRL_OFFSET,
  26. .flags = CLKDM_CAN_SWSUP,
  27. };
  28. static struct clockdomain l4fw_am33xx_clkdm = {
  29. .name = "l4fw_clkdm",
  30. .pwrdm = { .name = "per_pwrdm" },
  31. .cm_inst = AM33XX_CM_PER_MOD,
  32. .clkdm_offs = AM33XX_CM_PER_L4FW_CLKSTCTRL_OFFSET,
  33. .flags = CLKDM_CAN_SWSUP,
  34. };
  35. static struct clockdomain l3_am33xx_clkdm = {
  36. .name = "l3_clkdm",
  37. .pwrdm = { .name = "per_pwrdm" },
  38. .cm_inst = AM33XX_CM_PER_MOD,
  39. .clkdm_offs = AM33XX_CM_PER_L3_CLKSTCTRL_OFFSET,
  40. .flags = CLKDM_CAN_SWSUP,
  41. };
  42. static struct clockdomain l4hs_am33xx_clkdm = {
  43. .name = "l4hs_clkdm",
  44. .pwrdm = { .name = "per_pwrdm" },
  45. .cm_inst = AM33XX_CM_PER_MOD,
  46. .clkdm_offs = AM33XX_CM_PER_L4HS_CLKSTCTRL_OFFSET,
  47. .flags = CLKDM_CAN_SWSUP,
  48. };
  49. static struct clockdomain ocpwp_l3_am33xx_clkdm = {
  50. .name = "ocpwp_l3_clkdm",
  51. .pwrdm = { .name = "per_pwrdm" },
  52. .cm_inst = AM33XX_CM_PER_MOD,
  53. .clkdm_offs = AM33XX_CM_PER_OCPWP_L3_CLKSTCTRL_OFFSET,
  54. .flags = CLKDM_CAN_SWSUP,
  55. };
  56. static struct clockdomain pruss_ocp_am33xx_clkdm = {
  57. .name = "pruss_ocp_clkdm",
  58. .pwrdm = { .name = "per_pwrdm" },
  59. .cm_inst = AM33XX_CM_PER_MOD,
  60. .clkdm_offs = AM33XX_CM_PER_PRUSS_CLKSTCTRL_OFFSET,
  61. .flags = CLKDM_CAN_SWSUP,
  62. };
  63. static struct clockdomain cpsw_125mhz_am33xx_clkdm = {
  64. .name = "cpsw_125mhz_clkdm",
  65. .pwrdm = { .name = "per_pwrdm" },
  66. .cm_inst = AM33XX_CM_PER_MOD,
  67. .clkdm_offs = AM33XX_CM_PER_CPSW_CLKSTCTRL_OFFSET,
  68. .flags = CLKDM_CAN_SWSUP,
  69. };
  70. static struct clockdomain lcdc_am33xx_clkdm = {
  71. .name = "lcdc_clkdm",
  72. .pwrdm = { .name = "per_pwrdm" },
  73. .cm_inst = AM33XX_CM_PER_MOD,
  74. .clkdm_offs = AM33XX_CM_PER_LCDC_CLKSTCTRL_OFFSET,
  75. .flags = CLKDM_CAN_SWSUP,
  76. };
  77. static struct clockdomain clk_24mhz_am33xx_clkdm = {
  78. .name = "clk_24mhz_clkdm",
  79. .pwrdm = { .name = "per_pwrdm" },
  80. .cm_inst = AM33XX_CM_PER_MOD,
  81. .clkdm_offs = AM33XX_CM_PER_CLK_24MHZ_CLKSTCTRL_OFFSET,
  82. .flags = CLKDM_CAN_SWSUP,
  83. };
  84. static struct clockdomain l4_wkup_am33xx_clkdm = {
  85. .name = "l4_wkup_clkdm",
  86. .pwrdm = { .name = "wkup_pwrdm" },
  87. .cm_inst = AM33XX_CM_WKUP_MOD,
  88. .clkdm_offs = AM33XX_CM_WKUP_CLKSTCTRL_OFFSET,
  89. .flags = CLKDM_CAN_SWSUP,
  90. };
  91. static struct clockdomain l3_aon_am33xx_clkdm = {
  92. .name = "l3_aon_clkdm",
  93. .pwrdm = { .name = "wkup_pwrdm" },
  94. .cm_inst = AM33XX_CM_WKUP_MOD,
  95. .clkdm_offs = AM33XX_CM_L3_AON_CLKSTCTRL_OFFSET,
  96. .flags = CLKDM_CAN_SWSUP,
  97. };
  98. static struct clockdomain l4_wkup_aon_am33xx_clkdm = {
  99. .name = "l4_wkup_aon_clkdm",
  100. .pwrdm = { .name = "wkup_pwrdm" },
  101. .cm_inst = AM33XX_CM_WKUP_MOD,
  102. .clkdm_offs = AM33XX_CM_L4_WKUP_AON_CLKSTCTRL_OFFSET,
  103. .flags = CLKDM_CAN_SWSUP,
  104. };
  105. static struct clockdomain mpu_am33xx_clkdm = {
  106. .name = "mpu_clkdm",
  107. .pwrdm = { .name = "mpu_pwrdm" },
  108. .cm_inst = AM33XX_CM_MPU_MOD,
  109. .clkdm_offs = AM33XX_CM_MPU_CLKSTCTRL_OFFSET,
  110. .flags = CLKDM_CAN_SWSUP,
  111. };
  112. static struct clockdomain l4_rtc_am33xx_clkdm = {
  113. .name = "l4_rtc_clkdm",
  114. .pwrdm = { .name = "rtc_pwrdm" },
  115. .cm_inst = AM33XX_CM_RTC_MOD,
  116. .clkdm_offs = AM33XX_CM_RTC_CLKSTCTRL_OFFSET,
  117. .flags = CLKDM_CAN_SWSUP,
  118. };
  119. static struct clockdomain gfx_l3_am33xx_clkdm = {
  120. .name = "gfx_l3_clkdm",
  121. .pwrdm = { .name = "gfx_pwrdm" },
  122. .cm_inst = AM33XX_CM_GFX_MOD,
  123. .clkdm_offs = AM33XX_CM_GFX_L3_CLKSTCTRL_OFFSET,
  124. .flags = CLKDM_CAN_SWSUP,
  125. };
  126. static struct clockdomain gfx_l4ls_gfx_am33xx_clkdm = {
  127. .name = "gfx_l4ls_gfx_clkdm",
  128. .pwrdm = { .name = "gfx_pwrdm" },
  129. .cm_inst = AM33XX_CM_GFX_MOD,
  130. .clkdm_offs = AM33XX_CM_GFX_L4LS_GFX_CLKSTCTRL__1_OFFSET,
  131. .flags = CLKDM_CAN_SWSUP,
  132. };
  133. static struct clockdomain l4_cefuse_am33xx_clkdm = {
  134. .name = "l4_cefuse_clkdm",
  135. .pwrdm = { .name = "cefuse_pwrdm" },
  136. .cm_inst = AM33XX_CM_CEFUSE_MOD,
  137. .clkdm_offs = AM33XX_CM_CEFUSE_CLKSTCTRL_OFFSET,
  138. .flags = CLKDM_CAN_SWSUP,
  139. };
  140. static struct clockdomain *clockdomains_am33xx[] __initdata = {
  141. &l4ls_am33xx_clkdm,
  142. &l3s_am33xx_clkdm,
  143. &l4fw_am33xx_clkdm,
  144. &l3_am33xx_clkdm,
  145. &l4hs_am33xx_clkdm,
  146. &ocpwp_l3_am33xx_clkdm,
  147. &pruss_ocp_am33xx_clkdm,
  148. &cpsw_125mhz_am33xx_clkdm,
  149. &lcdc_am33xx_clkdm,
  150. &clk_24mhz_am33xx_clkdm,
  151. &l4_wkup_am33xx_clkdm,
  152. &l3_aon_am33xx_clkdm,
  153. &l4_wkup_aon_am33xx_clkdm,
  154. &mpu_am33xx_clkdm,
  155. &l4_rtc_am33xx_clkdm,
  156. &gfx_l3_am33xx_clkdm,
  157. &gfx_l4ls_gfx_am33xx_clkdm,
  158. &l4_cefuse_am33xx_clkdm,
  159. NULL,
  160. };
  161. void __init am33xx_clockdomains_init(void)
  162. {
  163. clkdm_register_platform_funcs(&am33xx_clkdm_operations);
  164. clkdm_register_clkdms(clockdomains_am33xx);
  165. clkdm_complete_init();
  166. }