1 /*
2  * Copyright (c) 2024 Microchip
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 #ifndef _MICROCHIP_PIC32CXSG_AC_COMPONENT_FIXUP_H_
8 #define _MICROCHIP_PIC32CXSG_AC_COMPONENT_FIXUP_H_
9 
10 /* -------- AC_CTRLA : (AC Offset: 0x00) (R/W 8) Control A -------- */
11 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
12 typedef union {
13   struct {
14     uint8_t  SWRST:1;          /*!< bit:      0  Software Reset                     */
15     uint8_t  ENABLE:1;         /*!< bit:      1  Enable                             */
16     uint8_t  :6;               /*!< bit:  2.. 7  Reserved                           */
17   } bit;                       /*!< Structure used for bit  access                  */
18   uint8_t reg;                 /*!< Type      used for register access              */
19 } AC_CTRLA_Type;
20 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
21 
22 /* -------- AC_CTRLB : (AC Offset: 0x01) ( /W 8) Control B -------- */
23 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
24 typedef union {
25   struct {
26     uint8_t  START0:1;         /*!< bit:      0  Comparator 0 Start Comparison      */
27     uint8_t  START1:1;         /*!< bit:      1  Comparator 1 Start Comparison      */
28     uint8_t  :6;               /*!< bit:  2.. 7  Reserved                           */
29   } bit;                       /*!< Structure used for bit  access                  */
30   struct {
31     uint8_t  START:2;          /*!< bit:  0.. 1  Comparator x Start Comparison      */
32     uint8_t  :6;               /*!< bit:  2.. 7  Reserved                           */
33   } vec;                       /*!< Structure used for vec  access                  */
34   uint8_t reg;                 /*!< Type      used for register access              */
35 } AC_CTRLB_Type;
36 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
37 
38 /* -------- AC_EVCTRL : (AC Offset: 0x02) (R/W 16) Event Control -------- */
39 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
40 typedef union {
41   struct {
42     uint16_t COMPEO0:1;        /*!< bit:      0  Comparator 0 Event Output Enable   */
43     uint16_t COMPEO1:1;        /*!< bit:      1  Comparator 1 Event Output Enable   */
44     uint16_t :2;               /*!< bit:  2.. 3  Reserved                           */
45     uint16_t WINEO0:1;         /*!< bit:      4  Window 0 Event Output Enable       */
46     uint16_t :3;               /*!< bit:  5.. 7  Reserved                           */
47     uint16_t COMPEI0:1;        /*!< bit:      8  Comparator 0 Event Input Enable    */
48     uint16_t COMPEI1:1;        /*!< bit:      9  Comparator 1 Event Input Enable    */
49     uint16_t :2;               /*!< bit: 10..11  Reserved                           */
50     uint16_t INVEI0:1;         /*!< bit:     12  Comparator 0 Input Event Invert Enable */
51     uint16_t INVEI1:1;         /*!< bit:     13  Comparator 1 Input Event Invert Enable */
52     uint16_t :2;               /*!< bit: 14..15  Reserved                           */
53   } bit;                       /*!< Structure used for bit  access                  */
54   struct {
55     uint16_t COMPEO:2;         /*!< bit:  0.. 1  Comparator x Event Output Enable   */
56     uint16_t :2;               /*!< bit:  2.. 3  Reserved                           */
57     uint16_t WINEO:1;          /*!< bit:      4  Window x Event Output Enable       */
58     uint16_t :3;               /*!< bit:  5.. 7  Reserved                           */
59     uint16_t COMPEI:2;         /*!< bit:  8.. 9  Comparator x Event Input Enable    */
60     uint16_t :2;               /*!< bit: 10..11  Reserved                           */
61     uint16_t INVEI:2;          /*!< bit: 12..13  Comparator x Input Event Invert Enable */
62     uint16_t :2;               /*!< bit: 14..15  Reserved                           */
63   } vec;                       /*!< Structure used for vec  access                  */
64   uint16_t reg;                /*!< Type      used for register access              */
65 } AC_EVCTRL_Type;
66 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
67 
68 /* -------- AC_INTENCLR : (AC Offset: 0x04) (R/W 8) Interrupt Enable Clear -------- */
69 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
70 typedef union {
71   struct {
72     uint8_t  COMP0:1;          /*!< bit:      0  Comparator 0 Interrupt Enable      */
73     uint8_t  COMP1:1;          /*!< bit:      1  Comparator 1 Interrupt Enable      */
74     uint8_t  :2;               /*!< bit:  2.. 3  Reserved                           */
75     uint8_t  WIN0:1;           /*!< bit:      4  Window 0 Interrupt Enable          */
76     uint8_t  :3;               /*!< bit:  5.. 7  Reserved                           */
77   } bit;                       /*!< Structure used for bit  access                  */
78   struct {
79     uint8_t  COMP:2;           /*!< bit:  0.. 1  Comparator x Interrupt Enable      */
80     uint8_t  :2;               /*!< bit:  2.. 3  Reserved                           */
81     uint8_t  WIN:1;            /*!< bit:      4  Window x Interrupt Enable          */
82     uint8_t  :3;               /*!< bit:  5.. 7  Reserved                           */
83   } vec;                       /*!< Structure used for vec  access                  */
84   uint8_t reg;                 /*!< Type      used for register access              */
85 } AC_INTENCLR_Type;
86 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
87 
88 /* -------- AC_INTENSET : (AC Offset: 0x05) (R/W 8) Interrupt Enable Set -------- */
89 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
90 typedef union {
91   struct {
92     uint8_t  COMP0:1;          /*!< bit:      0  Comparator 0 Interrupt Enable      */
93     uint8_t  COMP1:1;          /*!< bit:      1  Comparator 1 Interrupt Enable      */
94     uint8_t  :2;               /*!< bit:  2.. 3  Reserved                           */
95     uint8_t  WIN0:1;           /*!< bit:      4  Window 0 Interrupt Enable          */
96     uint8_t  :3;               /*!< bit:  5.. 7  Reserved                           */
97   } bit;                       /*!< Structure used for bit  access                  */
98   struct {
99     uint8_t  COMP:2;           /*!< bit:  0.. 1  Comparator x Interrupt Enable      */
100     uint8_t  :2;               /*!< bit:  2.. 3  Reserved                           */
101     uint8_t  WIN:1;            /*!< bit:      4  Window x Interrupt Enable          */
102     uint8_t  :3;               /*!< bit:  5.. 7  Reserved                           */
103   } vec;                       /*!< Structure used for vec  access                  */
104   uint8_t reg;                 /*!< Type      used for register access              */
105 } AC_INTENSET_Type;
106 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
107 
108 /* -------- AC_INTFLAG : (AC Offset: 0x06) (R/W 8) Interrupt Flag Status and Clear -------- */
109 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
110 typedef union { // __I to avoid read-modify-write on write-to-clear register
111   struct {
112     __I uint8_t  COMP0:1;          /*!< bit:      0  Comparator 0                       */
113     __I uint8_t  COMP1:1;          /*!< bit:      1  Comparator 1                       */
114     __I uint8_t  :2;               /*!< bit:  2.. 3  Reserved                           */
115     __I uint8_t  WIN0:1;           /*!< bit:      4  Window 0                           */
116     __I uint8_t  :3;               /*!< bit:  5.. 7  Reserved                           */
117   } bit;                       /*!< Structure used for bit  access                  */
118   struct {
119     __I uint8_t  COMP:2;           /*!< bit:  0.. 1  Comparator x                       */
120     __I uint8_t  :2;               /*!< bit:  2.. 3  Reserved                           */
121     __I uint8_t  WIN:1;            /*!< bit:      4  Window x                           */
122     __I uint8_t  :3;               /*!< bit:  5.. 7  Reserved                           */
123   } vec;                       /*!< Structure used for vec  access                  */
124   uint8_t reg;                 /*!< Type      used for register access              */
125 } AC_INTFLAG_Type;
126 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
127 
128 /* -------- AC_STATUSA : (AC Offset: 0x07) ( R/ 8) Status A -------- */
129 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
130 typedef union {
131   struct {
132     uint8_t  STATE0:1;         /*!< bit:      0  Comparator 0 Current State         */
133     uint8_t  STATE1:1;         /*!< bit:      1  Comparator 1 Current State         */
134     uint8_t  :2;               /*!< bit:  2.. 3  Reserved                           */
135     uint8_t  WSTATE0:2;        /*!< bit:  4.. 5  Window 0 Current State             */
136     uint8_t  :2;               /*!< bit:  6.. 7  Reserved                           */
137   } bit;                       /*!< Structure used for bit  access                  */
138   struct {
139     uint8_t  STATE:2;          /*!< bit:  0.. 1  Comparator x Current State         */
140     uint8_t  :6;               /*!< bit:  2.. 7  Reserved                           */
141   } vec;                       /*!< Structure used for vec  access                  */
142   uint8_t reg;                 /*!< Type      used for register access              */
143 } AC_STATUSA_Type;
144 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
145 
146 /* -------- AC_STATUSB : (AC Offset: 0x08) ( R/ 8) Status B -------- */
147 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
148 typedef union {
149   struct {
150     uint8_t  READY0:1;         /*!< bit:      0  Comparator 0 Ready                 */
151     uint8_t  READY1:1;         /*!< bit:      1  Comparator 1 Ready                 */
152     uint8_t  :6;               /*!< bit:  2.. 7  Reserved                           */
153   } bit;                       /*!< Structure used for bit  access                  */
154   struct {
155     uint8_t  READY:2;          /*!< bit:  0.. 1  Comparator x Ready                 */
156     uint8_t  :6;               /*!< bit:  2.. 7  Reserved                           */
157   } vec;                       /*!< Structure used for vec  access                  */
158   uint8_t reg;                 /*!< Type      used for register access              */
159 } AC_STATUSB_Type;
160 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
161 
162 /* -------- AC_DBGCTRL : (AC Offset: 0x09) (R/W 8) Debug Control -------- */
163 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
164 typedef union {
165   struct {
166     uint8_t  DBGRUN:1;         /*!< bit:      0  Debug Run                          */
167     uint8_t  :7;               /*!< bit:  1.. 7  Reserved                           */
168   } bit;                       /*!< Structure used for bit  access                  */
169   uint8_t reg;                 /*!< Type      used for register access              */
170 } AC_DBGCTRL_Type;
171 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
172 
173 /* -------- AC_WINCTRL : (AC Offset: 0x0A) (R/W 8) Window Control -------- */
174 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
175 typedef union {
176   struct {
177     uint8_t  WEN0:1;           /*!< bit:      0  Window 0 Mode Enable               */
178     uint8_t  WINTSEL0:2;       /*!< bit:  1.. 2  Window 0 Interrupt Selection       */
179     uint8_t  :5;               /*!< bit:  3.. 7  Reserved                           */
180   } bit;                       /*!< Structure used for bit  access                  */
181   uint8_t reg;                 /*!< Type      used for register access              */
182 } AC_WINCTRL_Type;
183 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
184 
185 /* -------- AC_SCALER : (AC Offset: 0x0C) (R/W 8) Scaler n -------- */
186 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
187 typedef union {
188   struct {
189     uint8_t  VALUE:6;          /*!< bit:  0.. 5  Scaler Value                       */
190     uint8_t  :2;               /*!< bit:  6.. 7  Reserved                           */
191   } bit;                       /*!< Structure used for bit  access                  */
192   uint8_t reg;                 /*!< Type      used for register access              */
193 } AC_SCALER_Type;
194 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
195 
196 /* -------- AC_COMPCTRL : (AC Offset: 0x10) (R/W 32) Comparator Control n -------- */
197 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
198 typedef union {
199   struct {
200     uint32_t :1;               /*!< bit:      0  Reserved                           */
201     uint32_t ENABLE:1;         /*!< bit:      1  Enable                             */
202     uint32_t SINGLE:1;         /*!< bit:      2  Single-Shot Mode                   */
203     uint32_t INTSEL:2;         /*!< bit:  3.. 4  Interrupt Selection                */
204     uint32_t :1;               /*!< bit:      5  Reserved                           */
205     uint32_t RUNSTDBY:1;       /*!< bit:      6  Run in Standby                     */
206     uint32_t :1;               /*!< bit:      7  Reserved                           */
207     uint32_t MUXNEG:3;         /*!< bit:  8..10  Negative Input Mux Selection       */
208     uint32_t :1;               /*!< bit:     11  Reserved                           */
209     uint32_t MUXPOS:3;         /*!< bit: 12..14  Positive Input Mux Selection       */
210     uint32_t SWAP:1;           /*!< bit:     15  Swap Inputs and Invert             */
211     uint32_t SPEED:2;          /*!< bit: 16..17  Speed Selection                    */
212     uint32_t :1;               /*!< bit:     18  Reserved                           */
213     uint32_t HYSTEN:1;         /*!< bit:     19  Hysteresis Enable                  */
214     uint32_t HYST:2;           /*!< bit: 20..21  Hysteresis Level                   */
215     uint32_t :2;               /*!< bit: 22..23  Reserved                           */
216     uint32_t FLEN:3;           /*!< bit: 24..26  Filter Length                      */
217     uint32_t :1;               /*!< bit:     27  Reserved                           */
218     uint32_t OUT:2;            /*!< bit: 28..29  Output                             */
219     uint32_t :2;               /*!< bit: 30..31  Reserved                           */
220   } bit;                       /*!< Structure used for bit  access                  */
221   uint32_t reg;                /*!< Type      used for register access              */
222 } AC_COMPCTRL_Type;
223 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
224 
225 /* -------- AC_SYNCBUSY : (AC Offset: 0x20) ( R/ 32) Synchronization Busy -------- */
226 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
227 typedef union {
228   struct {
229     uint32_t SWRST:1;          /*!< bit:      0  Software Reset Synchronization Busy */
230     uint32_t ENABLE:1;         /*!< bit:      1  Enable Synchronization Busy        */
231     uint32_t WINCTRL:1;        /*!< bit:      2  WINCTRL Synchronization Busy       */
232     uint32_t COMPCTRL0:1;      /*!< bit:      3  COMPCTRL 0 Synchronization Busy    */
233     uint32_t COMPCTRL1:1;      /*!< bit:      4  COMPCTRL 1 Synchronization Busy    */
234     uint32_t :27;              /*!< bit:  5..31  Reserved                           */
235   } bit;                       /*!< Structure used for bit  access                  */
236   struct {
237     uint32_t :3;               /*!< bit:  0.. 2  Reserved                           */
238     uint32_t COMPCTRL:2;       /*!< bit:  3.. 4  COMPCTRL x Synchronization Busy    */
239     uint32_t :27;              /*!< bit:  5..31  Reserved                           */
240   } vec;                       /*!< Structure used for vec  access                  */
241   uint32_t reg;                /*!< Type      used for register access              */
242 } AC_SYNCBUSY_Type;
243 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
244 
245 /* -------- AC_CALIB : (AC Offset: 0x24) (R/W 16) Calibration -------- */
246 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
247 typedef union {
248   struct {
249     uint16_t BIAS0:2;          /*!< bit:  0.. 1  COMP0/1 Bias Scaling               */
250     uint16_t :14;              /*!< bit:  2..15  Reserved                           */
251   } bit;                       /*!< Structure used for bit  access                  */
252   uint16_t reg;                /*!< Type      used for register access              */
253 } AC_CALIB_Type;
254 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
255 
256 /** \brief AC hardware registers */
257 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
258 typedef struct {
259   __IO AC_CTRLA_Type             CTRLA;       /**< \brief Offset: 0x00 (R/W  8) Control A */
260   __O  AC_CTRLB_Type             CTRLB;       /**< \brief Offset: 0x01 ( /W  8) Control B */
261   __IO AC_EVCTRL_Type            EVCTRL;      /**< \brief Offset: 0x02 (R/W 16) Event Control */
262   __IO AC_INTENCLR_Type          INTENCLR;    /**< \brief Offset: 0x04 (R/W  8) Interrupt Enable Clear */
263   __IO AC_INTENSET_Type          INTENSET;    /**< \brief Offset: 0x05 (R/W  8) Interrupt Enable Set */
264   __IO AC_INTFLAG_Type           INTFLAG;     /**< \brief Offset: 0x06 (R/W  8) Interrupt Flag Status and Clear */
265   __I  AC_STATUSA_Type           STATUSA;     /**< \brief Offset: 0x07 (R/   8) Status A */
266   __I  AC_STATUSB_Type           STATUSB;     /**< \brief Offset: 0x08 (R/   8) Status B */
267   __IO AC_DBGCTRL_Type           DBGCTRL;     /**< \brief Offset: 0x09 (R/W  8) Debug Control */
268   __IO AC_WINCTRL_Type           WINCTRL;     /**< \brief Offset: 0x0A (R/W  8) Window Control */
269        RoReg8                    Reserved1[0x1];
270   __IO AC_SCALER_Type            SCALER[2];   /**< \brief Offset: 0x0C (R/W  8) Scaler n */
271        RoReg8                    Reserved2[0x2];
272   __IO AC_COMPCTRL_Type          COMPCTRL[2]; /**< \brief Offset: 0x10 (R/W 32) Comparator Control n */
273        RoReg8                    Reserved3[0x8];
274   __I  AC_SYNCBUSY_Type          SYNCBUSY;    /**< \brief Offset: 0x20 (R/  32) Synchronization Busy */
275   __IO AC_CALIB_Type             CALIB;       /**< \brief Offset: 0x24 (R/W 16) Calibration */
276 } Ac;
277 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
278 
279 #endif /* _MICROCHIP_PIC32CXSG_AC_COMPONENT_FIXUP_H_ */
280