2 * Copyright (c) 2013 - 2014, Freescale Semiconductor, Inc.
5 * Redistribution and use in source and binary forms, with or without modification,
6 * are permitted provided that the following conditions are met:
8 * o Redistributions of source code must retain the above copyright notice, this list
9 * of conditions and the following disclaimer.
11 * o Redistributions in binary form must reproduce the above copyright notice, this
12 * list of conditions and the following disclaimer in the documentation and/or
13 * other materials provided with the distribution.
15 * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
16 * contributors may be used to endorse or promote products derived from this
17 * software without specific prior written permission.
19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
23 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
26 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 #include "fsl_sim_hal.h"
33 /*******************************************************************************
35 ******************************************************************************/
37 /*******************************************************************************
39 ******************************************************************************/
41 /*FUNCTION**********************************************************************
43 * Function Name : CLOCK_HAL_SetSource
44 * Description : Set clock source setting
45 * This function will set the settings for specified clock source. Each clock
46 * source has its clock selection settings. Refer to reference manual for
47 * details of settings for each clock source. Refer to clock_source_names_t
50 *END**************************************************************************/
51 sim_hal_status_t
CLOCK_HAL_SetSource(uint32_t baseAddr
,
52 clock_source_names_t clockSource
,
55 sim_hal_status_t status
= kSimHalSuccess
;
56 assert(clockSource
< kClockSourceMax
);
60 #if FSL_FEATURE_SIM_OPT_HAS_NFCSRC
61 case kClockNfcSrc
: /* NFCSRC*/
62 BW_SIM_SOPT2_NFCSRC(baseAddr
, setting
);
64 case kClockNfcSel
: /* NFC_CLKSEL*/
65 BW_SIM_SOPT2_NFC_CLKSEL(baseAddr
, setting
);
69 #if FSL_FEATURE_SIM_OPT_HAS_ESDHCSRC
70 case kClockEsdhcSrc
: /* ESDHCSRC*/
71 BW_SIM_SOPT2_ESDHCSRC(baseAddr
, setting
);
75 #if FSL_FEATURE_SIM_OPT_HAS_SDHCSRC
76 case kClockSdhcSrc
: /* SDHCSRC*/
77 BW_SIM_SOPT2_SDHCSRC(baseAddr
, setting
);
81 #if FSL_FEATURE_SIM_OPT_HAS_LCDCSRC
82 case kClockLcdcSrc
: /* LCDCSRC*/
83 BW_SIM_SOPT2_LCDCSRC(baseAddr
, setting
);
85 case kClockLcdcSel
: /* LCDC_CLKSEL*/
86 BW_SIM_SOPT2_LCDC_CLKSEL(baseAddr
, setting
);
90 #if FSL_FEATURE_SIM_OPT_HAS_TIMESRC
91 case kClockTimeSrc
: /* TIMESRC*/
92 BW_SIM_SOPT2_TIMESRC(baseAddr
, setting
);
96 #if FSL_FEATURE_SIM_OPT_HAS_RMIISRC
97 case kClockRmiiSrc
: /* RMIISRC*/
98 BW_SIM_SOPT2_RMIISRC(baseAddr
, setting
);
102 #if FSL_FEATURE_SIM_OPT_HAS_USBSRC
103 case kClockUsbSrc
: /* USBSRC*/
104 BW_SIM_SOPT2_USBSRC(baseAddr
, setting
);
108 #if FSL_FEATURE_SIM_OPT_HAS_USBFSRC
109 case kClockUsbfSrc
: /* USBFSRC*/
110 BW_SIM_SOPT2_USBFSRC(baseAddr
, setting
);
112 case kClockUsbfSel
: /* USBF_CLKSEL*/
113 BW_SIM_SOPT2_USBF_CLKSEL(baseAddr
, setting
);
117 #if FSL_FEATURE_SIM_OPT_HAS_USBHSRC
118 case kClockUsbhSrc
: /* USBHSRC*/
119 BW_SIM_SOPT2_USBHSRC(baseAddr
, setting
);
123 #if FSL_FEATURE_SIM_OPT_HAS_UART0SRC
124 case kClockUart0Src
: /* UART0SRC*/
125 BW_SIM_SOPT2_UART0SRC(baseAddr
, setting
);
129 #if FSL_FEATURE_SIM_OPT_HAS_TPMSRC
130 case kClockTpmSrc
: /* TPMSRC*/
131 BW_SIM_SOPT2_TPMSRC(baseAddr
, setting
);
135 #if FSL_FEATURE_SIM_OPT_HAS_LPUARTSRC
136 case kClockLpuartSrc
: /* LPUARTSRC*/
137 BW_SIM_SOPT2_LPUARTSRC(baseAddr
, setting
);
141 case kClockOsc32kSel
: /* OSC32KSEL*/
142 BW_SIM_SOPT1_OSC32KSEL(baseAddr
, setting
);
145 case kClockPllfllSel
: /* PLLFLLSEL*/
146 BW_SIM_SOPT2_PLLFLLSEL(baseAddr
, setting
);
149 #if FSL_FEATURE_SIM_OPT_HAS_TRACE_CLKSEL
150 case kClockTraceSel
: /* TRACE_CLKSEL*/
151 BW_SIM_SOPT2_TRACECLKSEL(baseAddr
, setting
);
155 case kClockClkoutSel
: /* CLKOUTSEL*/
156 BW_SIM_SOPT2_CLKOUTSEL(baseAddr
, setting
);
159 #if FSL_FEATURE_SIM_OPT_HAS_RTC_CLOCK_OUT_SELECTION
160 case kClockRtcClkoutSel
: /* RTCCLKOUTSEL*/
161 BW_SIM_SOPT2_RTCCLKOUTSEL(baseAddr
, setting
);
166 status
= kSimHalNoSuchClockSrc
;
173 /*FUNCTION**********************************************************************
175 * Function Name : CLOCK_HAL_GetSource
176 * Description : Get clock source setting
177 * This function will get the settings for specified clock source. Each clock
178 * source has its clock selection settings. Refer to reference manual for
179 * details of settings for each clock source. Refer to clock_source_names_t
182 *END**************************************************************************/
183 sim_hal_status_t
CLOCK_HAL_GetSource(uint32_t baseAddr
,
184 clock_source_names_t clockSource
,
187 sim_hal_status_t status
= kSimHalSuccess
;
188 assert(clockSource
< kClockSourceMax
);
192 #if FSL_FEATURE_SIM_OPT_HAS_NFCSRC
193 case kClockNfcSrc
: /* NFCSRC*/
194 *setting
= BR_SIM_SOPT2_NFCSRC(baseAddr
);
196 case kClockNfcSel
: /* NFC_CLKSEL*/
197 *setting
= BR_SIM_SOPT2_NFC_CLKSEL(baseAddr
);
201 #if FSL_FEATURE_SIM_OPT_HAS_ESDHCSRC
202 case kClockEsdhcSrc
: /* ESDHCSRC*/
203 *setting
= BR_SIM_SOPT2_ESDHCSRC(baseAddr
);
207 #if FSL_FEATURE_SIM_OPT_HAS_SDHCSRC
208 case kClockSdhcSrc
: /* SDHCSRC*/
209 *setting
= BR_SIM_SOPT2_SDHCSRC(baseAddr
);
213 #if FSL_FEATURE_SIM_OPT_HAS_LCDCSRC
214 case kClockLcdcSrc
: /* LCDCSRC*/
215 *setting
= BR_SIM_SOPT2_LCDCSRC(baseAddr
);
217 case kClockLcdcSel
: /* LCDC_CLKSEL*/
218 *setting
= BR_SIM_SOPT2_LCDC_CLKSEL(baseAddr
);
222 #if FSL_FEATURE_SIM_OPT_HAS_TIMESRC
223 case kClockTimeSrc
: /* TIMESRC*/
224 *setting
= BR_SIM_SOPT2_TIMESRC(baseAddr
);
228 #if FSL_FEATURE_SIM_OPT_HAS_RMIISRC
229 case kClockRmiiSrc
: /* RMIISRC*/
230 *setting
= BR_SIM_SOPT2_RMIISRC(baseAddr
);
234 #if FSL_FEATURE_SIM_OPT_HAS_USBSRC
235 case kClockUsbSrc
: /* USBSRC*/
236 *setting
= BR_SIM_SOPT2_USBSRC(baseAddr
);
240 #if FSL_FEATURE_SIM_OPT_HAS_USBFSRC
241 case kClockUsbfSrc
: /* USBFSRC*/
242 *setting
= BR_SIM_SOPT2_USBFSRC(baseAddr
);
244 case kClockUsbfSel
: /* USBF_CLKSEL*/
245 *setting
= BR_SIM_SOPT2_USBF_CLKSEL(baseAddr
);
249 #if FSL_FEATURE_SIM_OPT_HAS_USBHSRC
250 case kClockUsbhSrc
: /* USBHSRC*/
251 *setting
= BR_SIM_SOPT2_USBHSRC(baseAddr
);
255 #if FSL_FEATURE_SIM_OPT_HAS_UART0SRC
256 case kClockUart0Src
: /* UART0SRC*/
257 *setting
= BR_SIM_SOPT2_UART0SRC(baseAddr
);
261 #if FSL_FEATURE_SIM_OPT_HAS_TPMSRC
262 case kClockTpmSrc
: /* TPMSRC*/
263 *setting
= BR_SIM_SOPT2_TPMSRC(baseAddr
);
267 #if FSL_FEATURE_SIM_OPT_HAS_LPUARTSRC
268 case kClockLpuartSrc
: /* LPUARTSRC*/
269 *setting
= BR_SIM_SOPT2_LPUARTSRC(baseAddr
);
273 case kClockOsc32kSel
: /* OSC32KSEL*/
274 *setting
= BR_SIM_SOPT1_OSC32KSEL(baseAddr
);
277 case kClockPllfllSel
: /* PLLFLLSEL*/
278 *setting
= BR_SIM_SOPT2_PLLFLLSEL(baseAddr
);
281 #if FSL_FEATURE_SIM_OPT_HAS_TRACE_CLKSEL
282 case kClockTraceSel
: /* TRACE_CLKSEL*/
283 *setting
= BR_SIM_SOPT2_TRACECLKSEL(baseAddr
);
287 case kClockClkoutSel
: /* CLKOUTSEL */
288 *setting
= BR_SIM_SOPT2_CLKOUTSEL(baseAddr
);
291 #if FSL_FEATURE_SIM_OPT_HAS_RTC_CLOCK_OUT_SELECTION
292 case kClockRtcClkoutSel
: /* RTCCLKOUTSEL */
293 *setting
= BR_SIM_SOPT2_RTCCLKOUTSEL(baseAddr
);
298 status
= kSimHalNoSuchClockSrc
;
305 /*FUNCTION**********************************************************************
307 * Function Name : CLOCK_HAL_SetDivider
308 * Description : Set clock divider setting
309 * This function will set the setting for specified clock divider. Refer to
310 * reference manual for supported clock divider and value range. Refer to
311 * clock_divider_names_t for dividers.
313 *END**************************************************************************/
314 sim_hal_status_t
CLOCK_HAL_SetDivider(uint32_t baseAddr
,
315 clock_divider_names_t clockDivider
,
318 sim_hal_status_t status
= kSimHalSuccess
;
319 assert(clockDivider
< kClockDividerMax
);
321 switch (clockDivider
)
323 case kClockDividerOutdiv1
: /* OUTDIV1*/
324 BW_SIM_CLKDIV1_OUTDIV1(baseAddr
, setting
);
327 #if FSL_FEATURE_SIM_DIVIDER_HAS_OUTDIV2
328 case kClockDividerOutdiv2
: /* OUTDIV2*/
329 BW_SIM_CLKDIV1_OUTDIV2(baseAddr
, setting
);
333 #if FSL_FEATURE_SIM_DIVIDER_HAS_OUTDIV3
334 case kClockDividerOutdiv3
: /* OUTDIV3*/
335 BW_SIM_CLKDIV1_OUTDIV3(baseAddr
, setting
);
339 case kClockDividerOutdiv4
: /* OUTDIV4*/
340 BW_SIM_CLKDIV1_OUTDIV4(baseAddr
, setting
);
343 #if FSL_FEATURE_SIM_DIVIDER_HAS_USBDIV
344 case kClockDividerUsbFrac
: /* USBFRAC*/
345 BW_SIM_CLKDIV2_USBFRAC(baseAddr
, setting
);
347 case kClockDividerUsbDiv
: /* USBDIV*/
348 BW_SIM_CLKDIV2_USBDIV(baseAddr
, setting
);
352 #if FSL_FEATURE_SIM_DIVIDER_HAS_USBFSDIV
353 case kClockDividerUsbfsFrac
: /* USBFSFRAC*/
354 BW_SIM_CLKDIV2_USBFSFRAC(baseAddr
, setting
);
356 case kClockDividerUsbfsDiv
: /* USBFSDIV*/
357 BW_SIM_CLKDIV2_USBFSDIV(baseAddr
, setting
);
361 #if FSL_FEATURE_SIM_DIVIDER_HAS_USBHSDIV
362 case kClockDividerUsbhsFrac
: /* USBHSFRAC*/
363 BW_SIM_CLKDIV2_USBHSFRAC(baseAddr
, setting
);
365 case kClockDividerUsbhsDiv
: /* USBHSDIV*/
366 BW_SIM_CLKDIV2_USBHSDIV(baseAddr
, setting
);
370 #if FSL_FEATURE_SIM_OPT_HAS_LCDCSRC
371 case kClockDividerLcdcFrac
: /* LCDCFRAC*/
372 BW_SIM_CLKDIV3_LCDCFRAC(baseAddr
, setting
);
374 case kClockDividerLcdcDiv
: /* LCDCDIV*/
375 BW_SIM_CLKDIV3_LCDCDIV(baseAddr
, setting
);
379 #if FSL_FEATURE_SIM_OPT_HAS_NFCSRC
380 case kClockDividerNfcFrac
: /* NFCFRAC*/
381 BW_SIM_CLKDIV4_NFCFRAC(baseAddr
, setting
);
383 case kClockDividerNfcDiv
: /* NFCDIV*/
384 BW_SIM_CLKDIV4_NFCDIV(baseAddr
, setting
);
388 case kClockDividerSpecial1
: /* special divider 1 */
392 status
= kSimHalNoSuchDivider
;
399 /*FUNCTION**********************************************************************
401 * Function Name : CLOCK_HAL_SetOutDividers
402 * Description : Set all clock out dividers setting at the same time
403 * This function will set the setting for all clock out dividers. Refer to
404 * reference manual for supported clock divider and value range. Refer to
405 * clock_divider_names_t for dividers.
407 *END**************************************************************************/
408 void CLOCK_HAL_SetOutDividers(uint32_t baseAddr
, uint32_t outdiv1
, uint32_t outdiv2
,
409 uint32_t outdiv3
, uint32_t outdiv4
)
411 uint32_t clkdiv1
= 0;
413 clkdiv1
|= BF_SIM_CLKDIV1_OUTDIV1(outdiv1
);
414 #if FSL_FEATURE_SIM_DIVIDER_HAS_OUTDIV2
415 clkdiv1
|= BF_SIM_CLKDIV1_OUTDIV2(outdiv2
);
417 #if FSL_FEATURE_SIM_DIVIDER_HAS_OUTDIV3
418 clkdiv1
|= BF_SIM_CLKDIV1_OUTDIV3(outdiv3
);
420 clkdiv1
|= BF_SIM_CLKDIV1_OUTDIV4(outdiv4
);
422 HW_SIM_CLKDIV1_WR(baseAddr
, clkdiv1
);
425 /*FUNCTION**********************************************************************
427 * Function Name : CLOCK_HAL_GetDivider
428 * Description : Get clock divider setting
429 * This function will get the setting for specified clock divider. Refer to
430 * reference manual for supported clock divider and value range. Refer to
431 * clock_divider_names_t for dividers.
433 *END**************************************************************************/
434 sim_hal_status_t
CLOCK_HAL_GetDivider(uint32_t baseAddr
,
435 clock_divider_names_t clockDivider
,
438 sim_hal_status_t status
= kSimHalSuccess
;
439 assert(clockDivider
< kClockDividerMax
);
443 switch (clockDivider
)
445 case kClockDividerOutdiv1
: /* OUTDIV1*/
446 *setting
= BR_SIM_CLKDIV1_OUTDIV1(baseAddr
);
449 #if FSL_FEATURE_SIM_DIVIDER_HAS_OUTDIV2
450 case kClockDividerOutdiv2
: /* OUTDIV2*/
451 *setting
= BR_SIM_CLKDIV1_OUTDIV2(baseAddr
);
455 #if FSL_FEATURE_SIM_DIVIDER_HAS_OUTDIV3
456 case kClockDividerOutdiv3
: /* OUTDIV3*/
457 *setting
= BR_SIM_CLKDIV1_OUTDIV3(baseAddr
);
461 case kClockDividerOutdiv4
: /* OUTDIV4*/
462 *setting
= BR_SIM_CLKDIV1_OUTDIV4(baseAddr
);
465 #if FSL_FEATURE_SIM_DIVIDER_HAS_USBDIV
466 case kClockDividerUsbFrac
: /* USBFRAC*/
467 *setting
= BR_SIM_CLKDIV2_USBFRAC(baseAddr
);
469 case kClockDividerUsbDiv
: /* USBDIV*/
470 *setting
= BR_SIM_CLKDIV2_USBDIV(baseAddr
);
474 #if FSL_FEATURE_SIM_DIVIDER_HAS_USBFSDIV
475 case kClockDividerUsbfsFrac
: /* USBFSFRAC*/
476 *setting
= BR_SIM_CLKDIV2_USBFSFRAC(baseAddr
);
478 case kClockDividerUsbfsDiv
: /* USBFSDIV*/
479 *setting
= BR_SIM_CLKDIV2_USBFSDIV(baseAddr
);
483 #if FSL_FEATURE_SIM_DIVIDER_HAS_USBHSDIV
484 case kClockDividerUsbhsFrac
: /* USBHSFRAC*/
485 *setting
= BR_SIM_CLKDIV2_USBHSFRAC(baseAddr
);
487 case kClockDividerUsbhsDiv
: /* USBHSDIV*/
488 *setting
= BR_SIM_CLKDIV2_USBHSDIV(baseAddr
);
492 #if FSL_FEATURE_SIM_OPT_HAS_LCDCSRC
493 case kClockDividerLcdcFrac
: /* LCDCFRAC*/
494 *setting
= BR_SIM_CLKDIV3_LCDCFRAC(baseAddr
);
496 case kClockDividerLcdcDiv
: /* LCDCDIV*/
497 *setting
= BR_SIM_CLKDIV3_LCDCDIV(baseAddr
);
501 #if FSL_FEATURE_SIM_OPT_HAS_NFCSRC
502 case kClockDividerNfcFrac
: /* NFCFRAC*/
503 *setting
= BR_SIM_CLKDIV4_NFCFRAC(baseAddr
);
505 case kClockDividerNfcDiv
: /* NFCDIV*/
506 *setting
= BR_SIM_CLKDIV4_NFCDIV(baseAddr
);
510 case kClockDividerSpecial1
: /* special divider 1 */
515 status
= kSimHalNoSuchDivider
;
522 /*FUNCTION**********************************************************************
524 * Function Name : SIM_HAL_SetAdcAlternativeTriggerCmd
525 * Description : Set ADCx alternate trigger enable setting
526 * This function will enable/disable alternative conversion triggers for ADCx.
528 *END**************************************************************************/
529 void SIM_HAL_SetAdcAlternativeTriggerCmd(uint32_t baseAddr
, uint8_t instance
, bool enable
)
531 assert(instance
< HW_ADC_INSTANCE_COUNT
);
536 BW_SIM_SOPT7_ADC0ALTTRGEN(baseAddr
, enable
? 1 : 0);
538 #if (HW_ADC_INSTANCE_COUNT > 1)
540 BW_SIM_SOPT7_ADC1ALTTRGEN(baseAddr
, enable
? 1 : 0);
542 #if (HW_ADC_INSTANCE_COUNT > 2)
544 BW_SIM_SOPT7_ADC2ALTTRGEN(baseAddr
, enable
? 1 : 0);
547 BW_SIM_SOPT7_ADC3ALTTRGEN(baseAddr
, enable
? 1 : 0);
556 /*FUNCTION**********************************************************************
558 * Function Name : SIM_HAL_GetAdcAlternativeTriggerCmd
559 * Description : Get ADCx alternate trigger enable settingg
560 * This function will get ADCx alternate trigger enable setting.
562 *END**************************************************************************/
563 bool SIM_HAL_GetAdcAlternativeTriggerCmd(uint32_t baseAddr
, uint8_t instance
)
565 bool retValue
= false;
567 assert(instance
< HW_ADC_INSTANCE_COUNT
);
572 retValue
= BR_SIM_SOPT7_ADC0ALTTRGEN(baseAddr
);
574 #if (HW_ADC_INSTANCE_COUNT > 1)
576 retValue
= BR_SIM_SOPT7_ADC1ALTTRGEN(baseAddr
);
578 #if (HW_ADC_INSTANCE_COUNT > 2)
580 retValue
= BR_SIM_SOPT7_ADC2ALTTRGEN(baseAddr
);
583 retValue
= BR_SIM_SOPT7_ADC3ALTTRGEN(baseAddr
);
595 /*FUNCTION**********************************************************************
597 * Function Name : SIM_HAL_SetAdcPreTriggerMode
598 * Description : Set ADCx pre-trigger select setting
599 * This function will select the ADCx pre-trigger source when alternative
600 * triggers are enabled through ADCxALTTRGEN
602 *END**************************************************************************/
603 void SIM_HAL_SetAdcPreTriggerMode(uint32_t baseAddr
, uint8_t instance
, sim_pretrgsel_t select
)
605 assert(instance
< HW_ADC_INSTANCE_COUNT
);
610 BW_SIM_SOPT7_ADC0PRETRGSEL(baseAddr
, select
);
612 #if (HW_ADC_INSTANCE_COUNT > 1)
614 BW_SIM_SOPT7_ADC1PRETRGSEL(baseAddr
, select
);
616 #if (HW_ADC_INSTANCE_COUNT > 2)
618 BW_SIM_SOPT7_ADC2PRETRGSEL(baseAddr
, select
);
621 BW_SIM_SOPT7_ADC3PRETRGSEL(baseAddr
, select
);
630 /*FUNCTION**********************************************************************
632 * Function Name : SIM_HAL_GetAdcPreTriggerMode
633 * Description : Get ADCx pre-trigger select setting
634 * This function will get ADCx pre-trigger select setting.
636 *END**************************************************************************/
637 sim_pretrgsel_t
SIM_HAL_GetAdcPreTriggerMode(uint32_t baseAddr
, uint8_t instance
)
639 sim_pretrgsel_t retValue
= (sim_pretrgsel_t
)0;
641 assert(instance
< HW_ADC_INSTANCE_COUNT
);
646 retValue
= (sim_pretrgsel_t
)BR_SIM_SOPT7_ADC0PRETRGSEL(baseAddr
);
648 #if (HW_ADC_INSTANCE_COUNT > 1)
650 retValue
= (sim_pretrgsel_t
)BR_SIM_SOPT7_ADC1PRETRGSEL(baseAddr
);
652 #if (HW_ADC_INSTANCE_COUNT > 2)
654 retValue
= (sim_pretrgsel_t
)BR_SIM_SOPT7_ADC2PRETRGSEL(baseAddr
);
657 retValue
= (sim_pretrgsel_t
)BR_SIM_SOPT7_ADC3PRETRGSEL(baseAddr
);
668 /*FUNCTION**********************************************************************
670 * Function Name : SIM_HAL_SetAdcTriggerMode
671 * Description : Set ADCx trigger select setting
672 * This function will select the ADCx trigger source when alternative triggers
673 * are enabled through ADCxALTTRGEN
675 *END**************************************************************************/
676 void SIM_HAL_SetAdcTriggerMode(uint32_t baseAddr
, uint8_t instance
, sim_trgsel_t select
)
678 assert(instance
< HW_ADC_INSTANCE_COUNT
);
683 BW_SIM_SOPT7_ADC0TRGSEL(baseAddr
, select
);
685 #if (HW_ADC_INSTANCE_COUNT > 1)
687 BW_SIM_SOPT7_ADC1TRGSEL(baseAddr
, select
);
689 #if (HW_ADC_INSTANCE_COUNT > 2)
691 BW_SIM_SOPT7_ADC2TRGSEL(baseAddr
, select
);
694 BW_SIM_SOPT7_ADC3TRGSEL(baseAddr
, select
);
703 /*FUNCTION**********************************************************************
705 * Function Name : SIM_HAL_GetAdcTriggerMode
706 * Description : Get ADCx trigger select setting
707 * This function will get ADCx trigger select setting.
709 *END**************************************************************************/
710 sim_pretrgsel_t
SIM_HAL_GetAdcTriggerMode(uint32_t baseAddr
, uint8_t instance
)
712 sim_pretrgsel_t retValue
=(sim_pretrgsel_t
)0;
714 assert(instance
< HW_ADC_INSTANCE_COUNT
);
719 retValue
= (sim_pretrgsel_t
)BR_SIM_SOPT7_ADC0TRGSEL(baseAddr
);
721 #if (HW_ADC_INSTANCE_COUNT > 1)
723 retValue
= (sim_pretrgsel_t
)BR_SIM_SOPT7_ADC1TRGSEL(baseAddr
);
725 #if (HW_ADC_INSTANCE_COUNT > 2)
727 retValue
= (sim_pretrgsel_t
)BR_SIM_SOPT7_ADC2TRGSEL(baseAddr
);
730 retValue
= (sim_pretrgsel_t
)BR_SIM_SOPT7_ADC3TRGSEL(baseAddr
);
741 /*FUNCTION**********************************************************************
743 * Function Name : SIM_HAL_SetUartRxSrcMode
744 * Description : Set UARTx receive data source select setting
745 * This function will select the source for the UART1 receive data.
747 *END**************************************************************************/
748 void SIM_HAL_SetUartRxSrcMode(uint32_t baseAddr
, uint8_t instance
, sim_uart_rxsrc_t select
)
750 assert(instance
< FSL_FEATURE_SIM_OPT_UART_COUNT
);
755 BW_SIM_SOPT5_UART0RXSRC(baseAddr
, select
);
758 BW_SIM_SOPT5_UART1RXSRC(baseAddr
, select
);
765 /*FUNCTION**********************************************************************
767 * Function Name : SIM_HAL_GetAdcPreTriggerMode
768 * Description : Get UARTx receive data source select setting
769 * This function will get UARTx receive data source select setting.
771 *END**************************************************************************/
772 sim_uart_rxsrc_t
SIM_HAL_GetUartRxSrcMode(uint32_t baseAddr
, uint8_t instance
)
774 sim_uart_rxsrc_t retValue
= (sim_uart_rxsrc_t
)0;
776 assert(instance
< FSL_FEATURE_SIM_OPT_UART_COUNT
);
781 retValue
= (sim_uart_rxsrc_t
)BR_SIM_SOPT5_UART0RXSRC(baseAddr
);
784 retValue
= (sim_uart_rxsrc_t
)BR_SIM_SOPT5_UART1RXSRC(baseAddr
);
793 /*FUNCTION**********************************************************************
795 * Function Name : SIM_HAL_SetUartTxSrcMode
796 * Description : Set UARTx transmit data source select setting
797 * This function will select the source for the UARTx transmit data.
799 *END**************************************************************************/
800 void SIM_HAL_SetUartTxSrcMode(uint32_t baseAddr
, uint8_t instance
, sim_uart_txsrc_t select
)
802 assert(instance
< FSL_FEATURE_SIM_OPT_UART_COUNT
);
807 BW_SIM_SOPT5_UART0TXSRC(baseAddr
, select
);
810 BW_SIM_SOPT5_UART1TXSRC(baseAddr
, select
);
817 /*FUNCTION**********************************************************************
819 * Function Name : SIM_HAL_GetUartTxSrcMode
820 * Description : Get UARTx transmit data source select setting
821 * This function will get UARTx transmit data source select setting.
823 *END**************************************************************************/
824 sim_uart_txsrc_t
SIM_HAL_GetUartTxSrcMode(uint32_t baseAddr
, uint8_t instance
)
826 sim_uart_txsrc_t retValue
=(sim_uart_txsrc_t
)0;
828 assert(instance
< FSL_FEATURE_SIM_OPT_UART_COUNT
);
833 retValue
= (sim_uart_txsrc_t
)BR_SIM_SOPT5_UART0TXSRC(baseAddr
);
836 retValue
= (sim_uart_txsrc_t
)BR_SIM_SOPT5_UART1TXSRC(baseAddr
);
845 #if FSL_FEATURE_SIM_OPT_HAS_ODE
846 /*FUNCTION**********************************************************************
848 * Function Name : SIM_HAL_SetUartOpenDrainCmd
849 * Description : Set UARTx Open Drain Enable setting
850 * This function will enable/disable the UARTx Open Drain.
852 *END**************************************************************************/
853 void SIM_HAL_SetUartOpenDrainCmd(uint32_t baseAddr
, uint8_t instance
, bool enable
)
855 assert(instance
< FSL_FEATURE_SIM_OPT_UART_COUNT
);
860 BW_SIM_SOPT5_UART0ODE(baseAddr
, enable
? 1 : 0);
863 BW_SIM_SOPT5_UART1ODE(baseAddr
, enable
? 1 : 0);
866 BW_SIM_SOPT5_UART2ODE(baseAddr
, enable
? 1 : 0);
873 /*FUNCTION**********************************************************************
875 * Function Name : SIM_HAL_GetUartOpenDrainCmd
876 * Description : Get UARTx Open Drain Enable setting
877 * This function will get UARTx Open Drain Enable setting.
879 *END**************************************************************************/
880 bool SIM_HAL_GetUartOpenDrainCmd(uint32_t baseAddr
, uint8_t instance
)
882 bool retValue
= false;
884 assert(instance
< FSL_FEATURE_SIM_OPT_UART_COUNT
);
889 retValue
= BR_SIM_SOPT5_UART0ODE(baseAddr
);
892 retValue
= BR_SIM_SOPT5_UART1ODE(baseAddr
);
895 retValue
= BR_SIM_SOPT5_UART2ODE(baseAddr
);
905 #if FSL_FEATURE_SIM_OPT_HAS_FTM
906 /*FUNCTION**********************************************************************
908 * Function Name : SIM_HAL_SetFtmTriggerSrcMode
909 * Description : Set FlexTimer x hardware trigger y source select setting
910 * This function will select the source of FTMx hardware trigger y.
912 *END**************************************************************************/
913 void SIM_HAL_SetFtmTriggerSrcMode(uint32_t baseAddr
,
916 sim_ftm_trg_src_t select
)
918 assert (instance
< HW_FTM_INSTANCE_COUNT
);
919 assert (trigger
< FSL_FEATURE_SIM_OPT_FTM_TRIGGER_COUNT
);
923 #if FSL_FEATURE_SIM_OPT_HAS_FTM0_TRIGGER
928 BW_SIM_SOPT4_FTM0TRG0SRC(baseAddr
, select
);
931 BW_SIM_SOPT4_FTM0TRG1SRC(baseAddr
, select
);
938 #if FSL_FEATURE_SIM_OPT_HAS_FTM3_TRIGGER
943 BW_SIM_SOPT4_FTM3TRG0SRC(baseAddr
, select
);
946 BW_SIM_SOPT4_FTM3TRG1SRC(baseAddr
, select
);
958 /*FUNCTION**********************************************************************
960 * Function Name : SIM_HAL_GetFtmTriggerSrcMode
961 * Description : Get FlexTimer x hardware trigger y source select setting
962 * This function will get FlexTimer x hardware trigger y source select setting.
964 *END**************************************************************************/
965 sim_ftm_trg_src_t
SIM_HAL_GetFtmTriggerSrcMode(uint32_t baseAddr
, uint8_t instance
, uint8_t trigger
)
967 sim_ftm_trg_src_t retValue
= (sim_ftm_trg_src_t
)0;
969 assert (instance
< HW_FTM_INSTANCE_COUNT
);
970 assert (trigger
< FSL_FEATURE_SIM_OPT_FTM_TRIGGER_COUNT
);
974 #if FSL_FEATURE_SIM_OPT_HAS_FTM0_TRIGGER
979 retValue
= (sim_ftm_trg_src_t
)BR_SIM_SOPT4_FTM0TRG0SRC(baseAddr
);
982 retValue
= (sim_ftm_trg_src_t
)BR_SIM_SOPT4_FTM0TRG1SRC(baseAddr
);
989 #if FSL_FEATURE_SIM_OPT_HAS_FTM3_TRIGGER
994 retValue
= (sim_ftm_trg_src_t
)BR_SIM_SOPT4_FTM3TRG0SRC(baseAddr
);
997 retValue
= (sim_ftm_trg_src_t
)BR_SIM_SOPT4_FTM3TRG1SRC(baseAddr
);
1011 /*FUNCTION**********************************************************************
1013 * Function Name : SIM_HAL_SetFtmExternalClkPinMode
1014 * Description : Set FlexTimer x external clock pin select setting
1015 * This function will select the source of FTMx external clock pin select
1017 *END**************************************************************************/
1018 void SIM_HAL_SetFtmExternalClkPinMode(uint32_t baseAddr
, uint8_t instance
, sim_ftm_clk_sel_t select
)
1020 assert (instance
< HW_FTM_INSTANCE_COUNT
);
1025 BW_SIM_SOPT4_FTM0CLKSEL(baseAddr
, select
);
1028 BW_SIM_SOPT4_FTM1CLKSEL(baseAddr
, select
);
1031 BW_SIM_SOPT4_FTM2CLKSEL(baseAddr
, select
);
1033 #if (HW_FTM_INSTANCE_COUNT > 3)
1035 BW_SIM_SOPT4_FTM3CLKSEL(baseAddr
, select
);
1043 /*FUNCTION**********************************************************************
1045 * Function Name : SIM_HAL_GetFtmExternalClkPinMode
1046 * Description : Get FlexTimer x external clock pin select setting
1047 * This function will get FlexTimer x external clock pin select setting.
1049 *END**************************************************************************/
1050 sim_ftm_clk_sel_t
SIM_HAL_GetFtmExternalClkPinMode(uint32_t baseAddr
, uint8_t instance
)
1052 sim_ftm_clk_sel_t retValue
= (sim_ftm_clk_sel_t
)0;
1054 assert (instance
< HW_FTM_INSTANCE_COUNT
);
1059 retValue
= (sim_ftm_clk_sel_t
)BR_SIM_SOPT4_FTM0CLKSEL(baseAddr
);
1062 retValue
= (sim_ftm_clk_sel_t
)BR_SIM_SOPT4_FTM1CLKSEL(baseAddr
);
1065 retValue
= (sim_ftm_clk_sel_t
)BR_SIM_SOPT4_FTM2CLKSEL(baseAddr
);
1067 #if (HW_FTM_INSTANCE_COUNT > 3)
1069 retValue
= (sim_ftm_clk_sel_t
)BR_SIM_SOPT4_FTM3CLKSEL(baseAddr
);
1079 /*FUNCTION**********************************************************************
1081 * Function Name : SIM_HAL_SetFtmChSrcMode
1082 * Description : FlexTimer x channel y input capture source select setting
1083 * This function will select FlexTimer x channel y input capture source
1085 *END**************************************************************************/
1086 void SIM_HAL_SetFtmChSrcMode(uint32_t baseAddr
,
1089 sim_ftm_ch_src_t select
)
1091 assert (instance
< HW_FTM_INSTANCE_COUNT
);
1095 #if FSL_FEATURE_SIM_OPT_HAS_FTM1_CHANNELS
1100 BW_SIM_SOPT4_FTM1CH0SRC(baseAddr
, select
);
1107 #if FSL_FEATURE_SIM_OPT_HAS_FTM2_CHANNELS
1112 BW_SIM_SOPT4_FTM2CH0SRC(baseAddr
, select
);
1114 #if FSL_FEATURE_SIM_OPT_HAS_FTM2_CHANNEL1
1116 BW_SIM_SOPT4_FTM2CH1SRC(baseAddr
, select
);
1124 #if FSL_FEATURE_SIM_OPT_HAS_FTM3_CHANNELS
1129 BW_SIM_SOPT4_FTM3CH0SRC(baseAddr
, select
);
1141 /*FUNCTION**********************************************************************
1143 * Function Name : SIM_HAL_GetFtmChSrcMode
1144 * Description : Get FlexTimer x channel y input capture source select setting
1145 * This function will get FlexTimer x channel y input capture source select
1148 *END**************************************************************************/
1149 sim_ftm_ch_src_t
SIM_HAL_GetFtmChSrcMode(uint32_t baseAddr
, uint8_t instance
, uint8_t channel
)
1151 sim_ftm_ch_src_t retValue
= (sim_ftm_ch_src_t
)0;
1153 assert (instance
< HW_FTM_INSTANCE_COUNT
);
1157 #if FSL_FEATURE_SIM_OPT_HAS_FTM1_CHANNELS
1162 retValue
= (sim_ftm_ch_src_t
)BR_SIM_SOPT4_FTM1CH0SRC(baseAddr
);
1169 #if FSL_FEATURE_SIM_OPT_HAS_FTM2_CHANNELS
1174 retValue
= (sim_ftm_ch_src_t
)BR_SIM_SOPT4_FTM2CH0SRC(baseAddr
);
1176 #if FSL_FEATURE_SIM_OPT_HAS_FTM2_CHANNEL1
1178 retValue
= (sim_ftm_ch_src_t
)BR_SIM_SOPT4_FTM2CH1SRC(baseAddr
);
1186 #if FSL_FEATURE_SIM_OPT_HAS_FTM3_CHANNELS
1191 retValue
= (sim_ftm_ch_src_t
)BR_SIM_SOPT4_FTM3CH0SRC(baseAddr
);
1205 /*FUNCTION**********************************************************************
1207 * Function Name : SIM_HAL_SetFtmFaultSelMode
1208 * Description : Set FlexTimer x fault y select setting
1209 * This function will set the FlexTimer x fault y select setting.
1211 *END**************************************************************************/
1212 void SIM_HAL_SetFtmFaultSelMode(uint32_t baseAddr
,
1215 sim_ftm_flt_sel_t select
)
1217 assert (instance
< HW_FTM_INSTANCE_COUNT
);
1225 BW_SIM_SOPT4_FTM0FLT0(baseAddr
, select
);
1228 BW_SIM_SOPT4_FTM0FLT1(baseAddr
, select
);
1230 #if (FSL_FEATURE_SIM_OPT_FTM0_FAULT_COUNT > 2)
1232 BW_SIM_SOPT4_FTM0FLT2(baseAddr
, select
);
1234 #if (FSL_FEATURE_SIM_OPT_FTM0_FAULT_COUNT > 3)
1236 BW_SIM_SOPT4_FTM0FLT3(baseAddr
, select
);
1245 BW_SIM_SOPT4_FTM1FLT0(baseAddr
, select
);
1248 BW_SIM_SOPT4_FTM2FLT0(baseAddr
, select
);
1250 #if (HW_FTM_INSTANCE_COUNT > 3)
1252 BW_SIM_SOPT4_FTM3FLT0(baseAddr
, select
);
1260 /*FUNCTION**********************************************************************
1262 * Function Name : SIM_HAL_GetFtmFaultSelMode
1263 * Description : Get FlexTimer x fault y select setting
1264 * This function will get FlexTimer x fault y select setting.
1266 *END**************************************************************************/
1267 sim_ftm_flt_sel_t
SIM_HAL_GetFtmFaultSelMode(uint32_t baseAddr
, uint8_t instance
, uint8_t fault
)
1269 sim_ftm_flt_sel_t retValue
= (sim_ftm_flt_sel_t
)0;
1271 assert (instance
< HW_FTM_INSTANCE_COUNT
);
1279 retValue
= (sim_ftm_flt_sel_t
)BR_SIM_SOPT4_FTM0FLT0(baseAddr
);
1282 retValue
= (sim_ftm_flt_sel_t
)BR_SIM_SOPT4_FTM0FLT1(baseAddr
);
1284 #if (FSL_FEATURE_SIM_OPT_FTM0_FAULT_COUNT > 2)
1286 retValue
= (sim_ftm_flt_sel_t
)BR_SIM_SOPT4_FTM0FLT2(baseAddr
);
1288 #if (FSL_FEATURE_SIM_OPT_FTM0_FAULT_COUNT > 3)
1290 retValue
= (sim_ftm_flt_sel_t
)BR_SIM_SOPT4_FTM0FLT3(baseAddr
);
1299 retValue
= (sim_ftm_flt_sel_t
)BR_SIM_SOPT4_FTM1FLT0(baseAddr
);
1302 retValue
= (sim_ftm_flt_sel_t
)BR_SIM_SOPT4_FTM2FLT0(baseAddr
);
1304 #if (HW_FTM_INSTANCE_COUNT > 3)
1306 retValue
= (sim_ftm_flt_sel_t
)BR_SIM_SOPT4_FTM3FLT0(baseAddr
);
1317 #if FSL_FEATURE_SIM_OPT_HAS_TPM
1318 /*FUNCTION**********************************************************************
1320 * Function Name : SIM_HAL_SetTpmExternalClkPinSelMode
1321 * Description : Set Timer/PWM x external clock pin select setting
1322 * This function will select the source of Timer/PWM x external clock pin select
1324 *END**************************************************************************/
1325 void SIM_HAL_SetTpmExternalClkPinSelMode(uint32_t baseAddr
,
1327 sim_tpm_clk_sel_t select
)
1329 assert (instance
< HW_TPM_INSTANCE_COUNT
);
1334 BW_SIM_SOPT4_TPM0CLKSEL(baseAddr
, select
);
1337 BW_SIM_SOPT4_TPM1CLKSEL(baseAddr
, select
);
1340 BW_SIM_SOPT4_TPM2CLKSEL(baseAddr
, select
);
1347 /*FUNCTION**********************************************************************
1349 * Function Name : SIM_HAL_GetTpmExternalClkPinSelMode
1350 * Description : Get Timer/PWM x external clock pin select setting
1351 * This function will get Timer/PWM x external clock pin select setting.
1353 *END**************************************************************************/
1354 sim_tpm_clk_sel_t
SIM_HAL_GetTpmExternalClkPinSelMode(uint32_t baseAddr
, uint8_t instance
)
1356 sim_tpm_clk_sel_t retValue
= (sim_tpm_clk_sel_t
)0;
1358 assert (instance
< HW_TPM_INSTANCE_COUNT
);
1363 retValue
= (sim_tpm_clk_sel_t
)BR_SIM_SOPT4_TPM0CLKSEL(baseAddr
);
1366 retValue
= (sim_tpm_clk_sel_t
)BR_SIM_SOPT4_TPM1CLKSEL(baseAddr
);
1369 retValue
= (sim_tpm_clk_sel_t
)BR_SIM_SOPT4_TPM2CLKSEL(baseAddr
);
1378 /*FUNCTION**********************************************************************
1380 * Function Name : SIM_HAL_SetTpmChSrcMode
1381 * Description : Timer/PWM x channel y input capture source select setting
1382 * This function will select Timer/PWM x channel y input capture source
1384 *END**************************************************************************/
1385 void SIM_HAL_SetTpmChSrcMode(uint32_t baseAddr
,
1388 sim_tpm_ch_src_t select
)
1390 assert (instance
< HW_TPM_INSTANCE_COUNT
);
1398 BW_SIM_SOPT4_TPM1CH0SRC(baseAddr
, select
);
1408 BW_SIM_SOPT4_TPM2CH0SRC(baseAddr
, select
);
1419 /*FUNCTION**********************************************************************
1421 * Function Name : SIM_HAL_GetTpmChSrcMode
1422 * Description : Get Timer/PWM x channel y input capture source select setting
1423 * This function will get Timer/PWM x channel y input capture source select
1426 *END**************************************************************************/
1427 sim_tpm_ch_src_t
SIM_HAL_GetTpmChSrcMode(uint32_t baseAddr
,
1431 sim_tpm_ch_src_t retValue
= (sim_tpm_ch_src_t
)0;
1433 assert (instance
< HW_TPM_INSTANCE_COUNT
);
1441 retValue
= (sim_tpm_ch_src_t
)BR_SIM_SOPT4_TPM1CH0SRC(baseAddr
);
1451 retValue
= (sim_tpm_ch_src_t
)BR_SIM_SOPT4_TPM2CH0SRC(baseAddr
);
1465 /*******************************************************************************
1467 ******************************************************************************/