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;
126 if (gtm->CMU.FXCLK.CTRL.B.FXCLK_SEL == 0)
138 frequency = frequency / 1;
141 frequency = frequency / 16;
144 frequency = frequency / 256;
147 frequency = frequency / 4096;
150 frequency = frequency / 65536;
168 float32 N = gtm->CMU.GCLK_DEN.B.GCLK_DEN;
169 float32 Z = gtm->CMU.GCLK_NUM.B.GCLK_NUM;
184 return ((gtm->CMU.CLK_EN.U >> (2 * clkIndex)) & IFX_GTM_CMU_CLK_EN_EN_CLK0_MSK) == 0x3;
190 return ((gtm->CMU.CLK_EN.U >> (2 * clkIndex + 16)) & IFX_GTM_CMU_CLK_EN_EN_CLK0_MSK) == 0x3;
196 return gtm->CMU.CLK_EN.B.EN_FXCLK == 0x3;
206 gtm->CMU.CLK_6.CTRL.B.CLK6_SEL = useGlobal ? 0 : 1;
209 gtm->CMU.CLK_7.CTRL.B.CLK7_SEL = useGlobal ? 0 : 1;
238 gtm->CMU.CLK0_5[clkIndex].CTRL.B.CLK_CNT = cnt;
241 gtm->CMU.CLK_6.CTRL.B.CLK_CNT = cnt;
244 gtm->CMU.CLK_7.CTRL.B.CLK_CNT = cnt;
257 float32 bestDistance = frequency;
259 uint32 z, n, nBest = 1, zBest = 1;
262 for (z = 1; z < 0xFFFFFF; z++)
264 boolean endLoop =
FALSE;
267 for (n = z; n > 0; n--)
271 distance = fabsf(frequency - f);
273 if (distance < bestDistance)
275 bestDistance = distance;
280 if (bestDistance < 0.1)
295 gtm->CMU.ECLK[clkIndex].NUM.B.ECLK_NUM = zBest;
296 gtm->CMU.ECLK[clkIndex].NUM.B.ECLK_NUM = zBest;
297 gtm->CMU.ECLK[clkIndex].DEN.B.ECLK_DEN = nBest;
305 float32 bestDistance = frequency;
307 uint32 z, n, nBest = 1, zBest = 1;
312 for (z = 1; z < 0xFFFFFF; z++)
314 boolean endLoop =
FALSE;
317 for (n = z; n > 0; n--)
321 distance = fabsf(frequency - f);
323 if (distance < bestDistance)
325 bestDistance = distance;
330 if (bestDistance < 0.1)
345 for (n = 1; n < 0xFFFFFF; n++)
349 z = floorf(frequency * n / fIn);
354 distance = fabsf(frequency - f);
356 if (distance < bestDistance)
358 bestDistance = distance;
365 distance = fabsf(frequency - f);
367 if (distance < bestDistance)
369 bestDistance = distance;
374 if (bestDistance == 0.0)
384 gtm->CMU.GCLK_NUM.B.GCLK_NUM = zBest;
385 gtm->CMU.GCLK_NUM.B.GCLK_NUM = zBest;
386 gtm->CMU.GCLK_DEN.B.GCLK_DEN = nBest;