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_llwu_hal.h"
33 /*******************************************************************************
35 ******************************************************************************/
37 /*******************************************************************************
39 ******************************************************************************/
41 /*FUNCTION**********************************************************************
43 * Function Name : LLWU_HAL_SetExternalInputPinMode
44 * Description : Set external input pin source mode
45 * This function will set the external input pin source mode that will be used
48 *END**************************************************************************/
49 void LLWU_HAL_SetExternalInputPinMode(uint32_t baseAddr
,
50 llwu_external_pin_modes_t pinMode
,
53 /* check pin number */
54 assert(pinNumber
< FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN
);
59 BW_LLWU_PE1_WUPE0(baseAddr
, pinMode
);
62 BW_LLWU_PE1_WUPE1(baseAddr
, pinMode
);
65 BW_LLWU_PE1_WUPE2(baseAddr
, pinMode
);
68 BW_LLWU_PE1_WUPE3(baseAddr
, pinMode
);
71 BW_LLWU_PE2_WUPE4(baseAddr
, pinMode
);
74 BW_LLWU_PE2_WUPE5(baseAddr
, pinMode
);
77 BW_LLWU_PE2_WUPE6(baseAddr
, pinMode
);
80 BW_LLWU_PE2_WUPE7(baseAddr
, pinMode
);
83 BW_LLWU_PE3_WUPE8(baseAddr
, pinMode
);
86 BW_LLWU_PE3_WUPE9(baseAddr
, pinMode
);
89 BW_LLWU_PE3_WUPE10(baseAddr
, pinMode
);
92 BW_LLWU_PE3_WUPE11(baseAddr
, pinMode
);
95 BW_LLWU_PE4_WUPE12(baseAddr
, pinMode
);
98 BW_LLWU_PE4_WUPE13(baseAddr
, pinMode
);
101 BW_LLWU_PE4_WUPE14(baseAddr
, pinMode
);
104 BW_LLWU_PE4_WUPE15(baseAddr
, pinMode
);
111 /*FUNCTION**********************************************************************
113 * Function Name : LLWU_HAL_GetExternalInputPinMode
114 * Description : Get external input pin source mode
115 * This function will get the external input pin source mode that will be used
118 *END**************************************************************************/
119 llwu_external_pin_modes_t
LLWU_HAL_GetExternalInputPinMode(uint32_t baseAddr
,
122 llwu_external_pin_modes_t retValue
= (llwu_external_pin_modes_t
)0;
124 /* check pin number */
125 assert(pinNumber
< FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN
);
130 retValue
= (llwu_external_pin_modes_t
)BR_LLWU_PE1_WUPE0(baseAddr
);
133 retValue
= (llwu_external_pin_modes_t
)BR_LLWU_PE1_WUPE1(baseAddr
);
136 retValue
= (llwu_external_pin_modes_t
)BR_LLWU_PE1_WUPE2(baseAddr
);
139 retValue
= (llwu_external_pin_modes_t
)BR_LLWU_PE1_WUPE3(baseAddr
);
142 retValue
= (llwu_external_pin_modes_t
)BR_LLWU_PE2_WUPE4(baseAddr
);
145 retValue
= (llwu_external_pin_modes_t
)BR_LLWU_PE2_WUPE5(baseAddr
);
148 retValue
= (llwu_external_pin_modes_t
)BR_LLWU_PE2_WUPE6(baseAddr
);
151 retValue
= (llwu_external_pin_modes_t
)BR_LLWU_PE2_WUPE7(baseAddr
);
154 retValue
= (llwu_external_pin_modes_t
)BR_LLWU_PE3_WUPE8(baseAddr
);
157 retValue
= (llwu_external_pin_modes_t
)BR_LLWU_PE3_WUPE9(baseAddr
);
160 retValue
= (llwu_external_pin_modes_t
)BR_LLWU_PE3_WUPE10(baseAddr
);
163 retValue
= (llwu_external_pin_modes_t
)BR_LLWU_PE3_WUPE11(baseAddr
);
166 retValue
= (llwu_external_pin_modes_t
)BR_LLWU_PE4_WUPE12(baseAddr
);
169 retValue
= (llwu_external_pin_modes_t
)BR_LLWU_PE4_WUPE13(baseAddr
);
172 retValue
= (llwu_external_pin_modes_t
)BR_LLWU_PE4_WUPE14(baseAddr
);
175 retValue
= (llwu_external_pin_modes_t
)BR_LLWU_PE4_WUPE15(baseAddr
);
178 retValue
= (llwu_external_pin_modes_t
)0;
185 /*FUNCTION**********************************************************************
187 * Function Name : LLWU_HAL_SetInternalModuleCmd
188 * Description : Enable/disable internal module source
189 * This function will enable/disable the internal module source mode that will
190 * be used as wake up source.
192 *END**************************************************************************/
193 void LLWU_HAL_SetInternalModuleCmd(uint32_t baseAddr
, uint32_t moduleNumber
, bool enable
)
195 /* check module number */
196 assert(moduleNumber
< FSL_FEATURE_LLWU_HAS_INTERNAL_MODULE
);
198 switch (moduleNumber
)
201 BW_LLWU_ME_WUME0(baseAddr
, enable
);
204 BW_LLWU_ME_WUME1(baseAddr
, enable
);
207 BW_LLWU_ME_WUME2(baseAddr
, enable
);
210 BW_LLWU_ME_WUME3(baseAddr
, enable
);
213 BW_LLWU_ME_WUME4(baseAddr
, enable
);
216 BW_LLWU_ME_WUME5(baseAddr
, enable
);
219 BW_LLWU_ME_WUME6(baseAddr
, enable
);
222 BW_LLWU_ME_WUME7(baseAddr
, enable
);
229 /*FUNCTION**********************************************************************
231 * Function Name : LLWU_HAL_GetInternalModuleCmd
232 * Description : Get internal module source enable setting
233 * This function will enable/disable the internal module source mode that will
234 * be used as wake up source.
236 *END**************************************************************************/
237 bool LLWU_HAL_GetInternalModuleCmd(uint32_t baseAddr
, uint32_t moduleNumber
)
239 bool retValue
= false;
241 /* check module number */
242 assert(moduleNumber
< FSL_FEATURE_LLWU_HAS_INTERNAL_MODULE
);
244 switch (moduleNumber
)
247 retValue
= (bool)BR_LLWU_ME_WUME0(baseAddr
);
250 retValue
= (bool)BR_LLWU_ME_WUME1(baseAddr
);
253 retValue
= (bool)BR_LLWU_ME_WUME2(baseAddr
);
256 retValue
= (bool)BR_LLWU_ME_WUME3(baseAddr
);
259 retValue
= (bool)BR_LLWU_ME_WUME4(baseAddr
);
262 retValue
= (bool)BR_LLWU_ME_WUME5(baseAddr
);
265 retValue
= (bool)BR_LLWU_ME_WUME6(baseAddr
);
268 retValue
= (bool)BR_LLWU_ME_WUME7(baseAddr
);
278 /*FUNCTION**********************************************************************
280 * Function Name : LLWU_HAL_GetExternalPinWakeupFlag
281 * Description : Get external wakeup source flag
282 * This function will get the external wakeup source flag for specific pin.
284 *END**************************************************************************/
285 bool LLWU_HAL_GetExternalPinWakeupFlag(uint32_t baseAddr
, uint32_t pinNumber
)
287 bool retValue
= false;
289 /* check pin number */
290 assert(pinNumber
< FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN
);
295 retValue
= (bool)BR_LLWU_F1_WUF0(baseAddr
);
298 retValue
= (bool)BR_LLWU_F1_WUF1(baseAddr
);
301 retValue
= (bool)BR_LLWU_F1_WUF2(baseAddr
);
304 retValue
= (bool)BR_LLWU_F1_WUF3(baseAddr
);
307 retValue
= (bool)BR_LLWU_F1_WUF4(baseAddr
);
310 retValue
= (bool)BR_LLWU_F1_WUF5(baseAddr
);
313 retValue
= (bool)BR_LLWU_F1_WUF6(baseAddr
);
316 retValue
= (bool)BR_LLWU_F1_WUF7(baseAddr
);
319 retValue
= (bool)BR_LLWU_F2_WUF8(baseAddr
);
322 retValue
= (bool)BR_LLWU_F2_WUF9(baseAddr
);
325 retValue
= (bool)BR_LLWU_F2_WUF10(baseAddr
);
328 retValue
= (bool)BR_LLWU_F2_WUF11(baseAddr
);
331 retValue
= (bool)BR_LLWU_F2_WUF12(baseAddr
);
334 retValue
= (bool)BR_LLWU_F2_WUF13(baseAddr
);
337 retValue
= (bool)BR_LLWU_F2_WUF14(baseAddr
);
340 retValue
= (bool)BR_LLWU_F2_WUF15(baseAddr
);
350 /*FUNCTION**********************************************************************
352 * Function Name : LLWU_HAL_ClearExternalPinWakeupFlag
353 * Description : Clear external wakeup source flag
354 * This function will clear the external wakeup source flag for specific pin.
356 *END**************************************************************************/
357 void LLWU_HAL_ClearExternalPinWakeupFlag(uint32_t baseAddr
, uint32_t pinNumber
)
359 /* check pin number */
360 assert(pinNumber
< FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN
);
365 BW_LLWU_F1_WUF0(baseAddr
, 1);
368 BW_LLWU_F1_WUF1(baseAddr
, 1);
371 BW_LLWU_F1_WUF2(baseAddr
, 1);
374 BW_LLWU_F1_WUF3(baseAddr
, 1);
377 BW_LLWU_F1_WUF4(baseAddr
, 1);
380 BW_LLWU_F1_WUF5(baseAddr
, 1);
383 BW_LLWU_F1_WUF6(baseAddr
, 1);
386 BW_LLWU_F1_WUF7(baseAddr
, 1);
389 BW_LLWU_F2_WUF8(baseAddr
, 1);
392 BW_LLWU_F2_WUF9(baseAddr
, 1);
395 BW_LLWU_F2_WUF10(baseAddr
, 1);
398 BW_LLWU_F2_WUF11(baseAddr
, 1);
401 BW_LLWU_F2_WUF12(baseAddr
, 1);
404 BW_LLWU_F2_WUF13(baseAddr
, 1);
407 BW_LLWU_F2_WUF14(baseAddr
, 1);
410 BW_LLWU_F2_WUF15(baseAddr
, 1);
417 /*FUNCTION**********************************************************************
419 * Function Name : LLWU_HAL_GetInternalModuleWakeupFlag
420 * Description : Get internal module wakeup source flag
421 * This function will get the internal module wakeup source flag for specific
424 *END**************************************************************************/
425 bool LLWU_HAL_GetInternalModuleWakeupFlag(uint32_t baseAddr
, uint32_t moduleNumber
)
427 bool retValue
= false;
429 /* check module number */
430 assert(moduleNumber
< FSL_FEATURE_LLWU_HAS_INTERNAL_MODULE
);
432 switch (moduleNumber
)
435 retValue
= (bool)BR_LLWU_F3_MWUF0(baseAddr
);
438 retValue
= (bool)BR_LLWU_F3_MWUF1(baseAddr
);
441 retValue
= (bool)BR_LLWU_F3_MWUF2(baseAddr
);
444 retValue
= (bool)BR_LLWU_F3_MWUF3(baseAddr
);
447 retValue
= (bool)BR_LLWU_F3_MWUF4(baseAddr
);
450 retValue
= (bool)BR_LLWU_F3_MWUF5(baseAddr
);
453 retValue
= (bool)BR_LLWU_F3_MWUF6(baseAddr
);
456 retValue
= (bool)BR_LLWU_F3_MWUF7(baseAddr
);
466 /*FUNCTION**********************************************************************
468 * Function Name : LLWU_HAL_SetPinFilterMode
469 * Description : Set pin filter configuration
470 * This function will set the pin filter configuration.
472 *END**************************************************************************/
473 void LLWU_HAL_SetPinFilterMode(uint32_t baseAddr
,
474 uint32_t filterNumber
,
475 llwu_external_pin_filter_mode_t pinFilterMode
)
477 /* check filter and pin number */
478 assert(filterNumber
< FSL_FEATURE_LLWU_HAS_PIN_FILTER
);
479 assert(pinFilterMode
.pinNumber
< FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN
);
481 /* branch to filter number */
485 BW_LLWU_FILT1_FILTSEL(baseAddr
, pinFilterMode
.pinNumber
);
486 BW_LLWU_FILT1_FILTE(baseAddr
, pinFilterMode
.filterMode
);
489 BW_LLWU_FILT2_FILTSEL(baseAddr
, pinFilterMode
.pinNumber
);
490 BW_LLWU_FILT2_FILTE(baseAddr
, pinFilterMode
.filterMode
);
497 /*FUNCTION**********************************************************************
499 * Function Name : LLWU_HAL_GetPinFilterMode
500 * Description : Get pin filter configuration.
501 * This function will get the pin filter configuration.
503 *END**************************************************************************/
504 void LLWU_HAL_GetPinFilterMode(uint32_t baseAddr
,
505 uint32_t filterNumber
,
506 llwu_external_pin_filter_mode_t
*pinFilterMode
)
508 /* check filter and pin number */
509 assert(filterNumber
< FSL_FEATURE_LLWU_HAS_PIN_FILTER
);
510 assert(pinFilterMode
->pinNumber
< FSL_FEATURE_LLWU_HAS_EXTERNAL_PIN
);
512 /* branch to filter number */
516 pinFilterMode
->pinNumber
= BR_LLWU_FILT1_FILTSEL(baseAddr
);
517 pinFilterMode
->filterMode
= (llwu_filter_modes_t
)BR_LLWU_FILT1_FILTE(baseAddr
);
520 pinFilterMode
->pinNumber
= BR_LLWU_FILT2_FILTSEL(baseAddr
);
521 pinFilterMode
->filterMode
= (llwu_filter_modes_t
)BR_LLWU_FILT2_FILTE(baseAddr
);
528 /*FUNCTION**********************************************************************
530 * Function Name : LLWU_HAL_GetFilterDetectFlag
531 * Description : Get filter detect flag
532 * This function will get the filter detect flag.
534 *END**************************************************************************/
535 bool LLWU_HAL_GetFilterDetectFlag(uint32_t baseAddr
, uint32_t filterNumber
)
537 bool retValue
= false;
539 /* check filter and pin number */
540 assert(filterNumber
< FSL_FEATURE_LLWU_HAS_PIN_FILTER
);
542 /* branch to filter number */
546 retValue
= (bool)BR_LLWU_FILT1_FILTF(baseAddr
);
549 retValue
= (bool)BR_LLWU_FILT2_FILTF(baseAddr
);
559 /*FUNCTION**********************************************************************
561 * Function Name : LLWU_HAL_ClearFilterDetectFlag
562 * Description : Clear filter detect flag
563 * This function will clear the filter detect flag.
565 *END**************************************************************************/
566 void LLWU_HAL_ClearFilterDetectFlag(uint32_t baseAddr
, uint32_t filterNumber
)
568 /* check filter and pin number */
569 assert(filterNumber
< FSL_FEATURE_LLWU_HAS_PIN_FILTER
);
571 /* branch to filter number */
575 BW_LLWU_FILT1_FILTF(baseAddr
, 1);
578 BW_LLWU_FILT2_FILTF(baseAddr
, 1);
585 #if FSL_FEATURE_LLWU_HAS_RESET_ENABLE
586 /*FUNCTION**********************************************************************
588 * Function Name : LLWU_HAL_SetResetEnableMode
589 * Description : Set reset enable mode
590 * This function will set the reset enable mode.
592 *END**************************************************************************/
593 void LLWU_HAL_SetResetEnableMode(uint32_t baseAddr
, llwu_reset_enable_mode_t resetEnableMode
)
595 BW_LLWU_RST_RSTFILT(baseAddr
, resetEnableMode
.digitalFilterMode
);
596 BW_LLWU_RST_LLRSTE(baseAddr
, resetEnableMode
.lowLeakageMode
);
599 /*FUNCTION**********************************************************************
601 * Function Name : LLWU_HAL_GetResetEnableMode
602 * Description : Get reset enable mode
603 * This function will get the reset enable mode.
605 *END**************************************************************************/
606 void LLWU_HAL_GetResetEnableMode(uint32_t baseAddr
, llwu_reset_enable_mode_t
*resetEnableMode
)
608 resetEnableMode
->digitalFilterMode
= (bool)BR_LLWU_RST_RSTFILT(baseAddr
);
609 resetEnableMode
->lowLeakageMode
= (bool)BR_LLWU_RST_LLRSTE(baseAddr
);
613 /*******************************************************************************
615 ******************************************************************************/