34 #include "IfxGtm_bf.h"
42 gtm->CMU.CLK_EN.U = clkMask;
64 if (gtm->CMU.CLK_6.CTRL.B.CLK6_SEL == 0)
76 if (gtm->CMU.CLK_7.CTRL.B.CLK7_SEL == 0)
106 float32 Z = gtm->CMU.ECLK[clkIndex].NUM.B.ECLK_NUM;
107 float32 N = gtm->CMU.ECLK[clkIndex].DEN.B.ECLK_DEN;
108 float32 multiplier = N / Z / 2;
127 fxSelect = gtm->CMU.FXCLK.CTRL.B.FXCLK_SEL;
133 else if (fxSelect <= 6)
137 else if (fxSelect == 7)
141 else if (fxSelect == 8)
153 frequency = frequency / 1;
156 frequency = frequency / 16;
159 frequency = frequency / 256;
162 frequency = frequency / 4096;
165 frequency = frequency / 65536;
183 float32 N = gtm->CMU.GCLK_DEN.B.GCLK_DEN;
184 float32 Z = gtm->CMU.GCLK_NUM.B.GCLK_NUM;
199 return ((gtm->CMU.CLK_EN.U >> (2 * clkIndex)) & IFX_GTM_CMU_CLK_EN_EN_CLK0_MSK) == 0x3;
205 return ((gtm->CMU.CLK_EN.U >> (2 * clkIndex + 16)) & IFX_GTM_CMU_CLK_EN_EN_CLK0_MSK) == 0x3;
211 return gtm->CMU.CLK_EN.B.EN_FXCLK == 0x3;
221 gtm->CMU.CLK_6.CTRL.B.CLK6_SEL = useGlobal ? 0 : 1;
224 gtm->CMU.CLK_7.CTRL.B.CLK7_SEL = useGlobal ? 0 : 1;
253 gtm->CMU.CLK0_5[clkIndex].CTRL.B.CLK_CNT = cnt;
256 gtm->CMU.CLK_6.CTRL.B.CLK_CNT = cnt;
259 gtm->CMU.CLK_7.CTRL.B.CLK_CNT = cnt;
272 float32 bestDistance = frequency;
274 uint32 z, n, nBest = 1, zBest = 1;
277 for (z = 1; z < 0xFFFFFF; z++)
279 boolean endLoop =
FALSE;
282 for (n = z; n > 0; n--)
286 distance = fabsf(frequency - f);
288 if (distance < bestDistance)
290 bestDistance = distance;
295 if (bestDistance < 0.1)
310 gtm->CMU.ECLK[clkIndex].NUM.B.ECLK_NUM = zBest;
311 gtm->CMU.ECLK[clkIndex].NUM.B.ECLK_NUM = zBest;
312 gtm->CMU.ECLK[clkIndex].DEN.B.ECLK_DEN = nBest;
320 float32 bestDistance = frequency;
322 uint32 z, n, nBest = 1, zBest = 1;
327 for (z = 1; z < 0xFFFFFF; z++)
329 boolean endLoop =
FALSE;
332 for (n = z; n > 0; n--)
336 distance = fabsf(frequency - f);
338 if (distance < bestDistance)
340 bestDistance = distance;
345 if (bestDistance < 0.1)
360 for (n = 1; n < 0xFFFFFF; n++)
364 z = floorf(frequency * n / fIn);
369 distance = fabsf(frequency - f);
371 if (distance < bestDistance)
373 bestDistance = distance;
380 distance = fabsf(frequency - f);
382 if (distance < bestDistance)
384 bestDistance = distance;
389 if (bestDistance == 0.0)
399 gtm->CMU.GCLK_NUM.B.GCLK_NUM = zBest;
400 gtm->CMU.GCLK_NUM.B.GCLK_NUM = zBest;
401 gtm->CMU.GCLK_DEN.B.GCLK_DEN = nBest;