1 //------------------------------------------------------------------------------
2 // Copyright 2012 (c) Silicon Laboratories Inc.
3 //
4 // SPDX-License-Identifier: Zlib
5 //
6 // This siHAL software is provided 'as-is', without any express or implied
7 // warranty. In no event will the authors be held liable for any damages
8 // arising from the use of this software.
9 //
10 // Permission is granted to anyone to use this software for any purpose,
11 // including commercial applications, and to alter it and redistribute it
12 // freely, subject to the following restrictions:
13 //
14 // 1. The origin of this software must not be misrepresented; you must not
15 //    claim that you wrote the original software. If you use this software
16 //    in a product, an acknowledgment in the product documentation would be
17 //    appreciated but is not required.
18 // 2. Altered source versions must be plainly marked as such, and must not be
19 //    misrepresented as being the original software.
20 // 3. This notice may not be removed or altered from any source distribution.
21 //------------------------------------------------------------------------------
22 //
23 // Script: 0.57
24 // Version: 1
25 
26 #ifndef __SI32_VMON_A_REGISTERS_H__
27 #define __SI32_VMON_A_REGISTERS_H__
28 
29 #include <stdint.h>
30 
31 #ifdef __cplusplus
32 extern "C" {
33 #endif
34 
35 struct SI32_VMON_A_CONTROL_Struct
36 {
37    union
38    {
39       struct
40       {
41          // VREGIN Supply Monitor Enable
42          volatile uint32_t VREGINSEN: 1;
43          // VREGIN Low Interrupt Flag
44          volatile uint32_t VREGINLI: 1;
45          // VDD Reset Threshold Status Flag
46          volatile uint32_t VDDRSTF: 1;
47          // VDD Low Interrupt Flag
48          volatile uint32_t VDDLI: 1;
49          // VDD High Threshold Enable
50          volatile uint32_t VDDHITHEN: 1;
51                   uint32_t reserved0: 1;
52          // VDD Low Interrupt Enable
53          volatile uint32_t VDDLIEN: 1;
54          // VREGIN Low Interrupt Enable
55          volatile uint32_t VREGINLIEN: 1;
56                   uint32_t reserved1: 23;
57          // VDD Supply Monitor Enable
58          volatile uint32_t VMONEN: 1;
59       };
60       volatile uint32_t U32;
61    };
62 };
63 
64 #define SI32_VMON_A_CONTROL_VREGINSEN_MASK  0x00000001
65 #define SI32_VMON_A_CONTROL_VREGINSEN_SHIFT  0
66 // Disable the VREGIN supply monitor.
67 #define SI32_VMON_A_CONTROL_VREGINSEN_DISABLED_VALUE  0
68 #define SI32_VMON_A_CONTROL_VREGINSEN_DISABLED_U32 \
69    (SI32_VMON_A_CONTROL_VREGINSEN_DISABLED_VALUE << SI32_VMON_A_CONTROL_VREGINSEN_SHIFT)
70 // Enable the VREGIN supply monitor.
71 #define SI32_VMON_A_CONTROL_VREGINSEN_ENABLED_VALUE  1
72 #define SI32_VMON_A_CONTROL_VREGINSEN_ENABLED_U32 \
73    (SI32_VMON_A_CONTROL_VREGINSEN_ENABLED_VALUE << SI32_VMON_A_CONTROL_VREGINSEN_SHIFT)
74 
75 #define SI32_VMON_A_CONTROL_VREGINLI_MASK  0x00000002
76 #define SI32_VMON_A_CONTROL_VREGINLI_SHIFT  1
77 // VREGIN is not above the interrupt threshold.
78 #define SI32_VMON_A_CONTROL_VREGINLI_VREGIN_IS_LOW_VALUE  0
79 #define SI32_VMON_A_CONTROL_VREGINLI_VREGIN_IS_LOW_U32 \
80    (SI32_VMON_A_CONTROL_VREGINLI_VREGIN_IS_LOW_VALUE << SI32_VMON_A_CONTROL_VREGINLI_SHIFT)
81 // VREGIN is above the interrupt threshold.
82 #define SI32_VMON_A_CONTROL_VREGINLI_VREGIN_IS_OK_VALUE  1
83 #define SI32_VMON_A_CONTROL_VREGINLI_VREGIN_IS_OK_U32 \
84    (SI32_VMON_A_CONTROL_VREGINLI_VREGIN_IS_OK_VALUE << SI32_VMON_A_CONTROL_VREGINLI_SHIFT)
85 
86 #define SI32_VMON_A_CONTROL_VDDRSTF_MASK  0x00000004
87 #define SI32_VMON_A_CONTROL_VDDRSTF_SHIFT  2
88 // The VDD voltage is below the VDD reset threshold.
89 #define SI32_VMON_A_CONTROL_VDDRSTF_VDD_IS_BELOW_RESET_VALUE  0
90 #define SI32_VMON_A_CONTROL_VDDRSTF_VDD_IS_BELOW_RESET_U32 \
91    (SI32_VMON_A_CONTROL_VDDRSTF_VDD_IS_BELOW_RESET_VALUE << SI32_VMON_A_CONTROL_VDDRSTF_SHIFT)
92 // The VDD voltage is above the VDD reset threshold.
93 #define SI32_VMON_A_CONTROL_VDDRSTF_VDD_IS_ABOVE_RESET_VALUE  1
94 #define SI32_VMON_A_CONTROL_VDDRSTF_VDD_IS_ABOVE_RESET_U32 \
95    (SI32_VMON_A_CONTROL_VDDRSTF_VDD_IS_ABOVE_RESET_VALUE << SI32_VMON_A_CONTROL_VDDRSTF_SHIFT)
96 
97 #define SI32_VMON_A_CONTROL_VDDLI_MASK  0x00000008
98 #define SI32_VMON_A_CONTROL_VDDLI_SHIFT  3
99 // The VDD voltage is below the early warning threshold.
100 #define SI32_VMON_A_CONTROL_VDDLI_VDD_IS_LOW_VALUE  0
101 #define SI32_VMON_A_CONTROL_VDDLI_VDD_IS_LOW_U32 \
102    (SI32_VMON_A_CONTROL_VDDLI_VDD_IS_LOW_VALUE << SI32_VMON_A_CONTROL_VDDLI_SHIFT)
103 // The VDD voltage is above the early warning threshold.
104 #define SI32_VMON_A_CONTROL_VDDLI_VDD_IS_OK_VALUE  1
105 #define SI32_VMON_A_CONTROL_VDDLI_VDD_IS_OK_U32 \
106    (SI32_VMON_A_CONTROL_VDDLI_VDD_IS_OK_VALUE << SI32_VMON_A_CONTROL_VDDLI_SHIFT)
107 
108 #define SI32_VMON_A_CONTROL_VDDHITHEN_MASK  0x00000010
109 #define SI32_VMON_A_CONTROL_VDDHITHEN_SHIFT  4
110 // Use the standard VDD thresholds.
111 #define SI32_VMON_A_CONTROL_VDDHITHEN_DISABLED_VALUE  0
112 #define SI32_VMON_A_CONTROL_VDDHITHEN_DISABLED_U32 \
113    (SI32_VMON_A_CONTROL_VDDHITHEN_DISABLED_VALUE << SI32_VMON_A_CONTROL_VDDHITHEN_SHIFT)
114 // Use the high VDD thresholds.
115 #define SI32_VMON_A_CONTROL_VDDHITHEN_ENABLED_VALUE  1
116 #define SI32_VMON_A_CONTROL_VDDHITHEN_ENABLED_U32 \
117    (SI32_VMON_A_CONTROL_VDDHITHEN_ENABLED_VALUE << SI32_VMON_A_CONTROL_VDDHITHEN_SHIFT)
118 
119 #define SI32_VMON_A_CONTROL_VDDLIEN_MASK  0x00000040
120 #define SI32_VMON_A_CONTROL_VDDLIEN_SHIFT  6
121 // Disable the VDD low interrupt.
122 #define SI32_VMON_A_CONTROL_VDDLIEN_DISABLED_VALUE  0
123 #define SI32_VMON_A_CONTROL_VDDLIEN_DISABLED_U32 \
124    (SI32_VMON_A_CONTROL_VDDLIEN_DISABLED_VALUE << SI32_VMON_A_CONTROL_VDDLIEN_SHIFT)
125 // Enable the VDD low interrupt.
126 #define SI32_VMON_A_CONTROL_VDDLIEN_ENABLED_VALUE  1
127 #define SI32_VMON_A_CONTROL_VDDLIEN_ENABLED_U32 \
128    (SI32_VMON_A_CONTROL_VDDLIEN_ENABLED_VALUE << SI32_VMON_A_CONTROL_VDDLIEN_SHIFT)
129 
130 #define SI32_VMON_A_CONTROL_VREGINLIEN_MASK  0x00000080
131 #define SI32_VMON_A_CONTROL_VREGINLIEN_SHIFT  7
132 // Disable the VREGIN low interrupt.
133 #define SI32_VMON_A_CONTROL_VREGINLIEN_DISABLED_VALUE  0
134 #define SI32_VMON_A_CONTROL_VREGINLIEN_DISABLED_U32 \
135    (SI32_VMON_A_CONTROL_VREGINLIEN_DISABLED_VALUE << SI32_VMON_A_CONTROL_VREGINLIEN_SHIFT)
136 // Enable the VREGIN low interrupt.
137 #define SI32_VMON_A_CONTROL_VREGINLIEN_ENABLED_VALUE  1
138 #define SI32_VMON_A_CONTROL_VREGINLIEN_ENABLED_U32 \
139    (SI32_VMON_A_CONTROL_VREGINLIEN_ENABLED_VALUE << SI32_VMON_A_CONTROL_VREGINLIEN_SHIFT)
140 
141 #define SI32_VMON_A_CONTROL_VMONEN_MASK  0x80000000
142 #define SI32_VMON_A_CONTROL_VMONEN_SHIFT  31
143 // Disable the VDD supply monitor.
144 #define SI32_VMON_A_CONTROL_VMONEN_DISABLED_VALUE  0U
145 #define SI32_VMON_A_CONTROL_VMONEN_DISABLED_U32 \
146    (SI32_VMON_A_CONTROL_VMONEN_DISABLED_VALUE << SI32_VMON_A_CONTROL_VMONEN_SHIFT)
147 // Enable the VDD supply monitor.
148 #define SI32_VMON_A_CONTROL_VMONEN_ENABLED_VALUE  1U
149 #define SI32_VMON_A_CONTROL_VMONEN_ENABLED_U32 \
150    (SI32_VMON_A_CONTROL_VMONEN_ENABLED_VALUE << SI32_VMON_A_CONTROL_VMONEN_SHIFT)
151 
152 
153 
154 typedef struct SI32_VMON_A_Struct
155 {
156    struct SI32_VMON_A_CONTROL_Struct               CONTROL        ; // Base Address + 0x0
157    volatile uint32_t                               CONTROL_SET;
158    volatile uint32_t                               CONTROL_CLR;
159    uint32_t                                        reserved0;
160    uint32_t                                        reserved1[4];
161 } SI32_VMON_A_Type;
162 
163 #ifdef __cplusplus
164 }
165 #endif
166 
167 #endif // __SI32_VMON_A_REGISTERS_H__
168 
169 //-eof--------------------------------------------------------------------------
170 
171