23 #include <assp/omap3530_assp/omap3530_hardware_base.h> |
23 #include <assp/omap3530_assp/omap3530_hardware_base.h> |
24 #include <assp/omap3530_assp/omap3530_assp_priv.h> |
24 #include <assp/omap3530_assp/omap3530_assp_priv.h> |
25 #include <nkern.h> |
25 #include <nkern.h> |
26 |
26 |
27 #include "prcm_regs.h" |
27 #include "prcm_regs.h" |
28 |
28 #include "prcm.h" |
29 // Dummy location for redirecting writes which have no effect on a particular clock |
29 |
30 // More efficient than having to test for it in code |
30 |
31 TUint32 __dummypoke; |
|
32 #define KDummy (TUint32)&__dummypoke |
|
33 |
|
34 namespace |
|
35 { |
|
36 |
|
37 // PLL modes |
|
38 const TUint32 KPllModeStop = 0x1; |
|
39 const TUint32 KPllModeBypass = 0x5; |
|
40 const TUint32 KPllModeFastRelock = 0x6; |
|
41 const TUint32 KPllModeLock = 0x7; |
|
42 const TUint32 KPllModeMask = 0x7; |
|
43 const TUint32 KPllAutoOff = 0x0; |
|
44 const TUint32 KPllAutoOn = 0x1; |
|
45 const TUint32 KPllAutoMask = 0x7; |
|
46 |
|
47 #ifdef _DEBUG // to stop warings about unused definitions |
|
48 const TUint KPllMaximumDivider = 127; |
|
49 const TUint KPllMaximumMultiplier = 2047; |
|
50 #endif |
|
51 const TUint KPllDividerMask = 127; |
|
52 const TUint KPllMultiplierMask = 2047; |
|
53 const TUint KPllFreqRangeMask = 15; |
|
54 const TUint KPllRampMask = 3; |
|
55 |
|
56 const TUint KPllLpModeMaximumFrequency = 600000000; |
|
57 |
|
58 // TPll to TClock lookup table |
|
59 static const Prcm::TClock KPllToClock [] = |
|
60 { |
|
61 Prcm::EClkMpu, |
|
62 Prcm::EClkIva2Pll, |
|
63 Prcm::EClkCore, |
|
64 Prcm::EClkPeriph, |
|
65 Prcm::EClkPeriph2 |
|
66 }; |
|
67 |
|
68 // struct of info on how to configure each PLL |
|
69 // this doesn't include settings which are the same for all PLLs |
|
70 struct TPllControlInfo |
|
71 { |
|
72 TUint32 iConfigRegister; // register containing configuration settings |
|
73 TUint32 iMulDivRegister; // register containing multiplier and divider setting |
|
74 TUint32 iStatusRegister; // register containing PLL status |
|
75 TUint iMultShift; // shift to move multiplier into position |
|
76 TUint iDivShift; // shift to move divider into position |
|
77 TUint iFreqSelShift; // shift to move frequency range selection into position |
|
78 TUint iRampShift; // shift to move ramp bits into position |
|
79 TUint iDriftShift; // shift to move driftsel into position |
|
80 TUint iLpShift; // shift to move LP bit into position |
|
81 TUint iLockBit; // bit number of lock flag in iStatusRegister |
|
82 }; |
|
83 |
|
84 static const TPllControlInfo KPllControlInfo[ Prcm::KSupportedPllCount ] = |
|
85 { |
|
86 // ConfReg MulDivReg StatusReg MulShift DivShift FreqShift RampShift DriftShift LpShift LockBit |
|
87 { KCM_CLKEN_PLL_MPU, KCM_CLKSEL1_PLL_MPU, KCM_IDLEST_PLL_MPU, 8, 0, 4, 8, 3, 10, 0 }, // DPLL1 (mpu) |
|
88 { KCM_CLKEN_PLL_IVA2, KCM_CLKSEL1_PLL_IVA2, KCM_IDLEST_PLL_IVA2, 8, 0, 4, 8, 3, 10, 0 }, // DPLL2 (iva2) |
|
89 { KCM_CLKEN_PLL, KCM_CLKSEL1_PLL, KCM_IDLEST_CKGEN, 16, 8, 4, 8, 3, 10, 0 }, // DPLL3 (core) |
|
90 { KCM_CLKEN_PLL, KCM_CLKSEL2_PLL, KCM_IDLEST_CKGEN, 8, 0, 20, 24, 19, 26, 1 }, // DPLL4 (periph) |
|
91 { KCM_CLKEN2_PLL, KCM_CLKSEL4_PLL, KCM_IDLEST2_CKGEN, 8, 0, 4, 8, 3, 10, 0 } // DPLL5 (periph2) |
|
92 }; |
|
93 __ASSERT_COMPILE( (sizeof(KPllControlInfo) / sizeof( KPllControlInfo[0] )) == Prcm::KSupportedPllCount ); |
|
94 |
|
95 struct TPllModeInfo |
|
96 { |
|
97 TUint32 iModeRegister; |
|
98 TUint32 iAutoRegister; |
|
99 TUint8 iModeShift; |
|
100 TUint8 iAutoShift; |
|
101 TUint8 _spare[2]; |
|
102 }; |
|
103 |
|
104 static const TPllModeInfo KPllMode[] = |
|
105 { |
|
106 // iModeRegister iAutoRegister iModeShift iAutoShift |
|
107 { KCM_CLKEN_PLL_MPU, KCM_AUTOIDLE_PLL_MPU, 0, 0 }, |
|
108 { KCM_CLKEN_PLL_IVA2, KCM_AUTOIDLE_PLL_IVA2, 0, 0 }, |
|
109 { KCM_CLKEN_PLL, KCM_AUTOIDLE_PLL, 0, 0 }, |
|
110 { KCM_CLKEN_PLL, KCM_AUTOIDLE_PLL, 16, 3 }, |
|
111 { KCM_CLKEN2_PLL, KCM_AUTOIDLE2_PLL, 0, 3 } |
|
112 }; |
|
113 __ASSERT_COMPILE( (sizeof(KPllMode) / sizeof( KPllMode[0] )) == Prcm::KSupportedPllCount ); |
|
114 |
|
115 |
|
116 // All dividers in the PRCM fall into one of these classes |
|
117 // Some are unique to a particular peripheral but some |
|
118 // are used by multiple peripherals so we can share that implementation |
|
119 enum TDivType |
|
120 { |
|
121 EDivNotSupported, |
|
122 EDiv_1_2, |
|
123 EDivCore_1_2_4, |
|
124 EDivCore_3_4_6_96M, |
|
125 EDivPll_1_To_16, |
|
126 EDivPll_1_To_31, |
|
127 EDivUsimClk, |
|
128 EDivClkOut_1_2_4_8_16, |
|
129 }; |
|
130 |
|
131 struct TDividerInfo |
|
132 { |
|
133 TUint32 iRegister; |
|
134 TUint32 iMask; // mask of bits to modify in register |
|
135 TDivType iDivType : 8; |
|
136 TUint8 iShift; // number of bits to shift to move divide value into position |
|
137 }; |
|
138 |
|
139 static const TDividerInfo KDividerInfo[] = |
|
140 { |
|
141 { KCM_CLKSEL2_PLL_MPU, 0x1F, EDivPll_1_To_16, 0 }, // EClkMpu, ///< DPLL1 |
|
142 { KCM_CLKSEL2_PLL_IVA2, 0x1F, EDivPll_1_To_16, 0 }, |
|
143 { KCM_CLKSEL1_PLL, 0x1FU << 27, EDivPll_1_To_31, 27 }, // EClkCore, ///< DPLL3 |
|
144 { KDummy, 0, EDivNotSupported, 0 }, // EClkPeriph, ///< DPLL4 |
|
145 { KDummy, 0, EDivNotSupported, 0 }, // EClkPeriph2, ///< DPLL5 |
|
146 |
|
147 { KDummy, 0, EDivNotSupported, 0 }, // EClkPrcmInterface, |
|
148 |
|
149 { KDummy, 0, EDivNotSupported, 0 }, // EClkEmu, ///< Emulation clock |
|
150 { KDummy, 0, EDivNotSupported, 0 }, // EClkNeon, |
|
151 |
|
152 { KCM_CLKSEL_CORE, KBit0 | KBit1, EDiv_1_2, 0 }, // EClkL3Domain, |
|
153 { KCM_CLKSEL_CORE, KBit2 | KBit3, EDiv_1_2, 2 }, // EClkL4Domain, |
|
154 |
|
155 { KCM_CLKSEL1_PLL_MPU, KBit19 | KBit20 | KBit21, EDivCore_1_2_4, 19 }, // EClkMpuPll_Bypass, ///< DPLL1 bypass frequency |
|
156 { KCM_CLKSEL1_PLL_IVA2, KBit19 | KBit20 | KBit21, EDivCore_1_2_4, 19 }, // EClkIva2Pll_Bypass, ///< DPLL2 bypass frequency |
|
157 { KCM_CLKSEL_WKUP, KBit1 | KBit2, EDiv_1_2, 1 }, // EClkRM_F, ///< Reset manager functional clock |
|
158 { KCM_CLKSEL3_PLL, 0x1F, EDivPll_1_To_16, 0 }, // EClk96M ///< 96MHz clock |
|
159 { KCM_CLKSEL5_PLL, 0x1F, EDivPll_1_To_16, 0 }, // EClk120M ///< 120MHz clock |
|
160 { KCM_CLKOUT_CTRL, KBit3 | KBit4 | KBit5, EDivClkOut_1_2_4_8_16, 3 }, // EClkSysOut |
|
161 |
|
162 // Functional clocks |
|
163 { KCM_CLKSEL_DSS, 0x1FU << 8, EDivPll_1_To_16, 8 }, // EClkTv_F, |
|
164 { KCM_CLKSEL_DSS, 0x1F, EDivPll_1_To_16, 0 }, // EClkDss1_F, |
|
165 { KDummy, 0, EDivNotSupported, 0 }, // EClkDss2_F, |
|
166 { KDummy, 0, EDivNotSupported, 0 }, // EClkCsi2_F, |
|
167 { KCM_CLKSEL_CAM, 0x1F, EDivPll_1_To_16, 0 }, // EClkCam_F, |
|
168 { KDummy, 0, EDivNotSupported, 0 }, // EClkIva2_F, |
|
169 { KDummy, 0, EDivNotSupported, 0 }, // EClkMmc1_F, |
|
170 { KDummy, 0, EDivNotSupported, 0 }, // EClkMmc2_F, |
|
171 { KDummy, 0, EDivNotSupported, 0 }, // EClkMmc3_F, |
|
172 { KDummy, 0, EDivNotSupported, 0 }, // EClkMsPro_F, |
|
173 { KDummy, 0, EDivNotSupported, 0 }, // EClkHdq_F, |
|
174 { KDummy, 0, EDivNotSupported, 0 }, // EClkMcBsp1_F, |
|
175 { KDummy, 0, EDivNotSupported, 0 }, // EClkMcBsp2_F, |
|
176 { KDummy, 0, EDivNotSupported, 0 }, // EClkMcBsp3_F, |
|
177 { KDummy, 0, EDivNotSupported, 0 }, // EClkMcBsp4_F, |
|
178 { KDummy, 0, EDivNotSupported, 0 }, // EClkMcBsp5_F, |
|
179 { KDummy, 0, EDivNotSupported, 0 }, // EClkMcSpi1_F, |
|
180 { KDummy, 0, EDivNotSupported, 0 }, // EClkMcSpi2_F, |
|
181 { KDummy, 0, EDivNotSupported, 0 }, // EClkMcSpi3_F, |
|
182 { KDummy, 0, EDivNotSupported, 0 }, // EClkMcSpi4_F, |
|
183 { KDummy, 0, EDivNotSupported, 0 }, // EClkI2c1_F, |
|
184 { KDummy, 0, EDivNotSupported, 0 }, // EClkI2c2_F, |
|
185 { KDummy, 0, EDivNotSupported, 0 }, // EClkI2c3_F, |
|
186 { KDummy, 0, EDivNotSupported, 0 }, // EClkUart1_F, |
|
187 { KDummy, 0, EDivNotSupported, 0 }, // EClkUart2_F, |
|
188 { KDummy, 0, EDivNotSupported, 0 }, // EClkUart3_F, |
|
189 { KDummy, 0, EDivNotSupported, 0 }, // EClkGpt1_F, |
|
190 { KDummy, 0, EDivNotSupported, 0 }, // EClkGpt2_F, |
|
191 { KDummy, 0, EDivNotSupported, 0 }, // EClkGpt3_F, |
|
192 { KDummy, 0, EDivNotSupported, 0 }, // EClkGpt4_F, |
|
193 { KDummy, 0, EDivNotSupported, 0 }, // EClkGpt5_F, |
|
194 { KDummy, 0, EDivNotSupported, 0 }, // EClkGpt6_F, |
|
195 { KDummy, 0, EDivNotSupported, 0 }, // EClkGpt7_F, |
|
196 { KDummy, 0, EDivNotSupported, 0 }, // EClkGpt8_F, |
|
197 { KDummy, 0, EDivNotSupported, 0 }, // EClkGpt9_F, |
|
198 { KDummy, 0, EDivNotSupported, 0 }, // EClkGpt10_F, |
|
199 { KDummy, 0, EDivNotSupported, 0 }, // EClkGpt11_F, |
|
200 { KDummy, 0, EDivNotSupported, 0 }, // EClkUsbTll_F, |
|
201 { KDummy, 0, EDivNotSupported, 0 }, // EClkTs_F, |
|
202 { KDummy, 0, EDivNotSupported, 0 }, // EClkCpeFuse_F, |
|
203 |
|
204 { KCM_CLKSEL_SGX, KBit0 | KBit1 | KBit2, EDivCore_3_4_6_96M, 0 }, // EClkSgx_F, |
|
205 |
|
206 { KCM_CLKSEL_WKUP, KBit3 | KBit4 | KBit5 | KBit6, EDivUsimClk, 3 }, // EClkUsim_F, |
|
207 { KDummy, 0, EDivNotSupported, 0 }, // EClkSmartReflex2_F, |
|
208 { KDummy, 0, EDivNotSupported, 0 }, // EClkSmartReflex1_F, |
|
209 { KDummy, 0, EDivNotSupported, 0 }, // EClkWdt2_F, |
|
210 { KDummy, 0, EDivNotSupported, 0 }, // EClkWdt3_F, |
|
211 { KDummy, 0, EDivNotSupported, 0 }, // EClkGpio1_F, |
|
212 { KDummy, 0, EDivNotSupported, 0 }, // EClkGpio2_F, |
|
213 { KDummy, 0, EDivNotSupported, 0 }, // EClkGpio3_F, |
|
214 { KDummy, 0, EDivNotSupported, 0 }, // EClkGpio4_F, |
|
215 { KDummy, 0, EDivNotSupported, 0 }, // EClkGpio5_F, |
|
216 { KDummy, 0, EDivNotSupported, 0 }, // EClkGpio6_F, |
|
217 |
|
218 { KDummy, 0, EDivNotSupported, 0 }, // EClkUsb120_F, ///< USB host 120MHz functional clock |
|
219 { KDummy, 0, EDivNotSupported, 0 }, // EClkUsb48_F, ///< USB host 48MHz functional clock |
|
220 |
|
221 |
|
222 // Interface clocks |
|
223 { KDummy, 0, EDivNotSupported, 0 }, // EClkDss_I, |
|
224 { KDummy, 0, EDivNotSupported, 0 }, // EClkCam_I, |
|
225 { KDummy, 0, EDivNotSupported, 0 }, // EClkIcr_I, |
|
226 { KDummy, 0, EDivNotSupported, 0 }, // EClkMmc1_I, |
|
227 { KDummy, 0, EDivNotSupported, 0 }, // EClkMmc2_I, |
|
228 { KDummy, 0, EDivNotSupported, 0 }, // EClkMmc3_I, |
|
229 { KDummy, 0, EDivNotSupported, 0 }, // EClkMsPro_I, |
|
230 { KDummy, 0, EDivNotSupported, 0 }, // EClkHdq_I, |
|
231 { KDummy, 0, EDivNotSupported, 0 }, // EClkAes1_I, |
|
232 { KDummy, 0, EDivNotSupported, 0 }, // EClkAes2_I, |
|
233 { KDummy, 0, EDivNotSupported, 0 }, // EClkSha11_I, |
|
234 { KDummy, 0, EDivNotSupported, 0 }, // EClkSha12_I, |
|
235 { KDummy, 0, EDivNotSupported, 0 }, // EClkDes1_I, |
|
236 { KDummy, 0, EDivNotSupported, 0 }, // EClkDes2_I, |
|
237 { KDummy, 0, EDivNotSupported, 0 }, // EClkMcBsp1_I, |
|
238 { KDummy, 0, EDivNotSupported, 0 }, // EClkMcBsp2_I, |
|
239 { KDummy, 0, EDivNotSupported, 0 }, // EClkMcBsp3_I, |
|
240 { KDummy, 0, EDivNotSupported, 0 }, // EClkMcBsp4_I, |
|
241 { KDummy, 0, EDivNotSupported, 0 }, // EClkMcBsp5_I, |
|
242 { KDummy, 0, EDivNotSupported, 0 }, // EClkI2c1_I, |
|
243 { KDummy, 0, EDivNotSupported, 0 }, // EClkI2c2_I, |
|
244 { KDummy, 0, EDivNotSupported, 0 }, // EClkI2c3_I, |
|
245 { KDummy, 0, EDivNotSupported, 0 }, // EClkUart1_I, |
|
246 { KDummy, 0, EDivNotSupported, 0 }, // EClkUart2_I, |
|
247 { KDummy, 0, EDivNotSupported, 0 }, // EClkUart3_I, |
|
248 { KDummy, 0, EDivNotSupported, 0 }, // EClkMcSpi1_I, |
|
249 { KDummy, 0, EDivNotSupported, 0 }, // EClkMcSpi2_I, |
|
250 { KDummy, 0, EDivNotSupported, 0 }, // EClkMcSpi3_I, |
|
251 { KDummy, 0, EDivNotSupported, 0 }, // EClkMcSpi4_I, |
|
252 { KDummy, 0, EDivNotSupported, 0 }, // EClkGpt1_I, |
|
253 { KDummy, 0, EDivNotSupported, 0 }, // EClkGpt2_I, |
|
254 { KDummy, 0, EDivNotSupported, 0 }, // EClkGpt3_I, |
|
255 { KDummy, 0, EDivNotSupported, 0 }, // EClkGpt4_I, |
|
256 { KDummy, 0, EDivNotSupported, 0 }, // EClkGpt5_I, |
|
257 { KDummy, 0, EDivNotSupported, 0 }, // EClkGpt6_I, |
|
258 { KDummy, 0, EDivNotSupported, 0 }, // EClkGpt7_I, |
|
259 { KDummy, 0, EDivNotSupported, 0 }, // EClkGpt8_I, |
|
260 { KDummy, 0, EDivNotSupported, 0 }, // EClkGpt9_I, |
|
261 { KDummy, 0, EDivNotSupported, 0 }, // EClkGpt10_I, |
|
262 { KDummy, 0, EDivNotSupported, 0 }, // EClkGpt11_I, |
|
263 { KDummy, 0, EDivNotSupported, 0 }, // EClkGpt12_I, |
|
264 { KDummy, 0, EDivNotSupported, 0 }, // EClkMailboxes_I, |
|
265 { KDummy, 0, EDivNotSupported, 0 }, // EClkOmapSCM_I, |
|
266 { KDummy, 0, EDivNotSupported, 0 }, // EClkHsUsbOtg_I, |
|
267 { KDummy, 0, EDivNotSupported, 0 }, // EClkSdrc_I, |
|
268 { KDummy, 0, EDivNotSupported, 0 }, // EClkPka_I, |
|
269 { KDummy, 0, EDivNotSupported, 0 }, // EClkRng_I, |
|
270 { KDummy, 0, EDivNotSupported, 0 }, // EClkUsbTll_I, |
|
271 |
|
272 { KDummy, 0, EDivNotSupported, 0 }, // EClkSgx_I, |
|
273 |
|
274 { KDummy, 0, EDivNotSupported, 0 }, // EClkUsim_I, |
|
275 { KDummy, 0, EDivNotSupported, 0 }, // EClkWdt1_I, |
|
276 { KDummy, 0, EDivNotSupported, 0 }, // EClkWdt2_I, |
|
277 { KDummy, 0, EDivNotSupported, 0 }, // EClkWdt3_I, |
|
278 { KDummy, 0, EDivNotSupported, 0 }, // EClkGpio1_I, |
|
279 { KDummy, 0, EDivNotSupported, 0 }, // EClkGpio2_I, |
|
280 { KDummy, 0, EDivNotSupported, 0 }, // EClkGpio3_I, |
|
281 { KDummy, 0, EDivNotSupported, 0 }, // EClkGpio4_I, |
|
282 { KDummy, 0, EDivNotSupported, 0 }, // EClkGpio5_I, |
|
283 { KDummy, 0, EDivNotSupported, 0 }, // EClkGpio6_I, |
|
284 { KDummy, 0, EDivNotSupported, 0 }, // EClk32Sync_I, |
|
285 |
|
286 { KDummy, 0, EDivNotSupported, 0 }, // EClkUsb_I, ///< USB host interface clock |
|
287 |
|
288 { KDummy, 0, EDivNotSupported, 0 }, // EClk48M |
|
289 { KDummy, 0, EDivNotSupported, 0 }, // EClk12M |
|
290 |
|
291 { KDummy, 0, EDivNotSupported, 0 }, // EClkSysClk, |
|
292 { KDummy, 0, EDivNotSupported, 0 }, // EClkAltClk, |
|
293 { KDummy, 0, EDivNotSupported, 0 }, // EClkSysClk32k, |
|
294 }; |
|
295 __ASSERT_COMPILE( (sizeof(KDividerInfo) / sizeof( KDividerInfo[0] )) == Prcm::KSupportedClockCount ); |
|
296 |
|
297 // Special case divider and mux info for USIM |
|
298 struct TUsimDivMuxInfo |
|
299 { |
|
300 Prcm::TClock iClock : 8; // source clock |
|
301 TUint8 iDivider; // divider factor |
|
302 }; |
|
303 static const TUsimDivMuxInfo UsimDivMuxInfo[16] = |
|
304 { |
|
305 { Prcm::EClkSysClk, 1 }, // 0x0 |
|
306 { Prcm::EClkSysClk, 1 }, // 0x1 |
|
307 { Prcm::EClkSysClk, 2 }, // 0x2 |
|
308 { Prcm::EClk96M, 2 }, // 0x3 |
|
309 { Prcm::EClk96M, 4 }, // 0x4 |
|
310 { Prcm::EClk96M, 8 }, // 0x5 |
|
311 { Prcm::EClk96M, 10 }, // 0x6 |
|
312 { Prcm::EClk120M, 4 }, // 0x7 |
|
313 { Prcm::EClk120M, 8 }, // 0x8 |
|
314 { Prcm::EClk120M, 16 }, // 0x9 |
|
315 { Prcm::EClk120M, 20 }, // 0xA |
|
316 { Prcm::EClkSysClk, 1 }, // 0xB |
|
317 { Prcm::EClkSysClk, 1 }, // 0xC |
|
318 { Prcm::EClkSysClk, 1 }, // 0xD |
|
319 { Prcm::EClkSysClk, 1 }, // 0xE |
|
320 { Prcm::EClkSysClk, 1 } // 0xF |
|
321 }; |
|
322 |
|
323 // Structure representing a register, mask and enable/disable values |
|
324 struct TRegisterBitDef |
|
325 { |
|
326 TUint32 iRegister; |
|
327 TUint32 iMask; |
|
328 TUint32 iEnablePattern; |
|
329 TUint32 iDisablePattern; |
|
330 }; |
|
331 |
|
332 // Structure for holding information on clock enable and auto mode |
|
333 struct TClockEnableAutoInfo |
|
334 { |
|
335 TRegisterBitDef iGate; |
|
336 TRegisterBitDef iAuto; |
|
337 }; |
|
338 |
|
339 const TUint32 KDummyReadAsDisabled = 1; |
|
340 const TUint32 KDummyReadAsEnabled = 0; |
|
341 const TUint32 KBit012 = KBit0 | KBit1 | KBit2; |
|
342 const TUint32 KBit345 = KBit3 | KBit4 | KBit5; |
|
343 const TUint32 KBit16_17_18 = KBit16 | KBit17 | KBit18; |
|
344 |
|
345 // Table of bits to set to enable each clock |
|
346 // Note where a function doesn't exist, use { KDummy, 0, V, 0 } which will cause a write to harmlessly write |
|
347 // to __dummypoke and a read to find that the item is disabled if V==KDummyReadAsDisabled and enabled if V=KDummyReadAsEnabled |
|
348 static const TClockEnableAutoInfo KClockControlTable[] = |
|
349 { |
|
350 { { KDummy, 0, 0, 0 }, { KCM_AUTOIDLE_PLL_MPU, KBit012, 1, 0 } }, // EClkMpu, |
|
351 { { KCM_CLKEN_PLL_IVA2, KBit012, 7, 1 }, { KCM_AUTOIDLE_PLL_IVA2, KBit0, 1, 0 } }, // EClkIva2Pll, |
|
352 { { KCM_CLKEN_PLL, KBit012, 0x7, 0x5 }, { KCM_AUTOIDLE_PLL, KBit012, 1, 0 } }, // EClkCore, ///< DPLL3 |
|
353 { { KCM_CLKEN_PLL, KBit16_17_18, KBit16_17_18, KBit16 }, { KCM_AUTOIDLE_PLL, KBit345, KBit3, 0 } }, // EClkPeriph, ///< DPLL4 |
|
354 { { KCM_CLKEN2_PLL, KBit012, 0x7, 0x1 }, { KCM_AUTOIDLE2_PLL, KBit012, 1, 0 } }, // EClkPeriph2, ///< DPLL5 |
|
355 |
|
356 { { KDummy, 0, 0, 0 }, { KDummy, 0, KDummyReadAsEnabled, 0 } }, // EClkPrcmInterface, |
|
357 { { KDummy, 0, 0, 0 }, { KCM_CLKSTCTRL_EMU, KBit0 | KBit1, 3, 2 } }, // EClkEmu, ///< Emulation clock |
|
358 { { KCM_IDLEST_NEON, KBit0, 0, 1 }, { KCM_CLKSTCTRL_NEON, KBit0 | KBit1, 3, 2 } }, // EClkNeon, |
|
359 |
|
360 { { KDummy, 0, 0, 0 }, { KCM_CLKSTCTRL_CORE, KBit0 | KBit1, KBit0 | KBit1, 0 } }, // EClkL3Domain, |
|
361 { { KDummy, 0, 0, 0 }, { KCM_CLKSTCTRL_CORE, KBit2 | KBit3, KBit2 | KBit3, 0 } }, // EClkL4Domain, |
|
362 |
|
363 { { KDummy, 0, 0, 0 }, { KDummy, 0, KDummyReadAsEnabled, 0 } }, // EClkMpuPll_Bypass, ///< DPLL1 bypass frequency |
|
364 { { KDummy, 0, 0, 0 }, { KDummy, 0, KDummyReadAsEnabled, 0 } }, // EClkIva2Pll_Bypass, ///< DPLL2 bypass frequency |
|
365 { { KDummy, 0, 0, 0 }, { KDummy, 0, KDummyReadAsEnabled, 0 } }, // EClkRM_F, ///< Reset manager functional clock |
|
366 { { KDummy, 0, 0, 0 }, { KDummy, 0, KDummyReadAsEnabled, 0 } }, // EClk96M, ///< 96MHz clock |
|
367 { { KDummy, 0, 0, 0 }, { KDummy, 0, KDummyReadAsEnabled, 0 } }, // EClk120M, ///< 120MHz clock |
|
368 { { KDummy, 0, 0, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkSysOut, |
|
369 |
|
370 // Functional clocks |
|
371 { { KCM_FCLKEN_DSS, KBit2, KBit2, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkTv_F, |
|
372 { { KCM_FCLKEN_DSS, KBit0, KBit0, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkDss1_F, |
|
373 { { KCM_FCLKEN_DSS, KBit1, KBit1, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkDss2_F, |
|
374 { { KCM_FCLKEN_CAM, KBit1, KBit1, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkCsi2_F, |
|
375 { { KCM_FCLKEN_CAM, KBit0, KBit0, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkCam_F, |
|
376 { { KCM_FCLKEN_IVA2, KBit0, KBit0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkIva2_F, |
|
377 { { KCM_FCLKEN1_CORE, KBit24, KBit24, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkMmc1_F, |
|
378 { { KCM_FCLKEN1_CORE, KBit25, KBit25, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkMmc2_F, |
|
379 { { KCM_FCLKEN1_CORE, KBit30, KBit30, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkMmc3_F, |
|
380 { { KCM_FCLKEN1_CORE, KBit23, KBit23, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkMsPro_F, |
|
381 { { KCM_FCLKEN1_CORE, KBit22, KBit22, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkHdq_F, |
|
382 { { KCM_FCLKEN1_CORE, KBit9, KBit9, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkMcBSP1_F, |
|
383 { { KCM_FCLKEN_PER, KBit0, KBit0, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkMcBSP2_F, |
|
384 { { KCM_FCLKEN_PER, KBit1, KBit1, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkMcBSP3_F, |
|
385 { { KCM_FCLKEN_PER, KBit2, KBit2, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkMcBSP4_F, |
|
386 { { KCM_FCLKEN1_CORE, KBit10, KBit10, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkMcBSP5_F, |
|
387 { { KCM_FCLKEN1_CORE, KBit18, KBit18, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkMcSpi1_F, |
|
388 { { KCM_FCLKEN1_CORE, KBit19, KBit19, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkMcSpi2_F, |
|
389 { { KCM_FCLKEN1_CORE, KBit20, KBit20, 0 }, { KDummy, 0, KDummyReadAsEnabled, 0 } }, // EClkMcSpi3_F, |
|
390 { { KCM_FCLKEN1_CORE, KBit21, KBit21, 0 }, { KDummy, 0, KDummyReadAsEnabled, 0 } }, // EClkMcSpi4_F, |
|
391 { { KCM_FCLKEN1_CORE, KBit15, KBit15, 0}, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkI2c1_F, |
|
392 { { KCM_FCLKEN1_CORE, KBit16, KBit16, 0}, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkI2c2_F, |
|
393 { { KCM_FCLKEN1_CORE, KBit17, KBit17, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkI2c3_F, |
|
394 { { KCM_FCLKEN1_CORE, KBit13, KBit13, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkUart1_F, |
|
395 { { KCM_FCLKEN1_CORE, KBit14, KBit14, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkUart2_F, |
|
396 { { KCM_FCLKEN_PER, KBit11, KBit11, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkUart3_F, |
|
397 { { KCM_FCLKEN_WKUP, KBit0, KBit0, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkGpt1_F, |
|
398 { { KCM_FCLKEN_PER, KBit3, KBit3, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkGpt2_F, |
|
399 { { KCM_FCLKEN_PER, KBit4, KBit4, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkGpt3_F, |
|
400 { { KCM_FCLKEN_PER, KBit5, KBit5, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkGpt4_F, |
|
401 { { KCM_FCLKEN_PER, KBit6, KBit6, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkGpt5_F, |
|
402 { { KCM_FCLKEN_PER, KBit7, KBit7, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkGpt6_F, |
|
403 { { KCM_FCLKEN_PER, KBit8, KBit8, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkGpt7_F, |
|
404 { { KCM_FCLKEN_PER, KBit9, KBit9, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkGpt8_F, |
|
405 { { KCM_FCLKEN_PER, KBit10, KBit10, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkGpt9_F, |
|
406 { { KCM_FCLKEN1_CORE, KBit11, KBit11, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkGpt10_F, |
|
407 { { KCM_FCLKEN1_CORE, KBit12, KBit12, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkGpt11_F, |
|
408 { { KCM_FCLKEN3_CORE, KBit2, KBit2, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkUsbTll_F, |
|
409 { { KCM_FCLKEN3_CORE, KBit1, KBit1, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkTs_F, |
|
410 { { KCM_FCLKEN3_CORE, KBit0, KBit0, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkCpeFuse_F, |
|
411 |
|
412 { { KCM_FCLKEN_SGX, KBit1, KBit1, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkSgx_F, |
|
413 |
|
414 { { KCM_FCLKEN_WKUP, KBit9, KBit9, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkUsim_F, |
|
415 { { KCM_FCLKEN_WKUP, KBit7, KBit7, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkSmartReflex2_F, |
|
416 { { KCM_FCLKEN_WKUP, KBit6, KBit6, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkSmartReflex1_F, |
|
417 { { KCM_FCLKEN_WKUP, KBit5, KBit5, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkWdt2_F, |
|
418 { { KCM_FCLKEN_PER, KBit12, KBit12, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkWdt3_F, |
|
419 { { KCM_FCLKEN_WKUP, KBit3, KBit3, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkGpio1_F, |
|
420 { { KCM_FCLKEN_PER, KBit13, KBit13, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkGpio2_F, |
|
421 { { KCM_FCLKEN_PER, KBit14, KBit14, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkGpio3_F, |
|
422 { { KCM_FCLKEN_PER, KBit15, KBit15, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkGpio4_F, |
|
423 { { KCM_FCLKEN_PER, KBit16, KBit16, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkGpio5_F, |
|
424 { { KCM_FCLKEN_PER, KBit17, KBit17, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkGpio6_F, |
|
425 |
|
426 { { KCM_FCLKEN_USBHOST, KBit1, KBit1, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkUsb120_F, |
|
427 { { KCM_FCLKEN_USBHOST, KBit0, KBit0, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkUsb48_F, |
|
428 |
|
429 |
|
430 // Interface clocks |
|
431 { { KCM_ICLKEN_DSS, KBit0, KBit0, 0 }, { KCM_AUTOIDLE_DSS, KBit0, KBit0, 0 } }, // EClkDss_I, |
|
432 { { KCM_ICLKEN_CAM, KBit0,KBit0, 0 }, { KCM_AUTOIDLE_CAM, KBit0, KBit0, 0 } }, // EClkCam_I, |
|
433 { { KCM_ICLKEN1_CORE, KBit29, KBit29, 0 }, { KCM_AUTOIDLE1_CORE, KBit29, KBit29, 0 } }, // EClkIcr_I, |
|
434 { { KCM_ICLKEN1_CORE, KBit24, KBit24, 0 }, { KCM_AUTOIDLE1_CORE, KBit24, KBit24, 0 } }, // EClkMmc1_I, |
|
435 { { KCM_ICLKEN1_CORE, KBit25, KBit25, 0 }, { KCM_AUTOIDLE1_CORE, KBit25, KBit25, 0 } }, // EClkMmc2_I, |
|
436 { { KCM_ICLKEN1_CORE, KBit30, KBit30, 0 }, { KCM_AUTOIDLE1_CORE, KBit30, KBit30, 0 } }, // EClkMmc3_I, |
|
437 { { KCM_ICLKEN1_CORE, KBit23, KBit23, 0 }, { KCM_AUTOIDLE1_CORE, KBit23, KBit23, 0 } }, // EClkMsPro_I, |
|
438 { { KCM_ICLKEN1_CORE, KBit22, KBit22, 0 }, { KCM_AUTOIDLE1_CORE, KBit22, KBit22, 0 } }, // EClkHdq_I, |
|
439 { { KCM_ICLKEN2_CORE, KBit3, KBit3, 0 }, { KCM_AUTOIDLE2_CORE, KBit3, KBit3, 0 } }, // EClkAes1_I, |
|
440 { { KCM_ICLKEN1_CORE, KBit28, KBit28, 0 }, { KCM_AUTOIDLE1_CORE, KBit28, KBit28, 0 } }, // EClkAes2_I, |
|
441 { { KCM_ICLKEN2_CORE, KBit1, KBit1, 0 }, { KCM_AUTOIDLE2_CORE, KBit1, KBit1, 0 } }, // EClkSha11_I, |
|
442 { { KCM_ICLKEN1_CORE, KBit28, KBit27, 0 }, { KCM_AUTOIDLE1_CORE, KBit27, KBit27, 0 } }, // EClkSha12_I, |
|
443 { { KCM_ICLKEN2_CORE, KBit0, KBit0, 0 }, { KCM_AUTOIDLE2_CORE, KBit0, KBit0, 0 } }, // EClkDes1_I, |
|
444 { { KCM_ICLKEN1_CORE, KBit26, KBit26, 0 }, { KCM_AUTOIDLE1_CORE, KBit26, KBit26, 0 } }, // EClkDes2_I, |
|
445 { { KCM_ICLKEN1_CORE, KBit9, KBit9, 0 }, { KCM_AUTOIDLE1_CORE, KBit9, KBit9, 0 } }, // EClkMcBSP1_I, |
|
446 { { KCM_ICLKEN_PER, KBit0, KBit0, 0}, { KCM_AUTOIDLE_PER, KBit0, KBit0, 0 } }, // EClkMcBSP2_I, |
|
447 { { KCM_ICLKEN_PER, KBit1, KBit1, 0 }, { KCM_AUTOIDLE_PER, KBit1, KBit1, 0 } }, // EClkMcBSP3_I, |
|
448 { { KCM_ICLKEN_PER, KBit2, KBit2, 0 }, { KCM_AUTOIDLE_PER, KBit2, KBit2, 0 } }, // EClkMcBSP4_I, |
|
449 { { KCM_ICLKEN1_CORE, KBit10, KBit10, 0 }, { KCM_AUTOIDLE1_CORE, KBit10, KBit10, 0 } }, // EClkMcBSP5_I, |
|
450 { { KCM_ICLKEN1_CORE, KBit15, KBit15, 0 }, { KCM_AUTOIDLE1_CORE, KBit15, KBit15, 0 } }, // EClkI2c1_I, |
|
451 { { KCM_ICLKEN1_CORE, KBit16, KBit16, 0 }, { KCM_AUTOIDLE1_CORE, KBit16, KBit16, 0 } }, // EClkI2c2_I, |
|
452 { { KCM_ICLKEN1_CORE, KBit17, KBit17, 0 }, { KCM_AUTOIDLE1_CORE, KBit17, KBit17, 0 } }, // EClkI2c3_I, |
|
453 { { KCM_ICLKEN1_CORE, KBit13, KBit13, 0 }, { KCM_AUTOIDLE1_CORE, KBit13, KBit13, 0 } }, // EClkUart1_I, |
|
454 { { KCM_ICLKEN1_CORE, KBit14, KBit14, 0 }, { KCM_AUTOIDLE1_CORE, KBit14, KBit14, 0 } }, // EClkUart2_I, |
|
455 { { KCM_ICLKEN_PER, KBit11, KBit11, 0 }, { KCM_AUTOIDLE_PER, KBit11, KBit11, 0 } }, // EClkUart3_I, |
|
456 { { KCM_ICLKEN1_CORE, KBit18, KBit18, 0 }, { KCM_AUTOIDLE1_CORE, KBit18, KBit18, 0 } }, // EClkMcSpi1_I, |
|
457 { { KCM_ICLKEN1_CORE, KBit19, KBit19, 0 }, { KCM_AUTOIDLE1_CORE, KBit19, KBit19, 0 } }, // EClkMcSpi2_I, |
|
458 { { KCM_ICLKEN1_CORE, KBit20, KBit20, 0 }, { KCM_AUTOIDLE1_CORE, KBit20, KBit20, 0 } }, // EClkMcSpi3_I, |
|
459 { { KCM_ICLKEN1_CORE, KBit21, KBit21, 0 }, { KCM_AUTOIDLE1_CORE, KBit21, KBit21, 0 } }, // EClkMcSpi4_I, |
|
460 { { KCM_ICLKEN_WKUP, KBit0, KBit0, 0 }, { KCM_AUTOIDLE_WKUP, KBit0, KBit0, 0 } }, // EClkGpt1_I, |
|
461 { { KCM_ICLKEN_PER, KBit3, KBit3, 0 }, { KCM_AUTOIDLE_PER, KBit3, KBit3, 0 } }, // EClkGpt2_I, |
|
462 { { KCM_ICLKEN_PER, KBit4, KBit4, 0 }, { KCM_AUTOIDLE_PER, KBit4, KBit4, 0 } }, // EClkGpt3_I, |
|
463 { { KCM_ICLKEN_PER, KBit5, KBit5, 0 }, { KCM_AUTOIDLE_PER, KBit5, KBit5, 0 } }, // EClkGpt4_I, |
|
464 { { KCM_ICLKEN_PER, KBit6, KBit6, 0 }, { KCM_AUTOIDLE_PER, KBit6, KBit6, 0 } }, // EClkGpt5_I, |
|
465 { { KCM_ICLKEN_PER, KBit7, KBit7, 0 }, { KCM_AUTOIDLE_PER, KBit7, KBit7, 0 } }, // EClkGpt6_I, |
|
466 { { KCM_ICLKEN_PER, KBit8, KBit8, 0 }, { KCM_AUTOIDLE_PER, KBit8, KBit8, 0 } }, // EClkGpt7_I, |
|
467 { { KCM_ICLKEN_PER, KBit9, KBit9, 0 }, { KCM_AUTOIDLE_PER, KBit9, KBit9, 0 } }, // EClkGpt8_I, |
|
468 { { KCM_ICLKEN_PER, KBit10, KBit10, 0 }, { KCM_AUTOIDLE_PER, KBit10, KBit10, 0 } }, // EClkGpt9_I, |
|
469 { { KCM_ICLKEN1_CORE, KBit11, KBit11, 0 }, { KCM_AUTOIDLE1_CORE, KBit11, KBit11, 0 } }, // EClkGpt10_I, |
|
470 { { KCM_ICLKEN1_CORE, KBit12, KBit12, 0 }, { KCM_AUTOIDLE1_CORE, KBit12, KBit12, 0 } }, // EClkGpt11_I, |
|
471 { { KDummy, 0, 0, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkGpt12_I, |
|
472 { { KCM_ICLKEN1_CORE, KBit7, KBit7, 0 }, { KCM_AUTOIDLE1_CORE, KBit7, KBit7, 0 } }, // EClkMailboxes_I, |
|
473 { { KCM_ICLKEN1_CORE, KBit6, KBit6, 0 }, { KCM_AUTOIDLE1_CORE, KBit6, KBit6, 0 } }, // EClkOmapSCM_I, |
|
474 { { KCM_ICLKEN1_CORE, KBit4, KBit4, 0 }, { KCM_AUTOIDLE1_CORE, KBit4, KBit4, 0 } }, // EClkHsUsbOtg_I, |
|
475 { { KCM_ICLKEN1_CORE, KBit1, KBit1, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkSdrc_I, |
|
476 { { KCM_ICLKEN2_CORE, KBit4, KBit4, 0 }, { KCM_AUTOIDLE2_CORE, KBit4, KBit4, 0 } }, // EClkPka_I, |
|
477 { { KCM_ICLKEN2_CORE, KBit2, KBit2, 0 }, { KCM_AUTOIDLE2_CORE, KBit2, KBit2, 0 } }, // EClkRng_I, |
|
478 { { KCM_ICLKEN3_CORE, KBit2, KBit2, 0 }, { KCM_AUTOIDLE3_CORE, KBit2, KBit2, 0 } }, // EClkUsbTll_I, |
|
479 |
|
480 { { KCM_ICLKEN_SGX, KBit0, KBit0, 0 }, { KCM_CLKSTCTRL_SGX, KBit0 | KBit1, 0x3, 0x0 } }, // EClkSgx_I, |
|
481 |
|
482 { { KCM_ICLKEN_WKUP, KBit9, KBit9, 0 }, { KCM_AUTOIDLE_WKUP, KBit9, KBit9, 0 } }, // EClkUsim_I, |
|
483 { { KCM_ICLKEN_WKUP, KBit4, KBit4, 0 }, { KCM_AUTOIDLE_WKUP, KBit4, KBit4, 0 } }, // EClkWdt1_I, |
|
484 { { KCM_ICLKEN_WKUP, KBit5, KBit5, 0 }, { KCM_AUTOIDLE_WKUP, KBit5, KBit5, 0 } }, // EClkWdt2_I, |
|
485 { { KCM_ICLKEN_PER, KBit12, KBit12, 0 }, { KCM_AUTOIDLE_PER, KBit12, KBit12, 0 } }, // EClkWdt3_I, |
|
486 { { KCM_ICLKEN_WKUP, KBit3, KBit3, 0 }, { KCM_AUTOIDLE_WKUP, KBit3, KBit3, 0 } }, // EClkGpio1_I, |
|
487 { { KCM_ICLKEN_PER, KBit13, KBit13, 0 }, { KCM_AUTOIDLE_PER, KBit13, KBit13, 0 } }, // EClkGpio2_I, |
|
488 { { KCM_ICLKEN_PER, KBit14, KBit14, 0 }, { KCM_AUTOIDLE_PER, KBit14, KBit14, 0 } }, // EClkGpio3_I, |
|
489 { { KCM_ICLKEN_PER, KBit15, KBit15, 0 }, { KCM_AUTOIDLE_PER, KBit15, KBit15, 0 } }, // EClkGpio4_I, |
|
490 { { KCM_ICLKEN_PER, KBit16, KBit16, 0 }, { KCM_AUTOIDLE_PER, KBit16, KBit16, 0 } }, // EClkGpio5_I, |
|
491 { { KCM_ICLKEN_PER, KBit17, KBit17, 0 }, { KCM_AUTOIDLE_PER, KBit17, KBit17, 0 } }, // EClkGpio6_I, |
|
492 { { KCM_ICLKEN_WKUP, KBit2, KBit2, 0 }, { KCM_AUTOIDLE_WKUP, KBit2, KBit2, 0 } }, // EClk32Sync_I, |
|
493 |
|
494 { { KCM_ICLKEN_USBHOST, KBit0, KBit0, 0 }, { KCM_AUTOIDLE_USBHOST, KBit0, KBit0, 0 } }, // EClkUsb_I, ///< USB host interface clock |
|
495 |
|
496 { { KDummy, 0, 0, 0 }, { KDummy, 0, KDummyReadAsEnabled, 0 } }, // EClk48M |
|
497 { { KDummy, 0, 0, 0 }, { KDummy, 0, KDummyReadAsEnabled, 0 } }, // EClk12M |
|
498 |
|
499 { { KDummy, 0, 0, 0 }, { KDummy, 0, KDummyReadAsEnabled, 0 } }, // EClkSysClk |
|
500 { { KDummy, 0, 0, 0 }, { KDummy, 0, KDummyReadAsEnabled, 0 } }, // EClkAltClk |
|
501 { { KDummy, 0, 0, 0 }, { KDummy, 0, KDummyReadAsEnabled, 0 } }, // EClkSysClk32k |
|
502 }; |
|
503 __ASSERT_COMPILE( (sizeof(KClockControlTable) / sizeof( KClockControlTable[0] )) == Prcm::KSupportedClockCount ); |
|
504 |
|
505 static const TRegisterBitDef KClockWakeupTable[] = |
|
506 { |
|
507 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkMpu, ///< DPLL1 |
|
508 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkIva2Pll, ///< DPLL2 |
|
509 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkCore, ///< DPLL3 |
|
510 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkPeriph, ///< DPLL4 |
|
511 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkPeriph2, ///< DPLL5 |
|
512 |
|
513 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkPrcmInterface, |
|
514 |
|
515 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkEmu, ///< Emulation clock |
|
516 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkNeon, |
|
517 |
|
518 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkL3Domain, |
|
519 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkL4Domain, |
|
520 |
|
521 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkMpuPll_Bypass, ///< DPLL1 bypass frequency |
|
522 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkIva2Pll_Bypass, ///< DPLL2 bypass frequency |
|
523 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkRM_F, ///< Reset manager functional clock |
|
524 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClk96M, ///< 96MHz clock |
|
525 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClk120M, ///< 120MHz clock |
|
526 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkSysOut, |
|
527 |
|
528 // Functional clocks |
|
529 // NOTE - functional clocks aren't mapped to a wakeup event, these just clock the internals |
|
530 // Use the interface clocks to register a wakeup |
|
531 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkTv_F, |
|
532 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkDss1_F, |
|
533 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkDss2_F, |
|
534 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkCsi2_F, |
|
535 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkCam_F, |
|
536 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkIva2_F, |
|
537 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkMmc1_F, |
|
538 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkMmc2_F, |
|
539 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkMmc3_F, |
|
540 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkMsPro_F, |
|
541 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkHdq_F, |
|
542 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkMcBSP1_F, |
|
543 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkMcBSP2_F, |
|
544 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkMcBSP3_F, |
|
545 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkMcBSP4_F, |
|
546 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkMcBSP5_F, |
|
547 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkMcSpi1_F |
|
548 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkMcSpi2_F |
|
549 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkMcSpi3_F |
|
550 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkMcSpi4_F |
|
551 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkI2c1_F, |
|
552 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkI2c2_F, |
|
553 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkI2c3_F, |
|
554 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkUart1_F, |
|
555 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkUart2_F, |
|
556 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkUart3_F, |
|
557 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkGpt1_F, |
|
558 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkGpt2_F, |
|
559 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkGpt3_F, |
|
560 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkGpt4_F, |
|
561 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkGpt5_F, |
|
562 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkGpt6_F, |
|
563 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkGpt7_F, |
|
564 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkGpt8_F, |
|
565 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkGpt9_F, |
|
566 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkGpt10_F, |
|
567 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkGpt11_F, |
|
568 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkUsbTll_F, |
|
569 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkTs_F, |
|
570 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkCpeFuse_F, |
|
571 |
|
572 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkSgx_F, |
|
573 |
|
574 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkUsim_F, |
|
575 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkSmartReflex2_F, |
|
576 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkSmartReflex1_F, |
|
577 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkWdt2_F, |
|
578 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkWdt3_F, |
|
579 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkGpio1_F, |
|
580 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkGpio2_F, |
|
581 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkGpio3_F, |
|
582 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkGpio4_F, |
|
583 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkGpio5_F, |
|
584 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkGpio6_F, |
|
585 |
|
586 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkUsb120_F, ///< USB host 120MHz functional clock |
|
587 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkUsb48_F, ///< USB host 48MHz functional clock |
|
588 |
|
589 |
|
590 // Interface clocks |
|
591 { KPM_WKEN_DSS, KBit0, KBit0, 0 }, // EClkDss_I, |
|
592 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkCam_I, |
|
593 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkIcr_I, |
|
594 { KPM_WKEN1_CORE, KBit24, KBit24, 0 }, // EClkMmc1_I, |
|
595 { KPM_WKEN1_CORE, KBit25, KBit25, 0 }, // EClkMmc2_I, |
|
596 { KPM_WKEN1_CORE, KBit30, KBit30, 0 }, // EClkMmc3_I, |
|
597 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkMsPro_I, |
|
598 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkHdq_I, |
|
599 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkAes1_I, |
|
600 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkAes2_I, |
|
601 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkSha11_I, |
|
602 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkSha12_I, |
|
603 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkDes1_I, |
|
604 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkDes2_I, |
|
605 { KPM_WKEN1_CORE, KBit9, KBit9, 0 }, // EClkMcBSP1_I, |
|
606 { KPM_WKEN_PER, KBit0, KBit0, 0 }, // EClkMcBSP2_I, |
|
607 { KPM_WKEN_PER, KBit1, KBit1, 0 }, // EClkMcBSP3_I, |
|
608 { KPM_WKEN_PER, KBit2, KBit2, 0 }, // EClkMcBSP4_I, |
|
609 { KPM_WKEN1_CORE, KBit10, KBit10, 0 }, // EClkMcBSP5_I, |
|
610 { KPM_WKEN1_CORE, KBit15, KBit15, 0 }, // EClkI2c1_I, |
|
611 { KPM_WKEN1_CORE, KBit16, KBit16, 0 }, // EClkI2c2_I, |
|
612 { KPM_WKEN1_CORE, KBit17, KBit17, 0 }, // EClkI2c3_I, |
|
613 { KPM_WKEN1_CORE, KBit13, KBit13, 0 }, // EClkUart1_I, |
|
614 { KPM_WKEN1_CORE, KBit14, KBit14, 0 }, // EClkUart2_I, |
|
615 { KPM_WKEN_PER, KBit11, KBit11, 0 }, // EClkUart3_I, |
|
616 { KPM_WKEN1_CORE, KBit18, KBit18, 0 }, // EClkMcSpi1_I |
|
617 { KPM_WKEN1_CORE, KBit19, KBit19, 0 }, // EClkMcSpi2_I |
|
618 { KPM_WKEN1_CORE, KBit20, KBit20, 0 }, // EClkMcSpi3_I |
|
619 { KPM_WKEN1_CORE, KBit21, KBit21, 0 }, // EClkMcSpi4_I |
|
620 { KPM_WKEN_WKUP, KBit0, KBit0, 0 }, // EClkGpt1_I, |
|
621 { KPM_WKEN_PER, KBit3, KBit3, 0 }, // EClkGpt2_I, |
|
622 { KPM_WKEN_PER, KBit4, KBit4, 0 }, // EClkGpt3_I, |
|
623 { KPM_WKEN_PER, KBit5, KBit5, 0 }, // EClkGpt4_I, |
|
624 { KPM_WKEN_PER, KBit6, KBit6, 0 }, // EClkGpt5_I, |
|
625 { KPM_WKEN_PER, KBit7, KBit7, 0 }, // EClkGpt6_I, |
|
626 { KPM_WKEN_PER, KBit8, KBit8, 0 }, // EClkGpt7_I, |
|
627 { KPM_WKEN_PER, KBit9, KBit9, 0 }, // EClkGpt8_I, |
|
628 { KPM_WKEN_PER, KBit10, KBit10, 0 }, // EClkGpt9_I, |
|
629 { KPM_WKEN1_CORE, KBit11, KBit11, 0 }, // EClkGpt10_I, |
|
630 { KPM_WKEN1_CORE, KBit12, KBit12, 0 }, // EClkGpt11_I, |
|
631 { KPM_WKEN_WKUP, KBit1, KBit1, 0 }, // EClkGpt12_I, |
|
632 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkMailboxes_I, |
|
633 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkOmapSCM_I, |
|
634 { KPM_WKEN1_CORE, KBit4, KBit4, 0 }, // EClkHsUsbOtg_I, |
|
635 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkSdrc_I, |
|
636 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkPka_I, |
|
637 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkRng_I, |
|
638 { KPM_WKEN3_CORE, KBit2, KBit2, 0 }, // EClkUsbTll_I, |
|
639 |
|
640 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkSgx_I, |
|
641 |
|
642 { KPM_WKEN_WKUP, KBit9, KBit9, 0 }, // EClkUsim_I, |
|
643 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkWdt1_I, |
|
644 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkWdt2_I, |
|
645 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkWdt3_I, |
|
646 { KPM_WKEN_WKUP, KBit3, KBit3, 0 }, // EClkGpio1_I, |
|
647 { KPM_WKEN_PER, KBit13, KBit13, 0 }, // EClkGpio2_I, |
|
648 { KPM_WKEN_PER, KBit14, KBit14, 0 }, // EClkGpio3_I, |
|
649 { KPM_WKEN_PER, KBit15, KBit15, 0 }, // EClkGpio4_I, |
|
650 { KPM_WKEN_PER, KBit16, KBit16, 0 }, // EClkGpio5_I, |
|
651 { KPM_WKEN_PER, KBit17, KBit17, 0 }, // EClkGpio6_I, |
|
652 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClk32Sync_I, |
|
653 |
|
654 { KPM_WKEN_USBHOST, KBit0, KBit0, 0 }, // EClkUsb_I, ///< USB host interface clock |
|
655 |
|
656 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClk48M |
|
657 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClk12M |
|
658 |
|
659 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkSysClk |
|
660 { KDummy, 0, KDummyReadAsDisabled, 0 }, // EClkAltClk |
|
661 { KDummy, 0, KDummyReadAsDisabled, 0 } // EClkSysClk32k |
|
662 |
|
663 }; |
|
664 __ASSERT_COMPILE( (sizeof(KClockWakeupTable) / sizeof( KClockWakeupTable[0] )) == Prcm::KSupportedClockCount ); |
|
665 |
|
666 |
|
667 __ASSERT_COMPILE( Prcm::EWakeGroupMpu == 0 ); |
|
668 __ASSERT_COMPILE( Prcm::EWakeGroupIva2 == 1 ); |
|
669 static const TRegisterBitDef KClockWakeupGroupTable[ Prcm::KSupportedClockCount ][ Prcm::KSupportedWakeupGroupCount ] = |
|
670 { |
|
671 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkMpu, ///< DPLL1 |
|
672 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkIva2Pll, ///< DPLL2 |
|
673 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkCore, ///< DPLL3 |
|
674 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkPeriph, ///< DPLL4 |
|
675 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkPeriph2, ///< DPLL5 |
|
676 |
|
677 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkPrcmInterface, |
|
678 |
|
679 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkEmu, ///< Emulation clock |
|
680 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkNeon, |
|
681 |
|
682 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkL3Domain, |
|
683 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkL4Domain, |
|
684 |
|
685 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkMpuPll_Bypass, ///< DPLL1 bypass frequency |
|
686 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkIva2Pll_Bypass, ///< DPLL2 bypass frequency |
|
687 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkRM_F, ///< Reset manager functional clock |
|
688 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClk96M, ///< 96MHz clock |
|
689 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClk120M, ///< 120MHz clock |
|
690 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkSysOut, |
|
691 |
|
692 // Functional clocks |
|
693 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkTv_F, |
|
694 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkDss1_F, |
|
695 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkDss2_F, |
|
696 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkCsi2_F, |
|
697 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkCam_F, |
|
698 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkIva2_F, |
|
699 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkMmc1_F, |
|
700 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkMmc2_F, |
|
701 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkMmc3_F, |
|
702 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkMsPro_F, |
|
703 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkHdq_F, |
|
704 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkMcBsp1_F, |
|
705 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkMcBsp2_F, |
|
706 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkMcBsp3_F, |
|
707 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkMcBsp4_F, |
|
708 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkMcBsp5_F, |
|
709 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkMcSpi1_F, |
|
710 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkMcSpi2_F, |
|
711 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkMcSpi3_F, |
|
712 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkMcSpi4_F, |
|
713 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkI2c1_F, |
|
714 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkI2c2_F, |
|
715 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkI2c3_F, |
|
716 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkUart1_F, |
|
717 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkUart2_F, |
|
718 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkUart3_F, |
|
719 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkGpt1_F, |
|
720 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkGpt2_F, |
|
721 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkGpt3_F, |
|
722 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkGpt4_F, |
|
723 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkGpt5_F, |
|
724 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkGpt6_F, |
|
725 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkGpt7_F, |
|
726 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkGpt8_F, |
|
727 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkGpt9_F, |
|
728 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkGpt10_F, |
|
729 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkGpt11_F, |
|
730 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkUsbTll_F, |
|
731 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkTs_F, |
|
732 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkCpeFuse_F, |
|
733 |
|
734 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkSgx_F, |
|
735 |
|
736 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkUsim_F, |
|
737 { { KPM_MPUGRPSEL_WKUP, KBit7, KBit7, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkSmartReflex2_F, |
|
738 { { KPM_MPUGRPSEL_WKUP, KBit6, KBit6, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkSmartReflex1_F, |
|
739 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkWdt2_F, |
|
740 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkWdt3_F, |
|
741 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkGpio1_F, |
|
742 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkGpio2_F, |
|
743 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkGpio3_F, |
|
744 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkGpio4_F, |
|
745 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkGpio5_F, |
|
746 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkGpio6_F, |
|
747 |
|
748 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkUsb120_F, ///< USB host 120MHz functional clock |
|
749 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkUsb48_F, ///< USB host 48MHz functional clock |
|
750 |
|
751 |
|
752 // Interface clocks |
|
753 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkDss_I, |
|
754 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkCam_I, |
|
755 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkIcr_I, |
|
756 { { KPM_MPUGRPSEL1_CORE, KBit24, KBit24, 0 }, { KPM_IVA2GRPSEL1_CORE, KBit24, KBit24, 0 } }, // EClkMmc1_I, |
|
757 { { KPM_MPUGRPSEL1_CORE, KBit25, KBit25, 0 }, { KPM_IVA2GRPSEL1_CORE, KBit25, KBit25, 0 } }, // EClkMmc2_I, |
|
758 { { KPM_MPUGRPSEL1_CORE, KBit30, KBit30, 0 }, { KPM_IVA2GRPSEL1_CORE, KBit30, KBit30, 0 } }, // EClkMmc3_I, |
|
759 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkMsPro_I, |
|
760 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkHdq_I, |
|
761 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkAes1_I, |
|
762 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkAes2_I, |
|
763 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkSha11_I, |
|
764 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkSha12_I, |
|
765 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkDes1_I, |
|
766 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkDes2_I, |
|
767 { { KPM_MPUGRPSEL1_CORE, KBit9, KBit9, 0 }, { KPM_IVA2GRPSEL1_CORE, KBit9, KBit9, 0 } }, // EClkMcBsp1_I, |
|
768 { { KPM_MPUGRPSEL_PER, KBit0, KBit0, 0 }, { KPM_IVA2GRPSEL_PER, KBit0, KBit0, 0 } }, // EClkMcBsp2_I, |
|
769 { { KPM_MPUGRPSEL_PER, KBit1, KBit1, 0 }, { KPM_IVA2GRPSEL_PER, KBit1, KBit1, 0 } }, // EClkMcBsp3_I, |
|
770 { { KPM_MPUGRPSEL_PER, KBit2, KBit2, 0 }, { KPM_IVA2GRPSEL_PER, KBit2, KBit2, 0 } }, // EClkMcBsp4_I, |
|
771 { { KPM_MPUGRPSEL1_CORE, KBit10, KBit10, 0 }, { KPM_IVA2GRPSEL1_CORE, KBit10, KBit10, 0 } }, // EClkMcBsp5_I, |
|
772 { { KPM_MPUGRPSEL1_CORE, KBit15, KBit15, 0 }, { KPM_IVA2GRPSEL1_CORE, KBit15, KBit15, 0 } }, // EClkI2c1_I, |
|
773 { { KPM_MPUGRPSEL1_CORE, KBit16, KBit16, 0 }, { KPM_IVA2GRPSEL1_CORE, KBit16, KBit16, 0 } }, // EClkI2c2_I, |
|
774 { { KPM_MPUGRPSEL1_CORE, KBit17, KBit17, 0 }, { KPM_IVA2GRPSEL1_CORE, KBit17, KBit17, 0 } }, // EClkI2c3_I, |
|
775 { { KPM_MPUGRPSEL1_CORE, KBit13, KBit13, 0 }, { KPM_IVA2GRPSEL1_CORE, KBit13, KBit13, 0 } }, // EClkUart1_I, |
|
776 { { KPM_MPUGRPSEL1_CORE, KBit14, KBit14, 0 }, { KPM_IVA2GRPSEL1_CORE, KBit14, KBit14, 0 } }, // EClkUart2_I, |
|
777 { { KPM_MPUGRPSEL_PER, KBit11, KBit11, 0 }, { KPM_IVA2GRPSEL_PER, KBit11, KBit11, 0 } }, // EClkUart3_I, |
|
778 { { KPM_MPUGRPSEL1_CORE, KBit18, KBit18, 0 }, { KPM_IVA2GRPSEL1_CORE, KBit18, KBit18, 0 } }, // EClkMcSpi1_I, |
|
779 { { KPM_MPUGRPSEL1_CORE, KBit19, KBit19, 0 }, { KPM_IVA2GRPSEL1_CORE, KBit19, KBit19, 0 } }, // EClkMcSpi2_I, |
|
780 { { KPM_MPUGRPSEL1_CORE, KBit20, KBit20, 0 }, { KPM_IVA2GRPSEL1_CORE, KBit20, KBit20, 0 } }, // EClkMcSpi3_I, |
|
781 { { KPM_MPUGRPSEL1_CORE, KBit21, KBit21, 0 }, { KPM_IVA2GRPSEL1_CORE, KBit21, KBit21, 0 } }, // EClkMcSpi4_I, |
|
782 { { KPM_MPUGRPSEL_WKUP, KBit0, KBit0, 0 }, { KPM_IVA2GRPSEL_WKUP, KBit0, KBit0, 0 } }, // EClkGpt1_I, |
|
783 { { KPM_MPUGRPSEL_PER, KBit3, KBit3, 0 }, { KPM_IVA2GRPSEL_PER, KBit3, KBit3, 0 } }, // EClkGpt2_I, |
|
784 { { KPM_MPUGRPSEL_PER, KBit4, KBit4, 0 }, { KPM_IVA2GRPSEL_PER, KBit4, KBit4, 0 } }, // EClkGpt3_I, |
|
785 { { KPM_MPUGRPSEL_PER, KBit5, KBit5, 0 }, { KPM_IVA2GRPSEL_PER, KBit5, KBit5, 0 } }, // EClkGpt4_I, |
|
786 { { KPM_MPUGRPSEL_PER, KBit6, KBit6, 0 }, { KPM_IVA2GRPSEL_PER, KBit6, KBit6, 0 } }, // EClkGpt5_I, |
|
787 { { KPM_MPUGRPSEL_PER, KBit7, KBit7, 0 }, { KPM_IVA2GRPSEL_PER, KBit7, KBit7, 0 } }, // EClkGpt6_I, |
|
788 { { KPM_MPUGRPSEL_PER, KBit8, KBit9, 0 }, { KPM_IVA2GRPSEL_PER, KBit8, KBit8, 0 } }, // EClkGpt7_I, |
|
789 { { KPM_MPUGRPSEL_PER, KBit9, KBit9, 0 }, { KPM_IVA2GRPSEL_PER, KBit9, KBit9, 0 } }, // EClkGpt8_I, |
|
790 { { KPM_MPUGRPSEL_PER, KBit10, KBit10, 0 }, { KPM_IVA2GRPSEL_PER, KBit10, KBit10, 0 } }, // EClkGpt9_I, |
|
791 { { KPM_MPUGRPSEL1_CORE, KBit11, KBit11, 0 }, { KPM_IVA2GRPSEL1_CORE, KBit11, KBit11, 0 } }, // EClkGpt10_I, |
|
792 { { KPM_MPUGRPSEL1_CORE, KBit12, KBit12, 0 }, { KPM_IVA2GRPSEL1_CORE, KBit12, KBit12, 0 } }, // EClkGpt11_I, |
|
793 { { KPM_MPUGRPSEL_WKUP, KBit1, KBit1, 0 }, { KPM_IVA2GRPSEL_WKUP, KBit1, KBit1, 0 } }, // EClkGpt12_I, |
|
794 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkMailboxes_I, |
|
795 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkOmapSCM_I, |
|
796 { { KPM_MPUGRPSEL1_CORE, KBit4, KBit4, 0 }, { KPM_IVA2GRPSEL1_CORE, KBit4, KBit4, 0 } }, // EClkHsUsbOtg_I, |
|
797 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkSdrc_I, |
|
798 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkPka_I, |
|
799 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkRng_I, |
|
800 { { KPM_MPUGRPSEL3_CORE, KBit2, KBit2, 0 }, { KPM_IVA2GRPSEL3_CORE, KBit2, KBit2, 0 } }, // EClkUsbTll_I, |
|
801 |
|
802 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkSgx_I, |
|
803 |
|
804 { { KPM_MPUGRPSEL_WKUP, KBit9, KBit9, 0 }, { KPM_IVA2GRPSEL_WKUP, KBit9, KBit9, 0 } }, // EClkUsim_I, |
|
805 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkWdt1_I, |
|
806 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkWdt2_I, |
|
807 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkWdt3_I, |
|
808 { { KPM_MPUGRPSEL_WKUP, KBit3, KBit3, 0 }, { KPM_IVA2GRPSEL_WKUP, KBit3, KBit3, 0 } }, // EClkGpio1_I, |
|
809 { { KPM_MPUGRPSEL_PER, KBit13, KBit13, 0 }, { KPM_IVA2GRPSEL_PER, KBit13, KBit13, 0 } }, // EClkGpio2_I, |
|
810 { { KPM_MPUGRPSEL_PER, KBit14, KBit14, 0 }, { KPM_IVA2GRPSEL_PER, KBit14, KBit14, 0 } }, // EClkGpio3_I, |
|
811 { { KPM_MPUGRPSEL_PER, KBit15, KBit15, 0 }, { KPM_IVA2GRPSEL_PER, KBit15, KBit15, 0 } }, // EClkGpio4_I, |
|
812 { { KPM_MPUGRPSEL_PER, KBit16, KBit16, 0 }, { KPM_IVA2GRPSEL_PER, KBit16, KBit16, 0 } }, // EClkGpio5_I, |
|
813 { { KPM_MPUGRPSEL_PER, KBit17, KBit17, 0 }, { KPM_IVA2GRPSEL_PER, KBit17, KBit17, 0 } }, // EClkGpio6_I, |
|
814 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClk32Sync_I, |
|
815 |
|
816 { { KPM_MPUGRPSEL_USBHOST, KBit0, KBit0, 0 }, { KPM_IVA2GRPSEL_USBHOST, KBit0, KBit0, 0 } }, // EClkUsb_I, ///< USB host interface clock |
|
817 |
|
818 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClk48M |
|
819 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClk12M |
|
820 |
|
821 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkSysClk |
|
822 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } }, // EClkAltClk |
|
823 { { KDummy, 0, KDummyReadAsDisabled, 0 }, { KDummy, 0, KDummyReadAsDisabled, 0 } } // EClkSysClk32k |
|
824 }; |
|
825 |
|
826 __ASSERT_COMPILE( Prcm::EWakeDomainMpu == 0 ); |
|
827 __ASSERT_COMPILE( Prcm::EWakeDomainCore == 1 ); |
|
828 __ASSERT_COMPILE( Prcm::EWakeDomainIva2 == 2 ); |
|
829 __ASSERT_COMPILE( Prcm::EWakeDomainPeripheral == 3 ); |
|
830 __ASSERT_COMPILE( Prcm::EWakeDomainDss == 4 ); |
|
831 __ASSERT_COMPILE( Prcm::EWakeDomainWakeup == 5 ); |
|
832 __ASSERT_COMPILE( Prcm::KSupportedWakeupDomainCount == 6 ); |
|
833 |
|
834 struct TWakeupDomainInfo |
|
835 { |
|
836 // To save space, there's an assumption here that all domain dependency configuration for |
|
837 // a single clock is in one register, and a single bit defines the dependency, |
|
838 // 1 = dependant, 0 = independant |
|
839 // The bits are defined here by bit number rather than by mask |
|
840 TUint32 iRegister; |
|
841 TInt8 iBitNumber[ Prcm::KSupportedWakeupDomainCount ]; ///< bit number to modify, -1 if not supported |
|
842 }; |
|
843 |
|
844 static const TWakeupDomainInfo KClockWakeupDomainTable[ Prcm::KSupportedClockCount ] = |
|
845 { |
|
846 // REGISTER MPU CORE IVA2 PER DSS WAKE |
|
847 { KPM_WKDEP_MPU, {-1, 0, 2, 7, 5, -1 } }, // EClkMpu, ///< DPLL1 |
|
848 { KPM_WKDEP_IVA2, {1, 0, -1, 7, 5, 4 } }, // EClkIva2Pll, ///< DPLL2 |
|
849 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkCore, ///< DPLL3 |
|
850 { KPM_WKDEP_PER, {1, 0, 2, -1, -1, 4 } }, // EClkPeriph, ///< DPLL4 |
|
851 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkPeriph2, ///< DPLL5 |
|
852 |
|
853 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkPrcmInterface, |
|
854 |
|
855 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkEmu, ///< Emulation clock |
|
856 { KPM_WKDEP_NEON, {1, -1, -1, -1, -1, -1 } }, // EClkNeon, |
|
857 |
|
858 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkL3Domain, |
|
859 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkL4Domain, |
|
860 |
|
861 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkMpuPll_Bypass, ///< DPLL1 bypass frequency |
|
862 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkIva2Pll_Bypass, ///< DPLL2 bypass frequency |
|
863 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkRM_F, ///< Reset manager functional clock |
|
864 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClk96M, ///< 96MHz clock |
|
865 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClk120M, ///< 120MHz clock |
|
866 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkSysOut, |
|
867 |
|
868 // Functional clocks |
|
869 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkTv_F, |
|
870 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkDss1_F, |
|
871 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkDss2_F, |
|
872 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkCsi2_F, |
|
873 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkCam_F, |
|
874 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkIva2_F, |
|
875 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkMmc1_F, |
|
876 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkMmc2_F, |
|
877 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkMmc3_F, |
|
878 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkMsPro_F, |
|
879 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkHdq_F, |
|
880 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkMcBsp1_F, |
|
881 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkMcBsp2_F, |
|
882 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkMcBsp3_F, |
|
883 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkMcBsp4_F, |
|
884 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkMcBsp5_F, |
|
885 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkMcSpi1_F, |
|
886 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkMcSpi2_F, |
|
887 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkMcSpi3_F, |
|
888 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkMcSpi4_F, |
|
889 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkI2c1_F, |
|
890 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkI2c2_F, |
|
891 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkI2c3_F, |
|
892 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkUart1_F, |
|
893 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkUart2_F, |
|
894 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkUart3_F, |
|
895 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkGpt1_F, |
|
896 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkGpt2_F, |
|
897 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkGpt3_F, |
|
898 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkGpt4_F, |
|
899 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkGpt5_F, |
|
900 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkGpt6_F, |
|
901 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkGpt7_F, |
|
902 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkGpt8_F, |
|
903 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkGpt9_F, |
|
904 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkGpt10_F, |
|
905 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkGpt11_F, |
|
906 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkUsbTll_F, |
|
907 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkTs_F, |
|
908 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkCpeFuse_F, |
|
909 |
|
910 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkSgx_F, |
|
911 |
|
912 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkUsim_F, |
|
913 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkSmartReflex2_F, |
|
914 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkSmartReflex1_F, |
|
915 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkWdt2_F, |
|
916 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkWdt3_F, |
|
917 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkGpio1_F, |
|
918 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkGpio2_F, |
|
919 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkGpio3_F, |
|
920 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkGpio4_F, |
|
921 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkGpio5_F, |
|
922 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkGpio6_F, |
|
923 |
|
924 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkUsb120_F, ///< USB host 120MHz functional clock |
|
925 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkUsb48_F, ///< USB host 48MHz functional clock |
|
926 |
|
927 |
|
928 // Interface clocks |
|
929 { KPM_WKDEP_DSS, {1, -1, 2, -1, -1, 4 } }, // EClkDss_I, |
|
930 { KPM_WKDEP_CAM, {1, -1, 2, -1, -1, 4 } }, // EClkCam_I, |
|
931 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkIcr_I, |
|
932 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkMmc1_I, |
|
933 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkMmc2_I, |
|
934 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkMmc3_I, |
|
935 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkMsPro_I, |
|
936 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkHdq_I, |
|
937 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkAes1_I, |
|
938 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkAes2_I, |
|
939 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkSha11_I, |
|
940 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkSha12_I, |
|
941 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkDes1_I, |
|
942 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkDes2_I, |
|
943 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkMcBsp1_I, |
|
944 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkMcBsp2_I, |
|
945 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkMcBsp3_I, |
|
946 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkMcBsp4_I, |
|
947 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkMcBsp5_I, |
|
948 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkI2c1_I, |
|
949 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkI2c2_I, |
|
950 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkI2c3_I, |
|
951 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkUart1_I, |
|
952 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkUart2_I, |
|
953 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkUart3_I, |
|
954 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkMcSpi1_I, |
|
955 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkMcSpi2_I, |
|
956 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkMcSpi3_I, |
|
957 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkMcSpi4_I, |
|
958 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkGpt1_I, |
|
959 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkGpt2_I, |
|
960 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkGpt3_I, |
|
961 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkGpt4_I, |
|
962 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkGpt5_I, |
|
963 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkGpt6_I, |
|
964 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkGpt7_I, |
|
965 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkGpt8_I, |
|
966 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkGpt9_I, |
|
967 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkGpt10_I, |
|
968 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkGpt11_I, |
|
969 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkGpt12_I, |
|
970 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkMailboxes_I, |
|
971 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkOmapSCM_I, |
|
972 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkHsUsbOtg_I, |
|
973 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkSdrc_I, |
|
974 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkPka_I, |
|
975 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkRng_I, |
|
976 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkUsbTll_I, |
|
977 |
|
978 { KPM_WKDEP_SGX, {1, -1, 2, -1, -1, 4 } }, // EClkSgx_I, |
|
979 |
|
980 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkUsim_I, |
|
981 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkWdt1_I, |
|
982 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkWdt2_I, |
|
983 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkWdt3_I, |
|
984 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkGpio1_I, |
|
985 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkGpio2_I, |
|
986 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkGpio3_I, |
|
987 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkGpio4_I, |
|
988 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkGpio5_I, |
|
989 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkGpio6_I, |
|
990 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClk32Sync_I, |
|
991 |
|
992 { KPM_WKDEP_USBHOST, {1, 0, 2, -1, -1, 4 } }, // EClkUsb_I, ///< USB host interface clock |
|
993 |
|
994 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClk48M |
|
995 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClk12M |
|
996 |
|
997 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkSysClk |
|
998 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkAltClk |
|
999 { KDummy, {-1, -1, -1, -1, -1, -1 } }, // EClkSysClk32k |
|
1000 // REGISTER MPU CORE IVA2 PER DSS WAKE |
|
1001 }; |
|
1002 |
|
1003 struct TPowerDomainControl |
|
1004 { |
|
1005 TUint32 iRegister; |
|
1006 TUint8 iShift; ///< shift to move bits into position |
|
1007 TUint8 iAllowedMask; ///< mask of which modes are supported |
|
1008 TUint8 __spare[2]; |
|
1009 }; |
|
1010 |
|
1011 const TUint8 KPowerAllowedOff = 1 << Prcm::EPowerOff; |
|
1012 const TUint8 KPowerAllowedOn = 1 << Prcm::EPowerOn; |
|
1013 const TUint8 KPowerAllowedRetention = 1 << Prcm::EPowerRetention; |
|
1014 const TUint8 KPowerAllowedOnOffRetention = (KPowerAllowedOff bitor KPowerAllowedOn bitor KPowerAllowedRetention); |
|
1015 const TUint8 KPowerModeMask = 0x3; |
|
1016 |
|
1017 static const TPowerDomainControl KPowerDomainControl[] = |
|
1018 { |
|
1019 // iRegister iShift iAllowedMask |
|
1020 { KPM_PWSTCTRL_MPU, 0, KPowerAllowedOnOffRetention }, // EPowerDomainMpu, |
|
1021 { KPM_PWSTCTRL_IVA2, 0, KPowerAllowedOnOffRetention }, // EPowerDomainIva2, |
|
1022 { KPM_PWSTCTRL_NEON, 0, KPowerAllowedOnOffRetention }, // EPowerDomainNeon, |
|
1023 { KPM_PWSTCTRL_CORE, 0, KPowerAllowedOnOffRetention }, // EPowerDomainCore, |
|
1024 { KPM_PWSTCTRL_SGX, 0, KPowerAllowedOnOffRetention }, // EPowerDomainSgx, |
|
1025 { KPM_PWSTCTRL_DSS, 0, KPowerAllowedOnOffRetention }, // EPowerDomainDss, |
|
1026 { KPM_PWSTCTRL_CAM, 0, KPowerAllowedOnOffRetention }, // EPowerDomainCamera, |
|
1027 { KPM_PWSTCTRL_USBHOST, 0, KPowerAllowedOnOffRetention }, // EPowerDomainUsb, |
|
1028 { KPM_PWSTCTRL_PER, 0, KPowerAllowedOnOffRetention } // EPowerDomainPer, |
|
1029 }; |
|
1030 __ASSERT_COMPILE( (sizeof(KPowerDomainControl) / sizeof( KPowerDomainControl[0] )) == Prcm::KSupportedPowerDomainCount ); |
|
1031 |
|
1032 struct TGptClkSelInfo |
|
1033 { |
|
1034 TUint32 iRegister; |
|
1035 TUint32 iMask; |
|
1036 }; |
|
1037 |
|
1038 static const TGptClkSelInfo KGptClockSourceInfo[ Prcm::KSupportedGptCount ] = |
|
1039 { |
|
1040 { KCM_CLKSEL_WKUP, KBit0 }, // EGpt1, |
|
1041 { KCM_CLKSEL_PER, KBit0 }, // EGpt2, |
|
1042 { KCM_CLKSEL_PER, KBit1 }, // EGpt3, |
|
1043 { KCM_CLKSEL_PER, KBit2 }, // EGpt4, |
|
1044 { KCM_CLKSEL_PER, KBit3 }, // EGpt5, |
|
1045 { KCM_CLKSEL_PER, KBit4 }, // EGpt6, |
|
1046 { KCM_CLKSEL_PER, KBit5 }, // EGpt7, |
|
1047 { KCM_CLKSEL_PER, KBit6 }, // EGpt8, |
|
1048 { KCM_CLKSEL_PER, KBit7 }, // EGpt9, |
|
1049 { KCM_CLKSEL_CORE, KBit6 }, // EGpt10, |
|
1050 { KCM_CLKSEL_CORE, KBit7 }, // EGpt11, |
|
1051 { KDummy, 0 }, // EGpt12 - clocked from security block |
|
1052 }; |
|
1053 |
|
1054 // This table is used to find the source clock for a given clock. That is, by looking up a |
|
1055 // specific clock in this table, you can find out which DPLL/divider it was derived from. |
|
1056 // Following the chain backwards to SYSCLK allows building of the total multiply and |
|
1057 // divide applied to SYSCLK to get the given clock |
|
1058 enum TClockSourceType |
|
1059 { |
|
1060 EIgnore, // not implemented yet... |
|
1061 EDpll, // this clock is derived from a PLL |
|
1062 EDivider, // this clock is divied from a given clock |
|
1063 EDivMux, // divider fed by mux-selectable input clock |
|
1064 EMux, // fed by mux-selectable input clock |
|
1065 EDuplicate, // this clock is a duplicate of another clock |
|
1066 E96MMux, // 96MHz mux-selected clock source |
|
1067 E54MMux, // 54MHz mux-selected clock source |
|
1068 E48MMux, // 48MHz mux-selected clock source |
|
1069 EDiv4, // specified clock source divided by 4 |
|
1070 }; |
|
1071 |
|
1072 struct TClockSourceInfo |
|
1073 { |
|
1074 TClockSourceType iType : 8; // type of the source for this clock |
|
1075 union { |
|
1076 Prcm::TClock iClock : 8; // the clock that feeds this divider, or which this is a duplicate of |
|
1077 Prcm::TPll iPll : 8; // the PLL that generates this clock |
|
1078 Prcm::TGpt iGpt : 8; // conversion to TGpt type for the clock we are interested in |
|
1079 }; |
|
1080 }; |
|
1081 |
|
1082 static const TClockSourceInfo KClockSourceInfo[] = |
|
1083 { |
|
1084 { EDpll, (Prcm::TClock)Prcm::EDpll1 }, // EClkMpu, |
|
1085 { EDpll, (Prcm::TClock)Prcm::EDpll2 }, // EClkIva2Pll, |
|
1086 { EDpll, (Prcm::TClock)Prcm::EDpll3 }, // EClkCore, |
|
1087 { EDpll, (Prcm::TClock)Prcm::EDpll4 }, // EClkPeriph, |
|
1088 { EDpll, (Prcm::TClock)Prcm::EDpll5 }, // EClkPeriph2, |
|
1089 { EDuplicate, Prcm::EClkSysClk }, // EClkPrcmInterface, |
|
1090 { EIgnore, (Prcm::TClock)0 }, // EClkEmu, |
|
1091 { EDuplicate, Prcm::EClkMpu }, // EClkNeon, |
|
1092 { EDivider, Prcm::EClkCore }, // EClkL3Domain, |
|
1093 { EDivider, Prcm::EClkL3Domain }, // EClkL4Domain, |
|
1094 { EDivider, Prcm::EClkCore }, // EClkMpuPll_Bypass, |
|
1095 { EDivider, Prcm::EClkCore }, // EClkIva2Pll_Bypass, |
|
1096 { EDivider, Prcm::EClkL4Domain }, // EClkRM_F, |
|
1097 { E96MMux, Prcm::EClkPeriph }, // EClk96M, |
|
1098 { EDivider, Prcm::EClkPeriph2 }, // EClk120M, |
|
1099 { EDivMux, (Prcm::TClock)0 }, // EClkSysOut, |
|
1100 |
|
1101 // Functional clocks |
|
1102 { E54MMux, Prcm::EClkPeriph }, |
|
1103 { EDivider, Prcm::EClkPeriph }, // EClkDss1_F, |
|
1104 { EDuplicate, Prcm::EClkSysClk }, // EClkDss2_F, |
|
1105 { EDuplicate, Prcm::EClk96M }, // EClkCsi2_F, |
|
1106 { EDivider, Prcm::EClkPeriph }, // EClkCam_F, |
|
1107 { EDuplicate, Prcm::EClkIva2Pll }, // EClkIva2_F, |
|
1108 { EDuplicate, Prcm::EClk96M }, // EClkMmc1_F, |
|
1109 { EDuplicate, Prcm::EClk96M }, // EClkMmc2_F, |
|
1110 { EDuplicate, Prcm::EClk96M }, // EClkMmc3_F, |
|
1111 { EDuplicate, Prcm::EClk96M }, // EClkMsPro_F, |
|
1112 { EDuplicate, Prcm::EClk12M }, // EClkHdq_F, |
|
1113 { EDuplicate, Prcm::EClk96M }, // EClkMcBsp1_F, |
|
1114 { EDuplicate, Prcm::EClk96M }, // EClkMcBsp2_F, |
|
1115 { EDuplicate, Prcm::EClk96M }, // EClkMcBsp3_F, |
|
1116 { EDuplicate, Prcm::EClk96M }, // EClkMcBsp4_F, |
|
1117 { EDuplicate, Prcm::EClk96M }, // EClkMcBsp5_F, |
|
1118 { EDuplicate, Prcm::EClk48M }, // EClkMcSpi1_F, |
|
1119 { EDuplicate, Prcm::EClk48M }, // EClkMcSpi2_F, |
|
1120 { EDuplicate, Prcm::EClk48M }, // EClkMcSpi3_F, |
|
1121 { EDuplicate, Prcm::EClk48M }, // EClkMcSpi4_F, |
|
1122 { EDuplicate, Prcm::EClk96M }, // EClkI2c1_F, |
|
1123 { EDuplicate, Prcm::EClk96M }, // EClkI2c2_F, |
|
1124 { EDuplicate, Prcm::EClk96M }, // EClkI2c3_F, |
|
1125 { EDuplicate, Prcm::EClk48M }, // EClkUart1_F, |
|
1126 { EDuplicate, Prcm::EClk48M }, // EClkUart2_F, |
|
1127 { EDuplicate, Prcm::EClk48M }, // EClkUart3_F, |
|
1128 { EMux, (Prcm::TClock)Prcm::EGpt1 }, // EClkGpt1_F, |
|
1129 { EMux, (Prcm::TClock)Prcm::EGpt2 }, // EClkGpt2_F, |
|
1130 { EMux, (Prcm::TClock)Prcm::EGpt3 }, // EClkGpt3_F, |
|
1131 { EMux, (Prcm::TClock)Prcm::EGpt4 }, // EClkGpt4_F, |
|
1132 { EMux, (Prcm::TClock)Prcm::EGpt5 }, // EClkGpt5_F, |
|
1133 { EMux, (Prcm::TClock)Prcm::EGpt6 }, // EClkGpt6_F, |
|
1134 { EMux, (Prcm::TClock)Prcm::EGpt7 }, // EClkGpt7_F, |
|
1135 { EMux, (Prcm::TClock)Prcm::EGpt8 }, // EClkGpt8_F, |
|
1136 { EMux, (Prcm::TClock)Prcm::EGpt9 }, // EClkGpt9_F, |
|
1137 { EMux, (Prcm::TClock)Prcm::EGpt10 }, // EClkGpt10_F, |
|
1138 { EMux, (Prcm::TClock)Prcm::EGpt11 }, // EClkGpt11_F, |
|
1139 { EDuplicate, Prcm::EClk120M }, // EClkUsbTll_F, |
|
1140 { EDuplicate, Prcm::EClkSysClk32k }, // EClkTs_F, |
|
1141 { EDuplicate, Prcm::EClkSysClk }, // EClkCpeFuse_F, |
|
1142 { EDivMux, (Prcm::TClock)0 }, // EClkSgx_F, |
|
1143 { EDivMux, Prcm::EClkSysClk }, // EClkUsim_F, |
|
1144 { EDuplicate, Prcm::EClkSysClk }, // EClkSmartReflex2_F, |
|
1145 { EDuplicate, Prcm::EClkSysClk }, // EClkSmartReflex1_F, |
|
1146 { EDuplicate, Prcm::EClkSysClk32k }, // EClkWdt2_F, |
|
1147 { EDuplicate, Prcm::EClkSysClk32k }, // EClkWdt3_F, |
|
1148 { EDuplicate, Prcm::EClkSysClk32k }, // EClkGpio1_F, |
|
1149 { EDuplicate, Prcm::EClkSysClk32k }, // EClkGpio2_F, |
|
1150 { EDuplicate, Prcm::EClkSysClk32k }, // EClkGpio3_F, |
|
1151 { EDuplicate, Prcm::EClkSysClk32k }, // EClkGpio4_F, |
|
1152 { EDuplicate, Prcm::EClkSysClk32k }, // EClkGpio5_F, |
|
1153 { EDuplicate, Prcm::EClkSysClk32k }, // EClkGpio6_F, |
|
1154 { EDuplicate, Prcm::EClk120M }, // EClkUsb120_F, |
|
1155 { EDuplicate, Prcm::EClk48M }, // EClkUsb48_F, |
|
1156 |
|
1157 // Interface clocks |
|
1158 { EDuplicate, Prcm::EClkL4Domain }, // EClkDss_I, |
|
1159 { EDuplicate, Prcm::EClkL4Domain }, // EClkCam_I, |
|
1160 { }, // EClkIcr_I, |
|
1161 { EDuplicate, Prcm::EClkL4Domain }, // EClkMmc1_I, |
|
1162 { EDuplicate, Prcm::EClkL4Domain }, // EClkMmc2_I, |
|
1163 { EDuplicate, Prcm::EClkL4Domain }, // EClkMmc3_I, |
|
1164 { EDuplicate, Prcm::EClkL4Domain }, // EClkMsPro_I, |
|
1165 { EDuplicate, Prcm::EClkL4Domain }, // EClkHdq_I, |
|
1166 { EDuplicate, Prcm::EClkL4Domain}, // EClkAes1_I, |
|
1167 { EDuplicate, Prcm::EClkL4Domain}, // EClkAes2_I, |
|
1168 { EDuplicate, Prcm::EClkL4Domain}, // EClkSha11_I, |
|
1169 { EDuplicate, Prcm::EClkL4Domain}, // EClkSha12_I, |
|
1170 { EDuplicate, Prcm::EClkL4Domain}, // EClkDes1_I, |
|
1171 { EDuplicate, Prcm::EClkL4Domain}, // EClkDes2_I, |
|
1172 { EDuplicate, Prcm::EClkL4Domain }, // EClkMcBsp1_I, |
|
1173 { EDuplicate, Prcm::EClkL4Domain }, // EClkMcBsp2_I, |
|
1174 { EDuplicate, Prcm::EClkL4Domain }, // EClkMcBsp3_I, |
|
1175 { EDuplicate, Prcm::EClkL4Domain }, // EClkMcBsp4_I, |
|
1176 { EDuplicate, Prcm::EClkL4Domain }, // EClkMcBsp5_I, |
|
1177 { EDuplicate, Prcm::EClkL4Domain }, // EClkI2c1_I, |
|
1178 { EDuplicate, Prcm::EClkL4Domain }, // EClkI2c2_I, |
|
1179 { EDuplicate, Prcm::EClkL4Domain }, // EClkI2c3_I, |
|
1180 { EDuplicate, Prcm::EClkL4Domain }, // EClkUart1_I, |
|
1181 { EDuplicate, Prcm::EClkL4Domain }, // EClkUart2_I, |
|
1182 { EDuplicate, Prcm::EClkL4Domain }, // EClkUart3_I, |
|
1183 { EDuplicate, Prcm::EClkL4Domain }, // EClkMcSpi1_I, |
|
1184 { EDuplicate, Prcm::EClkL4Domain }, // EClkMcSpi2_I, |
|
1185 { EDuplicate, Prcm::EClkL4Domain }, // EClkMcSpi3_I, |
|
1186 { EDuplicate, Prcm::EClkL4Domain }, // EClkMcSpi4_I, |
|
1187 { EDuplicate, Prcm::EClkSysClk }, // EClkGpt1_I, |
|
1188 { EDuplicate, Prcm::EClkL4Domain }, // EClkGpt2_I, |
|
1189 { EDuplicate, Prcm::EClkL4Domain }, // EClkGpt3_I, |
|
1190 { EDuplicate, Prcm::EClkL4Domain }, // EClkGpt4_I, |
|
1191 { EDuplicate, Prcm::EClkL4Domain }, // EClkGpt5_I, |
|
1192 { EDuplicate, Prcm::EClkL4Domain }, // EClkGpt6_I, |
|
1193 { EDuplicate, Prcm::EClkL4Domain }, // EClkGpt7_I, |
|
1194 { EDuplicate, Prcm::EClkL4Domain }, // EClkGpt8_I, |
|
1195 { EDuplicate, Prcm::EClkL4Domain }, // EClkGpt9_I, |
|
1196 { EDuplicate, Prcm::EClkL4Domain }, // EClkGpt10_I, |
|
1197 { EDuplicate, Prcm::EClkL4Domain }, // EClkGpt11_I, |
|
1198 { EDuplicate, Prcm::EClkL4Domain }, // EClkGpt12_I, |
|
1199 { EDuplicate, Prcm::EClkL4Domain }, // EClkMailboxes_I, |
|
1200 { EDuplicate, Prcm::EClkL4Domain }, // EClkOmapSCM_I, |
|
1201 { EDuplicate, Prcm::EClkL4Domain }, // EClkHsUsbOtg_I, |
|
1202 { EDuplicate, Prcm::EClkL3Domain }, // EClkSdrc_I, |
|
1203 { EDuplicate, Prcm::EClkL3Domain }, // EClkPka_I, |
|
1204 { EDuplicate, Prcm::EClkL4Domain }, // EClkRng_I, |
|
1205 { EDuplicate, Prcm::EClkL4Domain }, // EClkUsbTll_I, |
|
1206 { EDuplicate, Prcm::EClkL3Domain }, // EClkSgx_I, |
|
1207 { EDuplicate, Prcm::EClkSysClk }, // EClkUsim_I, |
|
1208 { EDuplicate, Prcm::EClkSysClk }, // EClkWdt1_I, |
|
1209 { EDuplicate, Prcm::EClkSysClk }, // EClkWdt2_I, |
|
1210 { EDuplicate, Prcm::EClkL4Domain }, // EClkWdt3_I, |
|
1211 { EDuplicate, Prcm::EClkSysClk }, // EClkGpio1_I, |
|
1212 { EDuplicate, Prcm::EClkL4Domain }, // EClkGpio2_I, |
|
1213 { EDuplicate, Prcm::EClkL4Domain }, // EClkGpio3_I, |
|
1214 { EDuplicate, Prcm::EClkL4Domain }, // EClkGpio4_I, |
|
1215 { EDuplicate, Prcm::EClkL4Domain }, // EClkGpio5_I, |
|
1216 { EDuplicate, Prcm::EClkL4Domain }, // EClkGpio6_I, |
|
1217 { EDuplicate, Prcm::EClkSysClk }, // EClk32Sync_I, |
|
1218 { EDuplicate, Prcm::EClkL4Domain }, // EClkUsb_I, |
|
1219 |
|
1220 { E48MMux, Prcm::EClk96M }, // EClk48M, |
|
1221 { EDiv4, Prcm::EClk48M }, // EClk12M, |
|
1222 |
|
1223 { EDuplicate, Prcm::EClkSysClk }, // EClkSysClk |
|
1224 { EDuplicate, Prcm::EClkAltClk }, // EClkAltClk |
|
1225 { EDuplicate, Prcm::EClkSysClk32k }, // EClkSysClk32k |
|
1226 |
|
1227 }; |
|
1228 |
|
1229 __ASSERT_COMPILE( sizeof( KClockSourceInfo ) / sizeof( KClockSourceInfo[0] ) == Prcm::KSupportedClockCount ); |
|
1230 |
|
1231 |
|
1232 // Bit of hackery to enable creation of a const table of pointer to _LITs. |
|
1233 // Taking the address of a _LIT will cause the compiler to invoke its operator&() |
|
1234 // function, which forces the compiler to generate the table in code. But hiding |
|
1235 // it inside a dummy struct allows taking of the address of the struct instead, |
|
1236 // avoiding the operator&() problem. |
|
1237 |
|
1238 template< TInt S > |
|
1239 struct THiddenLit8 |
|
1240 { |
|
1241 TLitC8<S> iLit; |
|
1242 }; |
|
1243 |
|
1244 #define __PLIT8(name,s) const static THiddenLit8<sizeof(s)> name={{sizeof(s)-1,s}}; |
|
1245 |
|
1246 // List of identifer strings for each clock source - used for PRM |
|
1247 __PLIT8(KClkMpu, "a.MPU" ); |
|
1248 __PLIT8(KClkIva2Pll, "a.IVA" ); |
|
1249 __PLIT8(KClkCore, "a.CORE" ); |
|
1250 __PLIT8(KClkPeriph, "a.PER" ); |
|
1251 __PLIT8(KClkPeriph2, "a.PER2" ); |
|
1252 __PLIT8(KClkPrcmInterface, "a.PRCM" ); |
|
1253 __PLIT8(KClkEmu, "a.EMU" ); |
|
1254 __PLIT8(KClkNeon, "a.NEON" ); |
|
1255 __PLIT8(KClkL3Domain, "a.L3" ); |
|
1256 __PLIT8(KClkL4Domain, "a.L4" ); |
|
1257 __PLIT8(KClkMpuPll_Bypass, "a.MPUB" ); |
|
1258 __PLIT8(KClkIva2Pll_Bypass, "a.IVAB" ); |
|
1259 __PLIT8(KClkRM_F, "a.RMf" ); |
|
1260 __PLIT8(KClk96M, "a.96" ); |
|
1261 __PLIT8(KClk120M, "a.120" ); |
|
1262 __PLIT8(KClkSysOut, "a.OUT" ); |
|
1263 __PLIT8(KClkTv_F, "a.TVf" ); |
|
1264 __PLIT8(KClkDss1_F, "a.DSS1f" ); |
|
1265 __PLIT8(KClkDss2_F, "a.DSS2f" ); |
|
1266 __PLIT8(KClkCsi2_F, "a.CSI2f" ); |
|
1267 __PLIT8(KClkCam_F, "a.CAMf" ); |
|
1268 __PLIT8(KClkIva2_F, "a.IVA2f" ); |
|
1269 __PLIT8(KClkMmc1_F, "a.MMC1f" ); |
|
1270 __PLIT8(KClkMmc2_F, "a.MMC2f" ); |
|
1271 __PLIT8(KClkMmc3_F, "a.MMC3f" ); |
|
1272 __PLIT8(KClkMsPro_F, "a.MSPf" ); |
|
1273 __PLIT8(KClkHdq_F, "a.HDQf" ); |
|
1274 __PLIT8(KClkMcBsp1_F, "a.BSP1f" ); |
|
1275 __PLIT8(KClkMcBsp2_F, "a.BSP2f" ); |
|
1276 __PLIT8(KClkMcBsp3_F, "a.BSP3f" ); |
|
1277 __PLIT8(KClkMcBsp4_F, "a.BSP4f" ); |
|
1278 __PLIT8(KClkMcBsp5_F, "a.BSP5f" ); |
|
1279 __PLIT8(KClkMcSpi1_F, "a.SPI1f" ); |
|
1280 __PLIT8(KClkMcSpi2_F, "a.SPI2f" ); |
|
1281 __PLIT8(KClkMcSpi3_F, "a.SPI3f" ); |
|
1282 __PLIT8(KClkMcSpi4_F, "a.SPI4f" ); |
|
1283 __PLIT8(KClkI2c1_F, "a.I2C1f" ); |
|
1284 __PLIT8(KClkI2c2_F, "a.I2C2f" ); |
|
1285 __PLIT8(KClkI2c3_F, "a.I2C3f" ); |
|
1286 __PLIT8(KClkUart1_F, "a.UART1f" ); |
|
1287 __PLIT8(KClkUart2_F, "a.UART2f" ); |
|
1288 __PLIT8(KClkUart3_F, "a.UART3f" ); |
|
1289 __PLIT8(KClkGpt1_F, "a.GPT1f" ); |
|
1290 __PLIT8(KClkGpt2_F, "a.GPT2f" ); |
|
1291 __PLIT8(KClkGpt3_F, "a.GPT3f" ); |
|
1292 __PLIT8(KClkGpt4_F, "a.GPT4f" ); |
|
1293 __PLIT8(KClkGpt5_F, "a.GPT5f" ); |
|
1294 __PLIT8(KClkGpt6_F, "a.GPT6f" ); |
|
1295 __PLIT8(KClkGpt7_F, "a.GPT7f" ); |
|
1296 __PLIT8(KClkGpt8_F, "a.GPT8f" ); |
|
1297 __PLIT8(KClkGpt9_F, "a.GPT9f" ); |
|
1298 __PLIT8(KClkGpt10_F, "a.GPTAf" ); |
|
1299 __PLIT8(KClkGpt11_F, "a.GPTBf" ); |
|
1300 __PLIT8(KClkUsbTll_F, "a.UTLLf" ); |
|
1301 __PLIT8(KClkTs_F, "a.TSf" ); |
|
1302 __PLIT8(KClkCpeFuse_F, "a.FUSEf" ); |
|
1303 __PLIT8(KClkSgx_F, "a.SGXf" ); |
|
1304 __PLIT8(KClkUsim_F, "a.USIMf" ); |
|
1305 __PLIT8(KClkSmartReflex2_F, "a.SMRF2f" ); |
|
1306 __PLIT8(KClkSmartReflex1_F, "a.SMRF1f" ); |
|
1307 __PLIT8(KClkWdt2_F, "a.WDT2f" ); |
|
1308 __PLIT8(KClkWdt3_F, "a.WDT3f" ); |
|
1309 __PLIT8(KClkGpio1_F, "a.GPIO1f" ); |
|
1310 __PLIT8(KClkGpio2_F, "a.GPIO2f" ); |
|
1311 __PLIT8(KClkGpio3_F, "a.GPIO3f" ); |
|
1312 __PLIT8(KClkGpio4_F, "a.GPIO4f" ); |
|
1313 __PLIT8(KClkGpio5_F, "a.GPIO5f" ); |
|
1314 __PLIT8(KClkGpio6_F, "a.GPIO6f" ); |
|
1315 __PLIT8(KClkUsb120_F, "a.U120f" ); |
|
1316 __PLIT8(KClkUsb48_F, "a.U48f" ); |
|
1317 __PLIT8(KClkDss_I, "a.DSSi" ); |
|
1318 __PLIT8(KClkCam_I, "a.CAMi" ); |
|
1319 __PLIT8(KClkIcr_I, "a.ICRi" ); |
|
1320 __PLIT8(KClkMmc1_I, "a.MMC1i" ); |
|
1321 __PLIT8(KClkMmc2_I, "a.MMC2i" ); |
|
1322 __PLIT8(KClkMmc3_I, "a.MMC3i" ); |
|
1323 __PLIT8(KClkMsPro_I, "a.MSi" ); |
|
1324 __PLIT8(KClkHdq_I, "a.HDQi" ); |
|
1325 __PLIT8(KClkAes1_I, "a.AES1i" ); |
|
1326 __PLIT8(KClkAes2_I, "a.AES2i" ); |
|
1327 __PLIT8(KClkSha11_I, "a.SHA1i" ); |
|
1328 __PLIT8(KClkSha12_I, "a.SHA2i" ); |
|
1329 __PLIT8(KClkDes1_I, "a.DES1i" ); |
|
1330 __PLIT8(KClkDes2_I, "a.DES2i" ); |
|
1331 __PLIT8(KClkMcBsp1_I, "a.BSP1i" ); |
|
1332 __PLIT8(KClkMcBsp2_I, "a.BSP2i" ); |
|
1333 __PLIT8(KClkMcBsp3_I, "a.BSP3i" ); |
|
1334 __PLIT8(KClkMcBsp4_I, "a.BSP4i" ); |
|
1335 __PLIT8(KClkMcBsp5_I, "a.BSP5i" ); |
|
1336 __PLIT8(KClkI2c1_I, "a.I2C1i" ); |
|
1337 __PLIT8(KClkI2c2_I, "a.I2C2i" ); |
|
1338 __PLIT8(KClkI2c3_I, "a.I2C3i" ); |
|
1339 __PLIT8(KClkUart1_I, "a.UART1i" ); |
|
1340 __PLIT8(KClkUart2_I, "a.UART2i" ); |
|
1341 __PLIT8(KClkUart3_I, "a.UART3i" ); |
|
1342 __PLIT8(KClkMcSpi1_I, "a.SPI1i" ); |
|
1343 __PLIT8(KClkMcSpi2_I, "a.SPI2i" ); |
|
1344 __PLIT8(KClkMcSpi3_I, "a.SPI3i" ); |
|
1345 __PLIT8(KClkMcSpi4_I, "a.SPI4i" ); |
|
1346 __PLIT8(KClkGpt1_I, "a.GPT1i" ); |
|
1347 __PLIT8(KClkGpt2_I, "a.GPT2i" ); |
|
1348 __PLIT8(KClkGpt3_I, "a.GPT3i" ); |
|
1349 __PLIT8(KClkGpt4_I, "a.GPT4i" ); |
|
1350 __PLIT8(KClkGpt5_I, "a.GPT5i" ); |
|
1351 __PLIT8(KClkGpt6_I, "a.GPT6i" ); |
|
1352 __PLIT8(KClkGpt7_I, "a.GPT7i" ); |
|
1353 __PLIT8(KClkGpt8_I, "a.GPT8i" ); |
|
1354 __PLIT8(KClkGpt9_I, "a.GPT9i" ); |
|
1355 __PLIT8(KClkGpt10_I, "a.GPTAi" ); |
|
1356 __PLIT8(KClkGpt11_I, "a.GPTBi" ); |
|
1357 __PLIT8(KClkGpt12_I, "a.GPTCi" ); |
|
1358 __PLIT8(KClkMailboxes_I, "a.MBi" ); |
|
1359 __PLIT8(KClkOmapSCM_I, "a.SCMi" ); |
|
1360 __PLIT8(KClkHsUsbOtg_I, "a.OTGi" ); |
|
1361 __PLIT8(KClkSdrc_I, "a.SDRCi" ); |
|
1362 __PLIT8(KClkPka_I, "a.PKAi" ); |
|
1363 __PLIT8(KClkRng_I, "a.RNGi" ); |
|
1364 __PLIT8(KClkUsbTll_I, "a.TLLi" ); |
|
1365 __PLIT8(KClkSgx_I, "a.SGXi" ); |
|
1366 __PLIT8(KClkUsim_I, "a.USIMi" ); |
|
1367 __PLIT8(KClkWdt1_I, "a.WDT1i" ); |
|
1368 __PLIT8(KClkWdt2_I, "a.WDT2i" ); |
|
1369 __PLIT8(KClkWdt3_I, "a.WDT3i" ); |
|
1370 __PLIT8(KClkGpio1_I, "a.GPIO1i" ); |
|
1371 __PLIT8(KClkGpio2_I, "a.GPIO2i" ); |
|
1372 __PLIT8(KClkGpio3_I, "a.GPIO3i" ); |
|
1373 __PLIT8(KClkGpio4_I, "a.GPIO4i" ); |
|
1374 __PLIT8(KClkGpio5_I, "a.GPIO5i" ); |
|
1375 __PLIT8(KClkGpio6_I, "a.GPIO6i" ); |
|
1376 __PLIT8(KClk32Sync_I, "a.32SYNi" ); |
|
1377 __PLIT8(KClkUsb_I, "a.USBi" ); |
|
1378 __PLIT8(KClk48M, "a.48" ); |
|
1379 __PLIT8(KClk12M, "a.12" ); |
|
1380 __PLIT8(KClkSysClk, "a.SYSCLK" ); |
|
1381 __PLIT8(KClkAltClk, "a.ALTCLK" ); |
|
1382 __PLIT8(KClkSysClk32k, "a.SYS32K" ); |
|
1383 |
|
1384 |
|
1385 // Table converting clock sources to string identifiers for PRM |
|
1386 static const TDesC8* const KNames[] = |
|
1387 { |
|
1388 (const TDesC8*)( &KClkMpu ), // EClkMpu |
|
1389 (const TDesC8*)( &KClkIva2Pll ), // EClkIva2Pll |
|
1390 (const TDesC8*)( &KClkCore ), // EClkCore |
|
1391 (const TDesC8*)( &KClkPeriph ), // EClkPeriph |
|
1392 (const TDesC8*)( &KClkPeriph2 ), // EClkPeriph2 |
|
1393 (const TDesC8*)( &KClkPrcmInterface ), // EClkPrcmInterface |
|
1394 (const TDesC8*)( &KClkEmu ), // EClkEmu |
|
1395 (const TDesC8*)( &KClkNeon ), // EClkNeon |
|
1396 (const TDesC8*)( &KClkL3Domain ), // EClkL3Domain |
|
1397 (const TDesC8*)( &KClkL4Domain ), // EClkL4Domain |
|
1398 (const TDesC8*)( &KClkMpuPll_Bypass ), // EClkMpuPll_Bypass |
|
1399 (const TDesC8*)( &KClkIva2Pll_Bypass ), // EClkIva2Pll_Bypass |
|
1400 (const TDesC8*)( &KClkRM_F ), // EClkRM_F |
|
1401 (const TDesC8*)( &KClk96M ), // EClk96M |
|
1402 (const TDesC8*)( &KClk120M ), // EClk120M |
|
1403 (const TDesC8*)( &KClkSysOut ), // EClkSysOut |
|
1404 (const TDesC8*)( &KClkTv_F ), // EClkTv_F |
|
1405 (const TDesC8*)( &KClkDss1_F ), // EClkDss1_F |
|
1406 (const TDesC8*)( &KClkDss2_F ), // EClkDss2_F |
|
1407 (const TDesC8*)( &KClkCsi2_F ), // EClkCsi2_F |
|
1408 (const TDesC8*)( &KClkCam_F ), // EClkCam_F |
|
1409 (const TDesC8*)( &KClkIva2_F ), // EClkIva2_F |
|
1410 (const TDesC8*)( &KClkMmc1_F ), // EClkMmc1_F |
|
1411 (const TDesC8*)( &KClkMmc2_F ), // EClkMmc2_F |
|
1412 (const TDesC8*)( &KClkMmc3_F ), // EClkMmc3_F |
|
1413 (const TDesC8*)( &KClkMsPro_F ), // EClkMsPro_F |
|
1414 (const TDesC8*)( &KClkHdq_F ), // EClkHdq_F |
|
1415 (const TDesC8*)( &KClkMcBsp1_F ), // EClkMcBsp1_F |
|
1416 (const TDesC8*)( &KClkMcBsp2_F ), // EClkMcBsp2_F |
|
1417 (const TDesC8*)( &KClkMcBsp3_F ), // EClkMcBsp3_F |
|
1418 (const TDesC8*)( &KClkMcBsp4_F ), // EClkMcBsp4_F |
|
1419 (const TDesC8*)( &KClkMcBsp5_F ), // EClkMcBsp5_F |
|
1420 (const TDesC8*)( &KClkMcSpi1_F ), // EClkMcSpi1_F |
|
1421 (const TDesC8*)( &KClkMcSpi2_F ), // EClkMcSpi2_F |
|
1422 (const TDesC8*)( &KClkMcSpi3_F ), // EClkMcSpi3_F |
|
1423 (const TDesC8*)( &KClkMcSpi4_F ), // EClkMcSpi4_F |
|
1424 (const TDesC8*)( &KClkI2c1_F ), // EClkI2c1_F |
|
1425 (const TDesC8*)( &KClkI2c2_F ), // EClkI2c2_F |
|
1426 (const TDesC8*)( &KClkI2c3_F ), // EClkI2c3_F |
|
1427 (const TDesC8*)( &KClkUart1_F ), // EClkUart1_F |
|
1428 (const TDesC8*)( &KClkUart2_F ), // EClkUart2_F |
|
1429 (const TDesC8*)( &KClkUart3_F ), // EClkUart3_F |
|
1430 (const TDesC8*)( &KClkGpt1_F ), // EClkGpt1_F |
|
1431 (const TDesC8*)( &KClkGpt2_F ), // EClkGpt2_F |
|
1432 (const TDesC8*)( &KClkGpt3_F ), // EClkGpt3_F |
|
1433 (const TDesC8*)( &KClkGpt4_F ), // EClkGpt4_F |
|
1434 (const TDesC8*)( &KClkGpt5_F ), // EClkGpt5_F |
|
1435 (const TDesC8*)( &KClkGpt6_F ), // EClkGpt6_F |
|
1436 (const TDesC8*)( &KClkGpt7_F ), // EClkGpt7_F |
|
1437 (const TDesC8*)( &KClkGpt8_F ), // EClkGpt8_F |
|
1438 (const TDesC8*)( &KClkGpt9_F ), // EClkGpt9_F |
|
1439 (const TDesC8*)( &KClkGpt10_F ), // EClkGpt10_F |
|
1440 (const TDesC8*)( &KClkGpt11_F ), // EClkGpt11_F |
|
1441 (const TDesC8*)( &KClkUsbTll_F ), // EClkUsbTll_F |
|
1442 (const TDesC8*)( &KClkTs_F ), // EClkTs_F |
|
1443 (const TDesC8*)( &KClkCpeFuse_F ), // EClkCpeFuse_F |
|
1444 (const TDesC8*)( &KClkSgx_F ), // EClkSgx_F |
|
1445 (const TDesC8*)( &KClkUsim_F ), // EClkUsim_F |
|
1446 (const TDesC8*)( &KClkSmartReflex2_F ), // EClkSmartReflex2_F |
|
1447 (const TDesC8*)( &KClkSmartReflex1_F ), // EClkSmartReflex1_F |
|
1448 (const TDesC8*)( &KClkWdt2_F ), // EClkWdt2_F |
|
1449 (const TDesC8*)( &KClkWdt3_F ), // EClkWdt3_F |
|
1450 (const TDesC8*)( &KClkGpio1_F ), // EClkGpio1_F |
|
1451 (const TDesC8*)( &KClkGpio2_F ), // EClkGpio2_F |
|
1452 (const TDesC8*)( &KClkGpio3_F ), // EClkGpio3_F |
|
1453 (const TDesC8*)( &KClkGpio4_F ), // EClkGpio4_F |
|
1454 (const TDesC8*)( &KClkGpio5_F ), // EClkGpio5_F |
|
1455 (const TDesC8*)( &KClkGpio6_F ), // EClkGpio6_F |
|
1456 (const TDesC8*)( &KClkUsb120_F ), // EClkUsb120_F |
|
1457 (const TDesC8*)( &KClkUsb48_F ), // EClkUsb48_F |
|
1458 (const TDesC8*)( &KClkDss_I ), // EClkDss_I |
|
1459 (const TDesC8*)( &KClkCam_I ), // EClkCam_I |
|
1460 (const TDesC8*)( &KClkIcr_I ), // EClkIcr_I |
|
1461 (const TDesC8*)( &KClkMmc1_I ), // EClkMmc1_I |
|
1462 (const TDesC8*)( &KClkMmc2_I ), // EClkMmc2_I |
|
1463 (const TDesC8*)( &KClkMmc3_I ), // EClkMmc3_I |
|
1464 (const TDesC8*)( &KClkMsPro_I ), // EClkMsPro_I |
|
1465 (const TDesC8*)( &KClkHdq_I ), // EClkHdq_I |
|
1466 (const TDesC8*)( &KClkAes1_I ), // EClkAes1_I |
|
1467 (const TDesC8*)( &KClkAes2_I ), // EClkAes2_I |
|
1468 (const TDesC8*)( &KClkSha11_I ), // EClkSha11_I |
|
1469 (const TDesC8*)( &KClkSha12_I ), // EClkSha12_I |
|
1470 (const TDesC8*)( &KClkDes1_I ), // EClkDes1_I |
|
1471 (const TDesC8*)( &KClkDes2_I ), // EClkDes2_I |
|
1472 (const TDesC8*)( &KClkMcBsp1_I ), // EClkMcBsp1_I |
|
1473 (const TDesC8*)( &KClkMcBsp2_I ), // EClkMcBsp2_I |
|
1474 (const TDesC8*)( &KClkMcBsp3_I ), // EClkMcBsp3_I |
|
1475 (const TDesC8*)( &KClkMcBsp4_I ), // EClkMcBsp4_I |
|
1476 (const TDesC8*)( &KClkMcBsp5_I ), // EClkMcBsp5_I |
|
1477 (const TDesC8*)( &KClkI2c1_I ), // EClkI2c1_I |
|
1478 (const TDesC8*)( &KClkI2c2_I ), // EClkI2c2_I |
|
1479 (const TDesC8*)( &KClkI2c3_I ), // EClkI2c3_I |
|
1480 (const TDesC8*)( &KClkUart1_I ), // EClkUart1_I |
|
1481 (const TDesC8*)( &KClkUart2_I ), // EClkUart2_I |
|
1482 (const TDesC8*)( &KClkUart3_I ), // EClkUart3_I |
|
1483 (const TDesC8*)( &KClkMcSpi1_I ), // EClkMcSpi1_I |
|
1484 (const TDesC8*)( &KClkMcSpi2_I ), // EClkMcSpi2_I |
|
1485 (const TDesC8*)( &KClkMcSpi3_I ), // EClkMcSpi3_I |
|
1486 (const TDesC8*)( &KClkMcSpi4_I ), // EClkMcSpi4_I |
|
1487 (const TDesC8*)( &KClkGpt1_I ), // EClkGpt1_I |
|
1488 (const TDesC8*)( &KClkGpt2_I ), // EClkGpt2_I |
|
1489 (const TDesC8*)( &KClkGpt3_I ), // EClkGpt3_I |
|
1490 (const TDesC8*)( &KClkGpt4_I ), // EClkGpt4_I |
|
1491 (const TDesC8*)( &KClkGpt5_I ), // EClkGpt5_I |
|
1492 (const TDesC8*)( &KClkGpt6_I ), // EClkGpt6_I |
|
1493 (const TDesC8*)( &KClkGpt7_I ), // EClkGpt7_I |
|
1494 (const TDesC8*)( &KClkGpt8_I ), // EClkGpt8_I |
|
1495 (const TDesC8*)( &KClkGpt9_I ), // EClkGpt9_I |
|
1496 (const TDesC8*)( &KClkGpt10_I ), // EClkGpt10_I |
|
1497 (const TDesC8*)( &KClkGpt11_I ), // EClkGpt11_I |
|
1498 (const TDesC8*)( &KClkGpt12_I ), // EClkGpt12_I |
|
1499 (const TDesC8*)( &KClkMailboxes_I ), // EClkMailboxes_I |
|
1500 (const TDesC8*)( &KClkOmapSCM_I ), // EClkOmapSCM_I |
|
1501 (const TDesC8*)( &KClkHsUsbOtg_I ), // EClkHsUsbOtg_I |
|
1502 (const TDesC8*)( &KClkSdrc_I ), // EClkSdrc_I |
|
1503 (const TDesC8*)( &KClkPka_I ), // EClkPka_I |
|
1504 (const TDesC8*)( &KClkRng_I ), // EClkRng_I |
|
1505 (const TDesC8*)( &KClkUsbTll_I ), // EClkUsbTll_I |
|
1506 (const TDesC8*)( &KClkSgx_I ), // EClkSgx_I |
|
1507 (const TDesC8*)( &KClkUsim_I ), // EClkUsim_I |
|
1508 (const TDesC8*)( &KClkWdt1_I ), // EClkWdt1_I |
|
1509 (const TDesC8*)( &KClkWdt2_I ), // EClkWdt2_I |
|
1510 (const TDesC8*)( &KClkWdt3_I ), // EClkWdt3_I |
|
1511 (const TDesC8*)( &KClkGpio1_I ), // EClkGpio1_I |
|
1512 (const TDesC8*)( &KClkGpio2_I ), // EClkGpio2_I |
|
1513 (const TDesC8*)( &KClkGpio3_I ), // EClkGpio3_I |
|
1514 (const TDesC8*)( &KClkGpio4_I ), // EClkGpio4_I |
|
1515 (const TDesC8*)( &KClkGpio5_I ), // EClkGpio5_I |
|
1516 (const TDesC8*)( &KClkGpio6_I ), // EClkGpio6_I |
|
1517 (const TDesC8*)( &KClk32Sync_I ), // EClk32Sync_I |
|
1518 (const TDesC8*)( &KClkUsb_I ), // EClkUsb_I |
|
1519 (const TDesC8*)( &KClk48M ), // EClk48M |
|
1520 (const TDesC8*)( &KClk12M ), // EClk12M |
|
1521 (const TDesC8*)( &KClkSysClk ), // EClkSysClk |
|
1522 (const TDesC8*)( &KClkAltClk ), // EClkAltClk |
|
1523 (const TDesC8*)( &KClkSysClk32k ), // EClkSysClk32k |
|
1524 }; |
|
1525 |
|
1526 } |
|
1527 __ASSERT_COMPILE( (sizeof( KNames ) / sizeof( KNames[0] )) == Prcm::KSupportedClockCount ); |
|
1528 |
31 |
1529 namespace Prcm |
32 namespace Prcm |
1530 { |
33 { |
1531 TSpinLock iLock(/*TSpinLock::EOrderGenericIrqLow0*/); // prevents concurrent access to the prcm hardware registers |
34 TSpinLock iLock(/*TSpinLock::EOrderGenericIrqLow0*/); // prevents concurrent access to the prcm hardware registers |
1532 |
35 |