clk-rk3576.c 109 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839
  1. /*
  2. * Copyright (c) 2006-2022, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2022-3-08 GuEe-GUI the first version
  9. */
  10. #include "clk-rk-composite.h"
  11. #include "clk-rk-cpu.h"
  12. #include "clk-rk-divider.h"
  13. #include "clk-rk-factor.h"
  14. #include "clk-rk-fraction-divider.h"
  15. #include "clk-rk-gate.h"
  16. #include "clk-rk.h"
  17. #include "clk-rk-half-divider.h"
  18. #include "clk-rk-mmc-phase.h"
  19. #include "clk-rk-muxgrf.h"
  20. #include "clk-rk-mux.h"
  21. #include "clk-rk-pll.h"
  22. #define DBG_TAG "clk.rk3576"
  23. #define DBG_LVL DBG_INFO
  24. #include <rtdbg.h>
  25. #include <dt-bindings/clock/rk3576-cru.h>
  26. #define RK3576_GRF_SOC_STATUS0 0x600
  27. #define RK3576_PMU0_GRF_OSC_CON6 0x18
  28. #define RK3576_PHP_CRU_BASE 0x8000
  29. #define RK3576_SECURE_NS_CRU_BASE 0x10000
  30. #define RK3576_PMU_CRU_BASE 0x20000
  31. #define RK3576_BIGCORE_CRU_BASE 0x38000
  32. #define RK3576_LITCORE_CRU_BASE 0x40000
  33. #define RK3576_CCI_CRU_BASE 0x48000
  34. #define RK3576_PLL_CON(x) ((x) * 0x4)
  35. #define RK3576_MODE_CON0 0x280
  36. #define RK3576_BPLL_MODE_CON0 (RK3576_BIGCORE_CRU_BASE + 0x280)
  37. #define RK3576_LPLL_MODE_CON0 (RK3576_LITCORE_CRU_BASE + 0x280)
  38. #define RK3576_PPLL_MODE_CON0 (RK3576_PHP_CRU_BASE + 0x280)
  39. #define RK3576_CLKSEL_CON(x) ((x) * 0x4 + 0x300)
  40. #define RK3576_CLKGATE_CON(x) ((x) * 0x4 + 0x800)
  41. #define RK3576_SOFTRST_CON(x) ((x) * 0x4 + 0xa00)
  42. #define RK3576_GLB_CNT_TH 0xc00
  43. #define RK3576_GLB_SRST_FST 0xc08
  44. #define RK3576_GLB_SRST_SND 0xc0c
  45. #define RK3576_GLB_RST_CON 0xc10
  46. #define RK3576_GLB_RST_ST 0xc04
  47. #define RK3576_SDIO_CON0 0xc24
  48. #define RK3576_SDIO_CON1 0xc28
  49. #define RK3576_SDMMC_CON0 0xc30
  50. #define RK3576_SDMMC_CON1 0xc34
  51. #define RK3576_PHP_CLKSEL_CON(x) ((x) * 0x4 + RK3576_PHP_CRU_BASE + 0x300)
  52. #define RK3576_PHP_CLKGATE_CON(x) ((x) * 0x4 + RK3576_PHP_CRU_BASE + 0x800)
  53. #define RK3576_PHP_SOFTRST_CON(x) ((x) * 0x4 + RK3576_PHP_CRU_BASE + 0xa00)
  54. #define RK3576_PMU_PLL_CON(x) ((x) * 0x4 + RK3576_PHP_CRU_BASE)
  55. #define RK3576_PMU_CLKSEL_CON(x) ((x) * 0x4 + RK3576_PMU_CRU_BASE + 0x300)
  56. #define RK3576_PMU_CLKGATE_CON(x) ((x) * 0x4 + RK3576_PMU_CRU_BASE + 0x800)
  57. #define RK3576_PMU_SOFTRST_CON(x) ((x) * 0x4 + RK3576_PMU_CRU_BASE + 0xa00)
  58. #define RK3576_SECURE_NS_CLKSEL_CON(x) ((x) * 0x4 + RK3576_SECURE_NS_CRU_BASE + 0x300)
  59. #define RK3576_SECURE_NS_CLKGATE_CON(x) ((x) * 0x4 + RK3576_SECURE_NS_CRU_BASE + 0x800)
  60. #define RK3576_SECURE_NS_SOFTRST_CON(x) ((x) * 0x4 + RK3576_SECURE_NS_CRU_BASE + 0xa00)
  61. #define RK3576_CCI_CLKSEL_CON(x) ((x) * 0x4 + RK3576_CCI_CRU_BASE + 0x300)
  62. #define RK3576_CCI_CLKGATE_CON(x) ((x) * 0x4 + RK3576_CCI_CRU_BASE + 0x800)
  63. #define RK3576_CCI_SOFTRST_CON(x) ((x) * 0x4 + RK3576_CCI_CRU_BASE + 0xa00)
  64. #define RK3576_BPLL_CON(x) ((x) * 0x4 + RK3576_BIGCORE_CRU_BASE)
  65. #define RK3576_BIGCORE_CLKSEL_CON(x) ((x) * 0x4 + RK3576_BIGCORE_CRU_BASE + 0x300)
  66. #define RK3576_BIGCORE_CLKGATE_CON(x) ((x) * 0x4 + RK3576_BIGCORE_CRU_BASE + 0x800)
  67. #define RK3576_BIGCORE_SOFTRST_CON(x) ((x) * 0x4 + RK3576_BIGCORE_CRU_BASE + 0xa00)
  68. #define RK3576_LPLL_CON(x) ((x) * 0x4 + RK3576_CCI_CRU_BASE)
  69. #define RK3576_LITCORE_CLKSEL_CON(x) ((x) * 0x4 + RK3576_LITCORE_CRU_BASE + 0x300)
  70. #define RK3576_LITCORE_CLKGATE_CON(x) ((x) * 0x4 + RK3576_LITCORE_CRU_BASE + 0x800)
  71. #define RK3576_LITCORE_SOFTRST_CON(x) ((x) * 0x4 + RK3576_LITCORE_CRU_BASE + 0xa00)
  72. #define RK3576_NON_SECURE_GATING_CON00 0xc48
  73. #define RK3576_ACLK_M_BIGCORE_DIV_MASK 0x1f
  74. #define RK3576_ACLK_M_BIGCORE_DIV_SHIFT 0
  75. #define RK3576_ACLK_M_LITCORE_DIV_MASK 0x1f
  76. #define RK3576_ACLK_M_LITCORE_DIV_SHIFT 8
  77. #define RK3576_PCLK_DBG_LITCORE_DIV_MASK 0x1f
  78. #define RK3576_PCLK_DBG_LITCORE_DIV_SHIFT 0
  79. #define RK3576_ACLK_CCI_DIV_MASK 0x1f
  80. #define RK3576_ACLK_CCI_DIV_SHIFT 7
  81. #define RK3576_ACLK_CCI_MUX_MASK 0x3
  82. #define RK3576_ACLK_CCI_MUX_SHIFT 12
  83. struct clk_rk3576_cru
  84. {
  85. struct rt_clk_node clk_parent;
  86. struct rt_reset_controller rstc_parent;
  87. struct rockchip_clk_provider provider;
  88. };
  89. static struct rockchip_pll_rate_table rk3576_pll_rates[] =
  90. {
  91. /* _mhz, _p, _m, _s, _k */
  92. RK3588_PLL_RATE(2520000000, 2, 210, 0, 0),
  93. RK3588_PLL_RATE(2496000000, 2, 208, 0, 0),
  94. RK3588_PLL_RATE(2472000000, 2, 206, 0, 0),
  95. RK3588_PLL_RATE(2448000000, 2, 204, 0, 0),
  96. RK3588_PLL_RATE(2424000000, 2, 202, 0, 0),
  97. RK3588_PLL_RATE(2400000000, 2, 200, 0, 0),
  98. RK3588_PLL_RATE(2376000000, 2, 198, 0, 0),
  99. RK3588_PLL_RATE(2352000000, 2, 196, 0, 0),
  100. RK3588_PLL_RATE(2328000000, 2, 194, 0, 0),
  101. RK3588_PLL_RATE(2304000000, 2, 192, 0, 0),
  102. RK3588_PLL_RATE(2280000000, 2, 190, 0, 0),
  103. RK3588_PLL_RATE(2256000000, 2, 376, 1, 0),
  104. RK3588_PLL_RATE(2232000000, 2, 372, 1, 0),
  105. RK3588_PLL_RATE(2208000000, 2, 368, 1, 0),
  106. RK3588_PLL_RATE(2184000000, 2, 364, 1, 0),
  107. RK3588_PLL_RATE(2160000000, 2, 360, 1, 0),
  108. RK3588_PLL_RATE(2136000000, 2, 356, 1, 0),
  109. RK3588_PLL_RATE(2112000000, 2, 352, 1, 0),
  110. RK3588_PLL_RATE(2088000000, 2, 348, 1, 0),
  111. RK3588_PLL_RATE(2064000000, 2, 344, 1, 0),
  112. RK3588_PLL_RATE(2040000000, 2, 340, 1, 0),
  113. RK3588_PLL_RATE(2016000000, 2, 336, 1, 0),
  114. RK3588_PLL_RATE(1992000000, 2, 332, 1, 0),
  115. RK3588_PLL_RATE(1968000000, 2, 328, 1, 0),
  116. RK3588_PLL_RATE(1944000000, 2, 324, 1, 0),
  117. RK3588_PLL_RATE(1920000000, 2, 320, 1, 0),
  118. RK3588_PLL_RATE(1896000000, 2, 316, 1, 0),
  119. RK3588_PLL_RATE(1872000000, 2, 312, 1, 0),
  120. RK3588_PLL_RATE(1848000000, 2, 308, 1, 0),
  121. RK3588_PLL_RATE(1824000000, 2, 304, 1, 0),
  122. RK3588_PLL_RATE(1800000000, 2, 300, 1, 0),
  123. RK3588_PLL_RATE(1776000000, 2, 296, 1, 0),
  124. RK3588_PLL_RATE(1752000000, 2, 292, 1, 0),
  125. RK3588_PLL_RATE(1728000000, 2, 288, 1, 0),
  126. RK3588_PLL_RATE(1704000000, 2, 284, 1, 0),
  127. RK3588_PLL_RATE(1680000000, 2, 280, 1, 0),
  128. RK3588_PLL_RATE(1656000000, 2, 276, 1, 0),
  129. RK3588_PLL_RATE(1632000000, 2, 272, 1, 0),
  130. RK3588_PLL_RATE(1608000000, 2, 268, 1, 0),
  131. RK3588_PLL_RATE(1584000000, 2, 264, 1, 0),
  132. RK3588_PLL_RATE(1560000000, 2, 260, 1, 0),
  133. RK3588_PLL_RATE(1536000000, 2, 256, 1, 0),
  134. RK3588_PLL_RATE(1512000000, 2, 252, 1, 0),
  135. RK3588_PLL_RATE(1488000000, 2, 248, 1, 0),
  136. RK3588_PLL_RATE(1464000000, 2, 244, 1, 0),
  137. RK3588_PLL_RATE(1440000000, 2, 240, 1, 0),
  138. RK3588_PLL_RATE(1416000000, 2, 236, 1, 0),
  139. RK3588_PLL_RATE(1392000000, 2, 232, 1, 0),
  140. RK3588_PLL_RATE(1320000000, 2, 220, 1, 0),
  141. RK3588_PLL_RATE(1200000000, 2, 200, 1, 0),
  142. RK3588_PLL_RATE(1188000000, 2, 198, 1, 0),
  143. RK3588_PLL_RATE(1186814000, 2, 198, 1, 52581),
  144. RK3588_PLL_RATE(1186812000, 2, 198, 1, 52559),
  145. RK3588_PLL_RATE(1109000000, 3, 554, 2, 32767),
  146. RK3588_PLL_RATE(1100000000, 3, 550, 2, 0),
  147. RK3588_PLL_RATE(1051000000, 3, 525, 2, 32767),
  148. RK3588_PLL_RATE(1008000000, 2, 336, 2, 0),
  149. RK3588_PLL_RATE(1000000000, 3, 500, 2, 0),
  150. RK3588_PLL_RATE(983040000, 4, 655, 2, 23592),
  151. RK3588_PLL_RATE(955520000, 3, 477, 2, 49806),
  152. RK3588_PLL_RATE(903168000, 6, 903, 2, 11009),
  153. RK3588_PLL_RATE(900000000, 2, 300, 2, 0),
  154. RK3588_PLL_RATE(816000000, 2, 272, 2, 0),
  155. RK3588_PLL_RATE(786432000, 2, 262, 2, 9437),
  156. RK3588_PLL_RATE(786000000, 1, 131, 2, 0),
  157. RK3588_PLL_RATE(785560000, 3, 392, 2, 51117),
  158. RK3588_PLL_RATE(773000000, 2, 258, 2, 43690),
  159. RK3588_PLL_RATE(722534400, 8, 963, 2, 24850),
  160. RK3588_PLL_RATE(697000000, 2, 232, 2, 21845),
  161. RK3588_PLL_RATE(610400000, 3, 305, 2, 13107),
  162. RK3588_PLL_RATE(604800000, 1, 101, 2, 52428),
  163. RK3588_PLL_RATE(600000000, 2, 200, 2, 0),
  164. RK3588_PLL_RATE(594000000, 2, 198, 2, 0),
  165. RK3588_PLL_RATE(408000000, 2, 272, 3, 0),
  166. RK3588_PLL_RATE(312000000, 2, 208, 3, 0),
  167. RK3588_PLL_RATE(266580000, 1, 178, 4, 47185),
  168. RK3588_PLL_RATE(216000000, 2, 288, 4, 0),
  169. RK3588_PLL_RATE(96000000, 2, 256, 5, 0),
  170. { /* sentinel */ },
  171. };
  172. static struct rockchip_pll_rate_table rk3576_ppll_rates[] =
  173. {
  174. /* _mhz, _p, _m, _s, _k */
  175. RK3588_PLL_RATE(1300000000, 3, 325, 2, 0),
  176. { /* sentinel */ },
  177. };
  178. #define RK3576_BIGCORE_CLKSEL2(_amcore) \
  179. { \
  180. .reg = RK3576_BIGCORE_CLKSEL_CON(2), \
  181. .val = HIWORD_UPDATE(_amcore - 1, RK3576_ACLK_M_BIGCORE_DIV_MASK, \
  182. RK3576_ACLK_M_BIGCORE_DIV_SHIFT), \
  183. }
  184. #define RK3576_LITCORE_CLKSEL1(_amcore) \
  185. { \
  186. .reg = RK3576_LITCORE_CLKSEL_CON(1), \
  187. .val = HIWORD_UPDATE(_amcore - 1, RK3576_ACLK_M_LITCORE_DIV_MASK, \
  188. RK3576_ACLK_M_LITCORE_DIV_SHIFT), \
  189. }
  190. #define RK3576_LITCORE_CLKSEL2(_pclkdbg) \
  191. { \
  192. .reg = RK3576_LITCORE_CLKSEL_CON(2), \
  193. .val = HIWORD_UPDATE(_pclkdbg - 1, RK3576_PCLK_DBG_LITCORE_DIV_MASK,\
  194. RK3576_PCLK_DBG_LITCORE_DIV_SHIFT), \
  195. }
  196. #define RK3576_CCI_CLKSEL4(_ccisel, _div) \
  197. { \
  198. .reg = RK3576_CCI_CLKSEL_CON(4), \
  199. .val = HIWORD_UPDATE(_ccisel, RK3576_ACLK_CCI_MUX_MASK, \
  200. RK3576_ACLK_CCI_MUX_SHIFT) | \
  201. HIWORD_UPDATE(_div - 1, RK3576_ACLK_CCI_DIV_MASK, \
  202. RK3576_ACLK_CCI_DIV_SHIFT), \
  203. }
  204. #define RK3576_CPUBCLK_RATE(_prate, _amcore) \
  205. { \
  206. .prate = _prate##U, \
  207. .divs = \
  208. { \
  209. RK3576_BIGCORE_CLKSEL2(_amcore), \
  210. }, \
  211. }
  212. #define RK3576_CPULCLK_RATE(_prate, _amcore, _pclkdbg, _ccisel) \
  213. { \
  214. .prate = _prate##U, \
  215. .divs = \
  216. { \
  217. RK3576_LITCORE_CLKSEL1(_amcore), \
  218. RK3576_LITCORE_CLKSEL2(_pclkdbg), \
  219. }, \
  220. .pre_muxs = \
  221. { \
  222. RK3576_CCI_CLKSEL4(2, 2), \
  223. }, \
  224. .post_muxs = \
  225. { \
  226. RK3576_CCI_CLKSEL4(_ccisel, 2), \
  227. }, \
  228. }
  229. static struct rockchip_cpu_clk_rate_table rk3576_cpubclk_rates[] =
  230. {
  231. RK3576_CPUBCLK_RATE(2496000000, 2),
  232. RK3576_CPUBCLK_RATE(2400000000, 2),
  233. RK3576_CPUBCLK_RATE(2304000000, 2),
  234. RK3576_CPUBCLK_RATE(2208000000, 2),
  235. RK3576_CPUBCLK_RATE(2184000000, 2),
  236. RK3576_CPUBCLK_RATE(2088000000, 2),
  237. RK3576_CPUBCLK_RATE(2040000000, 2),
  238. RK3576_CPUBCLK_RATE(2016000000, 2),
  239. RK3576_CPUBCLK_RATE(1992000000, 2),
  240. RK3576_CPUBCLK_RATE(1896000000, 2),
  241. RK3576_CPUBCLK_RATE(1800000000, 2),
  242. RK3576_CPUBCLK_RATE(1704000000, 2),
  243. RK3576_CPUBCLK_RATE(1608000000, 2),
  244. RK3576_CPUBCLK_RATE(1584000000, 2),
  245. RK3576_CPUBCLK_RATE(1560000000, 2),
  246. RK3576_CPUBCLK_RATE(1536000000, 2),
  247. RK3576_CPUBCLK_RATE(1512000000, 2),
  248. RK3576_CPUBCLK_RATE(1488000000, 2),
  249. RK3576_CPUBCLK_RATE(1464000000, 2),
  250. RK3576_CPUBCLK_RATE(1440000000, 2),
  251. RK3576_CPUBCLK_RATE(1416000000, 2),
  252. RK3576_CPUBCLK_RATE(1392000000, 2),
  253. RK3576_CPUBCLK_RATE(1368000000, 2),
  254. RK3576_CPUBCLK_RATE(1344000000, 2),
  255. RK3576_CPUBCLK_RATE(1320000000, 2),
  256. RK3576_CPUBCLK_RATE(1296000000, 2),
  257. RK3576_CPUBCLK_RATE(1272000000, 2),
  258. RK3576_CPUBCLK_RATE(1248000000, 2),
  259. RK3576_CPUBCLK_RATE(1224000000, 2),
  260. RK3576_CPUBCLK_RATE(1200000000, 2),
  261. RK3576_CPUBCLK_RATE(1104000000, 2),
  262. RK3576_CPUBCLK_RATE(1008000000, 2),
  263. RK3576_CPUBCLK_RATE(912000000, 2),
  264. RK3576_CPUBCLK_RATE(816000000, 2),
  265. RK3576_CPUBCLK_RATE(696000000, 2),
  266. RK3576_CPUBCLK_RATE(600000000, 2),
  267. RK3576_CPUBCLK_RATE(408000000, 2),
  268. RK3576_CPUBCLK_RATE(312000000, 2),
  269. RK3576_CPUBCLK_RATE(216000000, 2),
  270. RK3576_CPUBCLK_RATE(96000000, 2),
  271. };
  272. static const struct rockchip_cpu_clk_reg_data rk3576_cpubclk_data =
  273. {
  274. .core_reg[0] = RK3576_BIGCORE_CLKSEL_CON(1),
  275. .div_core_shift[0] = 7,
  276. .div_core_mask[0] = 0x1f,
  277. .num_cores = 1,
  278. .mux_core_alt = 1,
  279. .mux_core_main = 0,
  280. .mux_core_shift = 12,
  281. .mux_core_mask = 0x3,
  282. };
  283. static struct rockchip_cpu_clk_rate_table rk3576_cpulclk_rates[] =
  284. {
  285. RK3576_CPULCLK_RATE(2400000000, 2, 6, 3),
  286. RK3576_CPULCLK_RATE(2304000000, 2, 6, 3),
  287. RK3576_CPULCLK_RATE(2208000000, 2, 6, 3),
  288. RK3576_CPULCLK_RATE(2184000000, 2, 6, 3),
  289. RK3576_CPULCLK_RATE(2088000000, 2, 6, 3),
  290. RK3576_CPULCLK_RATE(2040000000, 2, 6, 3),
  291. RK3576_CPULCLK_RATE(2016000000, 2, 6, 3),
  292. RK3576_CPULCLK_RATE(1992000000, 2, 6, 3),
  293. RK3576_CPULCLK_RATE(1896000000, 2, 6, 3),
  294. RK3576_CPULCLK_RATE(1800000000, 2, 6, 3),
  295. RK3576_CPULCLK_RATE(1704000000, 2, 6, 3),
  296. RK3576_CPULCLK_RATE(1608000000, 2, 6, 3),
  297. RK3576_CPULCLK_RATE(1584000000, 2, 6, 3),
  298. RK3576_CPULCLK_RATE(1560000000, 2, 6, 3),
  299. RK3576_CPULCLK_RATE(1536000000, 2, 6, 3),
  300. RK3576_CPULCLK_RATE(1512000000, 2, 6, 3),
  301. RK3576_CPULCLK_RATE(1488000000, 2, 6, 3),
  302. RK3576_CPULCLK_RATE(1464000000, 2, 6, 3),
  303. RK3576_CPULCLK_RATE(1440000000, 2, 6, 3),
  304. RK3576_CPULCLK_RATE(1416000000, 2, 6, 3),
  305. RK3576_CPULCLK_RATE(1392000000, 2, 6, 3),
  306. RK3576_CPULCLK_RATE(1368000000, 2, 6, 3),
  307. RK3576_CPULCLK_RATE(1344000000, 2, 6, 3),
  308. RK3576_CPULCLK_RATE(1320000000, 2, 6, 3),
  309. RK3576_CPULCLK_RATE(1296000000, 2, 6, 3),
  310. RK3576_CPULCLK_RATE(1272000000, 2, 6, 3),
  311. RK3576_CPULCLK_RATE(1248000000, 2, 6, 3),
  312. RK3576_CPULCLK_RATE(1224000000, 2, 6, 3),
  313. RK3576_CPULCLK_RATE(1200000000, 2, 6, 2),
  314. RK3576_CPULCLK_RATE(1104000000, 2, 6, 2),
  315. RK3576_CPULCLK_RATE(1008000000, 2, 6, 2),
  316. RK3576_CPULCLK_RATE(912000000, 2, 6, 2),
  317. RK3576_CPULCLK_RATE(816000000, 2, 6, 2),
  318. RK3576_CPULCLK_RATE(696000000, 2, 6, 2),
  319. RK3576_CPULCLK_RATE(600000000, 2, 6, 2),
  320. RK3576_CPULCLK_RATE(408000000, 2, 6, 2),
  321. RK3576_CPULCLK_RATE(312000000, 2, 6, 2),
  322. RK3576_CPULCLK_RATE(216000000, 2, 6, 2),
  323. RK3576_CPULCLK_RATE(96000000, 2, 6, 2),
  324. };
  325. static const struct rockchip_cpu_clk_reg_data rk3576_cpulclk_data =
  326. {
  327. .core_reg[0] = RK3576_LITCORE_CLKSEL_CON(0),
  328. .div_core_shift[0] = 7,
  329. .div_core_mask[0] = 0x1f,
  330. .num_cores = 1,
  331. .mux_core_alt = 1,
  332. .mux_core_main = 0,
  333. .mux_core_shift = 12,
  334. .mux_core_mask = 0x3,
  335. };
  336. PNAMES(mux_pll_p) = { "xin24m", "xin32k" };
  337. PNAMES(mux_24m_32k_p) = { "xin24m", "xin_osc0_div" };
  338. PNAMES(gpll_24m_p) = { "gpll", "xin24m" };
  339. PNAMES(cpll_24m_p) = { "cpll", "xin24m" };
  340. PNAMES(gpll_cpll_p) = { "gpll", "cpll" };
  341. PNAMES(gpll_spll_p) = { "gpll", "spll" };
  342. PNAMES(gpll_cpll_aupll_p) = { "gpll", "cpll", "aupll" };
  343. PNAMES(gpll_cpll_24m_p) = { "gpll", "cpll", "xin24m" };
  344. PNAMES(gpll_cpll_24m_spll_p) = { "gpll", "cpll", "xin24m", "spll" };
  345. PNAMES(gpll_cpll_aupll_24m_p) = { "gpll", "cpll", "aupll", "xin24m" };
  346. PNAMES(gpll_cpll_aupll_spll_p) = { "gpll", "cpll", "aupll", "spll" };
  347. PNAMES(gpll_cpll_aupll_spll_lpll_p) = { "gpll", "cpll", "aupll", "spll", "lpll_dummy" };
  348. PNAMES(gpll_cpll_spll_bpll_p) = { "gpll", "cpll", "spll", "bpll_dummy" };
  349. PNAMES(gpll_cpll_lpll_bpll_p) = { "gpll", "cpll", "lpll_dummy", "bpll_dummy" };
  350. PNAMES(gpll_spll_cpll_bpll_lpll_p) = { "gpll", "spll", "cpll", "bpll_dummy", "lpll_dummy" };
  351. PNAMES(gpll_cpll_vpll_aupll_24m_p) = { "gpll", "cpll", "vpll", "aupll", "xin24m" };
  352. PNAMES(gpll_cpll_spll_aupll_bpll_p) = { "gpll", "cpll", "spll", "aupll", "bpll_dummy" };
  353. PNAMES(gpll_cpll_spll_bpll_lpll_p) = { "gpll", "cpll", "spll", "bpll_dummy", "lpll_dummy" };
  354. PNAMES(gpll_cpll_spll_lpll_bpll_p) = { "gpll", "cpll", "spll", "lpll_dummy", "bpll_dummy" };
  355. PNAMES(gpll_cpll_vpll_bpll_lpll_p) = { "gpll", "cpll", "vpll", "bpll_dummy", "lpll_dummy" };
  356. PNAMES(gpll_spll_aupll_bpll_lpll_p) = { "gpll", "spll", "aupll", "bpll_dummy", "lpll_dummy" };
  357. PNAMES(gpll_spll_isppvtpll_bpll_lpll_p) = { "gpll", "spll", "isp_pvtpll", "bpll_dummy", "lpll_dummy" };
  358. PNAMES(gpll_cpll_spll_aupll_lpll_24m_p) = { "gpll", "cpll", "spll", "aupll", "lpll_dummy", "xin24m" };
  359. PNAMES(gpll_cpll_spll_vpll_bpll_lpll_p) = { "gpll", "cpll", "spll", "vpll", "bpll_dummy", "lpll_dummy" };
  360. PNAMES(cpll_vpll_lpll_bpll_p) = { "cpll", "vpll", "lpll_dummy", "bpll_dummy" };
  361. PNAMES(mux_24m_ccipvtpll_gpll_lpll_p) = { "xin24m", "cci_pvtpll", "gpll", "lpll" };
  362. PNAMES(mux_24m_spll_gpll_cpll_p) = {"xin24m", "spll", "gpll", "cpll" };
  363. PNAMES(audio_frac_int_p) = { "xin24m", "clk_audio_frac_0", "clk_audio_frac_1", "clk_audio_frac_2", "clk_audio_frac_3", "clk_audio_int_0", "clk_audio_int_1", "clk_audio_int_2" };
  364. PNAMES(audio_frac_p) = { "clk_audio_frac_0", "clk_audio_frac_1", "clk_audio_frac_2", "clk_audio_frac_3" };
  365. PNAMES(mux_100m_24m_p) = { "clk_cpll_div10", "xin24m" };
  366. PNAMES(mux_100m_50m_24m_p) = { "clk_cpll_div10", "clk_cpll_div20", "xin24m" };
  367. PNAMES(mux_100m_24m_lclk0_p) = { "clk_cpll_div10", "xin24m", "lclk_asrc_src_0" };
  368. PNAMES(mux_100m_24m_lclk1_p) = { "clk_cpll_div10", "xin24m", "lclk_asrc_src_1" };
  369. PNAMES(mux_150m_100m_50m_24m_p) = { "clk_gpll_div8", "clk_cpll_div10", "clk_cpll_div20", "xin24m" };
  370. PNAMES(mux_200m_100m_50m_24m_p) = { "clk_gpll_div6", "clk_cpll_div10", "clk_cpll_div20", "xin24m" };
  371. PNAMES(mux_400m_200m_100m_24m_p) = { "clk_gpll_div3", "clk_gpll_div6", "clk_cpll_div10", "xin24m" };
  372. PNAMES(mux_500m_250m_100m_24m_p) = { "clk_cpll_div2", "clk_cpll_div4", "clk_cpll_div10", "xin24m" };
  373. PNAMES(mux_600m_400m_300m_24m_p) = { "clk_gpll_div2", "clk_gpll_div3", "clk_gpll_div4", "xin24m" };
  374. PNAMES(mux_350m_175m_116m_24m_p) = { "clk_spll_div2", "clk_spll_div4", "clk_spll_div6", "xin24m" };
  375. PNAMES(mux_175m_116m_58m_24m_p) = { "clk_spll_div4", "clk_spll_div6", "clk_spll_div12", "xin24m" };
  376. PNAMES(mux_116m_58m_24m_p) = { "clk_spll_div6", "clk_spll_div12", "xin24m" };
  377. PNAMES(mclk_sai0_8ch_p) = { "mclk_sai0_8ch_src", "sai0_mclkin", "sai1_mclkin" };
  378. PNAMES(mclk_sai1_8ch_p) = { "mclk_sai1_8ch_src", "sai1_mclkin" };
  379. PNAMES(mclk_sai2_2ch_p) = { "mclk_sai2_2ch_src", "sai2_mclkin", "sai1_mclkin" };
  380. PNAMES(mclk_sai3_2ch_p) = { "mclk_sai3_2ch_src", "sai3_mclkin", "sai1_mclkin" };
  381. PNAMES(mclk_sai4_2ch_p) = { "mclk_sai4_2ch_src", "sai4_mclkin", "sai1_mclkin" };
  382. PNAMES(mclk_sai5_8ch_p) = { "mclk_sai5_8ch_src", "sai1_mclkin" };
  383. PNAMES(mclk_sai6_8ch_p) = { "mclk_sai6_8ch_src", "sai1_mclkin" };
  384. PNAMES(mclk_sai7_8ch_p) = { "mclk_sai7_8ch_src", "sai1_mclkin" };
  385. PNAMES(mclk_sai8_8ch_p) = { "mclk_sai8_8ch_src", "sai1_mclkin" };
  386. PNAMES(mclk_sai9_8ch_p) = { "mclk_sai9_8ch_src", "sai1_mclkin" };
  387. PNAMES(uart1_p) = { "clk_uart1_src_top", "xin24m" };
  388. PNAMES(clk_gmac1_ptp_ref_src_p) = { "gpll", "cpll", "gmac1_ptp_refclk_in" };
  389. PNAMES(clk_gmac0_ptp_ref_src_p) = { "gpll", "cpll", "gmac0_ptp_refclk_in" };
  390. PNAMES(dclk_ebc_p) = { "gpll", "cpll", "vpll", "aupll", "lpll_dummy", "dclk_ebc_frac", "xin24m" };
  391. PNAMES(dclk_vp0_p) = { "dclk_vp0_src", "clk_hdmiphy_pixel0" };
  392. PNAMES(dclk_vp1_p) = { "dclk_vp1_src", "clk_hdmiphy_pixel0" };
  393. PNAMES(dclk_vp2_p) = { "dclk_vp2_src", "clk_hdmiphy_pixel0" };
  394. PNAMES(clk_uart_p) = { "gpll", "cpll", "aupll", "xin24m", "clk_uart_frac_0", "clk_uart_frac_1", "clk_uart_frac_2"};
  395. PNAMES(clk_freq_pwm1_p) = { "sai0_mclkin", "sai1_mclkin", "sai2_mclkin", "sai3_mclkin", "sai4_mclkin", "sai_sclkin_freq"};
  396. PNAMES(clk_counter_pwm1_p) = { "sai0_mclkin", "sai1_mclkin", "sai2_mclkin", "sai3_mclkin", "sai4_mclkin", "sai_sclkin_counter"};
  397. PNAMES(sai_sclkin_freq_p) = { "sai0_sclk_in", "sai1_sclk_in", "sai2_sclk_in", "sai3_sclk_in", "sai4_sclk_in"};
  398. PNAMES(clk_ref_pcie0_phy_p) = { "clk_pcie_100m_src", "clk_pcie_100m_nduty_src", "xin24m"};
  399. PNAMES(hclk_vi_root_p) = { "clk_gpll_div6", "clk_cpll_div10", "aclk_vi_root_inter", "xin24m"};
  400. PNAMES(clk_ref_osc_mphy_p) = { "xin24m", "clk_gpio_mphy_i", "clk_ref_mphy_26m"};
  401. PNAMES(mux_pmu200m_pmu100m_pmu50m_24m_p) = { "clk_200m_pmu_src", "clk_100m_pmu_src", "clk_50m_pmu_src", "xin24m" };
  402. PNAMES(mux_pmu100m_pmu50m_24m_p) = { "clk_100m_pmu_src", "clk_50m_pmu_src", "xin24m" };
  403. PNAMES(mux_pmu100m_24m_32k_p) = { "clk_100m_pmu_src", "xin24m", "xin_osc0_div" };
  404. PNAMES(clk_phy_ref_src_p) = { "xin24m", "clk_pmuphy_ref_src" };
  405. PNAMES(clk_usbphy_ref_src_p) = { "usbphy0_24m", "usbphy1_24m" };
  406. PNAMES(clk_cpll_ref_src_p) = { "xin24m", "clk_usbphy_ref_src" };
  407. PNAMES(clk_aupll_ref_src_p) = { "xin24m", "clk_aupll_ref_io" };
  408. #define MFLAGS CLK_MUX_HIWORD_MASK
  409. #define DFLAGS CLK_DIVIDER_HIWORD_MASK
  410. #define GFLAGS (CLK_GATE_HIWORD_MASK | CLK_GATE_SET_TO_DISABLE)
  411. static struct rockchip_pll_clk_cell rk3576_pll_bpll =
  412. PLL_RAW(pll_type_rk3588_core, PLL_BPLL, "bpll", mux_pll_p, RT_ARRAY_SIZE(mux_pll_p), 0, RK3576_PLL_CON(0), RK3576_BPLL_MODE_CON0,
  413. 0, 15, RK3576_GRF_SOC_STATUS0, 0, rk3576_pll_rates);
  414. static struct rockchip_pll_clk_cell rk3576_pll_lpll =
  415. PLL_RAW(pll_type_rk3588_core, PLL_LPLL, "lpll", mux_pll_p, RT_ARRAY_SIZE(mux_pll_p), 0, RK3576_LPLL_CON(16), RK3576_LPLL_MODE_CON0,
  416. 0, 15, RK3576_GRF_SOC_STATUS0, 0, rk3576_pll_rates);
  417. static struct rockchip_pll_clk_cell rk3576_pll_vpll =
  418. PLL_RAW(pll_type_rk3588, PLL_VPLL, "vpll", mux_pll_p, RT_ARRAY_SIZE(mux_pll_p), 0, RK3576_PLL_CON(88), RK3576_MODE_CON0,
  419. 4, 15, RK3576_GRF_SOC_STATUS0, 0, rk3576_pll_rates);
  420. static struct rockchip_pll_clk_cell rk3576_pll_aupll =
  421. PLL_RAW(pll_type_rk3588, PLL_AUPLL, "aupll", mux_pll_p, RT_ARRAY_SIZE(mux_pll_p), 0, RK3576_PLL_CON(96), RK3576_MODE_CON0,
  422. 6, 15, RK3576_GRF_SOC_STATUS0, 0, rk3576_pll_rates);
  423. static struct rockchip_pll_clk_cell rk3576_pll_cpll =
  424. PLL_RAW(pll_type_rk3588, PLL_CPLL, "cpll", mux_pll_p, RT_ARRAY_SIZE(mux_pll_p), RT_CLK_F_IGNORE_UNUSED, RK3576_PLL_CON(104), RK3576_MODE_CON0,
  425. 8, 15, RK3576_GRF_SOC_STATUS0, 0, rk3576_pll_rates);
  426. static struct rockchip_pll_clk_cell rk3576_pll_gpll =
  427. PLL_RAW(pll_type_rk3588, PLL_GPLL, "gpll", mux_pll_p, RT_ARRAY_SIZE(mux_pll_p), RT_CLK_F_IGNORE_UNUSED, RK3576_PLL_CON(112), RK3576_MODE_CON0,
  428. 2, 15, RK3576_GRF_SOC_STATUS0, 0, rk3576_pll_rates);
  429. static struct rockchip_pll_clk_cell rk3576_pll_ppll =
  430. PLL_RAW(pll_type_rk3588_ddr, PLL_PPLL, "ppll", mux_pll_p, RT_ARRAY_SIZE(mux_pll_p), RT_CLK_F_IGNORE_UNUSED, RK3576_PMU_PLL_CON(128), RK3576_MODE_CON0,
  431. 10, 15, RK3576_GRF_SOC_STATUS0, 0, rk3576_ppll_rates);
  432. static struct rt_clk_cell *rk3576_clk_cells[] =
  433. {
  434. [PLL_BPLL] = &rk3576_pll_bpll.rk_cell.cell,
  435. [PLL_LPLL] = &rk3576_pll_lpll.rk_cell.cell,
  436. [PLL_VPLL] = &rk3576_pll_vpll.rk_cell.cell,
  437. [PLL_AUPLL] = &rk3576_pll_aupll.rk_cell.cell,
  438. [PLL_CPLL] = &rk3576_pll_cpll.rk_cell.cell,
  439. [PLL_GPLL] = &rk3576_pll_gpll.rk_cell.cell,
  440. [PLL_PPLL] = &rk3576_pll_ppll.rk_cell.cell,
  441. [ARMCLK_L] = CPU(ARMCLK_L, "armclk_l", &rk3576_pll_lpll.rk_cell, &rk3576_pll_gpll.rk_cell,
  442. rk3576_cpulclk_rates, RT_ARRAY_SIZE(rk3576_cpulclk_rates), &rk3576_cpulclk_data),
  443. [ARMCLK_B] = CPU(ARMCLK_B, "armclk_b", &rk3576_pll_bpll.rk_cell, &rk3576_pll_gpll.rk_cell,
  444. rk3576_cpubclk_rates, RT_ARRAY_SIZE(rk3576_cpubclk_rates), &rk3576_cpubclk_data),
  445. [CLK_CPLL_DIV20] = COMPOSITE(CLK_CPLL_DIV20, "clk_cpll_div20", gpll_cpll_p, RT_CLK_F_IS_CRITICAL,
  446. RK3576_CLKSEL_CON(0), 5, 1, MFLAGS, 0, 5, DFLAGS,
  447. RK3576_CLKGATE_CON(0), 0, GFLAGS),
  448. [CLK_CPLL_DIV10] = COMPOSITE(CLK_CPLL_DIV10, "clk_cpll_div10", gpll_cpll_p, RT_CLK_F_IS_CRITICAL,
  449. RK3576_CLKSEL_CON(0), 11, 1, MFLAGS, 6, 5, DFLAGS,
  450. RK3576_CLKGATE_CON(0), 1, GFLAGS),
  451. [CLK_GPLL_DIV8] = COMPOSITE(CLK_GPLL_DIV8, "clk_gpll_div8", gpll_cpll_p, RT_CLK_F_IS_CRITICAL,
  452. RK3576_CLKSEL_CON(1), 5, 1, MFLAGS, 0, 5, DFLAGS,
  453. RK3576_CLKGATE_CON(0), 2, GFLAGS),
  454. [CLK_GPLL_DIV6] = COMPOSITE(CLK_GPLL_DIV6, "clk_gpll_div6", gpll_cpll_p, RT_CLK_F_IS_CRITICAL,
  455. RK3576_CLKSEL_CON(1), 11, 1, MFLAGS, 6, 5, DFLAGS,
  456. RK3576_CLKGATE_CON(0), 3, GFLAGS),
  457. [CLK_CPLL_DIV4] = COMPOSITE(CLK_CPLL_DIV4, "clk_cpll_div4", gpll_cpll_p, RT_CLK_F_IS_CRITICAL,
  458. RK3576_CLKSEL_CON(2), 5, 1, MFLAGS, 0, 5, DFLAGS,
  459. RK3576_CLKGATE_CON(0), 4, GFLAGS),
  460. [CLK_GPLL_DIV4] = COMPOSITE(CLK_GPLL_DIV4, "clk_gpll_div4", gpll_cpll_p, RT_CLK_F_IS_CRITICAL,
  461. RK3576_CLKSEL_CON(2), 11, 1, MFLAGS, 6, 5, DFLAGS,
  462. RK3576_CLKGATE_CON(0), 5, GFLAGS),
  463. [CLK_SPLL_DIV2] = COMPOSITE(CLK_SPLL_DIV2, "clk_spll_div2", gpll_cpll_spll_bpll_p, RT_CLK_F_IS_CRITICAL,
  464. RK3576_CLKSEL_CON(3), 5, 2, MFLAGS, 0, 5, DFLAGS,
  465. RK3576_CLKGATE_CON(0), 6, GFLAGS),
  466. [CLK_GPLL_DIV3] = COMPOSITE(CLK_GPLL_DIV3, "clk_gpll_div3", gpll_cpll_p, RT_CLK_F_IS_CRITICAL,
  467. RK3576_CLKSEL_CON(3), 12, 1, MFLAGS, 7, 5, DFLAGS,
  468. RK3576_CLKGATE_CON(0), 7, GFLAGS),
  469. [CLK_CPLL_DIV2] = COMPOSITE(CLK_CPLL_DIV2, "clk_cpll_div2", gpll_cpll_p, RT_CLK_F_IS_CRITICAL,
  470. RK3576_CLKSEL_CON(4), 11, 1, MFLAGS, 6, 5, DFLAGS,
  471. RK3576_CLKGATE_CON(0), 9, GFLAGS),
  472. [CLK_GPLL_DIV2] = COMPOSITE(CLK_GPLL_DIV2, "clk_gpll_div2", gpll_cpll_p, RT_CLK_F_IS_CRITICAL,
  473. RK3576_CLKSEL_CON(5), 5, 1, MFLAGS, 0, 5, DFLAGS,
  474. RK3576_CLKGATE_CON(0), 10, GFLAGS),
  475. [CLK_SPLL_DIV1] = COMPOSITE(CLK_SPLL_DIV1, "clk_spll_div1", gpll_cpll_spll_bpll_lpll_p, RT_CLK_F_IS_CRITICAL,
  476. RK3576_CLKSEL_CON(6), 5, 3, MFLAGS, 0, 5, DFLAGS,
  477. RK3576_CLKGATE_CON(0), 12, GFLAGS),
  478. [PCLK_TOP_ROOT] = COMPOSITE_NODIV(PCLK_TOP_ROOT, "pclk_top_root", mux_100m_50m_24m_p, RT_CLK_F_IS_CRITICAL,
  479. RK3576_CLKSEL_CON(8), 7, 2, MFLAGS,
  480. RK3576_CLKGATE_CON(1), 1, GFLAGS),
  481. [ACLK_TOP] = COMPOSITE(ACLK_TOP, "aclk_top", gpll_cpll_aupll_p, RT_CLK_F_IS_CRITICAL,
  482. RK3576_CLKSEL_CON(9), 5, 2, MFLAGS, 0, 5, DFLAGS,
  483. RK3576_CLKGATE_CON(1), 3, GFLAGS),
  484. [HCLK_TOP] = COMPOSITE_NODIV(HCLK_TOP, "hclk_top", mux_200m_100m_50m_24m_p, RT_CLK_F_IS_CRITICAL,
  485. RK3576_CLKSEL_CON(19), 2, 2, MFLAGS,
  486. RK3576_CLKGATE_CON(1), 14, GFLAGS),
  487. [CLK_AUDIO_FRAC_0] = COMPOSITE_FRAC(CLK_AUDIO_FRAC_0, "clk_audio_frac_0", "clk_audio_frac_0_src", 0,
  488. RK3576_CLKSEL_CON(12), CLK_FRAC_DIVIDER_NO_LIMIT,
  489. RK3576_CLKGATE_CON(1), 10, GFLAGS),
  490. [CLK_AUDIO_FRAC_1] = COMPOSITE_FRAC(CLK_AUDIO_FRAC_1, "clk_audio_frac_1", "clk_audio_frac_1_src", 0,
  491. RK3576_CLKSEL_CON(14), CLK_FRAC_DIVIDER_NO_LIMIT,
  492. RK3576_CLKGATE_CON(1), 11, GFLAGS),
  493. [CLK_AUDIO_FRAC_2] = COMPOSITE_FRAC(CLK_AUDIO_FRAC_2, "clk_audio_frac_2", "clk_audio_frac_2_src", 0,
  494. RK3576_CLKSEL_CON(16), CLK_FRAC_DIVIDER_NO_LIMIT,
  495. RK3576_CLKGATE_CON(1), 12, GFLAGS),
  496. [CLK_AUDIO_FRAC_3] = COMPOSITE_FRAC(CLK_AUDIO_FRAC_3, "clk_audio_frac_3", "clk_audio_frac_3_src", 0,
  497. RK3576_CLKSEL_CON(18), CLK_FRAC_DIVIDER_NO_LIMIT,
  498. RK3576_CLKGATE_CON(1), 13, GFLAGS),
  499. [CLK_UART_FRAC_0] = COMPOSITE_FRAC(CLK_UART_FRAC_0, "clk_uart_frac_0", "clk_uart_frac_0_src", 0,
  500. RK3576_CLKSEL_CON(21), CLK_FRAC_DIVIDER_NO_LIMIT,
  501. RK3576_CLKGATE_CON(2), 5, GFLAGS),
  502. [CLK_UART_FRAC_1] = COMPOSITE_FRAC(CLK_UART_FRAC_1, "clk_uart_frac_1", "clk_uart_frac_1_src", 0,
  503. RK3576_CLKSEL_CON(23), CLK_FRAC_DIVIDER_NO_LIMIT,
  504. RK3576_CLKGATE_CON(2), 6, GFLAGS),
  505. [CLK_UART_FRAC_2] = COMPOSITE_FRAC(CLK_UART_FRAC_2, "clk_uart_frac_2", "clk_uart_frac_2_src", 0,
  506. RK3576_CLKSEL_CON(25), CLK_FRAC_DIVIDER_NO_LIMIT,
  507. RK3576_CLKGATE_CON(2), 7, GFLAGS),
  508. [CLK_UART1_SRC_TOP] = COMPOSITE(CLK_UART1_SRC_TOP, "clk_uart1_src_top", clk_uart_p, 0,
  509. RK3576_CLKSEL_CON(27), 13, 3, MFLAGS, 5, 8, DFLAGS,
  510. RK3576_CLKGATE_CON(2), 13, GFLAGS),
  511. [CLK_AUDIO_INT_0] = COMPOSITE_NOMUX(CLK_AUDIO_INT_0, "clk_audio_int_0", "gpll", 0,
  512. RK3576_CLKSEL_CON(28), 0, 5, DFLAGS,
  513. RK3576_CLKGATE_CON(2), 14, GFLAGS),
  514. [CLK_AUDIO_INT_1] = COMPOSITE_NOMUX(CLK_AUDIO_INT_1, "clk_audio_int_1", "cpll", 0,
  515. RK3576_CLKSEL_CON(28), 5, 5, DFLAGS,
  516. RK3576_CLKGATE_CON(2), 15, GFLAGS),
  517. [CLK_AUDIO_INT_2] = COMPOSITE_NOMUX(CLK_AUDIO_INT_2, "clk_audio_int_2", "aupll", 0,
  518. RK3576_CLKSEL_CON(28), 10, 5, DFLAGS,
  519. RK3576_CLKGATE_CON(3), 0, GFLAGS),
  520. [CLK_PDM0_SRC_TOP] = COMPOSITE(CLK_PDM0_SRC_TOP, "clk_pdm0_src_top", audio_frac_int_p, 0,
  521. RK3576_CLKSEL_CON(29), 9, 3, MFLAGS, 0, 9, DFLAGS,
  522. RK3576_CLKGATE_CON(3), 2, GFLAGS),
  523. [CLK_PDM1_OUT] = GATE(CLK_PDM1_OUT, "clk_pdm1_out", "clk_pdm1", 0,
  524. RK3576_CLKGATE_CON(3), 5, GFLAGS),
  525. [CLK_GMAC0_125M_SRC] = COMPOSITE_NOMUX(CLK_GMAC0_125M_SRC, "clk_gmac0_125m_src", "cpll", 0,
  526. RK3576_CLKSEL_CON(30), 10, 5, DFLAGS,
  527. RK3576_CLKGATE_CON(3), 6, GFLAGS),
  528. [CLK_GMAC1_125M_SRC] = COMPOSITE_NOMUX(CLK_GMAC1_125M_SRC, "clk_gmac1_125m_src", "cpll", 0,
  529. RK3576_CLKSEL_CON(31), 0, 5, DFLAGS,
  530. RK3576_CLKGATE_CON(3), 7, GFLAGS),
  531. [LCLK_ASRC_SRC_0] = COMPOSITE(LCLK_ASRC_SRC_0, "lclk_asrc_src_0", audio_frac_p, 0,
  532. RK3576_CLKSEL_CON(31), 10, 2, MFLAGS, 5, 5, DFLAGS,
  533. RK3576_CLKGATE_CON(3), 10, GFLAGS),
  534. [LCLK_ASRC_SRC_1] = COMPOSITE(LCLK_ASRC_SRC_1, "lclk_asrc_src_1", audio_frac_p, 0,
  535. RK3576_CLKSEL_CON(32), 5, 2, MFLAGS, 0, 5, DFLAGS,
  536. RK3576_CLKGATE_CON(3), 11, GFLAGS),
  537. [REF_CLK0_OUT_PLL] = COMPOSITE(REF_CLK0_OUT_PLL, "ref_clk0_out_pll", gpll_cpll_spll_aupll_lpll_24m_p, 0,
  538. RK3576_CLKSEL_CON(33), 8, 3, MFLAGS, 0, 8, DFLAGS,
  539. RK3576_CLKGATE_CON(4), 1, GFLAGS),
  540. [REF_CLK1_OUT_PLL] = COMPOSITE(REF_CLK1_OUT_PLL, "ref_clk1_out_pll", gpll_cpll_spll_aupll_lpll_24m_p, 0,
  541. RK3576_CLKSEL_CON(34), 8, 3, MFLAGS, 0, 8, DFLAGS,
  542. RK3576_CLKGATE_CON(4), 2, GFLAGS),
  543. [REF_CLK2_OUT_PLL] = COMPOSITE(REF_CLK2_OUT_PLL, "ref_clk2_out_pll", gpll_cpll_spll_aupll_lpll_24m_p, 0,
  544. RK3576_CLKSEL_CON(35), 8, 3, MFLAGS, 0, 8, DFLAGS,
  545. RK3576_CLKGATE_CON(4), 3, GFLAGS),
  546. [REFCLKO25M_GMAC0_OUT] = COMPOSITE(REFCLKO25M_GMAC0_OUT, "refclko25m_gmac0_out", gpll_cpll_p, 0,
  547. RK3576_CLKSEL_CON(36), 7, 1, MFLAGS, 0, 7, DFLAGS,
  548. RK3576_CLKGATE_CON(5), 10, GFLAGS),
  549. [REFCLKO25M_GMAC1_OUT] = COMPOSITE(REFCLKO25M_GMAC1_OUT, "refclko25m_gmac1_out", gpll_cpll_p, 0,
  550. RK3576_CLKSEL_CON(36), 15, 1, MFLAGS, 8, 7, DFLAGS,
  551. RK3576_CLKGATE_CON(5), 11, GFLAGS),
  552. [CLK_CIFOUT_OUT] = COMPOSITE(CLK_CIFOUT_OUT, "clk_cifout_out", gpll_cpll_24m_spll_p, 0,
  553. RK3576_CLKSEL_CON(37), 8, 2, MFLAGS, 0, 8, DFLAGS,
  554. RK3576_CLKGATE_CON(5), 12, GFLAGS),
  555. [CLK_GMAC0_RMII_CRU] = GATE(CLK_GMAC0_RMII_CRU, "clk_gmac0_rmii_cru", "clk_cpll_div20", 0,
  556. RK3576_CLKGATE_CON(5), 13, GFLAGS),
  557. [CLK_GMAC1_RMII_CRU] = GATE(CLK_GMAC1_RMII_CRU, "clk_gmac1_rmii_cru", "clk_cpll_div20", 0,
  558. RK3576_CLKGATE_CON(5), 14, GFLAGS),
  559. [CLK_OTPC_AUTO_RD_G] = GATE(CLK_OTPC_AUTO_RD_G, "clk_otpc_auto_rd_g", "xin24m", 0,
  560. RK3576_CLKGATE_CON(5), 15, GFLAGS),
  561. [CLK_MIPI_CAMERAOUT_M0] = COMPOSITE(CLK_MIPI_CAMERAOUT_M0, "clk_mipi_cameraout_m0", mux_24m_spll_gpll_cpll_p, 0,
  562. RK3576_CLKSEL_CON(38), 8, 2, MFLAGS, 0, 8, DFLAGS,
  563. RK3576_CLKGATE_CON(6), 3, GFLAGS),
  564. [CLK_MIPI_CAMERAOUT_M1] = COMPOSITE(CLK_MIPI_CAMERAOUT_M1, "clk_mipi_cameraout_m1", mux_24m_spll_gpll_cpll_p, 0,
  565. RK3576_CLKSEL_CON(39), 8, 2, MFLAGS, 0, 8, DFLAGS,
  566. RK3576_CLKGATE_CON(6), 4, GFLAGS),
  567. [CLK_MIPI_CAMERAOUT_M2] = COMPOSITE(CLK_MIPI_CAMERAOUT_M2, "clk_mipi_cameraout_m2", mux_24m_spll_gpll_cpll_p, 0,
  568. RK3576_CLKSEL_CON(40), 8, 2, MFLAGS, 0, 8, DFLAGS,
  569. RK3576_CLKGATE_CON(6), 5, GFLAGS),
  570. [MCLK_PDM0_SRC_TOP] = COMPOSITE(MCLK_PDM0_SRC_TOP, "mclk_pdm0_src_top", audio_frac_int_p, 0,
  571. RK3576_CLKSEL_CON(41), 7, 3, MFLAGS, 2, 5, DFLAGS,
  572. RK3576_CLKGATE_CON(6), 8, GFLAGS),
  573. [HCLK_AUDIO_ROOT] = COMPOSITE_NODIV(HCLK_AUDIO_ROOT, "hclk_audio_root", mux_200m_100m_50m_24m_p, 0,
  574. RK3576_CLKSEL_CON(42), 0, 2, MFLAGS,
  575. RK3576_CLKGATE_CON(7), 1, GFLAGS),
  576. [HCLK_ASRC_2CH_0] = GATE(HCLK_ASRC_2CH_0, "hclk_asrc_2ch_0", "hclk_audio_root", 0,
  577. RK3576_CLKGATE_CON(7), 3, GFLAGS),
  578. [HCLK_ASRC_2CH_1] = GATE(HCLK_ASRC_2CH_1, "hclk_asrc_2ch_1", "hclk_audio_root", 0,
  579. RK3576_CLKGATE_CON(7), 4, GFLAGS),
  580. [HCLK_ASRC_4CH_0] = GATE(HCLK_ASRC_4CH_0, "hclk_asrc_4ch_0", "hclk_audio_root", 0,
  581. RK3576_CLKGATE_CON(7), 5, GFLAGS),
  582. [HCLK_ASRC_4CH_1] = GATE(HCLK_ASRC_4CH_1, "hclk_asrc_4ch_1", "hclk_audio_root", 0,
  583. RK3576_CLKGATE_CON(7), 6, GFLAGS),
  584. [CLK_ASRC_2CH_0] = COMPOSITE(CLK_ASRC_2CH_0, "clk_asrc_2ch_0", gpll_cpll_aupll_p, 0,
  585. RK3576_CLKSEL_CON(42), 7, 2, MFLAGS, 2, 5, DFLAGS,
  586. RK3576_CLKGATE_CON(7), 7, GFLAGS),
  587. [CLK_ASRC_2CH_1] = COMPOSITE(CLK_ASRC_2CH_1, "clk_asrc_2ch_1", gpll_cpll_aupll_p, 0,
  588. RK3576_CLKSEL_CON(42), 14, 2, MFLAGS, 9, 5, DFLAGS,
  589. RK3576_CLKGATE_CON(7), 8, GFLAGS),
  590. [CLK_ASRC_4CH_0] = COMPOSITE(CLK_ASRC_4CH_0, "clk_asrc_4ch_0", gpll_cpll_aupll_p, 0,
  591. RK3576_CLKSEL_CON(43), 5, 2, MFLAGS, 0, 5, DFLAGS,
  592. RK3576_CLKGATE_CON(7), 9, GFLAGS),
  593. [CLK_ASRC_4CH_1] = COMPOSITE(CLK_ASRC_4CH_1, "clk_asrc_4ch_1", gpll_cpll_aupll_p, 0,
  594. RK3576_CLKSEL_CON(43), 12, 2, MFLAGS, 7, 5, DFLAGS,
  595. RK3576_CLKGATE_CON(7), 10, GFLAGS),
  596. [MCLK_SAI0_8CH_SRC] = COMPOSITE(MCLK_SAI0_8CH_SRC, "mclk_sai0_8ch_src", audio_frac_int_p, 0,
  597. RK3576_CLKSEL_CON(44), 8, 3, MFLAGS, 0, 8, DFLAGS,
  598. RK3576_CLKGATE_CON(7), 11, GFLAGS),
  599. [MCLK_SAI0_8CH] = COMPOSITE_NODIV(MCLK_SAI0_8CH, "mclk_sai0_8ch", mclk_sai0_8ch_p, RT_CLK_F_SET_RATE_PARENT,
  600. RK3576_CLKSEL_CON(44), 11, 2, MFLAGS,
  601. RK3576_CLKGATE_CON(7), 12, GFLAGS),
  602. [HCLK_SAI0_8CH] = GATE(HCLK_SAI0_8CH, "hclk_sai0_8ch", "hclk_audio_root", 0,
  603. RK3576_CLKGATE_CON(7), 13, GFLAGS),
  604. [HCLK_SPDIF_RX0] = GATE(HCLK_SPDIF_RX0, "hclk_spdif_rx0", "hclk_audio_root", 0,
  605. RK3576_CLKGATE_CON(7), 14, GFLAGS),
  606. [MCLK_SPDIF_RX0] = COMPOSITE(MCLK_SPDIF_RX0, "mclk_spdif_rx0", gpll_cpll_aupll_p, 0,
  607. RK3576_CLKSEL_CON(45), 5, 2, MFLAGS, 0, 5, DFLAGS,
  608. RK3576_CLKGATE_CON(7), 15, GFLAGS),
  609. [HCLK_SPDIF_RX1] = GATE(HCLK_SPDIF_RX1, "hclk_spdif_rx1", "hclk_audio_root", 0,
  610. RK3576_CLKGATE_CON(8), 0, GFLAGS),
  611. [MCLK_SPDIF_RX1] = COMPOSITE(MCLK_SPDIF_RX1, "mclk_spdif_rx1", gpll_cpll_aupll_p, 0,
  612. RK3576_CLKSEL_CON(45), 12, 2, MFLAGS, 7, 5, DFLAGS,
  613. RK3576_CLKGATE_CON(8), 1, GFLAGS),
  614. [MCLK_SAI1_8CH_SRC] = COMPOSITE(MCLK_SAI1_8CH_SRC, "mclk_sai1_8ch_src", audio_frac_int_p, 0,
  615. RK3576_CLKSEL_CON(46), 8, 3, MFLAGS, 0, 8, DFLAGS,
  616. RK3576_CLKGATE_CON(8), 4, GFLAGS),
  617. [MCLK_SAI1_8CH] = COMPOSITE_NODIV(MCLK_SAI1_8CH, "mclk_sai1_8ch", mclk_sai1_8ch_p, RT_CLK_F_SET_RATE_PARENT,
  618. RK3576_CLKSEL_CON(46), 11, 1, MFLAGS,
  619. RK3576_CLKGATE_CON(8), 5, GFLAGS),
  620. [HCLK_SAI1_8CH] = GATE(HCLK_SAI1_8CH, "hclk_sai1_8ch", "hclk_audio_root", 0,
  621. RK3576_CLKGATE_CON(8), 6, GFLAGS),
  622. [MCLK_SAI2_2CH_SRC] = COMPOSITE(MCLK_SAI2_2CH_SRC, "mclk_sai2_2ch_src", audio_frac_int_p, 0,
  623. RK3576_CLKSEL_CON(47), 8, 3, MFLAGS, 0, 8, DFLAGS,
  624. RK3576_CLKGATE_CON(8), 7, GFLAGS),
  625. [MCLK_SAI2_2CH] = COMPOSITE_NODIV(MCLK_SAI2_2CH, "mclk_sai2_2ch", mclk_sai2_2ch_p, RT_CLK_F_SET_RATE_PARENT,
  626. RK3576_CLKSEL_CON(47), 11, 2, MFLAGS,
  627. RK3576_CLKGATE_CON(8), 8, GFLAGS),
  628. [HCLK_SAI2_2CH] = GATE(HCLK_SAI2_2CH, "hclk_sai2_2ch", "hclk_audio_root", 0,
  629. RK3576_CLKGATE_CON(8), 10, GFLAGS),
  630. [MCLK_SAI3_2CH_SRC] = COMPOSITE(MCLK_SAI3_2CH_SRC, "mclk_sai3_2ch_src", audio_frac_int_p, 0,
  631. RK3576_CLKSEL_CON(48), 8, 3, MFLAGS, 0, 8, DFLAGS,
  632. RK3576_CLKGATE_CON(8), 11, GFLAGS),
  633. [MCLK_SAI3_2CH] = COMPOSITE_NODIV(MCLK_SAI3_2CH, "mclk_sai3_2ch", mclk_sai3_2ch_p, RT_CLK_F_SET_RATE_PARENT,
  634. RK3576_CLKSEL_CON(48), 11, 2, MFLAGS,
  635. RK3576_CLKGATE_CON(8), 12, GFLAGS),
  636. [HCLK_SAI3_2CH] = GATE(HCLK_SAI3_2CH, "hclk_sai3_2ch", "hclk_audio_root", 0,
  637. RK3576_CLKGATE_CON(8), 14, GFLAGS),
  638. [MCLK_SAI4_2CH_SRC] = COMPOSITE(MCLK_SAI4_2CH_SRC, "mclk_sai4_2ch_src", audio_frac_int_p, 0,
  639. RK3576_CLKSEL_CON(49), 8, 3, MFLAGS, 0, 8, DFLAGS,
  640. RK3576_CLKGATE_CON(8), 15, GFLAGS),
  641. [MCLK_SAI4_2CH] = COMPOSITE_NODIV(MCLK_SAI4_2CH, "mclk_sai4_2ch", mclk_sai4_2ch_p, RT_CLK_F_SET_RATE_PARENT,
  642. RK3576_CLKSEL_CON(49), 11, 2, MFLAGS,
  643. RK3576_CLKGATE_CON(9), 0, GFLAGS),
  644. [HCLK_SAI4_2CH] = GATE(HCLK_SAI4_2CH, "hclk_sai4_2ch", "hclk_audio_root", 0,
  645. RK3576_CLKGATE_CON(9), 2, GFLAGS),
  646. [HCLK_ACDCDIG_DSM] = GATE(HCLK_ACDCDIG_DSM, "hclk_acdcdig_dsm", "hclk_audio_root", 0,
  647. RK3576_CLKGATE_CON(9), 3, GFLAGS),
  648. [MCLK_ACDCDIG_DSM] = GATE(MCLK_ACDCDIG_DSM, "mclk_acdcdig_dsm", "mclk_sai4_2ch", 0,
  649. RK3576_CLKGATE_CON(9), 4, GFLAGS),
  650. [CLK_PDM1] = COMPOSITE(CLK_PDM1, "clk_pdm1", audio_frac_int_p, 0,
  651. RK3576_CLKSEL_CON(50), 9, 3, MFLAGS, 0, 9, DFLAGS,
  652. RK3576_CLKGATE_CON(9), 5, GFLAGS),
  653. [HCLK_PDM1] = GATE(HCLK_PDM1, "hclk_pdm1", "hclk_audio_root", 0,
  654. RK3576_CLKGATE_CON(9), 7, GFLAGS),
  655. [MCLK_PDM1] = COMPOSITE(MCLK_PDM1, "mclk_pdm1", audio_frac_int_p, 0,
  656. RK3576_CLKSEL_CON(51), 5, 3, MFLAGS, 0, 5, DFLAGS,
  657. RK3576_CLKGATE_CON(9), 8, GFLAGS),
  658. [HCLK_SPDIF_TX0] = GATE(HCLK_SPDIF_TX0, "hclk_spdif_tx0", "hclk_audio_root", 0,
  659. RK3576_CLKGATE_CON(9), 9, GFLAGS),
  660. [MCLK_SPDIF_TX0] = COMPOSITE(MCLK_SPDIF_TX0, "mclk_spdif_tx0", audio_frac_int_p, 0,
  661. RK3576_CLKSEL_CON(52), 8, 3, MFLAGS, 0, 8, DFLAGS,
  662. RK3576_CLKGATE_CON(9), 10, GFLAGS),
  663. [HCLK_SPDIF_TX1] = GATE(HCLK_SPDIF_TX1, "hclk_spdif_tx1", "hclk_audio_root", 0,
  664. RK3576_CLKGATE_CON(9), 11, GFLAGS),
  665. [MCLK_SPDIF_TX1] = COMPOSITE(MCLK_SPDIF_TX1, "mclk_spdif_tx1", audio_frac_int_p, 0,
  666. RK3576_CLKSEL_CON(53), 8, 3, MFLAGS, 0, 8, DFLAGS,
  667. RK3576_CLKGATE_CON(9), 12, GFLAGS),
  668. [CLK_SAI1_MCLKOUT] = GATE(CLK_SAI1_MCLKOUT, "clk_sai1_mclkout", "mclk_sai1_8ch", 0,
  669. RK3576_CLKGATE_CON(9), 13, GFLAGS),
  670. [CLK_SAI2_MCLKOUT] = GATE(CLK_SAI2_MCLKOUT, "clk_sai2_mclkout", "mclk_sai2_2ch", 0,
  671. RK3576_CLKGATE_CON(9), 14, GFLAGS),
  672. [CLK_SAI3_MCLKOUT] = GATE(CLK_SAI3_MCLKOUT, "clk_sai3_mclkout", "mclk_sai3_2ch", 0,
  673. RK3576_CLKGATE_CON(9), 15, GFLAGS),
  674. [CLK_SAI4_MCLKOUT] = GATE(CLK_SAI4_MCLKOUT, "clk_sai4_mclkout", "mclk_sai4_2ch", 0,
  675. RK3576_CLKGATE_CON(10), 0, GFLAGS),
  676. [CLK_SAI0_MCLKOUT] = GATE(CLK_SAI0_MCLKOUT, "clk_sai0_mclkout", "mclk_sai0_8ch", 0,
  677. RK3576_CLKGATE_CON(10), 1, GFLAGS),
  678. [HCLK_BUS_ROOT] = COMPOSITE_NODIV(HCLK_BUS_ROOT, "hclk_bus_root", mux_200m_100m_50m_24m_p, RT_CLK_F_IS_CRITICAL,
  679. RK3576_CLKSEL_CON(55), 0, 2, MFLAGS,
  680. RK3576_CLKGATE_CON(11), 0, GFLAGS),
  681. [PCLK_BUS_ROOT] = COMPOSITE_NODIV(PCLK_BUS_ROOT, "pclk_bus_root", mux_100m_50m_24m_p, RT_CLK_F_IS_CRITICAL,
  682. RK3576_CLKSEL_CON(55), 2, 2, MFLAGS,
  683. RK3576_CLKGATE_CON(11), 1, GFLAGS),
  684. [ACLK_BUS_ROOT] = COMPOSITE(ACLK_BUS_ROOT, "aclk_bus_root", gpll_cpll_p, RT_CLK_F_IS_CRITICAL,
  685. RK3576_CLKSEL_CON(55), 9, 1, MFLAGS, 4, 5, DFLAGS,
  686. RK3576_CLKGATE_CON(11), 2, GFLAGS),
  687. [HCLK_CAN0] = GATE(HCLK_CAN0, "hclk_can0", "hclk_bus_root", 0,
  688. RK3576_CLKGATE_CON(11), 6, GFLAGS),
  689. [CLK_CAN0] = COMPOSITE(CLK_CAN0, "clk_can0", gpll_cpll_24m_p, 0,
  690. RK3576_CLKSEL_CON(56), 5, 2, MFLAGS, 0, 5, DFLAGS,
  691. RK3576_CLKGATE_CON(11), 7, GFLAGS),
  692. [HCLK_CAN1] = GATE(HCLK_CAN1, "hclk_can1", "hclk_bus_root", 0,
  693. RK3576_CLKGATE_CON(11), 8, GFLAGS),
  694. [CLK_CAN1] = COMPOSITE(CLK_CAN1, "clk_can1", gpll_cpll_24m_p, 0,
  695. RK3576_CLKSEL_CON(56), 12, 2, MFLAGS, 7, 5, DFLAGS,
  696. RK3576_CLKGATE_CON(11), 9, GFLAGS),
  697. [CLK_KEY_SHIFT] = GATE(CLK_KEY_SHIFT, "clk_key_shift", "xin24m", RT_CLK_F_IS_CRITICAL,
  698. RK3576_CLKGATE_CON(11), 15, GFLAGS),
  699. [PCLK_I2C1] = GATE(PCLK_I2C1, "pclk_i2c1", "pclk_bus_root", 0,
  700. RK3576_CLKGATE_CON(12), 0, GFLAGS),
  701. [PCLK_I2C2] = GATE(PCLK_I2C2, "pclk_i2c2", "pclk_bus_root", 0,
  702. RK3576_CLKGATE_CON(12), 1, GFLAGS),
  703. [PCLK_I2C3] = GATE(PCLK_I2C3, "pclk_i2c3", "pclk_bus_root", 0,
  704. RK3576_CLKGATE_CON(12), 2, GFLAGS),
  705. [PCLK_I2C4] = GATE(PCLK_I2C4, "pclk_i2c4", "pclk_bus_root", 0,
  706. RK3576_CLKGATE_CON(12), 3, GFLAGS),
  707. [PCLK_I2C5] = GATE(PCLK_I2C5, "pclk_i2c5", "pclk_bus_root", 0,
  708. RK3576_CLKGATE_CON(12), 4, GFLAGS),
  709. [PCLK_I2C6] = GATE(PCLK_I2C6, "pclk_i2c6", "pclk_bus_root", 0,
  710. RK3576_CLKGATE_CON(12), 5, GFLAGS),
  711. [PCLK_I2C7] = GATE(PCLK_I2C7, "pclk_i2c7", "pclk_bus_root", 0,
  712. RK3576_CLKGATE_CON(12), 6, GFLAGS),
  713. [PCLK_I2C8] = GATE(PCLK_I2C8, "pclk_i2c8", "pclk_bus_root", 0,
  714. RK3576_CLKGATE_CON(12), 7, GFLAGS),
  715. [PCLK_I2C9] = GATE(PCLK_I2C9, "pclk_i2c9", "pclk_bus_root", 0,
  716. RK3576_CLKGATE_CON(12), 8, GFLAGS),
  717. [PCLK_WDT_BUSMCU] = GATE(PCLK_WDT_BUSMCU, "pclk_wdt_busmcu", "pclk_bus_root", 0,
  718. RK3576_CLKGATE_CON(12), 9, GFLAGS),
  719. [TCLK_WDT_BUSMCU] = GATE(TCLK_WDT_BUSMCU, "tclk_wdt_busmcu", "xin24m", 0,
  720. RK3576_CLKGATE_CON(12), 10, GFLAGS),
  721. [ACLK_GIC] = GATE(ACLK_GIC, "aclk_gic", "aclk_bus_root", RT_CLK_F_IS_CRITICAL,
  722. RK3576_CLKGATE_CON(12), 11, GFLAGS),
  723. [CLK_I2C1] = COMPOSITE_NODIV(CLK_I2C1, "clk_i2c1", mux_200m_100m_50m_24m_p, 0,
  724. RK3576_CLKSEL_CON(57), 0, 2, MFLAGS,
  725. RK3576_CLKGATE_CON(12), 12, GFLAGS),
  726. [CLK_I2C2] = COMPOSITE_NODIV(CLK_I2C2, "clk_i2c2", mux_200m_100m_50m_24m_p, 0,
  727. RK3576_CLKSEL_CON(57), 2, 2, MFLAGS,
  728. RK3576_CLKGATE_CON(12), 13, GFLAGS),
  729. [CLK_I2C3] = COMPOSITE_NODIV(CLK_I2C3, "clk_i2c3", mux_200m_100m_50m_24m_p, 0,
  730. RK3576_CLKSEL_CON(57), 4, 2, MFLAGS,
  731. RK3576_CLKGATE_CON(12), 14, GFLAGS),
  732. [CLK_I2C4] = COMPOSITE_NODIV(CLK_I2C4, "clk_i2c4", mux_200m_100m_50m_24m_p, 0,
  733. RK3576_CLKSEL_CON(57), 6, 2, MFLAGS,
  734. RK3576_CLKGATE_CON(12), 15, GFLAGS),
  735. [CLK_I2C5] = COMPOSITE_NODIV(CLK_I2C5, "clk_i2c5", mux_200m_100m_50m_24m_p, 0,
  736. RK3576_CLKSEL_CON(57), 8, 2, MFLAGS,
  737. RK3576_CLKGATE_CON(13), 0, GFLAGS),
  738. [CLK_I2C6] = COMPOSITE_NODIV(CLK_I2C6, "clk_i2c6", mux_200m_100m_50m_24m_p, 0,
  739. RK3576_CLKSEL_CON(57), 10, 2, MFLAGS,
  740. RK3576_CLKGATE_CON(13), 1, GFLAGS),
  741. [CLK_I2C7] = COMPOSITE_NODIV(CLK_I2C7, "clk_i2c7", mux_200m_100m_50m_24m_p, 0,
  742. RK3576_CLKSEL_CON(57), 12, 2, MFLAGS,
  743. RK3576_CLKGATE_CON(13), 2, GFLAGS),
  744. [CLK_I2C8] = COMPOSITE_NODIV(CLK_I2C8, "clk_i2c8", mux_200m_100m_50m_24m_p, 0,
  745. RK3576_CLKSEL_CON(57), 14, 2, MFLAGS,
  746. RK3576_CLKGATE_CON(13), 3, GFLAGS),
  747. [CLK_I2C9] = COMPOSITE_NODIV(CLK_I2C9, "clk_i2c9", mux_200m_100m_50m_24m_p, 0,
  748. RK3576_CLKSEL_CON(58), 0, 2, MFLAGS,
  749. RK3576_CLKGATE_CON(13), 4, GFLAGS),
  750. [PCLK_SARADC] = GATE(PCLK_SARADC, "pclk_saradc", "pclk_bus_root", 0,
  751. RK3576_CLKGATE_CON(13), 6, GFLAGS),
  752. [CLK_SARADC] = COMPOSITE(CLK_SARADC, "clk_saradc", gpll_24m_p, 0,
  753. RK3576_CLKSEL_CON(58), 12, 1, MFLAGS, 4, 8, DFLAGS,
  754. RK3576_CLKGATE_CON(13), 7, GFLAGS),
  755. [PCLK_TSADC] = GATE(PCLK_TSADC, "pclk_tsadc", "pclk_bus_root", 0,
  756. RK3576_CLKGATE_CON(13), 8, GFLAGS),
  757. [CLK_TSADC] = COMPOSITE_NOMUX(CLK_TSADC, "clk_tsadc", "xin24m", 0,
  758. RK3576_CLKSEL_CON(59), 0, 8, DFLAGS,
  759. RK3576_CLKGATE_CON(13), 9, GFLAGS),
  760. [PCLK_UART0] = GATE(PCLK_UART0, "pclk_uart0", "pclk_bus_root", 0,
  761. RK3576_CLKGATE_CON(13), 10, GFLAGS),
  762. [PCLK_UART2] = GATE(PCLK_UART2, "pclk_uart2", "pclk_bus_root", 0,
  763. RK3576_CLKGATE_CON(13), 11, GFLAGS),
  764. [PCLK_UART3] = GATE(PCLK_UART3, "pclk_uart3", "pclk_bus_root", 0,
  765. RK3576_CLKGATE_CON(13), 12, GFLAGS),
  766. [PCLK_UART4] = GATE(PCLK_UART4, "pclk_uart4", "pclk_bus_root", 0,
  767. RK3576_CLKGATE_CON(13), 13, GFLAGS),
  768. [PCLK_UART5] = GATE(PCLK_UART5, "pclk_uart5", "pclk_bus_root", 0,
  769. RK3576_CLKGATE_CON(13), 14, GFLAGS),
  770. [PCLK_UART6] = GATE(PCLK_UART6, "pclk_uart6", "pclk_bus_root", 0,
  771. RK3576_CLKGATE_CON(13), 15, GFLAGS),
  772. [PCLK_UART7] = GATE(PCLK_UART7, "pclk_uart7", "pclk_bus_root", 0,
  773. RK3576_CLKGATE_CON(14), 0, GFLAGS),
  774. [PCLK_UART8] = GATE(PCLK_UART8, "pclk_uart8", "pclk_bus_root", 0,
  775. RK3576_CLKGATE_CON(14), 1, GFLAGS),
  776. [PCLK_UART9] = GATE(PCLK_UART9, "pclk_uart9", "pclk_bus_root", 0,
  777. RK3576_CLKGATE_CON(14), 2, GFLAGS),
  778. [PCLK_UART10] = GATE(PCLK_UART10, "pclk_uart10", "pclk_bus_root", 0,
  779. RK3576_CLKGATE_CON(14), 3, GFLAGS),
  780. [PCLK_UART11] = GATE(PCLK_UART11, "pclk_uart11", "pclk_bus_root", 0,
  781. RK3576_CLKGATE_CON(14), 4, GFLAGS),
  782. [SCLK_UART0] = COMPOSITE(SCLK_UART0, "sclk_uart0", clk_uart_p, 0,
  783. RK3576_CLKSEL_CON(60), 8, 3, MFLAGS, 0, 8, DFLAGS,
  784. RK3576_CLKGATE_CON(14), 5, GFLAGS),
  785. [SCLK_UART2] = COMPOSITE(SCLK_UART2, "sclk_uart2", clk_uart_p, 0,
  786. RK3576_CLKSEL_CON(61), 8, 3, MFLAGS, 0, 8, DFLAGS,
  787. RK3576_CLKGATE_CON(14), 6, GFLAGS),
  788. [SCLK_UART3] = COMPOSITE(SCLK_UART3, "sclk_uart3", clk_uart_p, 0,
  789. RK3576_CLKSEL_CON(62), 8, 3, MFLAGS, 0, 8, DFLAGS,
  790. RK3576_CLKGATE_CON(14), 9, GFLAGS),
  791. [SCLK_UART4] = COMPOSITE(SCLK_UART4, "sclk_uart4", clk_uart_p, 0,
  792. RK3576_CLKSEL_CON(63), 8, 3, MFLAGS, 0, 8, DFLAGS,
  793. RK3576_CLKGATE_CON(14), 12, GFLAGS),
  794. [SCLK_UART5] = COMPOSITE(SCLK_UART5, "sclk_uart5", clk_uart_p, 0,
  795. RK3576_CLKSEL_CON(64), 8, 3, MFLAGS, 0, 8, DFLAGS,
  796. RK3576_CLKGATE_CON(14), 15, GFLAGS),
  797. [SCLK_UART6] = COMPOSITE(SCLK_UART6, "sclk_uart6", clk_uart_p, 0,
  798. RK3576_CLKSEL_CON(65), 8, 3, MFLAGS, 0, 8, DFLAGS,
  799. RK3576_CLKGATE_CON(15), 2, GFLAGS),
  800. [SCLK_UART7] = COMPOSITE(SCLK_UART7, "sclk_uart7", clk_uart_p, 0,
  801. RK3576_CLKSEL_CON(66), 8, 3, MFLAGS, 0, 8, DFLAGS,
  802. RK3576_CLKGATE_CON(15), 5, GFLAGS),
  803. [SCLK_UART8] = COMPOSITE(SCLK_UART8, "sclk_uart8", clk_uart_p, 0,
  804. RK3576_CLKSEL_CON(67), 8, 3, MFLAGS, 0, 8, DFLAGS,
  805. RK3576_CLKGATE_CON(15), 8, GFLAGS),
  806. [SCLK_UART9] = COMPOSITE(SCLK_UART9, "sclk_uart9", clk_uart_p, 0,
  807. RK3576_CLKSEL_CON(68), 8, 3, MFLAGS, 0, 8, DFLAGS,
  808. RK3576_CLKGATE_CON(15), 9, GFLAGS),
  809. [SCLK_UART10] = COMPOSITE(SCLK_UART10, "sclk_uart10", clk_uart_p, 0,
  810. RK3576_CLKSEL_CON(69), 8, 3, MFLAGS, 0, 8, DFLAGS,
  811. RK3576_CLKGATE_CON(15), 10, GFLAGS),
  812. [SCLK_UART11] = COMPOSITE(SCLK_UART11, "sclk_uart11", clk_uart_p, 0,
  813. RK3576_CLKSEL_CON(70), 8, 3, MFLAGS, 0, 8, DFLAGS,
  814. RK3576_CLKGATE_CON(15), 11, GFLAGS),
  815. [PCLK_SPI0] = GATE(PCLK_SPI0, "pclk_spi0", "pclk_bus_root", 0,
  816. RK3576_CLKGATE_CON(15), 13, GFLAGS),
  817. [PCLK_SPI1] = GATE(PCLK_SPI1, "pclk_spi1", "pclk_bus_root", 0,
  818. RK3576_CLKGATE_CON(15), 14, GFLAGS),
  819. [PCLK_SPI2] = GATE(PCLK_SPI2, "pclk_spi2", "pclk_bus_root", 0,
  820. RK3576_CLKGATE_CON(15), 15, GFLAGS),
  821. [PCLK_SPI3] = GATE(PCLK_SPI3, "pclk_spi3", "pclk_bus_root", 0,
  822. RK3576_CLKGATE_CON(16), 0, GFLAGS),
  823. [PCLK_SPI4] = GATE(PCLK_SPI4, "pclk_spi4", "pclk_bus_root", 0,
  824. RK3576_CLKGATE_CON(16), 1, GFLAGS),
  825. [CLK_SPI0] = COMPOSITE_NODIV(CLK_SPI0, "clk_spi0", mux_200m_100m_50m_24m_p, 0,
  826. RK3576_CLKSEL_CON(70), 13, 2, MFLAGS,
  827. RK3576_CLKGATE_CON(16), 2, GFLAGS),
  828. [CLK_SPI1] = COMPOSITE_NODIV(CLK_SPI1, "clk_spi1", mux_200m_100m_50m_24m_p, 0,
  829. RK3576_CLKSEL_CON(71), 0, 2, MFLAGS,
  830. RK3576_CLKGATE_CON(16), 3, GFLAGS),
  831. [CLK_SPI2] = COMPOSITE_NODIV(CLK_SPI2, "clk_spi2", mux_200m_100m_50m_24m_p, 0,
  832. RK3576_CLKSEL_CON(71), 2, 2, MFLAGS,
  833. RK3576_CLKGATE_CON(16), 4, GFLAGS),
  834. [CLK_SPI3] = COMPOSITE_NODIV(CLK_SPI3, "clk_spi3", mux_200m_100m_50m_24m_p, 0,
  835. RK3576_CLKSEL_CON(71), 4, 2, MFLAGS,
  836. RK3576_CLKGATE_CON(16), 5, GFLAGS),
  837. [CLK_SPI4] = COMPOSITE_NODIV(CLK_SPI4, "clk_spi4", mux_200m_100m_50m_24m_p, 0,
  838. RK3576_CLKSEL_CON(71), 6, 2, MFLAGS,
  839. RK3576_CLKGATE_CON(16), 6, GFLAGS),
  840. [PCLK_WDT0] = GATE(PCLK_WDT0, "pclk_wdt0", "pclk_bus_root", 0,
  841. RK3576_CLKGATE_CON(16), 7, GFLAGS),
  842. [TCLK_WDT0] = GATE(TCLK_WDT0, "tclk_wdt0", "xin24m", 0,
  843. RK3576_CLKGATE_CON(16), 8, GFLAGS),
  844. [PCLK_PWM1] = GATE(PCLK_PWM1, "pclk_pwm1", "pclk_bus_root", 0,
  845. RK3576_CLKGATE_CON(16), 10, GFLAGS),
  846. [CLK_PWM1] = COMPOSITE_NODIV(CLK_PWM1, "clk_pwm1", mux_100m_50m_24m_p, 0,
  847. RK3576_CLKSEL_CON(71), 8, 2, MFLAGS,
  848. RK3576_CLKGATE_CON(16), 11, GFLAGS),
  849. [CLK_OSC_PWM1] = GATE(CLK_OSC_PWM1, "clk_osc_pwm1", "xin24m", 0,
  850. RK3576_CLKGATE_CON(16), 13, GFLAGS),
  851. [CLK_RC_PWM1] = GATE(CLK_RC_PWM1, "clk_rc_pwm1", "clk_pvtm_clkout", 0,
  852. RK3576_CLKGATE_CON(16), 15, GFLAGS),
  853. [PCLK_BUSTIMER0] = GATE(PCLK_BUSTIMER0, "pclk_bustimer0", "pclk_bus_root", 0,
  854. RK3576_CLKGATE_CON(17), 3, GFLAGS),
  855. [PCLK_BUSTIMER1] = GATE(PCLK_BUSTIMER1, "pclk_bustimer1", "pclk_bus_root", 0,
  856. RK3576_CLKGATE_CON(17), 4, GFLAGS),
  857. [CLK_TIMER0_ROOT] = COMPOSITE_NODIV(CLK_TIMER0_ROOT, "clk_timer0_root", mux_100m_24m_p, 0,
  858. RK3576_CLKSEL_CON(71), 14, 1, MFLAGS,
  859. RK3576_CLKGATE_CON(17), 5, GFLAGS),
  860. [CLK_TIMER0] = GATE(CLK_TIMER0, "clk_timer0", "clk_timer0_root", 0,
  861. RK3576_CLKGATE_CON(17), 6, GFLAGS),
  862. [CLK_TIMER1] = GATE(CLK_TIMER1, "clk_timer1", "clk_timer0_root", 0,
  863. RK3576_CLKGATE_CON(17), 7, GFLAGS),
  864. [CLK_TIMER2] = GATE(CLK_TIMER2, "clk_timer2", "clk_timer0_root", 0,
  865. RK3576_CLKGATE_CON(17), 8, GFLAGS),
  866. [CLK_TIMER3] = GATE(CLK_TIMER3, "clk_timer3", "clk_timer0_root", 0,
  867. RK3576_CLKGATE_CON(17), 9, GFLAGS),
  868. [CLK_TIMER4] = GATE(CLK_TIMER4, "clk_timer4", "clk_timer0_root", 0,
  869. RK3576_CLKGATE_CON(17), 10, GFLAGS),
  870. [CLK_TIMER5] = GATE(CLK_TIMER5, "clk_timer5", "clk_timer0_root", 0,
  871. RK3576_CLKGATE_CON(17), 11, GFLAGS),
  872. [PCLK_MAILBOX0] = GATE(PCLK_MAILBOX0, "pclk_mailbox0", "pclk_bus_root", 0,
  873. RK3576_CLKGATE_CON(17), 13, GFLAGS),
  874. [PCLK_GPIO1] = GATE(PCLK_GPIO1, "pclk_gpio1", "pclk_bus_root", 0,
  875. RK3576_CLKGATE_CON(17), 15, GFLAGS),
  876. [DBCLK_GPIO1] = GATE(DBCLK_GPIO1, "dbclk_gpio1", "xin24m", 0,
  877. RK3576_CLKGATE_CON(18), 0, GFLAGS),
  878. [PCLK_GPIO2] = GATE(PCLK_GPIO2, "pclk_gpio2", "pclk_bus_root", 0,
  879. RK3576_CLKGATE_CON(18), 1, GFLAGS),
  880. [DBCLK_GPIO2] = GATE(DBCLK_GPIO2, "dbclk_gpio2", "xin24m", 0,
  881. RK3576_CLKGATE_CON(18), 2, GFLAGS),
  882. [PCLK_GPIO3] = GATE(PCLK_GPIO3, "pclk_gpio3", "pclk_bus_root", 0,
  883. RK3576_CLKGATE_CON(18), 3, GFLAGS),
  884. [DBCLK_GPIO3] = GATE(DBCLK_GPIO3, "dbclk_gpio3", "xin24m", 0,
  885. RK3576_CLKGATE_CON(18), 4, GFLAGS),
  886. [PCLK_GPIO4] = GATE(PCLK_GPIO4, "pclk_gpio4", "pclk_bus_root", 0,
  887. RK3576_CLKGATE_CON(18), 5, GFLAGS),
  888. [DBCLK_GPIO4] = GATE(DBCLK_GPIO4, "dbclk_gpio4", "xin24m", 0,
  889. RK3576_CLKGATE_CON(18), 6, GFLAGS),
  890. [ACLK_DECOM] = GATE(ACLK_DECOM, "aclk_decom", "aclk_bus_root", 0,
  891. RK3576_CLKGATE_CON(18), 7, GFLAGS),
  892. [PCLK_DECOM] = GATE(PCLK_DECOM, "pclk_decom", "pclk_bus_root", 0,
  893. RK3576_CLKGATE_CON(18), 8, GFLAGS),
  894. [DCLK_DECOM] = COMPOSITE(DCLK_DECOM, "dclk_decom", gpll_spll_p, 0,
  895. RK3576_CLKSEL_CON(72), 5, 1, MFLAGS, 0, 5, DFLAGS,
  896. RK3576_CLKGATE_CON(18), 9, GFLAGS),
  897. [CLK_TIMER1_ROOT] = COMPOSITE_NODIV(CLK_TIMER1_ROOT, "clk_timer1_root", mux_100m_24m_p, 0,
  898. RK3576_CLKSEL_CON(72), 6, 1, MFLAGS,
  899. RK3576_CLKGATE_CON(18), 10, GFLAGS),
  900. [CLK_TIMER6] = GATE(CLK_TIMER6, "clk_timer6", "clk_timer1_root", 0,
  901. RK3576_CLKGATE_CON(18), 11, GFLAGS),
  902. [CLK_TIMER7] = COMPOSITE(CLK_TIMER7, "clk_timer7", mux_100m_24m_lclk0_p, 0,
  903. RK3576_CLKSEL_CON(72), 12, 2, MFLAGS, 7, 5, DFLAGS,
  904. RK3576_CLKGATE_CON(18), 12, GFLAGS),
  905. [CLK_TIMER8] = COMPOSITE(CLK_TIMER8, "clk_timer8", mux_100m_24m_lclk1_p, 0,
  906. RK3576_CLKSEL_CON(73), 5, 2, MFLAGS, 0, 5, DFLAGS,
  907. RK3576_CLKGATE_CON(18), 13, GFLAGS),
  908. [CLK_TIMER9] = GATE(CLK_TIMER9, "clk_timer9", "clk_timer1_root", 0,
  909. RK3576_CLKGATE_CON(18), 14, GFLAGS),
  910. [CLK_TIMER10] = GATE(CLK_TIMER10, "clk_timer10", "clk_timer1_root", 0,
  911. RK3576_CLKGATE_CON(18), 15, GFLAGS),
  912. [CLK_TIMER11] = GATE(CLK_TIMER11, "clk_timer11", "clk_timer1_root", 0,
  913. RK3576_CLKGATE_CON(19), 0, GFLAGS),
  914. [ACLK_DMAC0] = GATE(ACLK_DMAC0, "aclk_dmac0", "aclk_bus_root", 0,
  915. RK3576_CLKGATE_CON(19), 1, GFLAGS),
  916. [ACLK_DMAC1] = GATE(ACLK_DMAC1, "aclk_dmac1", "aclk_bus_root", 0,
  917. RK3576_CLKGATE_CON(19), 2, GFLAGS),
  918. [ACLK_DMAC2] = GATE(ACLK_DMAC2, "aclk_dmac2", "aclk_bus_root", 0,
  919. RK3576_CLKGATE_CON(19), 3, GFLAGS),
  920. [ACLK_SPINLOCK] = GATE(ACLK_SPINLOCK, "aclk_spinlock", "aclk_bus_root", 0,
  921. RK3576_CLKGATE_CON(19), 4, GFLAGS),
  922. [HCLK_I3C0] = GATE(HCLK_I3C0, "hclk_i3c0", "hclk_bus_root", 0,
  923. RK3576_CLKGATE_CON(19), 7, GFLAGS),
  924. [HCLK_I3C1] = GATE(HCLK_I3C1, "hclk_i3c1", "hclk_bus_root", 0,
  925. RK3576_CLKGATE_CON(19), 9, GFLAGS),
  926. [HCLK_BUS_CM0_ROOT] = COMPOSITE_NODIV(HCLK_BUS_CM0_ROOT, "hclk_bus_cm0_root", mux_400m_200m_100m_24m_p, 0,
  927. RK3576_CLKSEL_CON(73), 13, 2, MFLAGS,
  928. RK3576_CLKGATE_CON(19), 10, GFLAGS),
  929. [FCLK_BUS_CM0_CORE] = GATE(FCLK_BUS_CM0_CORE, "fclk_bus_cm0_core", "hclk_bus_cm0_root", 0,
  930. RK3576_CLKGATE_CON(19), 12, GFLAGS),
  931. [CLK_BUS_CM0_RTC] = COMPOSITE(CLK_BUS_CM0_RTC, "clk_bus_cm0_rtc", mux_24m_32k_p, 0,
  932. RK3576_CLKSEL_CON(74), 5, 1, MFLAGS, 0, 5, DFLAGS,
  933. RK3576_CLKGATE_CON(19), 14, GFLAGS),
  934. [PCLK_PMU2] = GATE(PCLK_PMU2, "pclk_pmu2", "pclk_bus_root", RT_CLK_F_IS_CRITICAL,
  935. RK3576_CLKGATE_CON(19), 15, GFLAGS),
  936. [PCLK_PWM2] = GATE(PCLK_PWM2, "pclk_pwm2", "pclk_bus_root", 0,
  937. RK3576_CLKGATE_CON(20), 4, GFLAGS),
  938. [CLK_PWM2] = COMPOSITE_NODIV(CLK_PWM2, "clk_pwm2", mux_100m_50m_24m_p, 0,
  939. RK3576_CLKSEL_CON(74), 6, 2, MFLAGS,
  940. RK3576_CLKGATE_CON(20), 5, GFLAGS),
  941. [CLK_RC_PWM2] = GATE(CLK_RC_PWM2, "clk_rc_pwm2", "clk_pvtm_clkout", 0,
  942. RK3576_CLKGATE_CON(20), 6, GFLAGS),
  943. [CLK_OSC_PWM2] = GATE(CLK_OSC_PWM2, "clk_osc_pwm2", "xin24m", 0,
  944. RK3576_CLKGATE_CON(20), 7, GFLAGS),
  945. [CLK_FREQ_PWM1] = COMPOSITE_NODIV(CLK_FREQ_PWM1, "clk_freq_pwm1", clk_freq_pwm1_p, 0,
  946. RK3576_CLKSEL_CON(74), 8, 3, MFLAGS,
  947. RK3576_CLKGATE_CON(20), 8, GFLAGS),
  948. [CLK_COUNTER_PWM1] = COMPOSITE_NODIV(CLK_COUNTER_PWM1, "clk_counter_pwm1", clk_counter_pwm1_p, 0,
  949. RK3576_CLKSEL_CON(74), 11, 3, MFLAGS,
  950. RK3576_CLKGATE_CON(20), 9, GFLAGS),
  951. [SAI_SCLKIN_FREQ] = COMPOSITE_NODIV(SAI_SCLKIN_FREQ, "sai_sclkin_freq", sai_sclkin_freq_p, 0,
  952. RK3576_CLKSEL_CON(75), 0, 3, MFLAGS,
  953. RK3576_CLKGATE_CON(20), 10, GFLAGS),
  954. [SAI_SCLKIN_COUNTER] = COMPOSITE_NODIV(SAI_SCLKIN_COUNTER, "sai_sclkin_counter", sai_sclkin_freq_p, 0,
  955. RK3576_CLKSEL_CON(75), 3, 3, MFLAGS,
  956. RK3576_CLKGATE_CON(20), 11, GFLAGS),
  957. [CLK_I3C0] = COMPOSITE(CLK_I3C0, "clk_i3c0", gpll_cpll_aupll_spll_p, 0,
  958. RK3576_CLKSEL_CON(78), 5, 2, MFLAGS, 0, 5, DFLAGS,
  959. RK3576_CLKGATE_CON(20), 12, GFLAGS),
  960. [CLK_I3C1] = COMPOSITE(CLK_I3C1, "clk_i3c1", gpll_cpll_aupll_spll_p, 0,
  961. RK3576_CLKSEL_CON(78), 12, 2, MFLAGS, 7, 5, DFLAGS,
  962. RK3576_CLKGATE_CON(20), 13, GFLAGS),
  963. [PCLK_CSIDPHY1] = GATE(PCLK_CSIDPHY1, "pclk_csidphy1", "pclk_bus_root", 0,
  964. RK3576_CLKGATE_CON(40), 2, GFLAGS),
  965. [PCLK_DDR_ROOT] = COMPOSITE(PCLK_DDR_ROOT, "pclk_ddr_root", gpll_cpll_24m_p, RT_CLK_F_IS_CRITICAL,
  966. RK3576_CLKSEL_CON(76), 5, 2, MFLAGS, 0, 5, DFLAGS,
  967. RK3576_CLKGATE_CON(21), 0, GFLAGS),
  968. [PCLK_DDR_MON_CH0] = GATE(PCLK_DDR_MON_CH0, "pclk_ddr_mon_ch0", "pclk_ddr_root", 0,
  969. RK3576_CLKGATE_CON(21), 1, GFLAGS),
  970. [HCLK_DDR_ROOT] = COMPOSITE(HCLK_DDR_ROOT, "hclk_ddr_root", gpll_cpll_p, RT_CLK_F_IGNORE_UNUSED,
  971. RK3576_CLKSEL_CON(77), 5, 1, MFLAGS, 0, 5, DFLAGS,
  972. RK3576_CLKGATE_CON(22), 11, GFLAGS),
  973. [FCLK_DDR_CM0_CORE] = GATE(FCLK_DDR_CM0_CORE, "fclk_ddr_cm0_core", "hclk_ddr_root", RT_CLK_F_IS_CRITICAL,
  974. RK3576_CLKGATE_CON(22), 15, GFLAGS),
  975. [CLK_DDR_TIMER_ROOT] = COMPOSITE_NODIV(CLK_DDR_TIMER_ROOT, "clk_ddr_timer_root", mux_100m_24m_p, 0,
  976. RK3576_CLKSEL_CON(77), 6, 1, MFLAGS,
  977. RK3576_CLKGATE_CON(23), 3, GFLAGS),
  978. [CLK_DDR_TIMER0] = GATE(CLK_DDR_TIMER0, "clk_ddr_timer0", "clk_ddr_timer_root", 0,
  979. RK3576_CLKGATE_CON(23), 4, GFLAGS),
  980. [CLK_DDR_TIMER1] = GATE(CLK_DDR_TIMER1, "clk_ddr_timer1", "clk_ddr_timer_root", 0,
  981. RK3576_CLKGATE_CON(23), 5, GFLAGS),
  982. [TCLK_WDT_DDR] = GATE(TCLK_WDT_DDR, "tclk_wdt_ddr", "xin24m", 0,
  983. RK3576_CLKGATE_CON(23), 6, GFLAGS),
  984. [PCLK_WDT] = GATE(PCLK_WDT, "pclk_wdt", "pclk_ddr_root", 0,
  985. RK3576_CLKGATE_CON(23), 7, GFLAGS),
  986. [PCLK_TIMER] = GATE(PCLK_TIMER, "pclk_timer", "pclk_ddr_root", 0,
  987. RK3576_CLKGATE_CON(23), 8, GFLAGS),
  988. [CLK_DDR_CM0_RTC] = COMPOSITE(CLK_DDR_CM0_RTC, "clk_ddr_cm0_rtc", mux_24m_32k_p, 0,
  989. RK3576_CLKSEL_CON(77), 12, 1, MFLAGS, 7, 5, DFLAGS,
  990. RK3576_CLKGATE_CON(23), 10, GFLAGS),
  991. [ACLK_RKNN0] = GATE(ACLK_RKNN0, "aclk_rknn0", "clk_rknn_dsu0", 0,
  992. RK3576_CLKGATE_CON(28), 9, GFLAGS),
  993. [ACLK_RKNN1] = GATE(ACLK_RKNN1, "aclk_rknn1", "clk_rknn_dsu0", 0,
  994. RK3576_CLKGATE_CON(29), 0, GFLAGS),
  995. [HCLK_RKNN_ROOT] = COMPOSITE_NODIV(HCLK_RKNN_ROOT, "hclk_rknn_root", mux_200m_100m_50m_24m_p, 0,
  996. RK3576_CLKSEL_CON(86), 0, 2, MFLAGS,
  997. RK3576_CLKGATE_CON(31), 4, GFLAGS),
  998. [CLK_RKNN_DSU0] = COMPOSITE(CLK_RKNN_DSU0, "clk_rknn_dsu0", gpll_cpll_aupll_spll_p, 0,
  999. RK3576_CLKSEL_CON(86), 7, 2, MFLAGS, 2, 5, DFLAGS,
  1000. RK3576_CLKGATE_CON(31), 5, GFLAGS),
  1001. [PCLK_NPUTOP_ROOT] = COMPOSITE_NODIV(PCLK_NPUTOP_ROOT, "pclk_nputop_root", mux_100m_50m_24m_p, 0,
  1002. RK3576_CLKSEL_CON(87), 0, 2, MFLAGS,
  1003. RK3576_CLKGATE_CON(31), 8, GFLAGS),
  1004. [PCLK_NPU_TIMER] = GATE(PCLK_NPU_TIMER, "pclk_npu_timer", "pclk_nputop_root", 0,
  1005. RK3576_CLKGATE_CON(31), 10, GFLAGS),
  1006. [CLK_NPUTIMER_ROOT] = COMPOSITE_NODIV(CLK_NPUTIMER_ROOT, "clk_nputimer_root", mux_100m_24m_p, 0,
  1007. RK3576_CLKSEL_CON(87), 2, 1, MFLAGS,
  1008. RK3576_CLKGATE_CON(31), 11, GFLAGS),
  1009. [CLK_NPUTIMER0] = GATE(CLK_NPUTIMER0, "clk_nputimer0", "clk_nputimer_root", 0,
  1010. RK3576_CLKGATE_CON(31), 12, GFLAGS),
  1011. [CLK_NPUTIMER1] = GATE(CLK_NPUTIMER1, "clk_nputimer1", "clk_nputimer_root", 0,
  1012. RK3576_CLKGATE_CON(31), 13, GFLAGS),
  1013. [PCLK_NPU_WDT] = GATE(PCLK_NPU_WDT, "pclk_npu_wdt", "pclk_nputop_root", 0,
  1014. RK3576_CLKGATE_CON(31), 14, GFLAGS),
  1015. [TCLK_NPU_WDT] = GATE(TCLK_NPU_WDT, "tclk_npu_wdt", "xin24m", 0,
  1016. RK3576_CLKGATE_CON(31), 15, GFLAGS),
  1017. [ACLK_RKNN_CBUF] = GATE(ACLK_RKNN_CBUF, "aclk_rknn_cbuf", "clk_rknn_dsu0", 0,
  1018. RK3576_CLKGATE_CON(32), 0, GFLAGS),
  1019. [HCLK_NPU_CM0_ROOT] = COMPOSITE_NODIV(HCLK_NPU_CM0_ROOT, "hclk_npu_cm0_root", mux_400m_200m_100m_24m_p, 0,
  1020. RK3576_CLKSEL_CON(87), 3, 2, MFLAGS,
  1021. RK3576_CLKGATE_CON(32), 5, GFLAGS),
  1022. [FCLK_NPU_CM0_CORE] = GATE(FCLK_NPU_CM0_CORE, "fclk_npu_cm0_core", "hclk_npu_cm0_root", 0,
  1023. RK3576_CLKGATE_CON(32), 7, GFLAGS),
  1024. [CLK_NPU_CM0_RTC] = COMPOSITE(CLK_NPU_CM0_RTC, "clk_npu_cm0_rtc", mux_24m_32k_p, 0,
  1025. RK3576_CLKSEL_CON(87), 10, 1, MFLAGS, 5, 5, DFLAGS,
  1026. RK3576_CLKGATE_CON(32), 9, GFLAGS),
  1027. [HCLK_RKNN_CBUF] = GATE(HCLK_RKNN_CBUF, "hclk_rknn_cbuf", "hclk_rknn_root", 0,
  1028. RK3576_CLKGATE_CON(32), 12, GFLAGS),
  1029. [HCLK_NVM_ROOT] = COMPOSITE_NODIV(HCLK_NVM_ROOT, "hclk_nvm_root", mux_200m_100m_50m_24m_p, RT_CLK_F_IS_CRITICAL,
  1030. RK3576_CLKSEL_CON(88), 0, 2, MFLAGS,
  1031. RK3576_CLKGATE_CON(33), 0, GFLAGS),
  1032. [ACLK_NVM_ROOT] = COMPOSITE(ACLK_NVM_ROOT, "aclk_nvm_root", gpll_cpll_p, RT_CLK_F_IS_CRITICAL,
  1033. RK3576_CLKSEL_CON(88), 7, 1, MFLAGS, 2, 5, DFLAGS,
  1034. RK3576_CLKGATE_CON(33), 1, GFLAGS),
  1035. [SCLK_FSPI_X2] = COMPOSITE(SCLK_FSPI_X2, "sclk_fspi_x2", gpll_cpll_24m_p, 0,
  1036. RK3576_CLKSEL_CON(89), 6, 2, MFLAGS, 0, 6, DFLAGS,
  1037. RK3576_CLKGATE_CON(33), 6, GFLAGS),
  1038. [HCLK_FSPI] = GATE(HCLK_FSPI, "hclk_fspi", "hclk_nvm_root", 0,
  1039. RK3576_CLKGATE_CON(33), 7, GFLAGS),
  1040. [CCLK_SRC_EMMC] = COMPOSITE(CCLK_SRC_EMMC, "cclk_src_emmc", gpll_cpll_24m_p, 0,
  1041. RK3576_CLKSEL_CON(89), 14, 2, MFLAGS, 8, 6, DFLAGS,
  1042. RK3576_CLKGATE_CON(33), 8, GFLAGS),
  1043. [HCLK_EMMC] = GATE(HCLK_EMMC, "hclk_emmc", "hclk_nvm_root", 0,
  1044. RK3576_CLKGATE_CON(33), 9, GFLAGS),
  1045. [ACLK_EMMC] = GATE(ACLK_EMMC, "aclk_emmc", "aclk_nvm_root", 0,
  1046. RK3576_CLKGATE_CON(33), 10, GFLAGS),
  1047. [BCLK_EMMC] = COMPOSITE_NODIV(BCLK_EMMC, "bclk_emmc", mux_200m_100m_50m_24m_p, 0,
  1048. RK3576_CLKSEL_CON(90), 0, 2, MFLAGS,
  1049. RK3576_CLKGATE_CON(33), 11, GFLAGS),
  1050. [TCLK_EMMC] = GATE(TCLK_EMMC, "tclk_emmc", "xin24m", 0,
  1051. RK3576_CLKGATE_CON(33), 12, GFLAGS),
  1052. [PCLK_PHP_ROOT] = COMPOSITE_NODIV(PCLK_PHP_ROOT, "pclk_php_root", mux_100m_50m_24m_p, 0,
  1053. RK3576_CLKSEL_CON(92), 0, 2, MFLAGS,
  1054. RK3576_CLKGATE_CON(34), 0, GFLAGS),
  1055. [ACLK_PHP_ROOT] = COMPOSITE(ACLK_PHP_ROOT, "aclk_php_root", gpll_cpll_p, 0,
  1056. RK3576_CLKSEL_CON(92), 9, 1, MFLAGS, 4, 5, DFLAGS,
  1057. RK3576_CLKGATE_CON(34), 7, GFLAGS),
  1058. [PCLK_PCIE0] = GATE(PCLK_PCIE0, "pclk_pcie0", "pclk_php_root", 0,
  1059. RK3576_CLKGATE_CON(34), 13, GFLAGS),
  1060. [CLK_PCIE0_AUX] = GATE(CLK_PCIE0_AUX, "clk_pcie0_aux", "xin24m", 0,
  1061. RK3576_CLKGATE_CON(34), 14, GFLAGS),
  1062. [ACLK_PCIE0_MST] = GATE(ACLK_PCIE0_MST, "aclk_pcie0_mst", "aclk_php_root", 0,
  1063. RK3576_CLKGATE_CON(34), 15, GFLAGS),
  1064. [ACLK_PCIE0_SLV] = GATE(ACLK_PCIE0_SLV, "aclk_pcie0_slv", "aclk_php_root", 0,
  1065. RK3576_CLKGATE_CON(35), 0, GFLAGS),
  1066. [ACLK_PCIE0_DBI] = GATE(ACLK_PCIE0_DBI, "aclk_pcie0_dbi", "aclk_php_root", 0,
  1067. RK3576_CLKGATE_CON(35), 1, GFLAGS),
  1068. [ACLK_USB3OTG1] = GATE(ACLK_USB3OTG1, "aclk_usb3otg1", "aclk_php_root", 0,
  1069. RK3576_CLKGATE_CON(35), 3, GFLAGS),
  1070. [CLK_REF_USB3OTG1] = GATE(CLK_REF_USB3OTG1, "clk_ref_usb3otg1", "xin24m", 0,
  1071. RK3576_CLKGATE_CON(35), 4, GFLAGS),
  1072. [CLK_SUSPEND_USB3OTG1] = GATE(CLK_SUSPEND_USB3OTG1, "clk_suspend_usb3otg1", "xin24m", 0,
  1073. RK3576_CLKGATE_CON(35), 5, GFLAGS),
  1074. [ACLK_MMU0] = GATE(ACLK_MMU0, "aclk_mmu0", "aclk_php_root", 0,
  1075. RK3576_CLKGATE_CON(35), 11, GFLAGS),
  1076. [ACLK_SLV_MMU0] = GATE(ACLK_SLV_MMU0, "aclk_slv_mmu0", "aclk_php_root", 0,
  1077. RK3576_CLKGATE_CON(35), 13, GFLAGS),
  1078. [ACLK_MMU1] = GATE(ACLK_MMU1, "aclk_mmu1", "aclk_php_root", 0,
  1079. RK3576_CLKGATE_CON(35), 14, GFLAGS),
  1080. [ACLK_SLV_MMU1] = GATE(ACLK_SLV_MMU1, "aclk_slv_mmu1", "aclk_php_root", 0,
  1081. RK3576_CLKGATE_CON(36), 0, GFLAGS),
  1082. [PCLK_PCIE1] = GATE(PCLK_PCIE1, "pclk_pcie1", "pclk_php_root", 0,
  1083. RK3576_CLKGATE_CON(36), 7, GFLAGS),
  1084. [CLK_PCIE1_AUX] = GATE(CLK_PCIE1_AUX, "clk_pcie1_aux", "xin24m", 0,
  1085. RK3576_CLKGATE_CON(36), 8, GFLAGS),
  1086. [ACLK_PCIE1_MST] = GATE(ACLK_PCIE1_MST, "aclk_pcie1_mst", "aclk_php_root", 0,
  1087. RK3576_CLKGATE_CON(36), 9, GFLAGS),
  1088. [ACLK_PCIE1_SLV] = GATE(ACLK_PCIE1_SLV, "aclk_pcie1_slv", "aclk_php_root", 0,
  1089. RK3576_CLKGATE_CON(36), 10, GFLAGS),
  1090. [ACLK_PCIE1_DBI] = GATE(ACLK_PCIE1_DBI, "aclk_pcie1_dbi", "aclk_php_root", 0,
  1091. RK3576_CLKGATE_CON(36), 11, GFLAGS),
  1092. [CLK_RXOOB0] = COMPOSITE(CLK_RXOOB0, "clk_rxoob0", gpll_cpll_p, 0,
  1093. RK3576_CLKSEL_CON(93), 7, 1, MFLAGS, 0, 7, DFLAGS,
  1094. RK3576_CLKGATE_CON(37), 0, GFLAGS),
  1095. [CLK_RXOOB1] = COMPOSITE(CLK_RXOOB1, "clk_rxoob1", gpll_cpll_p, 0,
  1096. RK3576_CLKSEL_CON(93), 15, 1, MFLAGS, 8, 7, DFLAGS,
  1097. RK3576_CLKGATE_CON(37), 1, GFLAGS),
  1098. [CLK_PMALIVE0] = GATE(CLK_PMALIVE0, "clk_pmalive0", "xin24m", RT_CLK_F_IS_CRITICAL,
  1099. RK3576_CLKGATE_CON(37), 2, GFLAGS),
  1100. [CLK_PMALIVE1] = GATE(CLK_PMALIVE1, "clk_pmalive1", "xin24m", RT_CLK_F_IS_CRITICAL,
  1101. RK3576_CLKGATE_CON(37), 3, GFLAGS),
  1102. [ACLK_SATA0] = GATE(ACLK_SATA0, "aclk_sata0", "aclk_php_root", 0,
  1103. RK3576_CLKGATE_CON(37), 4, GFLAGS),
  1104. [ACLK_SATA1] = GATE(ACLK_SATA1, "aclk_sata1", "aclk_php_root", 0,
  1105. RK3576_CLKGATE_CON(37), 5, GFLAGS),
  1106. [HCLK_SDGMAC_ROOT] = COMPOSITE_NODIV(HCLK_SDGMAC_ROOT, "hclk_sdgmac_root", mux_200m_100m_50m_24m_p, 0,
  1107. RK3576_CLKSEL_CON(103), 0, 2, MFLAGS,
  1108. RK3576_CLKGATE_CON(42), 0, GFLAGS),
  1109. [ACLK_SDGMAC_ROOT] = COMPOSITE(ACLK_SDGMAC_ROOT, "aclk_sdgmac_root", gpll_cpll_p, RT_CLK_F_IS_CRITICAL,
  1110. RK3576_CLKSEL_CON(103), 7, 1, MFLAGS, 2, 5, DFLAGS,
  1111. RK3576_CLKGATE_CON(42), 1, GFLAGS),
  1112. [PCLK_SDGMAC_ROOT] = COMPOSITE_NODIV(PCLK_SDGMAC_ROOT, "pclk_sdgmac_root", mux_100m_50m_24m_p, 0,
  1113. RK3576_CLKSEL_CON(103), 8, 2, MFLAGS,
  1114. RK3576_CLKGATE_CON(42), 2, GFLAGS),
  1115. [ACLK_GMAC0] = GATE(ACLK_GMAC0, "aclk_gmac0", "aclk_sdgmac_root", 0,
  1116. RK3576_CLKGATE_CON(42), 7, GFLAGS),
  1117. [ACLK_GMAC1] = GATE(ACLK_GMAC1, "aclk_gmac1", "aclk_sdgmac_root", 0,
  1118. RK3576_CLKGATE_CON(42), 8, GFLAGS),
  1119. [PCLK_GMAC0] = GATE(PCLK_GMAC0, "pclk_gmac0", "pclk_sdgmac_root", 0,
  1120. RK3576_CLKGATE_CON(42), 9, GFLAGS),
  1121. [PCLK_GMAC1] = GATE(PCLK_GMAC1, "pclk_gmac1", "pclk_sdgmac_root", 0,
  1122. RK3576_CLKGATE_CON(42), 10, GFLAGS),
  1123. [CCLK_SRC_SDIO] = COMPOSITE(CCLK_SRC_SDIO, "cclk_src_sdio", gpll_cpll_24m_p, 0,
  1124. RK3576_CLKSEL_CON(104), 6, 2, MFLAGS, 0, 6, DFLAGS,
  1125. RK3576_CLKGATE_CON(42), 11, GFLAGS),
  1126. [HCLK_SDIO] = GATE(HCLK_SDIO, "hclk_sdio", "hclk_sdgmac_root", 0,
  1127. RK3576_CLKGATE_CON(42), 12, GFLAGS),
  1128. [CLK_GMAC1_PTP_REF] = GATE(CLK_GMAC1_PTP_REF, "clk_gmac1_ptp_ref", "clk_gmac1_ptp_ref_src", 0,
  1129. RK3576_CLKGATE_CON(42), 13, GFLAGS),
  1130. [CLK_GMAC0_PTP_REF] = GATE(CLK_GMAC0_PTP_REF, "clk_gmac0_ptp_ref", "clk_gmac0_ptp_ref_src", 0,
  1131. RK3576_CLKGATE_CON(42), 14, GFLAGS),
  1132. [CLK_GMAC1_PTP_REF_SRC] = COMPOSITE(CLK_GMAC1_PTP_REF_SRC, "clk_gmac1_ptp_ref_src", clk_gmac1_ptp_ref_src_p, 0,
  1133. RK3576_CLKSEL_CON(104), 13, 2, MFLAGS, 8, 5, DFLAGS,
  1134. RK3576_CLKGATE_CON(42), 15, GFLAGS),
  1135. [CLK_GMAC0_PTP_REF_SRC] = COMPOSITE(CLK_GMAC0_PTP_REF_SRC, "clk_gmac0_ptp_ref_src", clk_gmac0_ptp_ref_src_p, 0,
  1136. RK3576_CLKSEL_CON(105), 5, 2, MFLAGS, 0, 5, DFLAGS,
  1137. RK3576_CLKGATE_CON(43), 0, GFLAGS),
  1138. [CCLK_SRC_SDMMC0] = COMPOSITE(CCLK_SRC_SDMMC0, "cclk_src_sdmmc0", gpll_cpll_24m_p, 0,
  1139. RK3576_CLKSEL_CON(105), 13, 2, MFLAGS, 7, 6, DFLAGS,
  1140. RK3576_CLKGATE_CON(43), 1, GFLAGS),
  1141. [HCLK_SDMMC0] = GATE(HCLK_SDMMC0, "hclk_sdmmc0", "hclk_sdgmac_root", 0,
  1142. RK3576_CLKGATE_CON(43), 2, GFLAGS),
  1143. [SCLK_FSPI1_X2] = COMPOSITE(SCLK_FSPI1_X2, "sclk_fspi1_x2", gpll_cpll_24m_p, 0,
  1144. RK3576_CLKSEL_CON(106), 6, 2, MFLAGS, 0, 6, DFLAGS,
  1145. RK3576_CLKGATE_CON(43), 3, GFLAGS),
  1146. [HCLK_FSPI1] = GATE(HCLK_FSPI1, "hclk_fspi1", "hclk_sdgmac_root", 0,
  1147. RK3576_CLKGATE_CON(43), 4, GFLAGS),
  1148. [ACLK_DSMC_ROOT] = COMPOSITE(ACLK_DSMC_ROOT, "aclk_dsmc_root", gpll_cpll_p, RT_CLK_F_IS_CRITICAL,
  1149. RK3576_CLKSEL_CON(106), 13, 1, MFLAGS, 8, 5, DFLAGS,
  1150. RK3576_CLKGATE_CON(43), 5, GFLAGS),
  1151. [ACLK_DSMC] = GATE(ACLK_DSMC, "aclk_dsmc", "aclk_dsmc_root", 0,
  1152. RK3576_CLKGATE_CON(43), 7, GFLAGS),
  1153. [PCLK_DSMC] = GATE(PCLK_DSMC, "pclk_dsmc", "pclk_sdgmac_root", 0,
  1154. RK3576_CLKGATE_CON(43), 8, GFLAGS),
  1155. [CLK_DSMC_SYS] = COMPOSITE(CLK_DSMC_SYS, "clk_dsmc_sys", gpll_cpll_p, 0,
  1156. RK3576_CLKSEL_CON(107), 5, 1, MFLAGS, 0, 5, DFLAGS,
  1157. RK3576_CLKGATE_CON(43), 9, GFLAGS),
  1158. [HCLK_HSGPIO] = GATE(HCLK_HSGPIO, "hclk_hsgpio", "hclk_sdgmac_root", 0,
  1159. RK3576_CLKGATE_CON(43), 10, GFLAGS),
  1160. [CLK_HSGPIO_TX] = COMPOSITE(CLK_HSGPIO_TX, "clk_hsgpio_tx", gpll_cpll_24m_p, 0,
  1161. RK3576_CLKSEL_CON(107), 11, 2, MFLAGS, 6, 5, DFLAGS,
  1162. RK3576_CLKGATE_CON(43), 11, GFLAGS),
  1163. [CLK_HSGPIO_RX] = COMPOSITE(CLK_HSGPIO_RX, "clk_hsgpio_rx", gpll_cpll_24m_p, 0,
  1164. RK3576_CLKSEL_CON(108), 5, 2, MFLAGS, 0, 5, DFLAGS,
  1165. RK3576_CLKGATE_CON(43), 12, GFLAGS),
  1166. [ACLK_HSGPIO] = GATE(ACLK_HSGPIO, "aclk_hsgpio", "aclk_sdgmac_root", 0,
  1167. RK3576_CLKGATE_CON(43), 13, GFLAGS),
  1168. [PCLK_PHPPHY_ROOT] = GATE(PCLK_PHPPHY_ROOT, "pclk_phpphy_root", "pclk_bus_root", RT_CLK_F_IS_CRITICAL,
  1169. RK3576_PHP_CLKGATE_CON(0), 2, GFLAGS),
  1170. [PCLK_PCIE2_COMBOPHY0] = GATE(PCLK_PCIE2_COMBOPHY0, "pclk_pcie2_combophy0", "pclk_phpphy_root", 0,
  1171. RK3576_PHP_CLKGATE_CON(0), 5, GFLAGS),
  1172. [PCLK_PCIE2_COMBOPHY1] = GATE(PCLK_PCIE2_COMBOPHY1, "pclk_pcie2_combophy1", "pclk_phpphy_root", 0,
  1173. RK3576_PHP_CLKGATE_CON(0), 7, GFLAGS),
  1174. [CLK_PCIE_100M_SRC] = COMPOSITE_NOMUX(CLK_PCIE_100M_SRC, "clk_pcie_100m_src", "ppll", 0,
  1175. RK3576_PHP_CLKSEL_CON(0), 2, 5, DFLAGS,
  1176. RK3576_PHP_CLKGATE_CON(1), 1, GFLAGS),
  1177. [CLK_PCIE_100M_NDUTY_SRC] = COMPOSITE_NOMUX(CLK_PCIE_100M_NDUTY_SRC, "clk_pcie_100m_nduty_src", "ppll", 0,
  1178. RK3576_PHP_CLKSEL_CON(0), 7, 5, DFLAGS,
  1179. RK3576_PHP_CLKGATE_CON(1), 2, GFLAGS),
  1180. [CLK_REF_PCIE0_PHY] = COMPOSITE_NODIV(CLK_REF_PCIE0_PHY, "clk_ref_pcie0_phy", clk_ref_pcie0_phy_p, 0,
  1181. RK3576_PHP_CLKSEL_CON(0), 12, 2, MFLAGS,
  1182. RK3576_PHP_CLKGATE_CON(1), 5, GFLAGS),
  1183. [CLK_REF_PCIE1_PHY] = COMPOSITE_NODIV(CLK_REF_PCIE1_PHY, "clk_ref_pcie1_phy", clk_ref_pcie0_phy_p, 0,
  1184. RK3576_PHP_CLKSEL_CON(0), 14, 2, MFLAGS,
  1185. RK3576_PHP_CLKGATE_CON(1), 8, GFLAGS),
  1186. [CLK_REF_MPHY_26M] = COMPOSITE_NOMUX(CLK_REF_MPHY_26M, "clk_ref_mphy_26m", "ppll", RT_CLK_F_IS_CRITICAL,
  1187. RK3576_PHP_CLKSEL_CON(1), 0, 8, DFLAGS,
  1188. RK3576_PHP_CLKGATE_CON(1), 9, GFLAGS),
  1189. [HCLK_RKVDEC_ROOT] = COMPOSITE_NODIV(HCLK_RKVDEC_ROOT, "hclk_rkvdec_root", mux_200m_100m_50m_24m_p, 0,
  1190. RK3576_CLKSEL_CON(110), 0, 2, MFLAGS,
  1191. RK3576_CLKGATE_CON(45), 0, GFLAGS),
  1192. [ACLK_RKVDEC_ROOT] = COMPOSITE(ACLK_RKVDEC_ROOT, "aclk_rkvdec_root", gpll_cpll_aupll_spll_p, 0,
  1193. RK3576_CLKSEL_CON(110), 7, 2, MFLAGS, 2, 5, DFLAGS,
  1194. RK3576_CLKGATE_CON(45), 1, GFLAGS),
  1195. [HCLK_RKVDEC] = GATE(HCLK_RKVDEC, "hclk_rkvdec", "hclk_rkvdec_root", 0,
  1196. RK3576_CLKGATE_CON(45), 3, GFLAGS),
  1197. [CLK_RKVDEC_HEVC_CA] = COMPOSITE(CLK_RKVDEC_HEVC_CA, "clk_rkvdec_hevc_ca", gpll_cpll_lpll_bpll_p, 0,
  1198. RK3576_CLKSEL_CON(111), 5, 2, MFLAGS, 0, 5, DFLAGS,
  1199. RK3576_CLKGATE_CON(45), 8, GFLAGS),
  1200. [CLK_RKVDEC_CORE] = GATE(CLK_RKVDEC_CORE, "clk_rkvdec_core", "aclk_rkvdec_root", 0,
  1201. RK3576_CLKGATE_CON(45), 9, GFLAGS),
  1202. [ACLK_UFS_ROOT] = COMPOSITE(ACLK_UFS_ROOT, "aclk_ufs_root", gpll_cpll_p, 0,
  1203. RK3576_CLKSEL_CON(115), 5, 1, MFLAGS, 0, 5, DFLAGS,
  1204. RK3576_CLKGATE_CON(47), 0, GFLAGS),
  1205. [ACLK_USB_ROOT] = COMPOSITE(ACLK_USB_ROOT, "aclk_usb_root", gpll_cpll_p, RT_CLK_F_IS_CRITICAL,
  1206. RK3576_CLKSEL_CON(115), 11, 1, MFLAGS, 6, 5, DFLAGS,
  1207. RK3576_CLKGATE_CON(47), 1, GFLAGS),
  1208. [PCLK_USB_ROOT] = COMPOSITE_NODIV(PCLK_USB_ROOT, "pclk_usb_root", mux_100m_50m_24m_p, RT_CLK_F_IS_CRITICAL,
  1209. RK3576_CLKSEL_CON(115), 12, 2, MFLAGS,
  1210. RK3576_CLKGATE_CON(47), 2, GFLAGS),
  1211. [ACLK_USB3OTG0] = GATE(ACLK_USB3OTG0, "aclk_usb3otg0", "aclk_usb_root", 0,
  1212. RK3576_CLKGATE_CON(47), 5, GFLAGS),
  1213. [CLK_REF_USB3OTG0] = GATE(CLK_REF_USB3OTG0, "clk_ref_usb3otg0", "xin24m", 0,
  1214. RK3576_CLKGATE_CON(47), 6, GFLAGS),
  1215. [CLK_SUSPEND_USB3OTG0] = GATE(CLK_SUSPEND_USB3OTG0, "clk_suspend_usb3otg0", "xin24m", 0,
  1216. RK3576_CLKGATE_CON(47), 7, GFLAGS),
  1217. [ACLK_MMU2] = GATE(ACLK_MMU2, "aclk_mmu2", "aclk_usb_root", 0,
  1218. RK3576_CLKGATE_CON(47), 12, GFLAGS),
  1219. [ACLK_SLV_MMU2] = GATE(ACLK_SLV_MMU2, "aclk_slv_mmu2", "aclk_usb_root", 0,
  1220. RK3576_CLKGATE_CON(47), 13, GFLAGS),
  1221. [ACLK_UFS_SYS] = GATE(ACLK_UFS_SYS, "aclk_ufs_sys", "aclk_ufs_root", 0,
  1222. RK3576_CLKGATE_CON(47), 15, GFLAGS),
  1223. [ACLK_VPU_ROOT] = COMPOSITE(ACLK_VPU_ROOT, "aclk_vpu_root", gpll_spll_cpll_bpll_lpll_p, RT_CLK_F_IS_CRITICAL,
  1224. RK3576_CLKSEL_CON(118), 5, 3, MFLAGS, 0, 5, DFLAGS,
  1225. RK3576_CLKGATE_CON(49), 0, GFLAGS),
  1226. [ACLK_VPU_MID_ROOT] = COMPOSITE_NODIV(ACLK_VPU_MID_ROOT, "aclk_vpu_mid_root", mux_600m_400m_300m_24m_p, 0,
  1227. RK3576_CLKSEL_CON(118), 8, 2, MFLAGS,
  1228. RK3576_CLKGATE_CON(49), 1, GFLAGS),
  1229. [HCLK_VPU_ROOT] = COMPOSITE_NODIV(HCLK_VPU_ROOT, "hclk_vpu_root", mux_200m_100m_50m_24m_p, 0,
  1230. RK3576_CLKSEL_CON(118), 10, 2, MFLAGS,
  1231. RK3576_CLKGATE_CON(49), 2, GFLAGS),
  1232. [ACLK_JPEG_ROOT] = COMPOSITE(ACLK_JPEG_ROOT, "aclk_jpeg_root", gpll_cpll_aupll_spll_p, 0,
  1233. RK3576_CLKSEL_CON(119), 5, 2, MFLAGS, 0, 5, DFLAGS,
  1234. RK3576_CLKGATE_CON(49), 3, GFLAGS),
  1235. [ACLK_VPU_LOW_ROOT] = COMPOSITE_NODIV(ACLK_VPU_LOW_ROOT, "aclk_vpu_low_root", mux_400m_200m_100m_24m_p, 0,
  1236. RK3576_CLKSEL_CON(119), 7, 2, MFLAGS,
  1237. RK3576_CLKGATE_CON(49), 4, GFLAGS),
  1238. [HCLK_RGA2E_0] = GATE(HCLK_RGA2E_0, "hclk_rga2e_0", "hclk_vpu_root", 0,
  1239. RK3576_CLKGATE_CON(49), 13, GFLAGS),
  1240. [ACLK_RGA2E_0] = GATE(ACLK_RGA2E_0, "aclk_rga2e_0", "aclk_vpu_root", 0,
  1241. RK3576_CLKGATE_CON(49), 14, GFLAGS),
  1242. [CLK_CORE_RGA2E_0] = COMPOSITE(CLK_CORE_RGA2E_0, "clk_core_rga2e_0", gpll_spll_cpll_bpll_lpll_p, 0,
  1243. RK3576_CLKSEL_CON(120), 5, 3, MFLAGS, 0, 5, DFLAGS,
  1244. RK3576_CLKGATE_CON(49), 15, GFLAGS),
  1245. [ACLK_JPEG] = GATE(ACLK_JPEG, "aclk_jpeg", "aclk_jpeg_root", 0,
  1246. RK3576_CLKGATE_CON(50), 0, GFLAGS),
  1247. [HCLK_JPEG] = GATE(HCLK_JPEG, "hclk_jpeg", "hclk_vpu_root", 0,
  1248. RK3576_CLKGATE_CON(50), 1, GFLAGS),
  1249. [HCLK_VDPP] = GATE(HCLK_VDPP, "hclk_vdpp", "hclk_vpu_root", 0,
  1250. RK3576_CLKGATE_CON(50), 2, GFLAGS),
  1251. [ACLK_VDPP] = GATE(ACLK_VDPP, "aclk_vdpp", "aclk_vpu_mid_root", 0,
  1252. RK3576_CLKGATE_CON(50), 3, GFLAGS),
  1253. [CLK_CORE_VDPP] = COMPOSITE(CLK_CORE_VDPP, "clk_core_vdpp", gpll_cpll_p, 0,
  1254. RK3576_CLKSEL_CON(120), 13, 1, MFLAGS, 8, 5, DFLAGS,
  1255. RK3576_CLKGATE_CON(50), 4, GFLAGS),
  1256. [HCLK_RGA2E_1] = GATE(HCLK_RGA2E_1, "hclk_rga2e_1", "hclk_vpu_root", 0,
  1257. RK3576_CLKGATE_CON(50), 5, GFLAGS),
  1258. [ACLK_RGA2E_1] = GATE(ACLK_RGA2E_1, "aclk_rga2e_1", "aclk_vpu_root", 0,
  1259. RK3576_CLKGATE_CON(50), 6, GFLAGS),
  1260. [CLK_CORE_RGA2E_1] = COMPOSITE(CLK_CORE_RGA2E_1, "clk_core_rga2e_1", gpll_spll_cpll_bpll_lpll_p, 0,
  1261. RK3576_CLKSEL_CON(121), 5, 3, MFLAGS, 0, 5, DFLAGS,
  1262. RK3576_CLKGATE_CON(50), 7, GFLAGS),
  1263. [DCLK_EBC_FRAC_SRC] = COMPOSITE_FRAC(DCLK_EBC_FRAC_SRC, "dclk_ebc_frac_src", "dclk_ebc_frac_src_p", 0,
  1264. RK3576_CLKSEL_CON(122), CLK_FRAC_DIVIDER_NO_LIMIT,
  1265. RK3576_CLKGATE_CON(50), 9, GFLAGS),
  1266. [HCLK_EBC] = GATE(ACLK_EBC, "aclk_ebc", "aclk_vpu_low_root", 0,
  1267. RK3576_CLKGATE_CON(50), 11, GFLAGS),
  1268. [ACLK_EBC] = GATE(HCLK_EBC, "hclk_ebc", "hclk_vpu_root", 0,
  1269. RK3576_CLKGATE_CON(50), 10, GFLAGS),
  1270. [DCLK_EBC] = COMPOSITE(DCLK_EBC, "dclk_ebc", dclk_ebc_p, 0,
  1271. RK3576_CLKSEL_CON(123), 12, 3, MFLAGS, 3, 9, DFLAGS,
  1272. RK3576_CLKGATE_CON(50), 12, GFLAGS),
  1273. [HCLK_VEPU0_ROOT] = COMPOSITE_NODIV(HCLK_VEPU0_ROOT, "hclk_vepu0_root", mux_200m_100m_50m_24m_p, 0,
  1274. RK3576_CLKSEL_CON(124), 0, 2, MFLAGS,
  1275. RK3576_CLKGATE_CON(51), 0, GFLAGS),
  1276. [ACLK_VEPU0_ROOT] = COMPOSITE(ACLK_VEPU0_ROOT, "aclk_vepu0_root", gpll_cpll_p, 0,
  1277. RK3576_CLKSEL_CON(124), 7, 1, MFLAGS, 2, 5, DFLAGS,
  1278. RK3576_CLKGATE_CON(51), 1, GFLAGS),
  1279. [HCLK_VEPU0] = GATE(HCLK_VEPU0, "hclk_vepu0", "hclk_vepu0_root", 0,
  1280. RK3576_CLKGATE_CON(51), 4, GFLAGS),
  1281. [ACLK_VEPU0] = GATE(ACLK_VEPU0, "aclk_vepu0", "aclk_vepu0_root", 0,
  1282. RK3576_CLKGATE_CON(51), 5, GFLAGS),
  1283. [CLK_VEPU0_CORE] = COMPOSITE(CLK_VEPU0_CORE, "clk_vepu0_core", gpll_cpll_spll_lpll_bpll_p, 0,
  1284. RK3576_CLKSEL_CON(124), 13, 3, MFLAGS, 8, 5, DFLAGS,
  1285. RK3576_CLKGATE_CON(51), 6, GFLAGS),
  1286. [ACLK_VI_ROOT] = COMPOSITE(ACLK_VI_ROOT, "aclk_vi_root", gpll_spll_isppvtpll_bpll_lpll_p, RT_CLK_F_IS_CRITICAL,
  1287. RK3576_CLKSEL_CON(128), 5, 3, MFLAGS, 0, 5, DFLAGS,
  1288. RK3576_CLKGATE_CON(53), 0, GFLAGS),
  1289. [HCLK_VI_ROOT] = COMPOSITE_NODIV(HCLK_VI_ROOT, "hclk_vi_root", hclk_vi_root_p, RT_CLK_F_IS_CRITICAL,
  1290. RK3576_CLKSEL_CON(128), 8, 2, MFLAGS,
  1291. RK3576_CLKGATE_CON(53), 1, GFLAGS),
  1292. [PCLK_VI_ROOT] = COMPOSITE_NODIV(PCLK_VI_ROOT, "pclk_vi_root", mux_100m_50m_24m_p, 0,
  1293. RK3576_CLKSEL_CON(128), 10, 2, MFLAGS,
  1294. RK3576_CLKGATE_CON(53), 2, GFLAGS),
  1295. [DCLK_VICAP] = COMPOSITE(DCLK_VICAP, "dclk_vicap", gpll_cpll_p, 0,
  1296. RK3576_CLKSEL_CON(129), 5, 1, MFLAGS, 0, 5, DFLAGS,
  1297. RK3576_CLKGATE_CON(53), 6, GFLAGS),
  1298. [ACLK_VICAP] = GATE(ACLK_VICAP, "aclk_vicap", "aclk_vi_root", 0,
  1299. RK3576_CLKGATE_CON(53), 7, GFLAGS),
  1300. [HCLK_VICAP] = GATE(HCLK_VICAP, "hclk_vicap", "hclk_vi_root", 0,
  1301. RK3576_CLKGATE_CON(53), 8, GFLAGS),
  1302. [CLK_ISP_CORE] = COMPOSITE(CLK_ISP_CORE, "clk_isp_core", gpll_spll_isppvtpll_bpll_lpll_p, 0,
  1303. RK3576_CLKSEL_CON(129), 11, 3, MFLAGS, 6, 5, DFLAGS,
  1304. RK3576_CLKGATE_CON(53), 9, GFLAGS),
  1305. [CLK_ISP_CORE_MARVIN] = GATE(CLK_ISP_CORE_MARVIN, "clk_isp_core_marvin", "clk_isp_core", 0,
  1306. RK3576_CLKGATE_CON(53), 10, GFLAGS),
  1307. [CLK_ISP_CORE_VICAP] = GATE(CLK_ISP_CORE_VICAP, "clk_isp_core_vicap", "clk_isp_core", 0,
  1308. RK3576_CLKGATE_CON(53), 11, GFLAGS),
  1309. [ACLK_ISP] = GATE(ACLK_ISP, "aclk_isp", "aclk_vi_root", 0,
  1310. RK3576_CLKGATE_CON(53), 12, GFLAGS),
  1311. [HCLK_ISP] = GATE(HCLK_ISP, "hclk_isp", "hclk_vi_root", 0,
  1312. RK3576_CLKGATE_CON(53), 13, GFLAGS),
  1313. [ACLK_VPSS] = GATE(ACLK_VPSS, "aclk_vpss", "aclk_vi_root", 0,
  1314. RK3576_CLKGATE_CON(53), 15, GFLAGS),
  1315. [HCLK_VPSS] = GATE(HCLK_VPSS, "hclk_vpss", "hclk_vi_root", 0,
  1316. RK3576_CLKGATE_CON(54), 0, GFLAGS),
  1317. [CLK_CORE_VPSS] = GATE(CLK_CORE_VPSS, "clk_core_vpss", "clk_isp_core", 0,
  1318. RK3576_CLKGATE_CON(54), 1, GFLAGS),
  1319. [PCLK_CSI_HOST_0] = GATE(PCLK_CSI_HOST_0, "pclk_csi_host_0", "pclk_vi_root", 0,
  1320. RK3576_CLKGATE_CON(54), 4, GFLAGS),
  1321. [PCLK_CSI_HOST_1] = GATE(PCLK_CSI_HOST_1, "pclk_csi_host_1", "pclk_vi_root", 0,
  1322. RK3576_CLKGATE_CON(54), 5, GFLAGS),
  1323. [PCLK_CSI_HOST_2] = GATE(PCLK_CSI_HOST_2, "pclk_csi_host_2", "pclk_vi_root", 0,
  1324. RK3576_CLKGATE_CON(54), 6, GFLAGS),
  1325. [PCLK_CSI_HOST_3] = GATE(PCLK_CSI_HOST_3, "pclk_csi_host_3", "pclk_vi_root", 0,
  1326. RK3576_CLKGATE_CON(54), 7, GFLAGS),
  1327. [PCLK_CSI_HOST_4] = GATE(PCLK_CSI_HOST_4, "pclk_csi_host_4", "pclk_vi_root", 0,
  1328. RK3576_CLKGATE_CON(54), 8, GFLAGS),
  1329. [ICLK_CSIHOST01] = COMPOSITE_NODIV(ICLK_CSIHOST01, "iclk_csihost01", mux_400m_200m_100m_24m_p, 0,
  1330. RK3576_CLKSEL_CON(130), 7, 2, MFLAGS,
  1331. RK3576_CLKGATE_CON(54), 10, GFLAGS),
  1332. [ICLK_CSIHOST0] = GATE(ICLK_CSIHOST0, "iclk_csihost0", "iclk_csihost01", 0,
  1333. RK3576_CLKGATE_CON(54), 11, GFLAGS),
  1334. [ACLK_VI_ROOT_INTER] = COMPOSITE_NOMUX(ACLK_VI_ROOT_INTER, "aclk_vi_root_inter", "aclk_vi_root", 0,
  1335. RK3576_CLKSEL_CON(130), 10, 3, DFLAGS,
  1336. RK3576_CLKGATE_CON(54), 13, GFLAGS),
  1337. [CLK_VICAP_I0CLK] = GATE(CLK_VICAP_I0CLK, "clk_vicap_i0clk", "clk_csihost0_clkdata_i", 0,
  1338. RK3576_CLKGATE_CON(59), 1, GFLAGS),
  1339. [CLK_VICAP_I1CLK] = GATE(CLK_VICAP_I1CLK, "clk_vicap_i1clk", "clk_csihost1_clkdata_i", 0,
  1340. RK3576_CLKGATE_CON(59), 2, GFLAGS),
  1341. [CLK_VICAP_I2CLK] = GATE(CLK_VICAP_I2CLK, "clk_vicap_i2clk", "clk_csihost2_clkdata_i", 0,
  1342. RK3576_CLKGATE_CON(59), 3, GFLAGS),
  1343. [CLK_VICAP_I3CLK] = GATE(CLK_VICAP_I3CLK, "clk_vicap_i3clk", "clk_csihost3_clkdata_i", 0,
  1344. RK3576_CLKGATE_CON(59), 4, GFLAGS),
  1345. [CLK_VICAP_I4CLK] = GATE(CLK_VICAP_I4CLK, "clk_vicap_i4clk", "clk_csihost4_clkdata_i", 0,
  1346. RK3576_CLKGATE_CON(59), 5, GFLAGS),
  1347. [ACLK_VOP_ROOT] = COMPOSITE(ACLK_VOP_ROOT, "aclk_vop_root", gpll_cpll_aupll_spll_lpll_p, RT_CLK_F_IS_CRITICAL,
  1348. RK3576_CLKSEL_CON(144), 5, 3, MFLAGS, 0, 5, DFLAGS,
  1349. RK3576_CLKGATE_CON(61), 0, GFLAGS),
  1350. [HCLK_VOP_ROOT] = COMPOSITE_NODIV(HCLK_VOP_ROOT, "hclk_vop_root", mux_200m_100m_50m_24m_p, RT_CLK_F_IS_CRITICAL,
  1351. RK3576_CLKSEL_CON(144), 10, 2, MFLAGS,
  1352. RK3576_CLKGATE_CON(61), 2, GFLAGS),
  1353. [PCLK_VOP_ROOT] = COMPOSITE_NODIV(PCLK_VOP_ROOT, "pclk_vop_root", mux_100m_50m_24m_p, 0,
  1354. RK3576_CLKSEL_CON(144), 12, 2, MFLAGS,
  1355. RK3576_CLKGATE_CON(61), 3, GFLAGS),
  1356. [HCLK_VOP] = GATE(HCLK_VOP, "hclk_vop", "hclk_vop_root", 0,
  1357. RK3576_CLKGATE_CON(61), 8, GFLAGS),
  1358. [ACLK_VOP] = GATE(ACLK_VOP, "aclk_vop", "aclk_vop_root", 0,
  1359. RK3576_CLKGATE_CON(61), 9, GFLAGS),
  1360. [DCLK_VP0_SRC] = COMPOSITE(DCLK_VP0_SRC, "dclk_vp0_src", gpll_cpll_vpll_bpll_lpll_p, 0,
  1361. RK3576_CLKSEL_CON(145), 8, 3, MFLAGS, 0, 8, DFLAGS,
  1362. RK3576_CLKGATE_CON(61), 10, GFLAGS),
  1363. [DCLK_VP1_SRC] = COMPOSITE(DCLK_VP1_SRC, "dclk_vp1_src", gpll_cpll_vpll_bpll_lpll_p, 0,
  1364. RK3576_CLKSEL_CON(146), 8, 3, MFLAGS, 0, 8, DFLAGS,
  1365. RK3576_CLKGATE_CON(61), 11, GFLAGS),
  1366. [DCLK_VP2_SRC] = COMPOSITE(DCLK_VP2_SRC, "dclk_vp2_src", gpll_cpll_vpll_bpll_lpll_p, 0,
  1367. RK3576_CLKSEL_CON(147), 8, 3, MFLAGS, 0, 8, DFLAGS,
  1368. RK3576_CLKGATE_CON(61), 12, GFLAGS),
  1369. [DCLK_VP0] = COMPOSITE_NODIV(DCLK_VP0, "dclk_vp0", dclk_vp0_p, RT_CLK_F_SET_RATE_PARENT,
  1370. RK3576_CLKSEL_CON(147), 11, 1, MFLAGS,
  1371. RK3576_CLKGATE_CON(61), 13, GFLAGS),
  1372. [DCLK_VP1] = COMPOSITE_NODIV(DCLK_VP1, "dclk_vp1", dclk_vp1_p, RT_CLK_F_SET_RATE_PARENT,
  1373. RK3576_CLKSEL_CON(147), 12, 1, MFLAGS,
  1374. RK3576_CLKGATE_CON(62), 0, GFLAGS),
  1375. [DCLK_VP2] = COMPOSITE_NODIV(DCLK_VP2, "dclk_vp2", dclk_vp2_p, RT_CLK_F_SET_RATE_PARENT,
  1376. RK3576_CLKSEL_CON(147), 13, 1, MFLAGS,
  1377. RK3576_CLKGATE_CON(62), 1, GFLAGS),
  1378. [ACLK_VO0_ROOT] = COMPOSITE(ACLK_VO0_ROOT, "aclk_vo0_root", gpll_cpll_lpll_bpll_p, 0,
  1379. RK3576_CLKSEL_CON(149), 5, 2, MFLAGS, 0, 5, DFLAGS,
  1380. RK3576_CLKGATE_CON(63), 0, GFLAGS),
  1381. [HCLK_VO0_ROOT] = COMPOSITE_NODIV(HCLK_VO0_ROOT, "hclk_vo0_root", mux_200m_100m_50m_24m_p, RT_CLK_F_IS_CRITICAL,
  1382. RK3576_CLKSEL_CON(149), 7, 2, MFLAGS,
  1383. RK3576_CLKGATE_CON(63), 1, GFLAGS),
  1384. [PCLK_VO0_ROOT] = COMPOSITE_NODIV(PCLK_VO0_ROOT, "pclk_vo0_root", mux_150m_100m_50m_24m_p, 0,
  1385. RK3576_CLKSEL_CON(149), 11, 2, MFLAGS,
  1386. RK3576_CLKGATE_CON(63), 3, GFLAGS),
  1387. [ACLK_HDCP0] = GATE(ACLK_HDCP0, "aclk_hdcp0", "aclk_vo0_root", 0,
  1388. RK3576_CLKGATE_CON(63), 12, GFLAGS),
  1389. [HCLK_HDCP0] = GATE(HCLK_HDCP0, "hclk_hdcp0", "hclk_vo0_root", 0,
  1390. RK3576_CLKGATE_CON(63), 13, GFLAGS),
  1391. [PCLK_HDCP0] = GATE(PCLK_HDCP0, "pclk_hdcp0", "pclk_vo0_root", 0,
  1392. RK3576_CLKGATE_CON(63), 14, GFLAGS),
  1393. [CLK_TRNG0_SKP] = GATE(CLK_TRNG0_SKP, "clk_trng0_skp", "aclk_hdcp0", 0,
  1394. RK3576_CLKGATE_CON(64), 4, GFLAGS),
  1395. [PCLK_DSIHOST0] = GATE(PCLK_DSIHOST0, "pclk_dsihost0", "pclk_vo0_root", 0,
  1396. RK3576_CLKGATE_CON(64), 5, GFLAGS),
  1397. [CLK_DSIHOST0] = COMPOSITE(CLK_DSIHOST0, "clk_dsihost0", gpll_cpll_spll_vpll_bpll_lpll_p, 0,
  1398. RK3576_CLKSEL_CON(151), 7, 3, MFLAGS, 0, 7, DFLAGS,
  1399. RK3576_CLKGATE_CON(64), 6, GFLAGS),
  1400. [PCLK_HDMITX0] = GATE(PCLK_HDMITX0, "pclk_hdmitx0", "pclk_vo0_root", 0,
  1401. RK3576_CLKGATE_CON(64), 7, GFLAGS),
  1402. [CLK_HDMITX0_EARC] = COMPOSITE(CLK_HDMITX0_EARC, "clk_hdmitx0_earc", gpll_cpll_p, 0,
  1403. RK3576_CLKSEL_CON(151), 15, 1, MFLAGS, 10, 5, DFLAGS,
  1404. RK3576_CLKGATE_CON(64), 8, GFLAGS),
  1405. [CLK_HDMITX0_REF] = GATE(CLK_HDMITX0_REF, "clk_hdmitx0_ref", "aclk_vo0_root", 0,
  1406. RK3576_CLKGATE_CON(64), 9, GFLAGS),
  1407. [PCLK_EDP0] = GATE(PCLK_EDP0, "pclk_edp0", "pclk_vo0_root", 0,
  1408. RK3576_CLKGATE_CON(64), 13, GFLAGS),
  1409. [CLK_EDP0_24M] = GATE(CLK_EDP0_24M, "clk_edp0_24m", "xin24m", 0,
  1410. RK3576_CLKGATE_CON(64), 14, GFLAGS),
  1411. [CLK_EDP0_200M] = COMPOSITE_NODIV(CLK_EDP0_200M, "clk_edp0_200m", mux_200m_100m_50m_24m_p, 0,
  1412. RK3576_CLKSEL_CON(152), 1, 2, MFLAGS,
  1413. RK3576_CLKGATE_CON(64), 15, GFLAGS),
  1414. [MCLK_SAI5_8CH_SRC] = COMPOSITE(MCLK_SAI5_8CH_SRC, "mclk_sai5_8ch_src", audio_frac_int_p, 0,
  1415. RK3576_CLKSEL_CON(154), 10, 3, MFLAGS, 2, 8, DFLAGS,
  1416. RK3576_CLKGATE_CON(65), 3, GFLAGS),
  1417. [MCLK_SAI5_8CH] = COMPOSITE_NODIV(MCLK_SAI5_8CH, "mclk_sai5_8ch", mclk_sai5_8ch_p, RT_CLK_F_SET_RATE_PARENT,
  1418. RK3576_CLKSEL_CON(154), 13, 1, MFLAGS,
  1419. RK3576_CLKGATE_CON(65), 4, GFLAGS),
  1420. [HCLK_SAI5_8CH] = GATE(HCLK_SAI5_8CH, "hclk_sai5_8ch", "hclk_vo0_root", 0,
  1421. RK3576_CLKGATE_CON(65), 5, GFLAGS),
  1422. [MCLK_SAI6_8CH_SRC] = COMPOSITE(MCLK_SAI6_8CH_SRC, "mclk_sai6_8ch_src", audio_frac_int_p, 0,
  1423. RK3576_CLKSEL_CON(155), 8, 3, MFLAGS, 0, 8, DFLAGS,
  1424. RK3576_CLKGATE_CON(65), 7, GFLAGS),
  1425. [MCLK_SAI6_8CH] = COMPOSITE_NODIV(MCLK_SAI6_8CH, "mclk_sai6_8ch", mclk_sai6_8ch_p, RT_CLK_F_SET_RATE_PARENT,
  1426. RK3576_CLKSEL_CON(155), 11, 1, MFLAGS,
  1427. RK3576_CLKGATE_CON(65), 8, GFLAGS),
  1428. [HCLK_SAI6_8CH] = GATE(HCLK_SAI6_8CH, "hclk_sai6_8ch", "hclk_vo0_root", 0,
  1429. RK3576_CLKGATE_CON(65), 9, GFLAGS),
  1430. [HCLK_SPDIF_TX2] = GATE(HCLK_SPDIF_TX2, "hclk_spdif_tx2", "hclk_vo0_root", 0,
  1431. RK3576_CLKGATE_CON(65), 10, GFLAGS),
  1432. [MCLK_SPDIF_TX2] = COMPOSITE(MCLK_SPDIF_TX2, "mclk_spdif_tx2", audio_frac_int_p, 0,
  1433. RK3576_CLKSEL_CON(156), 5, 3, MFLAGS, 0, 5, DFLAGS,
  1434. RK3576_CLKGATE_CON(65), 13, GFLAGS),
  1435. [HCLK_SPDIF_RX2] = GATE(HCLK_SPDIF_RX2, "hclk_spdif_rx2", "hclk_vo0_root", 0,
  1436. RK3576_CLKGATE_CON(65), 14, GFLAGS),
  1437. [MCLK_SPDIF_RX2] = COMPOSITE(MCLK_SPDIF_RX2, "mclk_spdif_rx2", gpll_cpll_aupll_p, 0,
  1438. RK3576_CLKSEL_CON(156), 13, 2, MFLAGS, 8, 5, DFLAGS,
  1439. RK3576_CLKGATE_CON(65), 15, GFLAGS),
  1440. [HCLK_SAI8_8CH] = GATE(HCLK_SAI8_8CH, "hclk_sai8_8ch", "hclk_vo1_root", 0,
  1441. RK3576_CLKGATE_CON(66), 0, GFLAGS),
  1442. [MCLK_SAI8_8CH_SRC] = COMPOSITE(MCLK_SAI8_8CH_SRC, "mclk_sai8_8ch_src", audio_frac_int_p, 0,
  1443. RK3576_CLKSEL_CON(157), 8, 3, MFLAGS, 0, 8, DFLAGS,
  1444. RK3576_CLKGATE_CON(66), 1, GFLAGS),
  1445. [MCLK_SAI8_8CH] = COMPOSITE_NODIV(MCLK_SAI8_8CH, "mclk_sai8_8ch", mclk_sai8_8ch_p, RT_CLK_F_SET_RATE_PARENT,
  1446. RK3576_CLKSEL_CON(157), 11, 1, MFLAGS,
  1447. RK3576_CLKGATE_CON(66), 2, GFLAGS),
  1448. [ACLK_VO1_ROOT] = COMPOSITE(ACLK_VO1_ROOT, "aclk_vo1_root", gpll_cpll_lpll_bpll_p, 0,
  1449. RK3576_CLKSEL_CON(158), 5, 2, MFLAGS, 0, 5, DFLAGS,
  1450. RK3576_CLKGATE_CON(67), 1, GFLAGS),
  1451. [HCLK_VO1_ROOT] = COMPOSITE_NODIV(HCLK_VO1_ROOT, "hclk_vo1_root", mux_200m_100m_50m_24m_p, RT_CLK_F_IS_CRITICAL,
  1452. RK3576_CLKSEL_CON(158), 7, 2, MFLAGS,
  1453. RK3576_CLKGATE_CON(67), 2, GFLAGS),
  1454. [PCLK_VO1_ROOT] = COMPOSITE_NODIV(PCLK_VO1_ROOT, "pclk_vo1_root", mux_100m_50m_24m_p, 0,
  1455. RK3576_CLKSEL_CON(158), 9, 2, MFLAGS,
  1456. RK3576_CLKGATE_CON(67), 3, GFLAGS),
  1457. [MCLK_SAI7_8CH_SRC] = COMPOSITE(MCLK_SAI7_8CH_SRC, "mclk_sai7_8ch_src", audio_frac_int_p, 0,
  1458. RK3576_CLKSEL_CON(159), 8, 3, MFLAGS, 0, 8, DFLAGS,
  1459. RK3576_CLKGATE_CON(67), 8, GFLAGS),
  1460. [MCLK_SAI7_8CH] = COMPOSITE_NODIV(MCLK_SAI7_8CH, "mclk_sai7_8ch", mclk_sai7_8ch_p, RT_CLK_F_SET_RATE_PARENT,
  1461. RK3576_CLKSEL_CON(159), 11, 1, MFLAGS,
  1462. RK3576_CLKGATE_CON(67), 9, GFLAGS),
  1463. [HCLK_SAI7_8CH] = GATE(HCLK_SAI7_8CH, "hclk_sai7_8ch", "hclk_vo1_root", 0,
  1464. RK3576_CLKGATE_CON(67), 10, GFLAGS),
  1465. [HCLK_SPDIF_TX3] = GATE(HCLK_SPDIF_TX3, "hclk_spdif_tx3", "hclk_vo1_root", 0,
  1466. RK3576_CLKGATE_CON(67), 11, GFLAGS),
  1467. [HCLK_SPDIF_TX4] = GATE(HCLK_SPDIF_TX4, "hclk_spdif_tx4", "hclk_vo1_root", 0,
  1468. RK3576_CLKGATE_CON(67), 12, GFLAGS),
  1469. [HCLK_SPDIF_TX5] = GATE(HCLK_SPDIF_TX5, "hclk_spdif_tx5", "hclk_vo1_root", 0,
  1470. RK3576_CLKGATE_CON(67), 13, GFLAGS),
  1471. [MCLK_SPDIF_TX3] = COMPOSITE(MCLK_SPDIF_TX3, "mclk_spdif_tx3", audio_frac_int_p, 0,
  1472. RK3576_CLKSEL_CON(160), 8, 3, MFLAGS, 0, 8, DFLAGS,
  1473. RK3576_CLKGATE_CON(67), 14, GFLAGS),
  1474. [CLK_AUX16MHZ_0] = COMPOSITE_NOMUX(CLK_AUX16MHZ_0, "clk_aux16mhz_0", "gpll", 0,
  1475. RK3576_CLKSEL_CON(161), 0, 8, DFLAGS,
  1476. RK3576_CLKGATE_CON(67), 15, GFLAGS),
  1477. [ACLK_DP0] = GATE(ACLK_DP0, "aclk_dp0", "aclk_vo1_root", 0,
  1478. RK3576_CLKGATE_CON(68), 0, GFLAGS),
  1479. [PCLK_DP0] = GATE(PCLK_DP0, "pclk_dp0", "pclk_vo1_root", 0,
  1480. RK3576_CLKGATE_CON(68), 1, GFLAGS),
  1481. [ACLK_HDCP1] = GATE(ACLK_HDCP1, "aclk_hdcp1", "aclk_vo1_root", 0,
  1482. RK3576_CLKGATE_CON(68), 4, GFLAGS),
  1483. [HCLK_HDCP1] = GATE(HCLK_HDCP1, "hclk_hdcp1", "hclk_vo1_root", 0,
  1484. RK3576_CLKGATE_CON(68), 5, GFLAGS),
  1485. [PCLK_HDCP1] = GATE(PCLK_HDCP1, "pclk_hdcp1", "pclk_vo1_root", 0,
  1486. RK3576_CLKGATE_CON(68), 6, GFLAGS),
  1487. [CLK_TRNG1_SKP] = GATE(CLK_TRNG1_SKP, "clk_trng1_skp", "aclk_hdcp1", 0,
  1488. RK3576_CLKGATE_CON(68), 7, GFLAGS),
  1489. [HCLK_SAI9_8CH] = GATE(HCLK_SAI9_8CH, "hclk_sai9_8ch", "hclk_vo1_root", 0,
  1490. RK3576_CLKGATE_CON(68), 9, GFLAGS),
  1491. [MCLK_SAI9_8CH_SRC] = COMPOSITE(MCLK_SAI9_8CH_SRC, "mclk_sai9_8ch_src", audio_frac_int_p, 0,
  1492. RK3576_CLKSEL_CON(162), 8, 3, MFLAGS, 0, 8, DFLAGS,
  1493. RK3576_CLKGATE_CON(68), 10, GFLAGS),
  1494. [MCLK_SAI9_8CH] = COMPOSITE_NODIV(MCLK_SAI9_8CH, "mclk_sai9_8ch", mclk_sai9_8ch_p, RT_CLK_F_SET_RATE_PARENT,
  1495. RK3576_CLKSEL_CON(162), 11, 1, MFLAGS,
  1496. RK3576_CLKGATE_CON(68), 11, GFLAGS),
  1497. [MCLK_SPDIF_TX4] = COMPOSITE(MCLK_SPDIF_TX4, "mclk_spdif_tx4", audio_frac_int_p, 0,
  1498. RK3576_CLKSEL_CON(163), 8, 3, MFLAGS, 0, 8, DFLAGS,
  1499. RK3576_CLKGATE_CON(68), 12, GFLAGS),
  1500. [MCLK_SPDIF_TX5] = COMPOSITE(MCLK_SPDIF_TX5, "mclk_spdif_tx5", audio_frac_int_p, 0,
  1501. RK3576_CLKSEL_CON(164), 8, 3, MFLAGS, 0, 8, DFLAGS,
  1502. RK3576_CLKGATE_CON(68), 13, GFLAGS),
  1503. [CLK_GPU_SRC_PRE] = COMPOSITE(CLK_GPU_SRC_PRE, "clk_gpu_src_pre", gpll_cpll_aupll_spll_lpll_p, 0,
  1504. RK3576_CLKSEL_CON(165), 5, 3, MFLAGS, 0, 5, DFLAGS,
  1505. RK3576_CLKGATE_CON(69), 1, GFLAGS),
  1506. [CLK_GPU] = GATE(CLK_GPU, "clk_gpu", "clk_gpu_src_pre", 0,
  1507. RK3576_CLKGATE_CON(69), 3, GFLAGS),
  1508. [PCLK_GPU_ROOT] = COMPOSITE_NODIV(PCLK_GPU_ROOT, "pclk_gpu_root", mux_100m_50m_24m_p, 0,
  1509. RK3576_CLKSEL_CON(166), 10, 2, MFLAGS,
  1510. RK3576_CLKGATE_CON(69), 8, GFLAGS),
  1511. [ACLK_CENTER_ROOT] = COMPOSITE_DIV_OFFSET(ACLK_CENTER_ROOT, "aclk_center_root", gpll_cpll_spll_aupll_bpll_p, RT_CLK_F_IS_CRITICAL,
  1512. RK3576_CLKSEL_CON(168), 5, 3, MFLAGS,
  1513. RK3576_CLKSEL_CON(167), 9, 5, DFLAGS,
  1514. RK3576_CLKGATE_CON(72), 0, GFLAGS),
  1515. [ACLK_CENTER_LOW_ROOT] = COMPOSITE_NODIV(ACLK_CENTER_LOW_ROOT, "aclk_center_low_root", mux_500m_250m_100m_24m_p, RT_CLK_F_IS_CRITICAL,
  1516. RK3576_CLKSEL_CON(168), 8, 2, MFLAGS,
  1517. RK3576_CLKGATE_CON(72), 1, GFLAGS),
  1518. [HCLK_CENTER_ROOT] = COMPOSITE_NODIV(HCLK_CENTER_ROOT, "hclk_center_root", mux_200m_100m_50m_24m_p, RT_CLK_F_IS_CRITICAL,
  1519. RK3576_CLKSEL_CON(168), 10, 2, MFLAGS,
  1520. RK3576_CLKGATE_CON(72), 2, GFLAGS),
  1521. [PCLK_CENTER_ROOT] = COMPOSITE_NODIV(PCLK_CENTER_ROOT, "pclk_center_root", mux_200m_100m_50m_24m_p, RT_CLK_F_IS_CRITICAL,
  1522. RK3576_CLKSEL_CON(168), 12, 2, MFLAGS,
  1523. RK3576_CLKGATE_CON(72), 3, GFLAGS),
  1524. [ACLK_DMA2DDR] = GATE(ACLK_DMA2DDR, "aclk_dma2ddr", "aclk_center_root", RT_CLK_F_IGNORE_UNUSED,
  1525. RK3576_CLKGATE_CON(72), 5, GFLAGS),
  1526. [ACLK_DDR_SHAREMEM] = GATE(ACLK_DDR_SHAREMEM, "aclk_ddr_sharemem", "aclk_center_low_root", RT_CLK_F_IGNORE_UNUSED,
  1527. RK3576_CLKGATE_CON(72), 6, GFLAGS),
  1528. [PCLK_DMA2DDR] = GATE(PCLK_DMA2DDR, "pclk_dma2ddr", "pclk_center_root", RT_CLK_F_IGNORE_UNUSED,
  1529. RK3576_CLKGATE_CON(72), 10, GFLAGS),
  1530. [PCLK_SHAREMEM] = GATE(PCLK_SHAREMEM, "pclk_sharemem", "pclk_center_root", RT_CLK_F_IGNORE_UNUSED,
  1531. RK3576_CLKGATE_CON(72), 11, GFLAGS),
  1532. [HCLK_VEPU1_ROOT] = COMPOSITE_NODIV(HCLK_VEPU1_ROOT, "hclk_vepu1_root", mux_200m_100m_50m_24m_p, 0,
  1533. RK3576_CLKSEL_CON(178), 0, 2, MFLAGS,
  1534. RK3576_CLKGATE_CON(78), 0, GFLAGS),
  1535. [ACLK_VEPU1_ROOT] = COMPOSITE(ACLK_VEPU1_ROOT, "aclk_vepu1_root", gpll_cpll_p, 0,
  1536. RK3576_CLKSEL_CON(180), 5, 1, MFLAGS, 0, 5, DFLAGS,
  1537. RK3576_CLKGATE_CON(79), 0, GFLAGS),
  1538. [HCLK_VEPU1] = GATE(HCLK_VEPU1, "hclk_vepu1", "hclk_vepu1_root", 0,
  1539. RK3576_CLKGATE_CON(79), 3, GFLAGS),
  1540. [ACLK_VEPU1] = GATE(ACLK_VEPU1, "aclk_vepu1", "aclk_vepu1_root", 0,
  1541. RK3576_CLKGATE_CON(79), 4, GFLAGS),
  1542. [CLK_VEPU1_CORE] = COMPOSITE(CLK_VEPU1_CORE, "clk_vepu1_core", gpll_cpll_spll_lpll_bpll_p, 0,
  1543. RK3576_CLKSEL_CON(180), 11, 3, MFLAGS, 6, 5, DFLAGS,
  1544. RK3576_CLKGATE_CON(79), 5, GFLAGS),
  1545. [PCLK_MIPI_DCPHY] = GATE(PCLK_MIPI_DCPHY, "pclk_mipi_dcphy", "pclk_pmuphy_root", 0,
  1546. RK3576_PMU_CLKGATE_CON(0), 2, GFLAGS),
  1547. [PCLK_CSIDPHY] = GATE(PCLK_CSIDPHY, "pclk_csidphy", "pclk_pmuphy_root", 0,
  1548. RK3576_PMU_CLKGATE_CON(0), 8, GFLAGS),
  1549. [PCLK_USBDPPHY] = GATE(PCLK_USBDPPHY, "pclk_usbdpphy", "pclk_pmuphy_root", 0,
  1550. RK3576_PMU_CLKGATE_CON(0), 12, GFLAGS),
  1551. [CLK_PMUPHY_REF_SRC] = COMPOSITE_NOMUX(CLK_PMUPHY_REF_SRC, "clk_pmuphy_ref_src", "cpll", 0,
  1552. RK3576_PMU_CLKSEL_CON(0), 0, 5, DFLAGS,
  1553. RK3576_PMU_CLKGATE_CON(0), 13, GFLAGS),
  1554. [CLK_USBDP_COMBO_PHY_IMMORTAL] = GATE(CLK_USBDP_COMBO_PHY_IMMORTAL, "clk_usbdp_combo_phy_immortal", "xin24m", 0,
  1555. RK3576_PMU_CLKGATE_CON(0), 15, GFLAGS),
  1556. [CLK_HDMITXHPD] = GATE(CLK_HDMITXHPD, "clk_hdmitxhpd", "xin24m", 0,
  1557. RK3576_PMU_CLKGATE_CON(1), 13, GFLAGS),
  1558. [PCLK_MPHY] = GATE(PCLK_MPHY, "pclk_mphy", "pclk_pmuphy_root", 0,
  1559. RK3576_PMU_CLKGATE_CON(2), 0, GFLAGS),
  1560. [CLK_REF_OSC_MPHY] = MUX(CLK_REF_OSC_MPHY, "clk_ref_osc_mphy", clk_ref_osc_mphy_p, 0,
  1561. RK3576_PMU_CLKSEL_CON(3), 0, 2, MFLAGS),
  1562. [CLK_REF_UFS_CLKOUT] = GATE(CLK_REF_UFS_CLKOUT, "clk_ref_ufs_clkout", "clk_ref_osc_mphy", 0,
  1563. RK3576_PMU_CLKGATE_CON(2), 5, GFLAGS),
  1564. [HCLK_PMU1_ROOT] = COMPOSITE_NODIV(HCLK_PMU1_ROOT, "hclk_pmu1_root", mux_pmu200m_pmu100m_pmu50m_24m_p, RT_CLK_F_IS_CRITICAL,
  1565. RK3576_PMU_CLKSEL_CON(4), 0, 2, MFLAGS,
  1566. RK3576_PMU_CLKGATE_CON(3), 0, GFLAGS),
  1567. [HCLK_PMU_CM0_ROOT] = COMPOSITE_NODIV(HCLK_PMU_CM0_ROOT, "hclk_pmu_cm0_root", mux_pmu200m_pmu100m_pmu50m_24m_p, 0,
  1568. RK3576_PMU_CLKSEL_CON(4), 2, 2, MFLAGS,
  1569. RK3576_PMU_CLKGATE_CON(3), 1, GFLAGS),
  1570. [CLK_200M_PMU_SRC] = GATE(CLK_200M_PMU_SRC, "clk_200m_pmu_src", "clk_gpll_div6", 0,
  1571. RK3576_PMU_CLKGATE_CON(3), 2, GFLAGS),
  1572. [CLK_100M_PMU_SRC] = COMPOSITE_NOMUX(CLK_100M_PMU_SRC, "clk_100m_pmu_src", "cpll", 0,
  1573. RK3576_PMU_CLKSEL_CON(4), 4, 5, DFLAGS,
  1574. RK3576_PMU_CLKGATE_CON(3), 3, GFLAGS),
  1575. [CLK_50M_PMU_SRC] = FACTOR_GATE(CLK_50M_PMU_SRC, "clk_50m_pmu_src", "clk_100m_pmu_src", 0, 1, 2,
  1576. RK3576_PMU_CLKGATE_CON(3), 4, GFLAGS),
  1577. [FCLK_PMU_CM0_CORE] = GATE(FCLK_PMU_CM0_CORE, "fclk_pmu_cm0_core", "hclk_pmu_cm0_root", 0,
  1578. RK3576_PMU_CLKGATE_CON(3), 12, GFLAGS),
  1579. [CLK_PMU_CM0_RTC] = COMPOSITE(CLK_PMU_CM0_RTC, "clk_pmu_cm0_rtc", mux_24m_32k_p, 0,
  1580. RK3576_PMU_CLKSEL_CON(4), 14, 1, MFLAGS, 9, 5, DFLAGS,
  1581. RK3576_PMU_CLKGATE_CON(3), 14, GFLAGS),
  1582. [PCLK_PMU1] = GATE(PCLK_PMU1, "pclk_pmu1", "pclk_pmu1_root", RT_CLK_F_IS_CRITICAL,
  1583. RK3576_PMU_CLKGATE_CON(3), 15, GFLAGS),
  1584. [CLK_PMU1] = GATE(CLK_PMU1, "clk_pmu1", "xin24m", RT_CLK_F_IS_CRITICAL,
  1585. RK3576_PMU_CLKGATE_CON(4), 2, GFLAGS),
  1586. [PCLK_PMU1WDT] = GATE(PCLK_PMU1WDT, "pclk_pmu1wdt", "pclk_pmu1_root", 0,
  1587. RK3576_PMU_CLKGATE_CON(4), 5, GFLAGS),
  1588. [TCLK_PMU1WDT] = COMPOSITE_NODIV(TCLK_PMU1WDT, "tclk_pmu1wdt", mux_24m_32k_p, 0,
  1589. RK3576_PMU_CLKSEL_CON(4), 15, 1, MFLAGS,
  1590. RK3576_PMU_CLKGATE_CON(4), 6, GFLAGS),
  1591. [PCLK_PMUTIMER] = GATE(PCLK_PMUTIMER, "pclk_pmutimer", "pclk_pmu1_root", 0,
  1592. RK3576_PMU_CLKGATE_CON(4), 7, GFLAGS),
  1593. [CLK_PMUTIMER_ROOT] = COMPOSITE_NODIV(CLK_PMUTIMER_ROOT, "clk_pmutimer_root", mux_pmu100m_24m_32k_p, 0,
  1594. RK3576_PMU_CLKSEL_CON(5), 0, 2, MFLAGS,
  1595. RK3576_PMU_CLKGATE_CON(4), 8, GFLAGS),
  1596. [CLK_PMUTIMER0] = GATE(CLK_PMUTIMER0, "clk_pmutimer0", "clk_pmutimer_root", 0,
  1597. RK3576_PMU_CLKGATE_CON(4), 9, GFLAGS),
  1598. [CLK_PMUTIMER1] = GATE(CLK_PMUTIMER1, "clk_pmutimer1", "clk_pmutimer_root", 0,
  1599. RK3576_PMU_CLKGATE_CON(4), 10, GFLAGS),
  1600. [PCLK_PMU1PWM] = GATE(PCLK_PMU1PWM, "pclk_pmu1pwm", "pclk_pmu1_root", 0,
  1601. RK3576_PMU_CLKGATE_CON(4), 11, GFLAGS),
  1602. [CLK_PMU1PWM] = COMPOSITE_NODIV(CLK_PMU1PWM, "clk_pmu1pwm", mux_pmu100m_pmu50m_24m_p, 0,
  1603. RK3576_PMU_CLKSEL_CON(5), 2, 2, MFLAGS,
  1604. RK3576_PMU_CLKGATE_CON(4), 12, GFLAGS),
  1605. [CLK_PMU1PWM_OSC] = GATE(CLK_PMU1PWM_OSC, "clk_pmu1pwm_osc", "xin24m", 0,
  1606. RK3576_PMU_CLKGATE_CON(4), 13, GFLAGS),
  1607. [PCLK_PMUPHY_ROOT] = GATE(PCLK_PMUPHY_ROOT, "pclk_pmuphy_root", "pclk_pmu1_root", RT_CLK_F_IS_CRITICAL,
  1608. RK3576_PMU_CLKGATE_CON(5), 0, GFLAGS),
  1609. [PCLK_I2C0] = GATE(PCLK_I2C0, "pclk_i2c0", "pclk_pmu1_root", 0,
  1610. RK3576_PMU_CLKGATE_CON(5), 1, GFLAGS),
  1611. [CLK_I2C0] = COMPOSITE_NODIV(CLK_I2C0, "clk_i2c0", mux_pmu200m_pmu100m_pmu50m_24m_p, 0,
  1612. RK3576_PMU_CLKSEL_CON(6), 7, 2, MFLAGS,
  1613. RK3576_PMU_CLKGATE_CON(5), 2, GFLAGS),
  1614. [SCLK_UART1] = COMPOSITE_NODIV(SCLK_UART1, "sclk_uart1", uart1_p, RT_CLK_F_SET_RATE_PARENT,
  1615. RK3576_PMU_CLKSEL_CON(8), 0, 1, MFLAGS,
  1616. RK3576_PMU_CLKGATE_CON(5), 5, GFLAGS),
  1617. [PCLK_UART1] = GATE(PCLK_UART1, "pclk_uart1", "pclk_pmu1_root", 0,
  1618. RK3576_PMU_CLKGATE_CON(5), 6, GFLAGS),
  1619. [CLK_PMU1PWM_RC] = GATE(CLK_PMU1PWM_RC, "clk_pmu1pwm_rc", "clk_pvtm_clkout", 0,
  1620. RK3576_PMU_CLKGATE_CON(5), 7, GFLAGS),
  1621. [CLK_PDM0] = GATE(CLK_PDM0, "clk_pdm0", "clk_pdm0_src_top", 0,
  1622. RK3576_PMU_CLKGATE_CON(5), 13, GFLAGS),
  1623. [HCLK_PDM0] = GATE(HCLK_PDM0, "hclk_pdm0", "hclk_pmu1_root", 0,
  1624. RK3576_PMU_CLKGATE_CON(5), 15, GFLAGS),
  1625. [MCLK_PDM0] = GATE(MCLK_PDM0, "mclk_pdm0", "mclk_pdm0_src_top", 0,
  1626. RK3576_PMU_CLKGATE_CON(6), 0, GFLAGS),
  1627. [HCLK_VAD] = GATE(HCLK_VAD, "hclk_vad", "hclk_pmu1_root", 0,
  1628. RK3576_PMU_CLKGATE_CON(6), 1, GFLAGS),
  1629. [CLK_PDM0_OUT] = GATE(CLK_PDM0_OUT, "clk_pdm0_out", "clk_pdm0", 0,
  1630. RK3576_PMU_CLKGATE_CON(6), 8, GFLAGS),
  1631. [CLK_HPTIMER_SRC] = COMPOSITE(CLK_HPTIMER_SRC, "clk_hptimer_src", cpll_24m_p, RT_CLK_F_IS_CRITICAL,
  1632. RK3576_PMU_CLKSEL_CON(11), 6, 1, MFLAGS, 1, 5, DFLAGS,
  1633. RK3576_PMU_CLKGATE_CON(6), 10, GFLAGS),
  1634. [PCLK_PMU0_ROOT] = COMPOSITE_NODIV(PCLK_PMU0_ROOT, "pclk_pmu0_root", mux_pmu100m_pmu50m_24m_p, 0,
  1635. RK3576_PMU_CLKSEL_CON(20), 0, 2, MFLAGS,
  1636. RK3576_PMU_CLKGATE_CON(7), 0, GFLAGS),
  1637. [PCLK_PMU0] = GATE(PCLK_PMU0, "pclk_pmu0", "pclk_pmu0_root", RT_CLK_F_IS_CRITICAL,
  1638. RK3576_PMU_CLKGATE_CON(7), 3, GFLAGS),
  1639. [PCLK_GPIO0] = GATE(PCLK_GPIO0, "pclk_gpio0", "pclk_pmu0_root", 0,
  1640. RK3576_PMU_CLKGATE_CON(7), 6, GFLAGS),
  1641. [DBCLK_GPIO0] = COMPOSITE_NODIV(DBCLK_GPIO0, "dbclk_gpio0", mux_24m_32k_p, 0,
  1642. RK3576_PMU_CLKSEL_CON(20), 2, 1, MFLAGS,
  1643. RK3576_PMU_CLKGATE_CON(7), 7, GFLAGS),
  1644. [CLK_OSC0_PMU1] = GATE(CLK_OSC0_PMU1, "clk_osc0_pmu1", "xin24m", RT_CLK_F_IS_CRITICAL,
  1645. RK3576_PMU_CLKGATE_CON(7), 8, GFLAGS),
  1646. [PCLK_PMU1_ROOT] = GATE(PCLK_PMU1_ROOT, "pclk_pmu1_root", "pclk_pmu0_root", RT_CLK_F_IS_CRITICAL,
  1647. RK3576_PMU_CLKGATE_CON(7), 9, GFLAGS),
  1648. [XIN_OSC0_DIV] = COMPOSITE_FRAC(XIN_OSC0_DIV, "xin_osc0_div", "xin24m", RT_CLK_F_IS_CRITICAL,
  1649. RK3576_PMU_CLKSEL_CON(21), 0,
  1650. RK3576_PMU_CLKGATE_CON(7), 11, GFLAGS),
  1651. [PCLK_CCI_ROOT] = COMPOSITE(PCLK_CCI_ROOT, "pclk_cci_root", mux_24m_ccipvtpll_gpll_lpll_p, RT_CLK_F_IS_CRITICAL,
  1652. RK3576_CCI_CLKSEL_CON(4), 5, 2, MFLAGS, 0, 5, DFLAGS,
  1653. RK3576_CCI_CLKGATE_CON(1), 10, GFLAGS),
  1654. [ACLK_CCI_ROOT] = COMPOSITE(ACLK_CCI_ROOT, "aclk_cci_root", mux_24m_ccipvtpll_gpll_lpll_p, RT_CLK_F_IS_CRITICAL,
  1655. RK3576_CCI_CLKSEL_CON(4), 12, 2, MFLAGS, 7, 5, DFLAGS,
  1656. RK3576_CCI_CLKGATE_CON(1), 11, GFLAGS),
  1657. [HCLK_VO0VOP_CHANNEL] = COMPOSITE_NODIV(HCLK_VO0VOP_CHANNEL, "hclk_vo0vop_channel", mux_200m_100m_50m_24m_p, RT_CLK_F_IS_CRITICAL,
  1658. RK3576_CLKSEL_CON(19), 6, 2, MFLAGS,
  1659. RK3576_CLKGATE_CON(2), 0, GFLAGS),
  1660. [ACLK_VO0VOP_CHANNEL] = COMPOSITE(ACLK_VO0VOP_CHANNEL, "aclk_vo0vop_channel", gpll_cpll_lpll_bpll_p, RT_CLK_F_IS_CRITICAL,
  1661. RK3576_CLKSEL_CON(19), 12, 2, MFLAGS, 8, 4, DFLAGS,
  1662. RK3576_CLKGATE_CON(2), 1, GFLAGS),
  1663. [ACLK_TOP_MID] = COMPOSITE(ACLK_TOP_MID, "aclk_top_mid", gpll_cpll_p, RT_CLK_F_IS_CRITICAL,
  1664. RK3576_CLKSEL_CON(10), 5, 1, MFLAGS, 0, 5, DFLAGS,
  1665. RK3576_CLKGATE_CON(1), 6, GFLAGS),
  1666. [ACLK_SECURE_HIGH] = COMPOSITE(ACLK_SECURE_HIGH, "aclk_secure_high", gpll_spll_aupll_bpll_lpll_p, RT_CLK_F_IS_CRITICAL,
  1667. RK3576_CLKSEL_CON(10), 11, 3, MFLAGS, 6, 5, DFLAGS,
  1668. RK3576_CLKGATE_CON(1), 7, GFLAGS),
  1669. [CLK_USBPHY_REF_SRC] = MUXGRF(CLK_USBPHY_REF_SRC, "clk_usbphy_ref_src", clk_usbphy_ref_src_p, 0,
  1670. RK3576_PMU0_GRF_OSC_CON6, 2, 1, MFLAGS),
  1671. [CLK_PHY_REF_SRC] = MUXGRF(CLK_PHY_REF_SRC, "clk_phy_ref_src", clk_phy_ref_src_p, 0,
  1672. RK3576_PMU0_GRF_OSC_CON6, 4, 1, MFLAGS),
  1673. [CLK_CPLL_REF_SRC] = MUXGRF(CLK_CPLL_REF_SRC, "clk_cpll_ref_src", clk_cpll_ref_src_p, 0,
  1674. RK3576_PMU0_GRF_OSC_CON6, 1, 1, MFLAGS),
  1675. [CLK_AUPLL_REF_SRC] = MUXGRF(CLK_AUPLL_REF_SRC, "clk_aupll_ref_src", clk_aupll_ref_src_p, 0,
  1676. RK3576_PMU0_GRF_OSC_CON6, 0, 1, MFLAGS),
  1677. [PCLK_SECURE_NS] = COMPOSITE_NODIV(PCLK_SECURE_NS, "pclk_secure_ns", mux_116m_58m_24m_p, RT_CLK_F_IS_CRITICAL,
  1678. RK3576_SECURE_NS_CLKSEL_CON(0), 4, 2, MFLAGS,
  1679. RK3576_SECURE_NS_CLKGATE_CON(0), 2, GFLAGS),
  1680. [HCLK_SECURE_NS] = COMPOSITE_NODIV(HCLK_SECURE_NS, "hclk_secure_ns", mux_175m_116m_58m_24m_p, RT_CLK_F_IS_CRITICAL,
  1681. RK3576_SECURE_NS_CLKSEL_CON(0), 2, 2, MFLAGS,
  1682. RK3576_SECURE_NS_CLKGATE_CON(0), 1, GFLAGS),
  1683. [ACLK_SECURE_NS] = COMPOSITE_NODIV(ACLK_SECURE_NS, "aclk_secure_ns", mux_350m_175m_116m_24m_p, RT_CLK_F_IS_CRITICAL,
  1684. RK3576_SECURE_NS_CLKSEL_CON(0), 0, 2, MFLAGS,
  1685. RK3576_SECURE_NS_CLKGATE_CON(0), 0, GFLAGS),
  1686. [PCLK_OTPC_NS] = GATE(PCLK_OTPC_NS, "pclk_otpc_ns", "pclk_secure_ns", 0,
  1687. RK3576_SECURE_NS_CLKGATE_CON(0), 8, GFLAGS),
  1688. [HCLK_CRYPTO_NS] = GATE(HCLK_CRYPTO_NS, "hclk_crypto_ns", "hclk_secure_ns", 0,
  1689. RK3576_SECURE_NS_CLKGATE_CON(0), 3, GFLAGS),
  1690. [HCLK_TRNG_NS] = GATE(HCLK_TRNG_NS, "hclk_trng_ns", "hclk_secure_s", 0,
  1691. RK3576_NON_SECURE_GATING_CON00, 13, GFLAGS),
  1692. [CLK_OTPC_NS] = GATE(CLK_OTPC_NS, "clk_otpc_ns", "xin24m", 0,
  1693. RK3576_SECURE_NS_CLKGATE_CON(0), 9, GFLAGS),
  1694. [ACLK_CRYPTO_NS] = GATE(ACLK_CRYPTO_NS, "aclk_crypto_ns", "aclk_secure_s", 0,
  1695. RK3576_NON_SECURE_GATING_CON00, 14, GFLAGS),
  1696. [CLK_PKA_CRYPTO_NS] = GATE(CLK_PKA_CRYPTO_NS, "clk_pka_crypto_ns", "clk_pka_crypto_s", 0,
  1697. RK3576_NON_SECURE_GATING_CON00, 1, GFLAGS),
  1698. [ACLK_RKVDEC_ROOT_BAK] = COMPOSITE(ACLK_RKVDEC_ROOT_BAK, "aclk_rkvdec_root_bak", cpll_vpll_lpll_bpll_p, 0,
  1699. RK3576_CLKSEL_CON(110), 14, 2, MFLAGS, 9, 5, DFLAGS,
  1700. RK3576_CLKGATE_CON(45), 2, GFLAGS),
  1701. [CLK_AUDIO_FRAC_0_SRC] = MUX(CLK_AUDIO_FRAC_0_SRC, "clk_audio_frac_0_src", gpll_cpll_aupll_24m_p, 0,
  1702. RK3576_CLKSEL_CON(13), 0, 2, MFLAGS),
  1703. [CLK_AUDIO_FRAC_1_SRC] = MUX(CLK_AUDIO_FRAC_1_SRC, "clk_audio_frac_1_src", gpll_cpll_aupll_24m_p, 0,
  1704. RK3576_CLKSEL_CON(15), 0, 2, MFLAGS),
  1705. [CLK_AUDIO_FRAC_2_SRC] = MUX(CLK_AUDIO_FRAC_2_SRC, "clk_audio_frac_2_src", gpll_cpll_aupll_24m_p, 0,
  1706. RK3576_CLKSEL_CON(17), 0, 2, MFLAGS),
  1707. [CLK_AUDIO_FRAC_3_SRC] = MUX(CLK_AUDIO_FRAC_3_SRC, "clk_audio_frac_3_src", gpll_cpll_aupll_24m_p, 0,
  1708. RK3576_CLKSEL_CON(19), 0, 2, MFLAGS),
  1709. [PCLK_HDPTX_APB] = GATE(PCLK_HDPTX_APB, "pclk_hdptx_apb", "pclk_pmuphy_root", 0,
  1710. RK3576_PMU_CLKGATE_CON(0), 1, GFLAGS),
  1711. [PCLK_DDR_MON_CH1] = GATE(PCLK_DDR_MON_CH1, "pclk_ddr_mon_ch1", "pclk_ddr_root", 0,
  1712. RK3576_CLKGATE_CON(21), 14, GFLAGS),
  1713. FACTOR(0, "xin12m", "xin24m", 0, 1, 2),
  1714. FACTOR(0, "clk_spll_div12", "spll", 0, 1, 12),
  1715. FACTOR(0, "clk_spll_div6", "spll", 0, 1, 6),
  1716. FACTOR(0, "clk_spll_div4", "spll", 0, 1, 4),
  1717. FACTOR(0, "lpll_div2", "lpll", 0, 1, 2),
  1718. FACTOR(0, "bpll_div4", "bpll", 0, 1, 4),
  1719. MUX(0, "clk_uart_frac_0_src", gpll_cpll_aupll_24m_p, 0,
  1720. RK3576_CLKSEL_CON(22), 0, 2, MFLAGS),
  1721. MUX(0, "clk_uart_frac_1_src", gpll_cpll_aupll_24m_p, 0,
  1722. RK3576_CLKSEL_CON(24), 0, 2, MFLAGS),
  1723. MUX(0, "clk_uart_frac_2_src", gpll_cpll_aupll_24m_p, 0,
  1724. RK3576_CLKSEL_CON(26), 0, 2, MFLAGS),
  1725. MUX(0, "dclk_ebc_frac_src_p", gpll_cpll_vpll_aupll_24m_p, 0,
  1726. RK3576_CLKSEL_CON(123), 0, 3, MFLAGS),
  1727. };
  1728. static rt_err_t clk_rk3576_probe(struct rt_platform_device *pdev)
  1729. {
  1730. rt_err_t err;
  1731. struct rt_device *dev = &pdev->parent;
  1732. struct clk_rk3576_cru *cru = rt_calloc(1, sizeof(*cru));
  1733. if (!cru)
  1734. {
  1735. return -RT_ENOMEM;
  1736. }
  1737. cru->provider.reg_base = rt_dm_dev_iomap(dev, 0);
  1738. if (!cru->provider.reg_base)
  1739. {
  1740. err = -RT_EIO;
  1741. goto _fail;
  1742. }
  1743. cru->provider.grf = rt_syscon_find_by_ofw_phandle(dev->ofw_node, "rockchip,grf");
  1744. cru->provider.pmugrf = rt_syscon_find_by_ofw_phandle(dev->ofw_node, "rockchip,pmugrf");
  1745. cru->clk_parent.dev = dev;
  1746. cru->clk_parent.cells = rk3576_clk_cells;
  1747. cru->clk_parent.cells_nr = RT_ARRAY_SIZE(rk3576_clk_cells);
  1748. rockchip_clk_init(&cru->provider, cru->clk_parent.cells, cru->clk_parent.cells_nr);
  1749. if ((err = rt_clk_register(&cru->clk_parent)))
  1750. {
  1751. goto _fail;
  1752. }
  1753. rockchip_clk_setup(&cru->provider, cru->clk_parent.cells, cru->clk_parent.cells_nr);
  1754. if ((err = rockchip_register_softrst(&cru->rstc_parent, dev->ofw_node, RT_NULL,
  1755. cru->provider.reg_base + RK3576_SOFTRST_CON(0), ROCKCHIP_SOFTRST_HIWORD_MASK)))
  1756. {
  1757. goto _clk_unregister;
  1758. }
  1759. rockchip_register_restart_notifier(&cru->provider, RK3576_GLB_SRST_FST, RT_NULL);
  1760. return RT_EOK;
  1761. _clk_unregister:
  1762. rt_clk_unregister(&cru->clk_parent);
  1763. _fail:
  1764. if (cru->provider.reg_base)
  1765. {
  1766. rt_iounmap(cru->provider.reg_base);
  1767. }
  1768. rt_free(cru);
  1769. return err;
  1770. }
  1771. static const struct rt_ofw_node_id clk_rk3576_ofw_ids[] =
  1772. {
  1773. { .compatible = "rockchip,rk3576-cru", },
  1774. { /* sentinel */ }
  1775. };
  1776. static struct rt_platform_driver clk_rk3576_driver =
  1777. {
  1778. .name = "clk-rk3576",
  1779. .ids = clk_rk3576_ofw_ids,
  1780. .probe = clk_rk3576_probe,
  1781. };
  1782. static int clk_rk3576_register(void)
  1783. {
  1784. rt_platform_driver_register(&clk_rk3576_driver);
  1785. return 0;
  1786. }
  1787. INIT_SUBSYS_EXPORT(clk_rk3576_register);