1 /***************************************************************************//**
2  * @file
3  * @brief Peripheral Reflex System (PRS) peripheral API
4  *******************************************************************************
5  * # License
6  * <b>Copyright 2018 Silicon Laboratories Inc. www.silabs.com</b>
7  *******************************************************************************
8  *
9  * SPDX-License-Identifier: Zlib
10  *
11  * The licensor of this software is Silicon Laboratories Inc.
12  *
13  * This software is provided 'as-is', without any express or implied
14  * warranty. In no event will the authors be held liable for any damages
15  * arising from the use of this software.
16  *
17  * Permission is granted to anyone to use this software for any purpose,
18  * including commercial applications, and to alter it and redistribute it
19  * freely, subject to the following restrictions:
20  *
21  * 1. The origin of this software must not be misrepresented; you must not
22  *    claim that you wrote the original software. If you use this software
23  *    in a product, an acknowledgment in the product documentation would be
24  *    appreciated but is not required.
25  * 2. Altered source versions must be plainly marked as such, and must not be
26  *    misrepresented as being the original software.
27  * 3. This notice may not be removed or altered from any source distribution.
28  *
29  ******************************************************************************/
30 
31 #ifndef EM_PRS_H
32 #define EM_PRS_H
33 
34 #include "em_device.h"
35 #include "em_gpio.h"
36 
37 #include <stdbool.h>
38 #include <stddef.h>
39 
40 #if defined(PRS_COUNT) && (PRS_COUNT > 0)
41 
42 #ifdef __cplusplus
43 extern "C" {
44 #endif
45 
46 /***************************************************************************//**
47  * @addtogroup prs
48  * @{
49  ******************************************************************************/
50 
51 /*******************************************************************************
52  *******************************   DEFINES   ***********************************
53  ******************************************************************************/
54 
55 #if defined(_SILICON_LABS_32B_SERIES_2)
56 /** PRS Synchronous channel count. */
57   #define PRS_SYNC_CHAN_COUNT    PRS_SYNC_CH_NUM
58 /** PRS Asynchronous channel count. */
59   #define PRS_ASYNC_CHAN_COUNT   PRS_ASYNC_CH_NUM
60 #elif defined(_EFM32_GECKO_FAMILY)
61 /** PRS Synchronous channel count. */
62   #define PRS_SYNC_CHAN_COUNT    PRS_CHAN_COUNT
63 /** PRS Asynchronous channel count. */
64   #define PRS_ASYNC_CHAN_COUNT   0
65 #else
66 /** PRS Synchronous channel count. */
67   #define PRS_SYNC_CHAN_COUNT    PRS_CHAN_COUNT
68 /** PRS Asynchronous channel count. */
69   #define PRS_ASYNC_CHAN_COUNT   PRS_CHAN_COUNT
70 #endif
71 
72 #if !defined(_EFM32_GECKO_FAMILY)
73 /** PRS asynchronous support */
74 #define PRS_ASYNC_SUPPORTED      1
75 #endif
76 
77 /** @cond DO_NOT_INCLUDE_WITH_DOXYGEN */
78 /* Some devices have renamed signals so some of these signals are mapped to
79    common names. */
80 #if defined(PRS_USART0_RXDATAV)
81 #define PRS_USART0_RXDATA        PRS_USART0_RXDATAV
82 #endif
83 #if defined(PRS_USART1_RXDATAV)
84 #define PRS_USART1_RXDATA        PRS_USART1_RXDATAV
85 #endif
86 #if defined(PRS_USART2_RXDATAV)
87 #define PRS_USART2_RXDATA        PRS_USART2_RXDATAV
88 #endif
89 #if defined(PRS_BURTC_OVERFLOW)
90 #define PRS_BURTC_OF             PRS_BURTC_OVERFLOW
91 #endif
92 #if defined(PRS_BURTC_COMP0)
93 #define PRS_BURTC_COMP           PRS_BURTC_COMP0
94 #endif
95 /** @endcond */
96 
97 /*******************************************************************************
98  ********************************   ENUMS   ************************************
99  ******************************************************************************/
100 
101 /** PRS Channel type. */
102 typedef enum {
103   prsTypeAsync,  /**< Asynchronous channel type. */
104   prsTypeSync    /**< Synchronous channel type.*/
105 } PRS_ChType_t;
106 
107 /** Edge detection type. */
108 typedef enum {
109   prsEdgeOff,  /**< Leave signal as is. */
110   prsEdgePos,  /**< Generate pulses on positive edge. */
111   prsEdgeNeg,  /**< Generate pulses on negative edge. */
112   prsEdgeBoth  /**< Generate pulses on both edges. */
113 } PRS_Edge_TypeDef;
114 
115 #if defined(_PRS_ASYNC_CH_CTRL_FNSEL_MASK)
116 /** Logic functions that can be used when combining two PRS channels. */
117 typedef enum {
118   prsLogic_Zero        = _PRS_ASYNC_CH_CTRL_FNSEL_LOGICAL_ZERO, /**< Logical 0. */
119   prsLogic_A_NOR_B     = _PRS_ASYNC_CH_CTRL_FNSEL_A_NOR_B,      /**< A NOR B. */
120   prsLogic_NOT_A_AND_B = _PRS_ASYNC_CH_CTRL_FNSEL_NOT_A_AND_B,  /**< (!A) NOR B. */
121   prsLogic_NOT_A       = _PRS_ASYNC_CH_CTRL_FNSEL_NOT_A,        /**< !A. */
122   prsLogic_A_AND_NOT_B = _PRS_ASYNC_CH_CTRL_FNSEL_A_AND_NOT_B,  /**< A AND (!B). */
123   prsLogic_NOT_B       = _PRS_ASYNC_CH_CTRL_FNSEL_NOT_B,        /**< !B. */
124   prsLogic_A_XOR_B     = _PRS_ASYNC_CH_CTRL_FNSEL_A_XOR_B,      /**< A XOR B. */
125   prsLogic_A_NAND_B    = _PRS_ASYNC_CH_CTRL_FNSEL_A_NAND_B,     /**< A NAND B. */
126   prsLogic_A_AND_B     = _PRS_ASYNC_CH_CTRL_FNSEL_A_AND_B,      /**< A AND B. */
127   prsLogic_A_XNOR_B    = _PRS_ASYNC_CH_CTRL_FNSEL_A_XNOR_B,     /**< A XNOR B. */
128   prsLogic_B           = _PRS_ASYNC_CH_CTRL_FNSEL_B,            /**< B. */
129   prsLogic_NOT_A_OR_B  = _PRS_ASYNC_CH_CTRL_FNSEL_NOT_A_OR_B,   /**< (!A) OR B. */
130   prsLogic_A           = _PRS_ASYNC_CH_CTRL_FNSEL_A,            /**< A. */
131   prsLogic_A_OR_NOT_B  = _PRS_ASYNC_CH_CTRL_FNSEL_A_OR_NOT_B,   /**< A OR (!B). */
132   prsLogic_A_OR_B      = _PRS_ASYNC_CH_CTRL_FNSEL_A_OR_B,       /**< A OR B. */
133   prsLogic_One         = _PRS_ASYNC_CH_CTRL_FNSEL_LOGICAL_ONE,  /**< Logical 1. */
134 } PRS_Logic_t;
135 #endif
136 
137 /** PRS Signal. */
138 typedef enum {
139 #if defined(_PRS_SYNC_CH_CTRL_SOURCESEL_MASK)
140   prsSignalNone       = PRS_SYNC_CH_CTRL_SOURCESEL_DEFAULT | (0x0 << _PRS_SYNC_CH_CTRL_SIGSEL_SHIFT), /**< No Signal. */
141   prsSignalSW         = PRS_SYNC_CH_CTRL_SOURCESEL_DEFAULT | (0x1 << _PRS_SYNC_CH_CTRL_SIGSEL_SHIFT), /**< Software-reserved Signal. */
142 #else
143   prsSignalNone       = PRS_CH_CTRL_SOURCESEL_NONE | (0x0 << _PRS_CH_CTRL_SIGSEL_SHIFT),  /**< No Signal. */
144   prsSignalSW         = PRS_CH_CTRL_SOURCESEL_NONE | (0x1 << _PRS_CH_CTRL_SIGSEL_SHIFT),  /**< Software-reserved Signal. */
145 #endif
146 
147 #if defined(PRS_PRS_CH11)
148   prsSignalPRS_CH0  = PRS_PRS_CH0,  /**< PRS_CH0  signal */
149   prsSignalPRS_CH1  = PRS_PRS_CH1,  /**< PRS_CH1  signal */
150   prsSignalPRS_CH2  = PRS_PRS_CH2,  /**< PRS_CH2  signal */
151   prsSignalPRS_CH3  = PRS_PRS_CH3,  /**< PRS_CH3  signal */
152   prsSignalPRS_CH4  = PRS_PRS_CH4,  /**< PRS_CH4  signal */
153   prsSignalPRS_CH5  = PRS_PRS_CH5,  /**< PRS_CH5  signal */
154   prsSignalPRS_CH6  = PRS_PRS_CH6,  /**< PRS_CH6  signal */
155   prsSignalPRS_CH7  = PRS_PRS_CH7,  /**< PRS_CH7  signal */
156   prsSignalPRS_CH8  = PRS_PRS_CH8,  /**< PRS_CH8  signal */
157   prsSignalPRS_CH9  = PRS_PRS_CH9,  /**< PRS_CH9  signal */
158   prsSignalPRS_CH10 = PRS_PRS_CH10, /**< PRS_CH10 signal */
159   prsSignalPRS_CH11 = PRS_PRS_CH11, /**< PRS_CH11 signal */
160 #endif
161 #if defined(PRS_PRS_CH23)
162   prsSignalPRS_CH12 = PRS_PRS_CH12, /**< PRS_CH12 signal */
163   prsSignalPRS_CH13 = PRS_PRS_CH13, /**< PRS_CH13 signal */
164   prsSignalPRS_CH14 = PRS_PRS_CH14, /**< PRS_CH14 signal */
165   prsSignalPRS_CH15 = PRS_PRS_CH15, /**< PRS_CH15 signal */
166   prsSignalPRS_CH16 = PRS_PRS_CH16, /**< PRS_CH16 signal */
167   prsSignalPRS_CH17 = PRS_PRS_CH17, /**< PRS_CH17 signal */
168   prsSignalPRS_CH18 = PRS_PRS_CH18, /**< PRS_CH18 signal */
169   prsSignalPRS_CH19 = PRS_PRS_CH19, /**< PRS_CH19 signal */
170   prsSignalPRS_CH20 = PRS_PRS_CH20, /**< PRS_CH20 signal */
171   prsSignalPRS_CH21 = PRS_PRS_CH21, /**< PRS_CH21 signal */
172   prsSignalPRS_CH22 = PRS_PRS_CH22, /**< PRS_CH22 signal */
173   prsSignalPRS_CH23 = PRS_PRS_CH23, /**< PRS_CH23 signal */
174 #endif
175 
176 #if defined(PRS_ADC0_SINGLE)
177   prsSignalADC0_SINGLE = PRS_ADC0_SINGLE, /**< ADC0_SINGLE  signal */
178   prsSignalADC0_SCAN   = PRS_ADC0_SCAN,   /**< ADC0_SCAN  signal */
179 #endif
180 #if defined(PRS_ADC1_SINGLE)
181   prsSignalADC1_SINGLE = PRS_ADC1_SINGLE, /**< ADC1_SINGLE  signal */
182   prsSignalADC1_SCAN   = PRS_ADC1_SCAN,   /**< ADC1_SCAN  signal */
183 #endif
184 
185   /* Timer Signals */
186 #if defined(TIMER0)
187   prsSignalTIMER0_UF  = PRS_TIMER0_UF,  /**< TIMER0 underflow Signal. */
188   prsSignalTIMER0_OF  = PRS_TIMER0_OF,  /**< TIMER0 overflow Signal. */
189   prsSignalTIMER0_CC0 = PRS_TIMER0_CC0, /**< TIMER0 capture/compare channel 0 Signal. */
190   prsSignalTIMER0_CC1 = PRS_TIMER0_CC1, /**< TIMER0 capture/compare channel 1 Signal. */
191   prsSignalTIMER0_CC2 = PRS_TIMER0_CC2, /**< TIMER0 capture/compare channel 2 Signal. */
192 #endif
193 #if defined(TIMER1)
194   prsSignalTIMER1_UF  = PRS_TIMER1_UF,  /**< TIMER1 underflow Signal. */
195   prsSignalTIMER1_OF  = PRS_TIMER1_OF,  /**< TIMER1 overflow Signal. */
196   prsSignalTIMER1_CC0 = PRS_TIMER1_CC0, /**< TIMER1 capture/compare channel 0 Signal. */
197   prsSignalTIMER1_CC1 = PRS_TIMER1_CC1, /**< TIMER1 capture/compare channel 1 Signal. */
198   prsSignalTIMER1_CC2 = PRS_TIMER1_CC2, /**< TIMER1 capture/compare channel 2 Signal. */
199 #endif
200 #if defined(TIMER2)
201   prsSignalTIMER2_UF  = PRS_TIMER2_UF,  /**< TIMER2 underflow Signal. */
202   prsSignalTIMER2_OF  = PRS_TIMER2_OF,  /**< TIMER2 overflow Signal. */
203   prsSignalTIMER2_CC0 = PRS_TIMER2_CC0, /**< TIMER2 capture/compare channel 0 Signal. */
204   prsSignalTIMER2_CC1 = PRS_TIMER2_CC1, /**< TIMER2 capture/compare channel 1 Signal. */
205   prsSignalTIMER2_CC2 = PRS_TIMER2_CC2, /**< TIMER2 capture/compare channel 2 Signal. */
206 #endif
207 #if defined(TIMER3)
208   prsSignalTIMER3_UF  = PRS_TIMER3_UF,  /**< TIMER3 underflow Signal. */
209   prsSignalTIMER3_OF  = PRS_TIMER3_OF,  /**< TIMER3 overflow Signal. */
210   prsSignalTIMER3_CC0 = PRS_TIMER3_CC0, /**< TIMER3 capture/compare channel 0 Signal. */
211   prsSignalTIMER3_CC1 = PRS_TIMER3_CC1, /**< TIMER3 capture/compare channel 1 Signal. */
212   prsSignalTIMER3_CC2 = PRS_TIMER3_CC2, /**< TIMER3 capture/compare channel 2 Signal. */
213 #if defined(PRS_TIMER1_CC3)
214   prsSignalTIMER1_CC3 = PRS_TIMER1_CC3, /**< TIMER3 capture/compare channel 3 Signal. */
215 #endif
216 #endif
217 #if defined(TIMER4)
218   prsSignalTIMER4_UF  = PRS_TIMER4_UF,  /**< TIMER4 underflow Signal. */
219   prsSignalTIMER4_OF  = PRS_TIMER4_OF,  /**< TIMER4 overflow Signal. */
220   prsSignalTIMER4_CC0 = PRS_TIMER4_CC0, /**< TIMER4 capture/compare channel 0 Signal. */
221   prsSignalTIMER4_CC1 = PRS_TIMER4_CC1, /**< TIMER4 capture/compare channel 1 Signal. */
222   prsSignalTIMER4_CC2 = PRS_TIMER4_CC2, /**< TIMER4 capture/compare channel 2 Signal. */
223 #endif
224 #if defined(TIMER5)
225   prsSignalTIMER5_UF  = PRS_TIMER5_UF,  /**< TIMER5 underflow Signal. */
226   prsSignalTIMER5_OF  = PRS_TIMER5_OF,  /**< TIMER5 overflow Signal. */
227   prsSignalTIMER5_CC0 = PRS_TIMER5_CC0, /**< TIMER5 capture/compare channel 0 Signal. */
228   prsSignalTIMER5_CC1 = PRS_TIMER5_CC1, /**< TIMER5 capture/compare channel 1 Signal. */
229   prsSignalTIMER5_CC2 = PRS_TIMER5_CC2, /**< TIMER5 capture/compare channel 2 Signal. */
230 #endif
231 #if defined(TIMER6)
232   prsSignalTIMER6_UF  = PRS_TIMER6_UF,  /**< TIMER6 underflow Signal. */
233   prsSignalTIMER6_OF  = PRS_TIMER6_OF,  /**< TIMER6 overflow Signal. */
234   prsSignalTIMER6_CC0 = PRS_TIMER6_CC0, /**< TIMER6 capture/compare channel 0 Signal. */
235   prsSignalTIMER6_CC1 = PRS_TIMER6_CC1, /**< TIMER6 capture/compare channel 1 Signal. */
236   prsSignalTIMER6_CC2 = PRS_TIMER6_CC2, /**< TIMER6 capture/compare channel 2 Signal. */
237 #endif
238 #if defined(TIMER7)
239   prsSignalTIMER7_UF  = PRS_TIMER7_UF,  /**< TIMER7 underflow Signal. */
240   prsSignalTIMER7_OF  = PRS_TIMER7_OF,  /**< TIMER7 overflow Signal. */
241   prsSignalTIMER7_CC0 = PRS_TIMER7_CC0, /**< TIMER7 capture/compare channel 0 Signal. */
242   prsSignalTIMER7_CC1 = PRS_TIMER7_CC1, /**< TIMER7 capture/compare channel 1 Signal. */
243   prsSignalTIMER7_CC2 = PRS_TIMER7_CC2, /**< TIMER7 capture/compare channel 2 Signal. */
244 #endif
245 #if defined(PRS_LETIMER0_CH0)
246   prsSignalLETIMER0_CH0  = PRS_LETIMER0_CH0, /**< LETIMER0 channel 0 Signal. */
247   prsSignalLETIMER0_CH1  = PRS_LETIMER0_CH1, /**< LETIMER0 channel 1 Signal. */
248 #endif
249 #if defined(PRS_LETIMER1_CH0)
250   prsSignalLETIMER1_CH0  = PRS_LETIMER1_CH0, /**< LETIMER1 channel 0 Signal. */
251   prsSignalLETIMER1_CH1  = PRS_LETIMER1_CH1, /**< LETIMER1 channel 1 Signal. */
252 #endif
253 #if defined(PRS_PCNT0_TCC)
254   prsSignalPCNT0_TCC  = PRS_PCNT0_TCC,  /**< PCNT0_TCC Signal. */
255 #endif
256 #if defined(PRS_PCNT0_UFOF)
257   prsSignalPCNT0_UFOF = PRS_PCNT0_UFOF, /**< PCNT0_TCC Signal. */
258   prsSignalPCNT0_DIR  = PRS_PCNT0_DIR,  /**< PCNT0_TCC Signal. */
259 #endif
260 #if defined(PRS_PCNT1_TCC)
261   prsSignalPCNT1_TCC  = PRS_PCNT1_TCC,  /**< PCNT1_TCC Signal. */
262   prsSignalPCNT1_UFOF = PRS_PCNT1_UFOF, /**< PCNT1_TCC Signal. */
263   prsSignalPCNT1_DIR  = PRS_PCNT1_DIR,  /**< PCNT1_TCC Signal. */
264 #endif
265 #if defined(PRS_PCNT2_TCC)
266   prsSignalPCNT2_TCC  = PRS_PCNT2_TCC,  /**< PCNT2_TCC Signal. */
267   prsSignalPCNT2_UFOF = PRS_PCNT2_UFOF, /**< PCNT2_TCC Signal. */
268   prsSignalPCNT2_DIR  = PRS_PCNT2_DIR,  /**< PCNT2_TCC Signal. */
269 #endif
270 #if defined(PRS_CRYOTIMER_PERIOD)
271   prsSignalCRYOTIMER_PERIOD = PRS_CRYOTIMER_PERIOD, /**< CRYOTIMER_PERIOD Signal. */
272 #endif
273 #if defined(PRS_CORE_CTIOUT0)
274   prsSignalCORE_CTIOUT0 = PRS_CORE_CTIOUT0, /**< CORE CTIOUT0 Signal. */
275   prsSignalCORE_CTIOUT1 = PRS_CORE_CTIOUT1, /**< CORE CTIOUT1 Signal. */
276   prsSignalCORE_CTIOUT2 = PRS_CORE_CTIOUT2, /**< CORE CTIOUT2 Signal. */
277   prsSignalCORE_CTIOUT3 = PRS_CORE_CTIOUT3, /**< CORE CTIOUT3 Signal. */
278 #endif
279 #if defined(PRS_CMUL_CLKOUT0)
280   prsSignalCMUL_CLKOUT0       = PRS_CMUL_CLKOUT0,       /**< CMU CLKOUT0 Signal. */
281   prsSignalCMUL_CLKOUT1       = PRS_CMUL_CLKOUT1,       /**< CMU CLKOUT1 Signal. */
282   prsSignalCMUL_CLKOUT2       = PRS_CMUL_CLKOUT2,       /**< CMU CLKOUT2 Signal. */
283 #endif
284 #if defined(PRS_PRSL_ASYNCH0)
285   prsSignalPRSL_ASYNCH0 = PRS_PRSL_ASYNCH0, /**< PRS channel 0 Signal. */
286   prsSignalPRSL_ASYNCH1 = PRS_PRSL_ASYNCH1, /**< PRS channel 1 Signal. */
287   prsSignalPRSL_ASYNCH2 = PRS_PRSL_ASYNCH2, /**< PRS channel 2 Signal. */
288   prsSignalPRSL_ASYNCH3 = PRS_PRSL_ASYNCH3, /**< PRS channel 3 Signal. */
289   prsSignalPRSL_ASYNCH4 = PRS_PRSL_ASYNCH4, /**< PRS channel 4 Signal. */
290   prsSignalPRSL_ASYNCH5 = PRS_PRSL_ASYNCH5, /**< PRS channel 5 Signal. */
291   prsSignalPRSL_ASYNCH6 = PRS_PRSL_ASYNCH6, /**< PRS channel 6 Signal. */
292   prsSignalPRSL_ASYNCH7 = PRS_PRSL_ASYNCH7, /**< PRS channel 7 Signal. */
293   prsSignalPRS_ASYNCH8  = PRS_PRS_ASYNCH8,  /**< PRS channel 8 Signal. */
294   prsSignalPRS_ASYNCH9  = PRS_PRS_ASYNCH9,  /**< PRS channel 9 Signal. */
295   prsSignalPRS_ASYNCH10 = PRS_PRS_ASYNCH10, /**< PRS channel 10 Signal. */
296   prsSignalPRS_ASYNCH11 = PRS_PRS_ASYNCH11, /**< PRS channel 11 Signal. */
297 #endif
298 
299   /* RTC/RTCC/SYSRTC/BURTC Signals */
300 #if defined(PRS_RTC_OF)
301   prsSignalRTC_OF    = PRS_RTC_OF,    /**< RTC_OF    signal. */
302   prsSignalRTC_COMP0 = PRS_RTC_COMP0, /**< RTC_COMP0 signal. */
303   prsSignalRTC_COMP1 = PRS_RTC_COMP1, /**< RTC_COMP1 signal. */
304 #if defined(PRS_RTC_COMP5)
305   prsSignalRTC_COMP2 = PRS_RTC_COMP2, /**< RTC_COMP2 signal. */
306   prsSignalRTC_COMP3 = PRS_RTC_COMP3, /**< RTC_COMP3 signal. */
307   prsSignalRTC_COMP4 = PRS_RTC_COMP4, /**< RTC_COMP4 signal. */
308   prsSignalRTC_COMP5 = PRS_RTC_COMP5, /**< RTC_COMP5 signal. */
309 #endif
310 #endif
311 #if defined(RTCC)
312   prsSignalRTCC_CCV0  = PRS_RTCC_CCV0, /**< RTCC capture/compare channel 0 Signal. */
313   prsSignalRTCC_CCV1  = PRS_RTCC_CCV1, /**< RTCC capture/compare channel 1 Signal. */
314   prsSignalRTCC_CCV2  = PRS_RTCC_CCV2, /**< RTCC capture/compare channel 2 Signal. */
315 #endif
316 #if defined(BURTC)
317   prsSignalBURTC_COMP = PRS_BURTC_COMP, /**< BURTC compare Signal. */
318   prsSignalBURTC_OF   = PRS_BURTC_OF,   /**< BURTC overflow Signal. */
319 #endif
320 #if defined(SYSRTC0)
321   prsSignalSYSRTC0_GRP0OUT0 = PRS_SYSRTC0_GRP0OUT0, /**< SYSRTC GRP0OUT0 Signal. */
322   prsSignalSYSRTC0_GRP0OUT1 = PRS_SYSRTC0_GRP0OUT1, /**< SYSRTC GRP0OUT1 Signal. */
323   prsSignalSYSRTC0_GRP1OUT0 = PRS_SYSRTC0_GRP1OUT0, /**< SYSRTC GRP1OUT0 Signal. */
324   prsSignalSYSRTC0_GRP1OUT1 = PRS_SYSRTC0_GRP1OUT1, /**< SYSRTC GRP1OUT1 Signal. */
325 #endif
326 #if defined(PRS_HFXO0L_STATUS)
327   prsSignalHFXO0L_STATUS            = PRS_HFXO0L_STATUS,            /**< HFXO0L_STATUS  Signal. */
328   prsSignalHFXO0L_STATUS1           = PRS_HFXO0L_STATUS1,           /**< HFXO0L_STATUS1  Signal. */
329 #endif
330 #if defined(PRS_HFRCO0_COREEN)
331   prsSignalHFRCO0_COREEN = PRS_HFRCO0_COREEN, /**< HFRCO0_COREEN  Signal. */
332   prsSignalHFRCO0_STATE0 = PRS_HFRCO0_STATE0, /**< HFRCO0_STATE0  Signal. */
333   prsSignalHFRCO0_STATE1 = PRS_HFRCO0_STATE1, /**< HFRCO0_STATE1  Signal. */
334   prsSignalHFRCO0_STATE2 = PRS_HFRCO0_STATE2, /**< HFRCO0_STATE2  Signal. */
335 #endif
336 #if defined(PRS_HFRCOEM23_COREEN)
337   prsSignalHFRCOEM23_COREEN = PRS_HFRCOEM23_COREEN, /**< HFRCOEM23_COREEN  Signal. */
338   prsSignalHFRCOEM23_STATE0 = PRS_HFRCOEM23_STATE0, /**< HFRCOEM23_STATE0  Signal. */
339   prsSignalHFRCOEM23_STATE1 = PRS_HFRCOEM23_STATE1, /**< HFRCOEM23_STATE1  Signal. */
340   prsSignalHFRCOEM23_STATE2 = PRS_HFRCOEM23_STATE2, /**< HFRCOEM23_STATE2  Signal. */
341 #endif
342 
343   /* ACMP Signals */
344 #if defined(ACMP0)
345   prsSignalACMP0_OUT  = PRS_ACMP0_OUT, /**< ACMP0 Signal. */
346 #endif
347 #if defined(ACMP1)
348   prsSignalACMP1_OUT  = PRS_ACMP1_OUT, /**< ACMP1 output Signal. */
349 #endif
350 #if defined(ACMP2)
351   prsSignalACMP2_OUT  = PRS_ACMP2_OUT, /**< ACMP2 output Signal. */
352 #endif
353 #if defined(ACMP3)
354   prsSignalACMP3_OUT  = PRS_ACMP3_OUT, /**< ACMP3 output Signal. */
355 #endif
356 
357   /* VDAC Signals */
358 #if defined(VDAC0) & (_SILICON_LABS_32B_SERIES >= 2)
359   prsSignalVDAC0_CH0WARM          = PRS_VDAC0L_CH0WARM,         /**< VDAC0 channel 0 warmed Signal. */
360   prsSignalVDAC0_CH1WARM          = PRS_VDAC0L_CH1WARM,         /**< VDAC0 channel 1 warmed Signal. */
361   prsSignalVDAC0_CH0DONE          = PRS_VDAC0L_CH0DONEASYNC,    /**< VDAC0 channel 0 conversion done Signal. */
362   prsSignalVDAC0_CH1DONE          = PRS_VDAC0L_CH1DONEASYNC,    /**< VDAC0 channel 1 conversion done Signal. */
363   prsSignalVDAC0_INTERNALTIMEROF  = PRS_VDAC0L_INTERNALTIMEROF, /**< VDAC0 internal timer overflow Signal. */
364   prsSignalVDAC0_REFRESHTIMEROF   = PRS_VDAC0L_REFRESHTIMEROF,  /**< VDAC0 internal timer overflow Signal. */
365 #endif
366 #if defined(PRS_VDAC0_OPA3)
367   prsSignalVDAC0_CH0  = PRS_VDAC0_CH0,  /**< VDAC0_CH0  Signal. */
368   prsSignalVDAC0_CH1  = PRS_VDAC0_CH1,  /**< VDAC0_CH1  Signal. */
369   prsSignalVDAC0_OPA0 = PRS_VDAC0_OPA0, /**< VDAC0_OPA0 Signal. */
370   prsSignalVDAC0_OPA1 = PRS_VDAC0_OPA1, /**< VDAC0_OPA1 Signal. */
371   prsSignalVDAC0_OPA2 = PRS_VDAC0_OPA2, /**< VDAC0_OPA2 Signal. */
372   prsSignalVDAC0_OPA3 = PRS_VDAC0_OPA3, /**< VDAC0_OPA3 Signal. */
373 #endif
374 #if defined(VDAC1) & (_SILICON_LABS_32B_SERIES >= 2)
375   prsSignalVDAC1_CH0WARM          = PRS_VDAC1L_CH0WARM,         /**< VDAC1 channel 0 warmed Signal. */
376   prsSignalVDAC1_CH1WARM          = PRS_VDAC1L_CH1WARM,         /**< VDAC1 channel 1 warmed Signal. */
377   prsSignalVDAC1_CH0DONE          = PRS_VDAC1L_CH0DONEASYNC,    /**< VDAC1 channel 0 conversion done Signal. */
378   prsSignalVDAC1_CH1DONE          = PRS_VDAC1L_CH1DONEASYNC,    /**< VDAC1 channel 1 conversion done Signal. */
379   prsSignalVDAC1_INTERNALTIMEROF  = PRS_VDAC1L_INTERNALTIMEROF, /**< VDAC1 internal timer overflow Signal. */
380   prsSignalVDAC1_REFRESHTIMEROF   = PRS_VDAC1L_REFRESHTIMEROF,  /**< VDAC1 internal timer overflow Signal. */
381 #endif
382 
383 #if defined(PRS_LESENSE_SCANRES15)
384   prsSignalLESENSE_SCANRES0  = PRS_LESENSE_SCANRES0,  /**< LESENSE_SCANRES0  Signal. */
385   prsSignalLESENSE_SCANRES1  = PRS_LESENSE_SCANRES1,  /**< LESENSE_SCANRES1  Signal. */
386   prsSignalLESENSE_SCANRES2  = PRS_LESENSE_SCANRES2,  /**< LESENSE_SCANRES2  Signal. */
387   prsSignalLESENSE_SCANRES3  = PRS_LESENSE_SCANRES3,  /**< LESENSE_SCANRES3  Signal. */
388   prsSignalLESENSE_SCANRES4  = PRS_LESENSE_SCANRES4,  /**< LESENSE_SCANRES4  Signal. */
389   prsSignalLESENSE_SCANRES5  = PRS_LESENSE_SCANRES5,  /**< LESENSE_SCANRES5  Signal. */
390   prsSignalLESENSE_SCANRES6  = PRS_LESENSE_SCANRES6,  /**< LESENSE_SCANRES6  Signal. */
391   prsSignalLESENSE_SCANRES7  = PRS_LESENSE_SCANRES7,  /**< LESENSE_SCANRES7  Signal. */
392   prsSignalLESENSE_SCANRES8  = PRS_LESENSE_SCANRES8,  /**< LESENSE_SCANRES8  Signal. */
393   prsSignalLESENSE_SCANRES9  = PRS_LESENSE_SCANRES9,  /**< LESENSE_SCANRES9  Signal. */
394   prsSignalLESENSE_SCANRES10 = PRS_LESENSE_SCANRES10, /**< LESENSE_SCANRES10 Signal. */
395   prsSignalLESENSE_SCANRES11 = PRS_LESENSE_SCANRES11, /**< LESENSE_SCANRES11 Signal. */
396   prsSignalLESENSE_SCANRES12 = PRS_LESENSE_SCANRES12, /**< LESENSE_SCANRES12 Signal. */
397   prsSignalLESENSE_SCANRES13 = PRS_LESENSE_SCANRES13, /**< LESENSE_SCANRES13 Signal. */
398   prsSignalLESENSE_SCANRES14 = PRS_LESENSE_SCANRES14, /**< LESENSE_SCANRES14 Signal. */
399   prsSignalLESENSE_SCANRES15 = PRS_LESENSE_SCANRES15, /**< LESENSE_SCANRES15 Signal. */
400 #endif
401 #if defined(PRS_LESENSE_DEC2)
402   prsSignalLESENSE_DEC0    = PRS_LESENSE_DEC0,    /**< LESENSE_DEC0    Signal. */
403   prsSignalLESENSE_DEC1    = PRS_LESENSE_DEC1,    /**< LESENSE_DEC1    Signal. */
404   prsSignalLESENSE_DEC2    = PRS_LESENSE_DEC2,    /**< LESENSE_DEC2    Signal. */
405 #endif
406 #if defined(PRS_LESENSE_DECOUT2)
407   prsSignalLESENSE_DECOUT0    = PRS_LESENSE_DECOUT0,    /**< LESENSE_DECOUT0    Signal. */
408   prsSignalLESENSE_DECOUT1    = PRS_LESENSE_DECOUT1,    /**< LESENSE_DECOUT1    Signal. */
409   prsSignalLESENSE_DECOUT2    = PRS_LESENSE_DECOUT2,    /**< LESENSE_DECOUT2    Signal. */
410 #endif
411 #if defined(PRS_LESENSE_DECCMP)
412   prsSignalLESENSE_DECCMP  = PRS_LESENSE_DECCMP,  /**< LESENSE_DECCMP  Signal. */
413 #endif
414 #if defined(PRS_LESENSE_MEASACT)
415   prsSignalLESENSE_MEASACT = PRS_LESENSE_MEASACT, /**< LESENSE_MEASACT Signal. */
416 #endif
417 
418   /* USART Signals */
419 #if defined(USART0)
420   prsSignalUSART0_TXC     = PRS_USART0_TXC,    /**< USART0 TX complete Signal. */
421 #if defined(PRS_USART0_RXDATA)
422   prsSignalUSART0_RXDATA  = PRS_USART0_RXDATA, /**< USART0 RX data available Signal. */
423 #endif
424 #if defined(PRS_USART0_RXDATAV)
425   prsSignalUSART0_RXDATAV = PRS_USART0_RXDATAV, /**< USART0 RX data available Signal. */
426 #endif
427 #if defined(PRS_USART0_IRTX)
428   prsSignalUSART0_IRTX    = PRS_USART0_IRTX,    /**< USART0 IR TX Signal. */
429 #endif
430 #if defined(PRS_USART0_RTS)
431   prsSignalUSART0_RTS     = PRS_USART0_RTS,    /**< USART0 RTS Signal. */
432   prsSignalUSART0_TX      = PRS_USART0_TX,     /**< USART0 TX Signal. */
433   prsSignalUSART0_CS      = PRS_USART0_CS,     /**< USART0 chip select Signal. */
434 #endif
435 #endif
436 #if defined(USART1)
437   prsSignalUSART1_TXC     = PRS_USART1_TXC,    /**< USART1 TX complete Signal. */
438 #if defined(PRS_USART1_RXDATA)
439   prsSignalUSART1_RXDATA  = PRS_USART1_RXDATA, /**< USART1 RX data available Signal. */
440 #endif
441 #if defined(PRS_USART1_RXDATAV)
442   prsSignalUSART1_RXDATAV = PRS_USART1_RXDATAV, /**< USART1 RX data available Signal. */
443 #endif
444 #if defined(PRS_USART1_IRTX)
445   prsSignalUSART1_IRTX    = PRS_USART1_IRTX,   /**< USART1 IR TX Signal. */
446 #endif
447 #if defined(PRS_USART1_RTS)
448   prsSignalUSART1_RTS     = PRS_USART1_RTS,    /**< USART1 RTS Signal. */
449   prsSignalUSART1_TX      = PRS_USART1_TX,     /**< USART1 TX Signal. */
450   prsSignalUSART1_CS      = PRS_USART1_CS,     /**< USART1 chip select Signal. */
451 #endif
452 #endif
453 #if defined(USART2)
454   prsSignalUSART2_TXC     = PRS_USART2_TXC,    /**< USART2 TX complete Signal. */
455 #if defined(PRS_USART2_RXDATA)
456   prsSignalUSART2_RXDATA  = PRS_USART2_RXDATA, /**< USART2 RX data available Signal. */
457 #endif
458 #if defined(PRS_USART2_RXDATAV)
459   prsSignalUSART2_RXDATAV = PRS_USART2_RXDATAV, /**< USART2 RX data available Signal. */
460 #endif
461 #if defined(PRS_USART2_IRTX)
462   prsSignalUSART2_IRTX    = PRS_USART2_IRTX,   /**< USART2 IR TX Signal. */
463 #endif
464 #if defined(PRS_USART2_RTS)
465   prsSignalUSART2_RTS     = PRS_USART2_RTS,    /**< USART2 RTS Signal. */
466   prsSignalUSART2_TX      = PRS_USART2_TX,     /**< USART2 TX Signal. */
467   prsSignalUSART2_CS      = PRS_USART2_CS,     /**< USART2 chip select Signal. */
468 #endif
469 #endif
470 #if defined(PRS_USART3_TXC)
471   prsSignalUSART3_TXC     = PRS_USART3_TXC,       /**< USART3 TX complete Signal. */
472   prsSignalUSART3_RXDATAV = PRS_USART3_RXDATAV,   /**< USART3 RX data available Signal. */
473   prsSignalUSART3_RTS     = PRS_USART3_RTS,       /**< USART3 RTS Signal. */
474   prsSignalUSART3_TX      = PRS_USART3_TX,        /**< USART3 TX Signal. */
475   prsSignalUSART3_CS      = PRS_USART3_CS,        /**< USART3 chip select Signal. */
476 #endif
477 #if defined(PRS_USART4_TXC)
478   prsSignalUSART4_TXC     = PRS_USART4_TXC,       /**< USART4 TX complete Signal. */
479   prsSignalUSART4_RXDATAV = PRS_USART4_RXDATAV,   /**< USART4 RX data available Signal. */
480   prsSignalUSART4_RTS     = PRS_USART4_RTS,       /**< USART4 RTS Signal. */
481   prsSignalUSART4_TX      = PRS_USART4_TX,        /**< USART4 TX Signal. */
482   prsSignalUSART4_CS      = PRS_USART4_CS,        /**< USART4 chip select Signal. */
483 #endif
484 #if defined(PRS_USART5_TXC)
485   prsSignalUSART5_TXC     = PRS_USART5_TXC,       /**< USART5 TX complete Signal. */
486   prsSignalUSART5_RXDATAV = PRS_USART5_RXDATAV,   /**< USART5 RX data available Signal. */
487   prsSignalUSART5_RTS     = PRS_USART5_RTS,       /**< USART5 RTS Signal. */
488   prsSignalUSART5_TX      = PRS_USART5_TX,        /**< USART5 TX Signal. */
489   prsSignalUSART5_CS      = PRS_USART5_CS,        /**< USART5 chip select Signal. */
490 #endif
491 
492 #if defined(UART0)
493   prsSignalUART0_TXC     = PRS_UART0_TXC,       /**< UART0 TX complete Signal. */
494   prsSignalUART0_RXDATAV = PRS_UART0_RXDATAV,   /**< UART0 RX data available Signal. */
495 #if defined(PRS_UART1_IRTX)
496   prsSignalUART0_IRTX    = PRS_UART0_IRTX,      /**< UART0 IR TX Signal. */
497 #endif
498 #if defined(PRS_UART0_RTS)
499   prsSignalUART0_RTS     = PRS_UART0_RTS,       /**< UART0 RTS Signal. */
500   prsSignalUART0_TX      = PRS_UART0_TX,        /**< UART0 TX Signal. */
501   prsSignalUART0_CS      = PRS_UART0_CS,        /**< UART0 chip select Signal. */
502 #endif
503 #endif
504 
505 #if defined(UART1)
506   prsSignalUART1_TXC     = PRS_UART1_TXC,       /**< UART1 TX complete Signal. */
507   prsSignalUART1_RXDATAV = PRS_UART1_RXDATAV,   /**< UART1 RX data available Signal. */
508 #if defined(PRS_UART1_IRTX)
509   prsSignalUART1_IRTX    = PRS_UART1_IRTX,      /**< UART1 IR RX Signal. */
510 #endif
511 #if defined(PRS_UART1_RTS)
512   prsSignalUART1_RTS     = PRS_UART1_RTS,       /**< UART1 RTS Signal. */
513   prsSignalUART1_TX      = PRS_UART1_TX,        /**< UART1 RX Signal. */
514   prsSignalUART1_CS      = PRS_UART1_CS,        /**< UART1 chip select Signal. */
515 #endif
516 #endif
517 
518 #if defined(PRS_USB_SOF)
519   prsSignalUSB_SOF   = PRS_USB_SOF,     /**< USB_SOF   Signal. */
520   prsSignalUSB_SOFSR = PRS_USB_SOFSR,   /**< USB_SOFSR Signal. */
521 #endif
522 
523 #if defined(PRS_CM4_TXEV)
524   prsSignalCM4_TXEV             = PRS_CM4_TXEV,               /**< TXEV             Signal. */
525 #endif
526 #if defined(PRS_CM4_ICACHEPCHITSOF)
527   prsSignalCM4_ICACHEPCHITSOF   = PRS_CM4_ICACHEPCHITSOF,     /**< ICACHEPCHITSOF   Signal. */
528   prsSignalCM4_ICACHEPCMISSESOF = PRS_CM4_ICACHEPCMISSESOF,   /**< ICACHEPCMISSESOF Signal. */
529 #endif
530 
531 #if defined(PRS_WTIMER0_UF)
532   prsSignalWTIMER0_UF  = PRS_WTIMER0_UF,    /**< WTIMER0_UF  Signal. */
533   prsSignalWTIMER0_OF  = PRS_WTIMER0_OF,    /**< WTIMER0_OF  Signal. */
534   prsSignalWTIMER0_CC0 = PRS_WTIMER0_CC0,   /**< WTIMER0_CC0 Signal. */
535   prsSignalWTIMER0_CC1 = PRS_WTIMER0_CC1,   /**< WTIMER0_CC1 Signal. */
536   prsSignalWTIMER0_CC2 = PRS_WTIMER0_CC2,   /**< WTIMER0_CC2 Signal. */
537 #endif
538 #if defined(PRS_WTIMER1_UF)
539   prsSignalWTIMER1_UF  = PRS_WTIMER1_UF,    /**< WTIMER1_UF  Signal. */
540   prsSignalWTIMER1_OF  = PRS_WTIMER1_OF,    /**< WTIMER1_OF  Signal. */
541   prsSignalWTIMER1_CC0 = PRS_WTIMER1_CC0,   /**< WTIMER1_CC0 Signal. */
542   prsSignalWTIMER1_CC1 = PRS_WTIMER1_CC1,   /**< WTIMER1_CC1 Signal. */
543   prsSignalWTIMER1_CC2 = PRS_WTIMER1_CC2,   /**< WTIMER1_CC2 Signal. */
544   prsSignalWTIMER1_CC3 = PRS_WTIMER1_CC3,   /**< WTIMER1_CC3 Signal. */
545 #endif
546 #if defined(PRS_WTIMER2_UF)
547   prsSignalWTIMER2_UF  = PRS_WTIMER2_UF,    /**< WTIMER2_UF  Signal. */
548   prsSignalWTIMER2_OF  = PRS_WTIMER2_OF,    /**< WTIMER2_OF  Signal. */
549   prsSignalWTIMER2_CC0 = PRS_WTIMER2_CC0,   /**< WTIMER2_CC0 Signal. */
550   prsSignalWTIMER2_CC1 = PRS_WTIMER2_CC1,   /**< WTIMER2_CC1 Signal. */
551   prsSignalWTIMER2_CC2 = PRS_WTIMER2_CC2,   /**< WTIMER2_CC2 Signal. */
552 #endif
553 #if defined(PRS_WTIMER3_UF)
554   prsSignalWTIMER3_UF  = PRS_WTIMER3_UF,    /**< WTIMER3_UF  Signal. */
555   prsSignalWTIMER3_OF  = PRS_WTIMER3_OF,    /**< WTIMER3_OF  Signal. */
556   prsSignalWTIMER3_CC0 = PRS_WTIMER3_CC0,   /**< WTIMER3_CC0 Signal. */
557   prsSignalWTIMER3_CC1 = PRS_WTIMER3_CC1,   /**< WTIMER3_CC1 Signal. */
558   prsSignalWTIMER3_CC2 = PRS_WTIMER3_CC2,   /**< WTIMER3_CC2 Signal. */
559 #endif
560 
561 /* EUSART Signals */
562 #if defined(EUSART0)
563   prsSignalEUSART0_CS         = PRS_EUSART0L_CS,         /**< EUSART0 chip select Signal. */
564   prsSignalEUSART0_IRTX       = PRS_EUSART0L_IRDATX,     /**< EUSART0 IR RX Signal. */
565   prsSignalEUSART0_RTS        = PRS_EUSART0L_RTS,        /**< EUSART0 RTS Signal. */
566   prsSignalEUSART0_RXDATA     = PRS_EUSART0L_RXDATAV,    /**< EUSART0 RX data available Signal. */
567   prsSignalEUSART0_TX         = PRS_EUSART0L_TX,         /**< EUSART0 TX Signal. */
568   prsSignalEUSART0_TXC        = PRS_EUSART0L_TXC,        /**< EUSART0 TX complete Signal. */
569   prsSignalEUSART0_RXFL       = PRS_EUSART0L_RXFL,       /**< EUSART0 rxfl Signal. */
570   prsSignalEUSART0_TXFL       = PRS_EUSART0L_TXFL,       /**< EUSART0 txfl Signal. */
571 #endif
572 #if defined(EUSART1)
573   prsSignalEUSART1_CS         = PRS_EUSART1L_CS,         /**< EUSART1 chip select Signal. */
574   prsSignalEUSART1_IRTX       = PRS_EUSART1L_IRDATX,     /**< EUSART1 IR TX Signal. */
575   prsSignalEUSART1_RTS        = PRS_EUSART1L_RTS,        /**< EUSART1 RTS Signal. */
576   prsSignalEUSART1_RXDATA     = PRS_EUSART1L_RXDATAV,    /**< EUSART1 RX data available Signal. */
577   prsSignalEUSART1_TX         = PRS_EUSART1L_TX,         /**< EUSART1 TX Signal. */
578   prsSignalEUSART1_TXC        = PRS_EUSART1L_TXC,        /**< EUSART1 TX complete Signal. */
579   prsSignalEUSART1_RXFL       = PRS_EUSART1L_RXFL,       /**< EUSART1 rxfl Signal. */
580   prsSignalEUSART1_TXFL       = PRS_EUSART1L_TXFL,       /**< EUSART1 txfl Signal. */
581 #endif
582 #if defined(EUSART2)
583 #if defined(PRS_EUSART2L_CS)
584   prsSignalEUSART2_CS         = PRS_EUSART2L_CS,         /**< EUSART2 chip select Signal. */
585   prsSignalEUSART2_IRTX       = PRS_EUSART2L_IRDATX,     /**< EUSART2 IR TX Signal. */
586   prsSignalEUSART2_RTS        = PRS_EUSART2L_RTS,        /**< EUSART2 RTS Signal. */
587   prsSignalEUSART2_RXDATA     = PRS_EUSART2L_RXDATAV,    /**< EUSART2 RX data available Signal. */
588   prsSignalEUSART2_TX         = PRS_EUSART2L_TX,         /**< EUSART2 TX Signal. */
589   prsSignalEUSART2_TXC        = PRS_EUSART2L_TXC,        /**< EUSART2 TX complete Signal. */
590   prsSignalEUSART2_RXFL       = PRS_EUSART2L_RXFL,       /**< EUSART2 rxfl Signal. */
591   prsSignalEUSART2_TXFL       = PRS_EUSART2L_TXFL,       /**< EUSART2 txfl Signal. */
592 #else
593   prsSignalEUSART2_CS         = PRS_EUSART2_CS,         /**< EUSART2 chip select Signal. */
594   prsSignalEUSART2_IRTX       = PRS_EUSART2_IRDATX,     /**< EUSART2 IR TX Signal. */
595   prsSignalEUSART2_RTS        = PRS_EUSART2_RTS,        /**< EUSART2 RTS Signal. */
596   prsSignalEUSART2_RXDATA     = PRS_EUSART2_RXDATAV,    /**< EUSART2 RX data available Signal. */
597   prsSignalEUSART2_TX         = PRS_EUSART2_TX,         /**< EUSART2 TX Signal. */
598   prsSignalEUSART2_TXC        = PRS_EUSART2_TXC,        /**< EUSART2 TX complete Signal. */
599   prsSignalEUSART2_RXFL       = PRS_EUSART2_RXFL,       /**< EUSART2 rxfl Signal. */
600   prsSignalEUSART2_TXFL       = PRS_EUSART2_TXFL,       /**< EUSART2 txfl Signal. */
601 #endif
602 #endif
603 #if defined(EUSART3)
604 #if defined(PRS_EUSART3L_CS)
605   prsSignalEUSART3_CS         = PRS_EUSART3L_CS,         /**< EUSART3 chip select Signal. */
606   prsSignalEUSART3_IRTX       = PRS_EUSART3L_IRDATX,     /**< EUSART3 IR TX Signal. */
607   prsSignalEUSART3_RTS        = PRS_EUSART3L_RTS,        /**< EUSART3 RTS Signal. */
608   prsSignalEUSART3_RXDATA     = PRS_EUSART3L_RXDATAV,    /**< EUSART3 RX data available Signal. */
609   prsSignalEUSART3_TX         = PRS_EUSART3L_TX,         /**< EUSART3 TX Signal. */
610   prsSignalEUSART3_TXC        = PRS_EUSART3L_TXC,        /**< EUSART3 TX complete Signal. */
611   prsSignalEUSART3_RXFL       = PRS_EUSART3L_RXFL,       /**< EUSART3 rxfl Signal. */
612   prsSignalEUSART3_TXFL       = PRS_EUSART3L_TXFL,       /**< EUSART3 txfl Signal. */
613 #else
614   prsSignalEUSART3_CS         = PRS_EUSART3_CS,         /**< EUSART3 chip select Signal. */
615   prsSignalEUSART3_IRTX       = PRS_EUSART3_IRDATX,     /**< EUSART3 IR TX Signal. */
616   prsSignalEUSART3_RTS        = PRS_EUSART3_RTS,        /**< EUSART3 RTS Signal. */
617   prsSignalEUSART3_RXDATA     = PRS_EUSART3_RXDATAV,    /**< EUSART3 RX data available Signal. */
618   prsSignalEUSART3_TX         = PRS_EUSART3_TX,         /**< EUSART3 TX Signal. */
619   prsSignalEUSART3_TXC        = PRS_EUSART3_TXC,        /**< EUSART3 TX complete Signal. */
620   prsSignalEUSART3_RXFL       = PRS_EUSART3_RXFL,       /**< EUSART3 rxfl Signal. */
621   prsSignalEUSART3_TXFL       = PRS_EUSART3_TXFL,       /**< EUSART3 txfl Signal. */
622 #endif
623 #endif
624 #if defined(EUSART4)
625   prsSignalEUSART4_CS         = PRS_EUSART4L_CS,         /**< EUSART4 chip select Signal. */
626   prsSignalEUSART4_IRTX       = PRS_EUSART4L_IRDATX,     /**< EUSART4 IR TX Signal. */
627   prsSignalEUSART4_RTS        = PRS_EUSART4L_RTS,        /**< EUSART4 RTS Signal. */
628   prsSignalEUSART4_RXDATA     = PRS_EUSART4L_RXDATAV,    /**< EUSART4 RX data available Signal. */
629   prsSignalEUSART4_TX         = PRS_EUSART4L_TX,         /**< EUSART4 TX Signal. */
630   prsSignalEUSART4_TXC        = PRS_EUSART4L_TXC,        /**< EUSART4 TX complete Signal. */
631   prsSignalEUSART4_RXFL       = PRS_EUSART4L_RXFL,       /**< EUSART4 rxfl Signal. */
632   prsSignalEUSART4_TXFL       = PRS_EUSART4L_TXFL,       /**< EUSART4 txfl Signal. */
633 #endif
634   /* ADC Signals */
635 #if defined(IADC0)
636   prsSignalIADC0_SCANENTRY  = PRS_IADC0_SCANENTRYDONE, /**< IADC0 scan entry Signal. */
637   prsSignalIADC0_SCANTABLE  = PRS_IADC0_SCANTABLEDONE, /**< IADC0 scan table Signal. */
638   prsSignalIADC0_SINGLE     = PRS_IADC0_SINGLEDONE,    /**< IADC0 single Signal. */
639 #endif
640 
641   /* GPIO pin Signals */
642   prsSignalGPIO_PIN0  = PRS_GPIO_PIN0,   /**< GPIO Pin 0 Signal. */
643   prsSignalGPIO_PIN1  = PRS_GPIO_PIN1,   /**< GPIO Pin 1 Signal. */
644   prsSignalGPIO_PIN2  = PRS_GPIO_PIN2,   /**< GPIO Pin 2 Signal. */
645   prsSignalGPIO_PIN3  = PRS_GPIO_PIN3,   /**< GPIO Pin 3 Signal. */
646   prsSignalGPIO_PIN4  = PRS_GPIO_PIN4,   /**< GPIO Pin 4 Signal. */
647   prsSignalGPIO_PIN5  = PRS_GPIO_PIN5,   /**< GPIO Pin 5 Signal. */
648   prsSignalGPIO_PIN6  = PRS_GPIO_PIN6,   /**< GPIO Pin 6 Signal. */
649   prsSignalGPIO_PIN7  = PRS_GPIO_PIN7,   /**< GPIO Pin 7 Signal. */
650 #if defined(PRS_GPIO_PIN15)
651   prsSignalGPIO_PIN8  = PRS_GPIO_PIN8,    /**< GPIO Pin 8 Signal. */
652   prsSignalGPIO_PIN9  = PRS_GPIO_PIN9,    /**< GPIO Pin 9 Signal. */
653   prsSignalGPIO_PIN10 = PRS_GPIO_PIN10,   /**< GPIO Pin 10 Signal. */
654   prsSignalGPIO_PIN11 = PRS_GPIO_PIN11,   /**< GPIO Pin 11 Signal. */
655   prsSignalGPIO_PIN12 = PRS_GPIO_PIN12,   /**< GPIO Pin 12 Signal. */
656   prsSignalGPIO_PIN13 = PRS_GPIO_PIN13,   /**< GPIO Pin 13 Signal. */
657   prsSignalGPIO_PIN14 = PRS_GPIO_PIN14,   /**< GPIO Pin 14 Signal. */
658   prsSignalGPIO_PIN15 = PRS_GPIO_PIN15,   /**< GPIO Pin 15 Signal. */
659 #endif
660 #if defined(PRS_AGCL_CCA)
661   prsSignalAGCL_CCA                  = PRS_AGCL_CCA,            /**< AGCL_CCA Signal. */
662   prsSignalAGCL_CCAREQ               = PRS_AGCL_CCAREQ,         /**< AGCL_CCAREQ Signal. */
663   prsSignalAGCL_GAINADJUST           = PRS_AGCL_GAINADJUST,     /**< AGCL_GAINADJUST Signal. */
664   prsSignalAGCL_GAINOK               = PRS_AGCL_GAINOK,         /**< AGCL_GAINOK Signal. */
665   prsSignalAGCL_GAINREDUCED          = PRS_AGCL_GAINREDUCED,    /**< AGCL_GAINREDUCED Signal. */
666   prsSignalAGCL_IFPKI1               = PRS_AGCL_IFPKI1,         /**< AGCL_IFPKI1 Signal. */
667   prsSignalAGCL_IFPKQ2               = PRS_AGCL_IFPKQ2,         /**< AGCL_IFPKQ2 Signal. */
668   prsSignalAGCL_IFPKRST              = PRS_AGCL_IFPKRST,        /**< AGCL_IFPKRST Signal. */
669 #endif
670 #if defined(PRS_AGC_PEAKDET)
671   prsSignalAGC_PEAKDET               = PRS_AGC_PEAKDET,         /**< AGC_PEAKDET Signal. */
672   prsSignalAGC_PROPAGATED            = PRS_AGC_PROPAGATED,      /**< AGC_PROPAGATED Signal. */
673   prsSignalAGC_RSSIDONE              = PRS_AGC_RSSIDONE,        /**< AGC_RSSIDONE Signal. */
674 #endif
675 #if defined(PRS_BUFC_THR0)
676   prsSignalBUFC_THR0                 = PRS_BUFC_THR0,           /**< BUFC_THR0 Signal. */
677   prsSignalBUFC_THR1                 = PRS_BUFC_THR1,           /**< BUFC_THR1 Signal. */
678   prsSignalBUFC_THR2                 = PRS_BUFC_THR2,           /**< BUFC_THR2 Signal. */
679   prsSignalBUFC_THR3                 = PRS_BUFC_THR3,           /**< BUFC_THR3 Signal. */
680 #endif
681 #if defined(PRS_BUFC_CNT0)
682   prsSignalBUFC_CNT0                 = PRS_BUFC_CNT0,           /**< BUFC_CNT0 Signal. */
683   prsSignalBUFC_CNT1                 = PRS_BUFC_CNT1,           /**< BUFC_CNT1 Signal. */
684   prsSignalBUFC_FULL                 = PRS_BUFC_FULL,           /**< BUFC_FULL Signal. */
685 #endif
686 #if defined(PRS_MODEML_ADVANCE)
687   prsSignalMODEML_ADVANCE            = PRS_MODEML_ADVANCE,      /**< MODEML_ADVANCE Signal. */
688   prsSignalMODEML_ANT0               = PRS_MODEML_ANT0,         /**< MODEML_ANT0 Signal. */
689   prsSignalMODEML_ANT1               = PRS_MODEML_ANT1,         /**< MODEML_ANT1 Signal. */
690   prsSignalMODEML_COHDSADET          = PRS_MODEML_COHDSADET,    /**< MODEML_COHDSADET Signal. */
691   prsSignalMODEML_COHDSALIVE         = PRS_MODEML_COHDSALIVE,   /**< MODEML_COHDSALIVE Signal. */
692   prsSignalMODEML_DCLK               = PRS_MODEML_DCLK,         /**< MODEML_DCLK Signal. */
693   prsSignalMODEML_DOUT               = PRS_MODEML_DOUT,         /**< MODEML_DOUT Signal. */
694   prsSignalMODEML_FRAMEDET           = PRS_MODEML_FRAMEDET,     /**< MODEML_FRAMEDET Signal. */
695 #endif
696 #if defined(PRS_MODEM_FRAMEDET)
697   prsSignalMODEM_FRAMEDET            = PRS_MODEM_FRAMEDET,       /**< MODEM_FRAMEDET Signal. */
698   prsSignalMODEM_TIMDET              = PRS_MODEM_TIMDET,         /**< MODEM_TIMDET Signal. */
699   prsSignalMODEM_SYNCSENT            = PRS_MODEM_SYNCSENT,       /**< MODEM_SYNCSENT Signal. */
700   prsSignalMODEM_PRESENT             = PRS_MODEM_PRESENT,        /**< MODEM_PRESENT Signal. */
701   prsSignalMODEM_ANT0                = PRS_MODEM_ANT0,           /**< MODEM_ANT0 Signal. */
702   prsSignalMODEM_ANT1                = PRS_MODEM_ANT1,           /**< MODEM_ANT1 Signal. */
703 #endif
704 #if defined(PRS_MODEM_FRAMESENT)
705   prsSignalMODEM_FRAMESENT           = PRS_MODEM_FRAMESENT,     /**< MODEM_FRAMESENT Signal. */
706 #endif
707 #if defined(PRS_MODEM_PREDET)
708   prsSignalMODEM_PREDET              = PRS_MODEM_PREDET,         /**< MODEM_PREDET Signal. */
709 #endif
710 #if defined(PRS_MODEM_LRDSADET)
711   prsSignalMODEM_LRDSADET            = PRS_MODEM_LRDSADET,      /**< MODEM_LRDSADET Signal. */
712   prsSignalMODEM_LRDSALIVE           = PRS_MODEM_LRDSALIVE,     /**< MODEM_LRDSALIVE Signal. */
713 #endif
714 #if defined(PRS_MODEM_LOWCORR)
715   prsSignalMODEM_LOWCORR             = PRS_MODEM_LOWCORR,       /**< MODEM_LOWCORR Signal. */
716   prsSignalMODEM_NEWSYMBOL           = PRS_MODEM_NEWSYMBOL,     /**< MODEM_NEWSYMBOL Signal. */
717   prsSignalMODEM_NEWWND              = PRS_MODEM_NEWWND,        /**< MODEM_NEWWND Signal. */
718   prsSignalMODEM_POSTPONE            = PRS_MODEM_POSTPONE,      /**< MODEM_POSTPONE Signal. */
719 #endif
720 #if defined(PRS_MODEMH_PRESENT)
721   prsSignalMODEMH_PRESENT            = PRS_MODEMH_PRESENT,      /**< MODEMH_PRESENT Signal. */
722   prsSignalMODEMH_RSSIJUMP           = PRS_MODEMH_RSSIJUMP,     /**< MODEMH_RSSIJUMP Signal. */
723   prsSignalMODEMH_SYNCSENT           = PRS_MODEMH_SYNCSENT,     /**< MODEMH_SYNCSENT Signal. */
724   prsSignalMODEMH_TIMDET             = PRS_MODEMH_TIMDET,       /**< MODEMH_TIMDET Signal. */
725   prsSignalMODEMH_WEAK               = PRS_MODEMH_WEAK,         /**< MODEMH_WEAK Signal. */
726   prsSignalMODEMH_EOF                = PRS_MODEMH_EOF,          /**< MODEMH_EOF Signal. */
727 #endif
728 #if defined(PRS_MODEMH_SI)
729   prsSignalMODEMH_SI                 = PRS_MODEMH_SI,           /**< MODEMH_SI Signal. */
730 #endif
731 #if defined(PRS_FRC_DCLK)
732   prsSignalFRC_DCLK                  = PRS_FRC_DCLK,            /**< FRC_DCLK Signal. */
733   prsSignalFRC_DOUT                  = PRS_FRC_DOUT,            /**< FRC_DOUT Signal. */
734 #endif
735 #if defined(PRS_PROTIMERL_BOF)
736   prsSignalPROTIMERL_BOF             = PRS_PROTIMERL_BOF,       /**< PROTIMERL_BOF Signal. */
737   prsSignalPROTIMERL_CC0             = PRS_PROTIMERL_CC0,       /**< PROTIMERL_CC0 Signal. */
738   prsSignalPROTIMERL_CC1             = PRS_PROTIMERL_CC1,       /**< PROTIMERL_CC1 Signal. */
739   prsSignalPROTIMERL_CC2             = PRS_PROTIMERL_CC2,       /**< PROTIMERL_CC2 Signal. */
740   prsSignalPROTIMERL_CC3             = PRS_PROTIMERL_CC3,       /**< PROTIMERL_CC3 Signal. */
741   prsSignalPROTIMERL_CC4             = PRS_PROTIMERL_CC4,       /**< PROTIMERL_CC4 Signal. */
742   prsSignalPROTIMERL_LBTF            = PRS_PROTIMERL_LBTF,      /**< PROTIMERL_LBTF Signal. */
743   prsSignalPROTIMERL_LBTR            = PRS_PROTIMERL_LBTR,      /**< PROTIMERL_LBTR Signal. */
744 #endif
745 #if defined(PRS_PROTIMER_LBTR)
746   prsSignalPROTIMER_LBTR             = PRS_PROTIMER_LBTR,        /**< PROTIMER_LBTR Signal. */
747   prsSignalPROTIMER_LBTF             = PRS_PROTIMER_LBTF,        /**< PROTIMER_LBTF Signal. */
748 #endif
749 #if defined(PRS_PROTIMER_LBTS)
750   prsSignalPROTIMER_LBTS             = PRS_PROTIMER_LBTS,        /**< PROTIMER_LBTS Signal. */
751 #endif
752 #if defined(PRS_PROTIMER_POF)
753   prsSignalPROTIMER_POF              = PRS_PROTIMER_POF,        /**< PROTIMER_POF Signal. */
754   prsSignalPROTIMER_T0MATCH          = PRS_PROTIMER_T0MATCH,    /**< PROTIMER_T0MATCH Signal. */
755   prsSignalPROTIMER_T0UF             = PRS_PROTIMER_T0UF,       /**< PROTIMER_T0UF Signal. */
756   prsSignalPROTIMER_T1MATCH          = PRS_PROTIMER_T1MATCH,    /**< PROTIMER_T1MATCH Signal. */
757   prsSignalPROTIMER_T1UF             = PRS_PROTIMER_T1UF,       /**< PROTIMER_T1UF Signal. */
758   prsSignalPROTIMER_WOF              = PRS_PROTIMER_WOF,        /**< PROTIMER_WOF Signal. */
759 #endif
760 #if defined(PRS_RAC_ACTIVE)
761   prsSignalRAC_ACTIVE                = PRS_RAC_ACTIVE,          /**< RAC_ACTIVE Signal. */
762   prsSignalRAC_LNAEN                 = PRS_RAC_LNAEN,           /**< RAC_LNAEN Signal. */
763   prsSignalRAC_PAEN                  = PRS_RAC_PAEN,            /**< RAC_PAEN Signal. */
764   prsSignalRAC_RX                    = PRS_RAC_RX,              /**< RAC_RX Signal. */
765   prsSignalRAC_TX                    = PRS_RAC_TX,              /**< RAC_TX Signal. */
766 #endif
767 #if defined(PRS_RACL_ACTIVE)
768   prsSignalRACL_ACTIVE               = PRS_RACL_ACTIVE,          /**< RACL_ACTIVE Signal. */
769   prsSignalRACL_LNAEN                = PRS_RACL_LNAEN,           /**< RACL_LNAEN Signal. */
770   prsSignalRACL_PAEN                 = PRS_RACL_PAEN,            /**< RACL_PAEN Signal. */
771   prsSignalRACL_RX                   = PRS_RACL_RX,              /**< RACL_RX Signal. */
772   prsSignalRACL_TX                   = PRS_RACL_TX,              /**< RACL_TX Signal. */
773   prsSignalRACL_CTIOUT0              = PRS_RACL_CTIOUT0,        /**< RACL_CTIOUT0 Signal. */
774   prsSignalRACL_CTIOUT1              = PRS_RACL_CTIOUT1,        /**< RACL_CTIOUT1 Signal. */
775   prsSignalRACL_CTIOUT2              = PRS_RACL_CTIOUT2,        /**< RACL_CTIOUT2 Signal. */
776 #endif
777 #if defined(PRS_RAC_CTIOUT3)
778   prsSignalRAC_CTIOUT3               = PRS_RAC_CTIOUT3,         /**< RAC_CTIOUT3 Signal. */
779 #endif
780 #if defined(PRS_RAC_AUXADCDATA)
781   prsSignalRAC_AUXADCDATA            = PRS_RAC_AUXADCDATA,      /**< RAC_AUXADCDATA Signal. */
782   prsSignalRAC_AUXADCDATAVALID       = PRS_RAC_AUXADCDATAVALID, /**< RAC_AUXADCDATAVALID Signal. */
783 #endif
784 #if defined(PRS_SYNTH_MUX0)
785   prsSignalSYNTH_MUX0                = PRS_SYNTH_MUX0,          /**< SYNTH_MUX0 Signal. */
786   prsSignalSYNTH_MUX1                = PRS_SYNTH_MUX1,          /**< SYNTH_MUX1 Signal. */
787 #endif
788 #if defined(PRS_PRORTC_CCV0)
789   prsSignalPRORTC_CCV0               = PRS_PRORTC_CCV0,         /**< PRORTC_CCV0 Signal. */
790   prsSignalPRORTC_CCV1               = PRS_PRORTC_CCV1,         /**< PRORTC_CCV1 Signal. */
791 #endif
792 #if defined(RFFPLL0)
793   prsSignalRFFPLL0L_CLKDIGDIV4      = PRS_RFFPLL0L_CLKDIGDIV4,      /**< RFFPLL0L CLKDIGDIV4 Signal. */
794   prsSignalRFFPLL0L_CLKMODEMDIV4    = PRS_RFFPLL0L_CLKMODEMDIV4,    /**< RFFPLL0L CLKMODEMDIV4 Signal. */
795 #if defined(PRS_RFFPLL0L_RFBIASFSMSTATE0)
796   prsSignalRFFPLL0L_RFBIASFSMSTATE0 = PRS_RFFPLL0L_RFBIASFSMSTATE0, /**< RFFPLL0L RFBIASFSMSTATE0 Signal. */
797   prsSignalRFFPLL0L_RFBIASFSMSTATE1 = PRS_RFFPLL0L_RFBIASFSMSTATE1, /**< RFFPLL0L RFBIASFSMSTATE1 Signal. */
798   prsSignalRFFPLL0L_RFFPLLFSMSTATE0 = PRS_RFFPLL0L_RFFPLLFSMSTATE0, /**< RFFPLL0L RFFPLLFSMSTATE0 Signal. */
799   prsSignalRFFPLL0L_RFFPLLFSMSTATE1 = PRS_RFFPLL0L_RFFPLLFSMSTATE1, /**< RFFPLL0L RFFPLLFSMSTATE1 Signal. */
800   prsSignalRFFPLL0L_RFFPLLFSMSTATE2 = PRS_RFFPLL0L_RFFPLLFSMSTATE2, /**< RFFPLL0L RFFPLLFSMSTATE2 Signal. */
801   prsSignalRFFPLL0L_RFBIASFSMSTATE2 = PRS_RFFPLL0L_RFBIASFSMSTATE2, /**< RFFPLL0L RFBIASFSMSTATE2 Signal. */
802   prsSignalRFFPLL0_RFFPLLFSMSTATE3  = PRS_RFFPLL0_RFFPLLFSMSTATE3,  /**< RFFPLL0 RFFPLLFSMSTATE3 Signal. */
803 #endif
804 #endif
805 #if defined(FEFILT0)
806   prsSignalFEFILT0_REMPTY = PRS_FEFILT0_REMPTY, /**< FEFILT0 REMPTY Signal. */
807   prsSignalFEFILT0_WFULL  = PRS_FEFILT0_WFULL,  /**< FEFILT0 WFULL Signal. */
808 #endif
809 #if defined(FEFILT0)
810   prsSignalFEFILT1_REMPTY = PRS_FEFILT1_REMPTY, /**< FEFILT1 REMPTY Signal. */
811   prsSignalFEFILT1_WFULL  = PRS_FEFILT1_WFULL,  /**< FEFILT1 WFULL Signal. */
812 #endif
813 #if defined(ETAMPDET)
814   prsSignalETAMPDET_TAMPERSRCETAMPDET = PRS_ETAMPDET_TAMPERSRCETAMPDET, /**< ETAMPDET TAMPERSRCETAMPDET Signal. */
815 #endif
816 #if defined(SMCTRL)
817   prsSignalSMCTRLL_SOFTM0 = PRS_SMCTRLL_SOFTM0, /**< SMCTRLL SOFTM0 Signal. */
818   prsSignalSMCTRLL_SOFTM1 = PRS_SMCTRLL_SOFTM1, /**< SMCTRLL SOFTM1 Signal. */
819   prsSignalSMCTRLL_SOFTM2 = PRS_SMCTRLL_SOFTM2, /**< SMCTRLL SOFTM2 Signal. */
820   prsSignalSMCTRLL_SOFTM3 = PRS_SMCTRLL_SOFTM3, /**< SMCTRLL SOFTM3 Signal. */
821   prsSignalSMCTRLL_SOFTM4 = PRS_SMCTRLL_SOFTM4, /**< SMCTRLL SOFTM4 Signal. */
822   prsSignalSMCTRLL_SOFTM5 = PRS_SMCTRLL_SOFTM5, /**< SMCTRLL SOFTM5 Signal. */
823   prsSignalSMCTRLL_SOFTM6 = PRS_SMCTRLL_SOFTM6, /**< SMCTRLL SOFTM6 Signal. */
824   prsSignalSMCTRLL_SOFTM7 = PRS_SMCTRLL_SOFTM7, /**< SMCTRLL SOFTM7 Signal. */
825   prsSignalSMCTRL_SOFTM8  = PRS_SMCTRL_SOFTM8,  /**< SMCTRL SOFTM8 Signal. */
826   prsSignalSMCTRL_SOFTM9  = PRS_SMCTRL_SOFTM9,  /**< SMCTRL SOFTM9 Signal. */
827   prsSignalSMCTRL_SOFTM10 = PRS_SMCTRL_SOFTM10, /**< SMCTRL SOFTM10 Signal. */
828   prsSignalSMCTRL_SOFTM11 = PRS_SMCTRL_SOFTM11, /**< SMCTRL SOFTM11 Signal. */
829 #endif
830 #if defined(PRS_SEHFRCO_COREEN)
831   prsSignalSEHFRCO_COREEN = PRS_SEHFRCO_COREEN, /**< SEHFRCO COREEN Signal. */
832   prsSignalSEHFRCO_STATE0 = PRS_SEHFRCO_STATE0, /**< SEHFRCO STATE0 Signal. */
833   prsSignalSEHFRCO_STATE1 = PRS_SEHFRCO_STATE1, /**< SEHFRCO STATE1 Signal. */
834   prsSignalSEHFRCO_STATE2 = PRS_SEHFRCO_STATE2, /**< SEHFRCO STATE2 Signal. */
835 #endif
836 #if defined(PRS_SEATAMPDET_SEATAMPDETSUPTPDELAY)
837   prsSignalSEATAMPDET_SEATAMPDETSUPTPDELAY = PRS_SEATAMPDET_SEATAMPDETSUPTPDELAY, /**< SEATAMPDET SEATAMPDETSUPTPDELAY Signal. */
838 #endif
839 #if defined(PRS_DCDC_MONO70NSANA)
840   prsSignalDCDC_MONO70NSANA = PRS_DCDC_MONO70NSANA, /** DCDC Pulses for Coulomb Counter Calibration Signal. */
841 #endif
842 #if defined(PRS_LFRCO_CALMEAS)
843   prsSignalLFRCO_CALMEAS = PRS_LFRCO_CALMEAS, /** LFRCO Calibration Measure Signal. */
844   prsSignalLFRCO_SDM     = PRS_LFRCO_SDM,     /** LFRCO Sigma Delta Modulator output Signal. */
845   prsSignalLFRCO_TCMEAS  = PRS_LFRCO_TCMEAS,  /** LFRCO Temperature Check Measure Signal. */
846 #endif
847 } PRS_Signal_t;
848 
849 #if defined(_SILICON_LABS_32B_SERIES_2)
850 /** PRS Consumers. */
851 typedef enum {
852   prsConsumerNone                = 0x000,                                               /**< No PRS consumer */
853   prsConsumerCMU_CALDN           = offsetof(PRS_TypeDef, CONSUMER_CMU_CALDN),           /**< CMU calibration down consumer. */
854   prsConsumerCMU_CALUP           = offsetof(PRS_TypeDef, CONSUMER_CMU_CALUP),           /**< CMU calibration up consumer. */
855 #if defined(IADC_PRESENT)
856   prsConsumerIADC0_SCANTRIGGER   = offsetof(PRS_TypeDef, CONSUMER_IADC0_SCANTRIGGER),   /**< IADC0 scan trigger consumer. */
857   prsConsumerIADC0_SINGLETRIGGER = offsetof(PRS_TypeDef, CONSUMER_IADC0_SINGLETRIGGER), /**< IADC0 single trigger consumer. */
858 #endif
859   prsConsumerLDMA_REQUEST0       = offsetof(PRS_TypeDef, CONSUMER_LDMAXBAR_DMAREQ0),    /**< LDMA Request 0 consumer. */
860   prsConsumerLDMA_REQUEST1       = offsetof(PRS_TypeDef, CONSUMER_LDMAXBAR_DMAREQ1),    /**< LDMA Request 1 consumer. */
861 #if defined(LETIMER0)
862   prsConsumerLETIMER0_CLEAR      = offsetof(PRS_TypeDef, CONSUMER_LETIMER0_CLEAR),      /**< LETIMER0 clear consumer. */
863   prsConsumerLETIMER0_START      = offsetof(PRS_TypeDef, CONSUMER_LETIMER0_START),      /**< LETIMER0 start consumer. */
864   prsConsumerLETIMER0_STOP       = offsetof(PRS_TypeDef, CONSUMER_LETIMER0_STOP),       /**< LETIMER0 stop consumer. */
865 #endif
866   prsConsumerTIMER0_CC0          = offsetof(PRS_TypeDef, CONSUMER_TIMER0_CC0),          /**< TIMER0 capture/compare channel 0 consumer. */
867   prsConsumerTIMER0_CC1          = offsetof(PRS_TypeDef, CONSUMER_TIMER0_CC1),          /**< TIMER0 capture/compare channel 1 consumer. */
868   prsConsumerTIMER0_CC2          = offsetof(PRS_TypeDef, CONSUMER_TIMER0_CC2),          /**< TIMER0 capture/compare channel 2 consumer. */
869   prsConsumerTIMER1_CC0          = offsetof(PRS_TypeDef, CONSUMER_TIMER1_CC0),          /**< TIMER1 capture/compare channel 0 consumer. */
870   prsConsumerTIMER1_CC1          = offsetof(PRS_TypeDef, CONSUMER_TIMER1_CC1),          /**< TIMER1 capture/compare channel 1 consumer. */
871   prsConsumerTIMER1_CC2          = offsetof(PRS_TypeDef, CONSUMER_TIMER1_CC2),          /**< TIMER1 capture/compare channel 2 consumer. */
872   prsConsumerTIMER2_CC0          = offsetof(PRS_TypeDef, CONSUMER_TIMER2_CC0),          /**< TIMER2 capture/compare channel 0 consumer. */
873   prsConsumerTIMER2_CC1          = offsetof(PRS_TypeDef, CONSUMER_TIMER2_CC1),          /**< TIMER2 capture/compare channel 1 consumer. */
874   prsConsumerTIMER2_CC2          = offsetof(PRS_TypeDef, CONSUMER_TIMER2_CC2),          /**< TIMER2 capture/compare channel 2 consumer. */
875   prsConsumerTIMER3_CC0          = offsetof(PRS_TypeDef, CONSUMER_TIMER3_CC0),          /**< TIMER3 capture/compare channel 0 consumer. */
876   prsConsumerTIMER3_CC1          = offsetof(PRS_TypeDef, CONSUMER_TIMER3_CC1),          /**< TIMER3 capture/compare channel 1 consumer. */
877   prsConsumerTIMER3_CC2          = offsetof(PRS_TypeDef, CONSUMER_TIMER3_CC2),          /**< TIMER3 capture/compare channel 2 consumer. */
878 #if defined(TIMER4)
879   prsConsumerTIMER4_CC0          = offsetof(PRS_TypeDef, CONSUMER_TIMER4_CC0),          /**< TIMER4 capture/compare channel 0 consumer. */
880   prsConsumerTIMER4_CC1          = offsetof(PRS_TypeDef, CONSUMER_TIMER4_CC1),          /**< TIMER4 capture/compare channel 1 consumer. */
881   prsConsumerTIMER4_CC2          = offsetof(PRS_TypeDef, CONSUMER_TIMER4_CC2),          /**< TIMER4 capture/compare channel 2 consumer. */
882 #endif
883 #if defined(TIMER5)
884   prsConsumerTIMER5_CC0          = offsetof(PRS_TypeDef, CONSUMER_TIMER5_CC0),          /**< TIMER5 capture/compare channel 0 consumer. */
885   prsConsumerTIMER5_CC1          = offsetof(PRS_TypeDef, CONSUMER_TIMER5_CC1),          /**< TIMER5 capture/compare channel 1 consumer. */
886   prsConsumerTIMER5_CC2          = offsetof(PRS_TypeDef, CONSUMER_TIMER5_CC2),          /**< TIMER5 capture/compare channel 2 consumer. */
887 #endif
888 #if defined(TIMER6)
889   prsConsumerTIMER6_CC0          = offsetof(PRS_TypeDef, CONSUMER_TIMER6_CC0),          /**< TIMER6 capture/compare channel 0 consumer. */
890   prsConsumerTIMER6_CC1          = offsetof(PRS_TypeDef, CONSUMER_TIMER6_CC1),          /**< TIMER6 capture/compare channel 1 consumer. */
891   prsConsumerTIMER6_CC2          = offsetof(PRS_TypeDef, CONSUMER_TIMER6_CC2),          /**< TIMER6 capture/compare channel 2 consumer. */
892 #endif
893 #if defined(TIMER7)
894   prsConsumerTIMER7_CC0          = offsetof(PRS_TypeDef, CONSUMER_TIMER7_CC0),          /**< TIMER7 capture/compare channel 0 consumer. */
895   prsConsumerTIMER7_CC1          = offsetof(PRS_TypeDef, CONSUMER_TIMER7_CC1),          /**< TIMER7 capture/compare channel 1 consumer. */
896   prsConsumerTIMER7_CC2          = offsetof(PRS_TypeDef, CONSUMER_TIMER7_CC2),          /**< TIMER7 capture/compare channel 2 consumer. */
897 #endif
898 #if defined(USART0)
899   prsConsumerUSART0_CLK          = offsetof(PRS_TypeDef, CONSUMER_USART0_CLK),          /**< USART0 clock consumer. */
900   prsConsumerUSART0_IR           = offsetof(PRS_TypeDef, CONSUMER_USART0_IR),           /**< USART0 IR consumer. */
901   prsConsumerUSART0_RX           = offsetof(PRS_TypeDef, CONSUMER_USART0_RX),           /**< USART0 RX consumer. */
902   prsConsumerUSART0_TRIGGER      = offsetof(PRS_TypeDef, CONSUMER_USART0_TRIGGER),      /**< USART0 trigger consumer. */
903 #endif
904 #if defined(USART1)
905   prsConsumerUSART1_CLK          = offsetof(PRS_TypeDef, CONSUMER_USART1_CLK),          /**< USART1 clock consumer. */
906   prsConsumerUSART1_IR           = offsetof(PRS_TypeDef, CONSUMER_USART1_IR),           /**< USART1 IR consumer. */
907   prsConsumerUSART1_RX           = offsetof(PRS_TypeDef, CONSUMER_USART1_RX),           /**< USART1 TX consumer. */
908   prsConsumerUSART1_TRIGGER      = offsetof(PRS_TypeDef, CONSUMER_USART1_TRIGGER),      /**< USART1 trigger consumer. */
909 #endif
910 #if defined(USART2)
911   prsConsumerUSART2_CLK          = offsetof(PRS_TypeDef, CONSUMER_USART2_CLK),          /**< USART2 clock consumer. */
912   prsConsumerUSART2_IR           = offsetof(PRS_TypeDef, CONSUMER_USART2_IR),           /**< USART2 IR consumer. */
913   prsConsumerUSART2_RX           = offsetof(PRS_TypeDef, CONSUMER_USART2_RX),           /**< USART2 RX consumer. */
914   prsConsumerUSART2_TRIGGER      = offsetof(PRS_TypeDef, CONSUMER_USART2_TRIGGER),      /**< USART2 trigger consumer. */
915 #endif
916 #if defined(EUSART0)
917   prsConsumerEUSART0_CLK         = offsetof(PRS_TypeDef, CONSUMER_EUSART0_CLK),         /**< EUSART0 clk consumer. */
918   prsConsumerEUSART0_RX          = offsetof(PRS_TypeDef, CONSUMER_EUSART0_RX),          /**< EUSART0 RX consumer. */
919   prsConsumerEUSART0_TRIGGER     = offsetof(PRS_TypeDef, CONSUMER_EUSART0_TRIGGER),     /**< EUSART0 trigger consumer. */
920 #endif
921 #if defined(EUSART1)
922   prsConsumerEUSART1_CLK         = offsetof(PRS_TypeDef, CONSUMER_EUSART1_CLK),         /**< EUSART1 clk consumer. */
923   prsConsumerEUSART1_RX          = offsetof(PRS_TypeDef, CONSUMER_EUSART1_RX),          /**< EUSART1 RX consumer. */
924   prsConsumerEUSART1_TRIGGER     = offsetof(PRS_TypeDef, CONSUMER_EUSART1_TRIGGER),     /**< EUSART1 trigger consumer. */
925 #endif
926 #if defined(EUSART2)
927   prsConsumerEUSART2_CLK         = offsetof(PRS_TypeDef, CONSUMER_EUSART2_CLK),         /**< EUSART1 clk consumer. */
928   prsConsumerEUSART2_RX          = offsetof(PRS_TypeDef, CONSUMER_EUSART2_RX),          /**< EUSART2 RX consumer. */
929   prsConsumerEUSART2_TRIGGER     = offsetof(PRS_TypeDef, CONSUMER_EUSART2_TRIGGER),     /**< EUSART2 trigger consumer. */
930 #endif
931 #if defined(EUSART3)
932   prsConsumerEUSART3_RX          = offsetof(PRS_TypeDef, CONSUMER_EUSART3_RX),             /**< EUSART3 RX consumer. */
933   prsConsumerEUSART3_TRIGGER     = offsetof(PRS_TypeDef, CONSUMER_EUSART3_TRIGGER),        /**< EUSART3 trigger consumer. */
934 #endif
935 #if defined(EUSART4)
936   prsConsumerEUSART4_RX          = offsetof(PRS_TypeDef, CONSUMER_EUSART4_RX),             /**< EUSART4 RX consumer. */
937   prsConsumerEUSART4_TRIGGER     = offsetof(PRS_TypeDef, CONSUMER_EUSART4_TRIGGER),        /**< EUSART4 trigger consumer. */
938 #endif
939 #if defined(EUART0)
940   prsConsumerEUART0_RX           = offsetof(PRS_TypeDef, CONSUMER_EUART0_RX),           /**< EUART0 RX consumer. */
941   prsConsumerEUART0_TRIGGER      = offsetof(PRS_TypeDef, CONSUMER_EUART0_TRIGGER),      /**< EUART0 TRIGGER Consumer. */
942 #endif
943   prsConsumerWDOG0_SRC0          = offsetof(PRS_TypeDef, CONSUMER_WDOG0_SRC0),          /**< WDOG0 source 0 consumer. */
944   prsConsumerWDOG0_SRC1          = offsetof(PRS_TypeDef, CONSUMER_WDOG0_SRC1),          /**< WDOG0 source 1 consumer. */
945 #if defined(WDOG1)
946   prsConsumerWDOG1_SRC0          = offsetof(PRS_TypeDef, CONSUMER_WDOG1_SRC0),          /**< WDOG1 source 0 consumer. */
947   prsConsumerWDOG1_SRC1          = offsetof(PRS_TypeDef, CONSUMER_WDOG1_SRC1),          /**< WDOG1 source 1 consumer. */
948 #endif
949 #if defined(PCNT0)
950   prsConsumerPCNT0_IN0           = offsetof(PRS_TypeDef, CONSUMER_PCNT0_S0IN),          /**< PCNT0 input 0 consumer. */
951   prsConsumerPCNT0_IN1           = offsetof(PRS_TypeDef, CONSUMER_PCNT0_S1IN),          /**< PCNT0 input 1 consumer. */
952 #endif
953 #if defined(_PRS_CONSUMER_RTCC_CC2_MASK)
954   prsConsumerRTCC_CC0            = offsetof(PRS_TypeDef, CONSUMER_RTCC_CC0),            /**< RTCC capture/compare channel 0 consumer. */
955   prsConsumerRTCC_CC1            = offsetof(PRS_TypeDef, CONSUMER_RTCC_CC1),            /**< RTCC capture/compare channel 1 consumer. */
956   prsConsumerRTCC_CC2            = offsetof(PRS_TypeDef, CONSUMER_RTCC_CC2),            /**< RTCC capture/compare channel 2 consumer. */
957 #endif
958 #if defined(SYSRTC0)
959   prsConsumerSYSRTC0_SRC0        = offsetof(PRS_TypeDef, CONSUMER_SYSRTC0_IN0),         /**< SYSRTC0 input 0 consumer. */
960   prsConsumerSYSRTC0_SRC1        = offsetof(PRS_TypeDef, CONSUMER_SYSRTC0_IN1),         /**< SYSRTC0 input 1 consumer. */
961 #endif
962 #if defined(_PRS_CONSUMER_HFXO0_OSCREQ_MASK)
963   prsConsumerHFXO0_OSCREQ        = offsetof(PRS_TypeDef, CONSUMER_HFXO0_OSCREQ),        /**< OSCREQ consumer. */
964   prsConsumerHFXO0_TIMEOUT       = offsetof(PRS_TypeDef, CONSUMER_HFXO0_TIMEOUT),       /**< HFXO0_TIMEOUT consumer. */
965 #endif
966 #if defined(LESENSE)
967   prsConsumerLESENSE_START       = offsetof(PRS_TypeDef, CONSUMER_LESENSE_START),       /**< LESENSE_START consumer. */
968 #endif
969 #if defined(VDAC0)
970   prsConsumerVDAC0_ASYNCTRIGCH0  = offsetof(PRS_TypeDef, CONSUMER_VDAC0_ASYNCTRIGCH0),  /**< VDAC0 ASYNC TRIGER CH0 consumer. */
971   prsConsumerVDAC0_ASYNCTRIGCH1  = offsetof(PRS_TypeDef, CONSUMER_VDAC0_ASYNCTRIGCH1),  /**< VDAC0 ASYNC TRIGER CH1 consumer. */
972   prsConsumerVDAC0_SYNCTRIGCH0   = offsetof(PRS_TypeDef, CONSUMER_VDAC0_SYNCTRIGCH0),   /**< VDAC0 SYNC TRIGER CH0 consumer. */
973   prsConsumerVDAC0_SYNCTRIGCH1   = offsetof(PRS_TypeDef, CONSUMER_VDAC0_SYNCTRIGCH1),   /**< VDAC0 SYNC TRIGER CH1 consumer. */
974 #endif
975 #if defined(VDAC1)
976   prsConsumerVDAC1_ASYNCTRIGCH0  = offsetof(PRS_TypeDef, CONSUMER_VDAC1_ASYNCTRIGCH0),  /**< VDAC1 ASYNC TRIGER CH0 consumer. */
977   prsConsumerVDAC1_ASYNCTRIGCH1  = offsetof(PRS_TypeDef, CONSUMER_VDAC1_ASYNCTRIGCH1),  /**< VDAC1 ASYNC TRIGER CH1 consumer. */
978   prsConsumerVDAC1_SYNCTRIGCH0   = offsetof(PRS_TypeDef, CONSUMER_VDAC1_SYNCTRIGCH0),   /**< VDAC1 SYNC TRIGER CH0 consumer. */
979   prsConsumerVDAC1_SYNCTRIGCH1   = offsetof(PRS_TypeDef, CONSUMER_VDAC1_SYNCTRIGCH1),   /**< VDAC1 SYNC TRIGER CH1 consumer. */
980 #endif
981 } PRS_Consumer_t;
982 #endif
983 
984 /*******************************************************************************
985  *****************************   PROTOTYPES   **********************************
986  ******************************************************************************/
987 
988 /***************************************************************************//**
989  * @brief
990  *   Set level control bit for one or more channels.
991  *
992  * @details
993  *   The level value for a channel is XORed with both the pulse possibly issued
994  *   by PRS_PulseTrigger() and the PRS input signal selected for the channel(s).
995  *
996  * @cond DOXYDOC_S2_DEVICE
997  * @note
998  *   Note that software level control is only available for asynchronous
999  *   channels on Series 2 devices.
1000  * @endcond
1001  *
1002  * @param[in] level
1003  *   Level to use for channels indicated by @p mask. Use logical OR combination
1004  *   of PRS_SWLEVEL_CHnLEVEL defines for channels to set high level, otherwise 0.
1005  *
1006  * @param[in] mask
1007  *   Mask indicating which channels to set level for. Use logical OR combination
1008  *   of PRS_SWLEVEL_CHnLEVEL defines.
1009  ******************************************************************************/
PRS_LevelSet(uint32_t level,uint32_t mask)1010 __STATIC_INLINE void PRS_LevelSet(uint32_t level, uint32_t mask)
1011 {
1012 #if defined(_PRS_SWLEVEL_MASK)
1013   PRS->SWLEVEL = (PRS->SWLEVEL & ~mask) | (level & mask);
1014 #else
1015   PRS->ASYNC_SWLEVEL = (PRS->ASYNC_SWLEVEL & ~mask) | (level & mask);
1016 #endif
1017 }
1018 
1019 /***************************************************************************//**
1020  * @brief
1021  *   Get level control bit for all channels.
1022  *
1023  * @return
1024  *   The current software level configuration.
1025  ******************************************************************************/
PRS_LevelGet(void)1026 __STATIC_INLINE uint32_t PRS_LevelGet(void)
1027 {
1028 #if defined(_PRS_SWLEVEL_MASK)
1029   return PRS->SWLEVEL;
1030 #else
1031   return PRS->ASYNC_SWLEVEL;
1032 #endif
1033 }
1034 
1035 #if defined(_PRS_ASYNC_PEEK_MASK) || defined(_PRS_PEEK_MASK)
1036 /***************************************************************************//**
1037  * @brief
1038  *   Get the PRS channel values for all channels.
1039  *
1040  * @param[in] type
1041  *   PRS channel type. This can be either @ref prsTypeAsync or
1042  *   @ref prsTypeSync.
1043  *
1044  * @return
1045  *   The current PRS channel output values for all channels as a bitset.
1046  ******************************************************************************/
PRS_Values(PRS_ChType_t type)1047 __STATIC_INLINE uint32_t PRS_Values(PRS_ChType_t type)
1048 {
1049 #if defined(_PRS_ASYNC_PEEK_MASK)
1050   if (type == prsTypeAsync) {
1051     return PRS->ASYNC_PEEK;
1052   } else {
1053     return PRS->SYNC_PEEK;
1054   }
1055 #else
1056   (void) type;
1057   return PRS->PEEK;
1058 #endif
1059 }
1060 
1061 /***************************************************************************//**
1062  * @brief
1063  *   Get the PRS channel value for a single channel.
1064  *
1065  * @param[in] ch
1066  *   PRS channel number.
1067  *
1068  * @param[in] type
1069  *   PRS channel type. This can be either @ref prsTypeAsync or
1070  *   @ref prsTypeSync.
1071  *
1072  * @return
1073  *   The current PRS channel output value. This is either 0 or 1.
1074  ******************************************************************************/
PRS_ChannelValue(unsigned int ch,PRS_ChType_t type)1075 __STATIC_INLINE bool PRS_ChannelValue(unsigned int ch, PRS_ChType_t type)
1076 {
1077   return (0UL != ((PRS_Values(type) >> ch) & 0x1U));
1078 }
1079 #endif
1080 
1081 /***************************************************************************//**
1082  * @brief
1083  *   Trigger a high pulse (one HFPERCLK) for one or more channels.
1084  *
1085  * @details
1086  *   Setting a bit for a channel causes the bit in the register to remain high
1087  *   for one HFPERCLK cycle. Pulse is XORed with both the corresponding bit
1088  *   in PRS SWLEVEL register and the PRS input signal selected for the
1089  *   channel(s).
1090  *
1091  * @param[in] channels
1092  *   Logical ORed combination of channels to trigger a pulse for. Use
1093  *   PRS_SWPULSE_CHnPULSE defines.
1094  ******************************************************************************/
PRS_PulseTrigger(uint32_t channels)1095 __STATIC_INLINE void PRS_PulseTrigger(uint32_t channels)
1096 {
1097 #if defined(_PRS_SWPULSE_MASK)
1098   PRS->SWPULSE = channels & _PRS_SWPULSE_MASK;
1099 #else
1100   PRS->ASYNC_SWPULSE = channels & _PRS_ASYNC_SWPULSE_MASK;
1101 #endif
1102 }
1103 
1104 /***************************************************************************//**
1105  * @brief
1106  *   Set the PRS channel level for one asynchronous PRS channel.
1107  *
1108  * @param[in] ch
1109  *   PRS channel number.
1110  *
1111  * @param[in] level
1112  *   true to set the level high (1) and false to set the level low (0).
1113  ******************************************************************************/
PRS_ChannelLevelSet(unsigned int ch,bool level)1114 __STATIC_INLINE void PRS_ChannelLevelSet(unsigned int ch, bool level)
1115 {
1116   PRS_LevelSet((uint32_t) level << ch, 0x1UL << ch);
1117 }
1118 
1119 /***************************************************************************//**
1120  * @brief
1121  *   Trigger a pulse on one PRS channel.
1122  *
1123  * @param[in] ch
1124  *   PRS channel number.
1125  ******************************************************************************/
PRS_ChannelPulse(unsigned int ch)1126 __STATIC_INLINE void PRS_ChannelPulse(unsigned int ch)
1127 {
1128   PRS_PulseTrigger(0x1UL << ch);
1129 }
1130 
1131 void PRS_SourceSignalSet(unsigned int ch,
1132                          uint32_t source,
1133                          uint32_t signal,
1134                          PRS_Edge_TypeDef edge);
1135 
1136 #if defined(PRS_ASYNC_SUPPORTED)
1137 void PRS_SourceAsyncSignalSet(unsigned int ch,
1138                               uint32_t source,
1139                               uint32_t signal);
1140 #endif
1141 #if defined(_PRS_ROUTELOC0_MASK) || (defined(_PRS_ROUTE_MASK) && (_PRS_ROUTE_MASK))
1142 void PRS_GpioOutputLocation(unsigned int ch,
1143                             unsigned int location);
1144 #endif
1145 
1146 int PRS_GetFreeChannel(PRS_ChType_t type);
1147 void PRS_Reset(void);
1148 void PRS_ConnectSignal(unsigned int ch, PRS_ChType_t type, PRS_Signal_t signal);
1149 #if defined(_SILICON_LABS_32B_SERIES_2)
1150 uint32_t PRS_ConvertToSyncSource(uint32_t asyncSource);
1151 uint32_t PRS_ConvertToSyncSignal(uint32_t asyncSource, uint32_t asyncSignal);
1152 void PRS_ConnectConsumer(unsigned int ch, PRS_ChType_t type, PRS_Consumer_t consumer);
1153 void PRS_PinOutput(unsigned int ch, PRS_ChType_t type, GPIO_Port_TypeDef port, uint8_t pin);
1154 void PRS_Combine(unsigned int chA, unsigned int chB, PRS_Logic_t logic);
1155 #endif
1156 
1157 /** @} (end addtogroup prs) */
1158 
1159 #ifdef __cplusplus
1160 }
1161 #endif
1162 
1163 #endif /* defined(PRS_COUNT) && (PRS_COUNT > 0) */
1164 #endif /* EM_PRS_H */
1165