S32 SDK
pmc_hal.c
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2013 - 2016, Freescale Semiconductor, Inc.
3  * Copyright 2016-2017 NXP
4  * All rights reserved.
5  *
6  * THIS SOFTWARE IS PROVIDED BY NXP "AS IS" AND ANY EXPRESSED OR
7  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
8  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
9  * IN NO EVENT SHALL NXP OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
10  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
11  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
12  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
13  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
14  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
15  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
16  * THE POSSIBILITY OF SUCH DAMAGE.
17  */
18 
30 #include "pmc_hal.h"
31 
32 /*******************************************************************************
33  * Definitions
34  ******************************************************************************/
35 
36 /*******************************************************************************
37  * Code
38  ******************************************************************************/
39 
40 /*FUNCTION**********************************************************************
41  *
42  * Function Name : PMC_HAL_SetLowVoltIntCmd
43  * Description : Enable/Disable low voltage related interrupts
44  * This function enables the the low voltage detection, warning, etc. interrupts.
45  * When enabled, if the LVDF (Low Voltage Detect Flag) is set, a hardware
46  * interrupt occurs.
47  *
48  * Implements PMC_HAL_SetLowVoltIntCmd_Activity
49  *END**************************************************************************/
50 void PMC_HAL_SetLowVoltIntCmd(PMC_Type* const baseAddr, const pmc_int_select_t intSelect, const bool enable)
51 {
52  uint8_t regValue;
53  uint8_t enableValue = (uint8_t)(enable ? 1U : 0U);
54 
55  switch (intSelect)
56  {
57  case PMC_INT_LOW_VOLT_DETECT: /* Low Voltage Detect */
58  regValue = baseAddr->LVDSC1;
59  regValue &= (uint8_t)(~(PMC_LVDSC1_LVDIE_MASK));
60  regValue |= (uint8_t)PMC_LVDSC1_LVDIE(enableValue);
61  baseAddr->LVDSC1 = regValue;
62  break;
63  case PMC_INT_LOW_VOLT_WARN: /* Low Voltage Warning */
64  regValue = baseAddr->LVDSC2;
65  regValue &= (uint8_t)(~(PMC_LVDSC2_LVWIE_MASK));
66  regValue |= (uint8_t)PMC_LVDSC2_LVWIE(enableValue);
67  baseAddr->LVDSC2 = regValue;
68  break;
69  default:
70  /* invalid command */
71  break;
72  }
73 }
74 
75 /*FUNCTION**********************************************************************
76  *
77  * Function Name : PMC_HAL_SetLowVoltIntAckCmd
78  * Description : Acknowledges low voltage related interrupts
79  * This function acknowledges the low voltage detection, warning,
80  * etc. interrupts
81  *
82  * Implements PMC_HAL_SetLowVoltIntAckCmd_Activity
83  *END**************************************************************************/
84 void PMC_HAL_SetLowVoltIntAckCmd(PMC_Type* const baseAddr, const pmc_int_select_t intSelect)
85 {
86  uint8_t regValue;
87 
88  switch (intSelect)
89  {
90  case PMC_INT_LOW_VOLT_DETECT: /* Low Voltage Detect */
91  regValue = (uint8_t)baseAddr->LVDSC1;
92  regValue &= (uint8_t)(~(PMC_LVDSC1_LVDACK_MASK));
93  regValue |= (uint8_t)PMC_LVDSC1_LVDACK(1U);
94  baseAddr->LVDSC1 = (uint8_t)regValue;
95  break;
96  case PMC_INT_LOW_VOLT_WARN: /* Low Voltage Warning */
97  regValue = (uint8_t)baseAddr->LVDSC2;
98  regValue &= (uint8_t)(~(PMC_LVDSC2_LVWACK_MASK));
99  regValue |= (uint8_t)PMC_LVDSC2_LVWACK(1U);
100  baseAddr->LVDSC2 = (uint8_t)regValue;
101  break;
102  default:
103  /* invalid command */
104  break;
105  }
106 }
107 
108 /*FUNCTION**********************************************************************
109  *
110  * Function Name : PMC_HAL_GetLowVoltIntFlag
111  * Description : Returns the flag for low voltage related interrupts
112  * This function returns the flag for the low voltage detection, warning,
113  * etc. interrupts
114  *
115  * Implements PMC_HAL_GetLowVoltIntFlag_Activity
116  *END**************************************************************************/
117 bool PMC_HAL_GetLowVoltIntFlag(const PMC_Type* const baseAddr, const pmc_int_select_t intSelect)
118 {
119  bool flag;
120  uint8_t regValue;
121 
122  switch (intSelect)
123  {
124  case PMC_INT_LOW_VOLT_DETECT: /* Low Voltage Detect */
125  regValue = baseAddr->LVDSC1;
126  regValue = (uint8_t)((regValue & PMC_LVDSC1_LVDF_MASK) >> PMC_LVDSC1_LVDF_SHIFT);
127  break;
128  case PMC_INT_LOW_VOLT_WARN: /* Low Voltage Warning */
129  regValue = baseAddr->LVDSC2;
130  regValue = (uint8_t)((regValue & PMC_LVDSC2_LVWF_MASK) >> PMC_LVDSC2_LVWF_SHIFT);
131  break;
132  default:
133  regValue = 0U;
134  break;
135  }
136  flag = (regValue == 0U) ? false : true;
137  return flag;
138 }
139 
140 
141 
142 
143 
144 
145 /*******************************************************************************
146  * EOF
147  ******************************************************************************/
148 
#define PMC_LVDSC2_LVWACK(x)
Definition: S32K144.h:8493
pmc_int_select_t
Power management control interrupts Implements pmc_int_select_t_Class.
Definition: pmc_hal.h:52
#define PMC_LVDSC2_LVWACK_MASK
Definition: S32K144.h:8490
void PMC_HAL_SetLowVoltIntAckCmd(PMC_Type *const baseAddr, const pmc_int_select_t intSelect)
Acknowledges the low voltage-related interrupts.
Definition: pmc_hal.c:84
#define PMC_LVDSC2_LVWF_MASK
Definition: S32K144.h:8494
#define PMC_LVDSC1_LVDIE_MASK
Definition: S32K144.h:8473
#define PMC_LVDSC2_LVWIE_MASK
Definition: S32K144.h:8486
#define PMC_LVDSC1_LVDF_SHIFT
Definition: S32K144.h:8482
#define PMC_LVDSC2_LVWF_SHIFT
Definition: S32K144.h:8495
__IO uint8_t LVDSC1
Definition: S32K144.h:8432
#define PMC_LVDSC1_LVDIE(x)
Definition: S32K144.h:8476
#define PMC_LVDSC1_LVDACK(x)
Definition: S32K144.h:8480
void PMC_HAL_SetLowVoltIntCmd(PMC_Type *const baseAddr, const pmc_int_select_t intSelect, const bool enable)
Enables/Disables the low voltage-related interrupts.
Definition: pmc_hal.c:50
#define PMC_LVDSC1_LVDF_MASK
Definition: S32K144.h:8481
bool PMC_HAL_GetLowVoltIntFlag(const PMC_Type *const baseAddr, const pmc_int_select_t intSelect)
Gets the flag for the low voltage-related interrupts.
Definition: pmc_hal.c:117
#define PMC_LVDSC2_LVWIE(x)
Definition: S32K144.h:8489
__IO uint8_t LVDSC2
Definition: S32K144.h:8433
#define PMC_LVDSC1_LVDACK_MASK
Definition: S32K144.h:8477