1 /***************************************************************************//**
2 * \file cy_device.h
3 * \version 2.30
4 *
5 * This file specifies the structure for core and peripheral block HW base
6 * addresses, versions, and parameters.
7 *
8 ********************************************************************************
9 * \copyright
10 * Copyright 2018-2022 Cypress Semiconductor Corporation
11 * SPDX-License-Identifier: Apache-2.0
12 *
13 * Licensed under the Apache License, Version 2.0 (the "License");
14 * you may not use this file except in compliance with the License.
15 * You may obtain a copy of the License at
16 *
17 *     http://www.apache.org/licenses/LICENSE-2.0
18 *
19 * Unless required by applicable law or agreed to in writing, software
20 * distributed under the License is distributed on an "AS IS" BASIS,
21 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
22 * See the License for the specific language governing permissions and
23 * limitations under the License.
24 *******************************************************************************/
25 
26 #ifndef CY_DEVICE_H_
27 #define CY_DEVICE_H_
28 
29 #include <stdint.h>
30 #include <stddef.h>
31 
32 #include "cy_device_headers.h"
33 
34 /* Use for mutual conditions when code should be included for a TVIIBE512K, TVIIBE1M, TVIIEBE2M, or TVIIBE4M device.*/
35 #if (defined (CY_DEVICE_SERIES_CYT2B6) || defined (CY_DEVICE_SERIES_CYT2B7) || defined (CY_DEVICE_SERIES_CYT2B9) || defined (CY_DEVICE_SERIES_CYT2BL))
36 
37 /* Use to determine if compiling for a TVIIBE device. */
38 #define CY_DEVICE_TVIIBE (1UL)
39 
40 /* Drivers for some TVIIBE IP require macro names with version fields.  This header
41  * remaps macros from CAT1A compatible names that don't contain the version fields. */
42 #include "tviibe_remaps.h"
43 
44 #elif (defined (CY_DEVICE_SERIES_FX3G2) || defined (CY_DEVICE_SERIES_FX2G3))
45 
46 #include "ip/cyip_cpuss.h"
47 #include "ip/cyip_cpuss_v2.h"
48 #include "ip/cyip_flashc.h"
49 #include "ip/cyip_flashc_v2.h"
50 #include "ip/cyip_gpio.h"
51 #include "ip/cyip_gpio_v5.h"
52 #include "ip/cyip_hsiom.h"
53 #include "ip/cyip_hsiom_v5.h"
54 #include "ip/cyip_sflash_fx3g2.h"
55 
56 #include "ip/cyip_srss.h"
57 #include "ip/cyip_srss.h"
58 #include "ip/cyip_peri.h"
59 #include "ip/cyip_peri_v2.h"
60 #include "ip/cyip_peri_ms_v2.h"
61 #include "ip/cyip_prot.h"
62 #include "ip/cyip_prot_v2.h"
63 #include "ip/cyip_ipc.h"
64 #include "ip/cyip_ipc_v2.h"
65 #include "ip/cyip_dw.h"
66 #include "ip/cyip_dw_v2.h"
67 #include "ip/cyip_dmac_v2.h"
68 #include "ip/cyip_tdm_v2.h"
69 #include "ip/cyip_mxpdm.h"
70 #include "ip/cyip_canfd.h"
71 #include "ip/cyip_tcpwm.h"
72 #include "ip/cyip_mxs40usbhsdev.h"
73 #include "ip/cyip_main_reg.h"
74 #include "ip/cyip_lvdsss.h"
75 #include "ip/cyip_usb32dev.h"
76 
77 #else /* PSoC Devices */
78 
79 #include "ip/cyip_cpuss.h"
80 #include "ip/cyip_cpuss_v2.h"
81 #include "ip/cyip_flashc.h"
82 #include "ip/cyip_flashc_v2.h"
83 #include "ip/cyip_gpio.h"
84 #include "ip/cyip_gpio_v2.h"
85 #include "ip/cyip_hsiom.h"
86 #include "ip/cyip_hsiom_v2.h"
87 
88 #if defined (COMPONENT_PSOC6_01)
89 #include "ip/cyip_sflash_psoc6_01.h"
90 #endif
91 
92 #if defined (COMPONENT_PSOC6_02)
93 #include "ip/cyip_sflash_psoc6_02.h"
94 #endif
95 
96 #if defined (COMPONENT_PSOC6_03)
97 #include "ip/cyip_sflash_psoc6_03.h"
98 #endif
99 
100 #if defined (COMPONENT_PSOC6_04)
101 #include "ip/cyip_sflash_psoc6_04.h"
102 #endif
103 
104 #include "ip/cyip_srss.h"
105 #include "ip/cyip_backup.h"
106 #include "ip/cyip_peri.h"
107 #include "ip/cyip_peri_v2.h"
108 #include "ip/cyip_peri_ms_v2.h"
109 #include "ip/cyip_profile.h"
110 #include "ip/cyip_prot.h"
111 #include "ip/cyip_prot_v2.h"
112 #include "ip/cyip_ipc.h"
113 #include "ip/cyip_ipc_v2.h"
114 #include "ip/cyip_udb.h"
115 #include "ip/cyip_dw.h"
116 #include "ip/cyip_dw_v2.h"
117 #include "ip/cyip_dmac_v2.h"
118 #include "ip/cyip_i2s.h"
119 #include "ip/cyip_pdm.h"
120 #include "ip/cyip_lcd.h"
121 #include "ip/cyip_lcd_v2.h"
122 #include "ip/cyip_sdhc.h"
123 #include "ip/cyip_canfd.h"
124 #include "ip/cyip_smartio.h"
125 #include "ip/cyip_tcpwm.h"
126 #include "ip/cyip_tcpwm_v2.h"
127 #include "ip/cyip_ctbm.h"
128 #include "ip/cyip_ctbm_v2.h"
129 #include "ip/cyip_ctdac.h"
130 #include "ip/cyip_ctdac_v2.h"
131 #include "ip/cyip_sar.h"
132 #include "ip/cyip_sar_v2.h"
133 #include "ip/cyip_pass.h"
134 #include "ip/cyip_pass_v2.h"
135 
136 #endif /* PSoC or TVIIBE device */
137 
138 
139 /* Device descriptor type */
140 typedef struct
141 {
142     /* Base HW addresses */
143     uint32_t cpussBase;
144     uint32_t flashcBase;
145     uint32_t periBase;
146     uint32_t udbBase;
147     uint32_t protBase;
148     uint32_t hsiomBase;
149     uint32_t gpioBase;
150     uint32_t passBase;
151     uint32_t ipcBase;
152     uint32_t cryptoBase;
153     uint32_t sar0Base;
154 
155     /* IP block versions: [7:4] major, [3:0] minor */
156     uint8_t  cpussVersion;
157     uint8_t  cryptoVersion;
158     uint8_t  dwVersion;
159     uint8_t  flashcVersion;
160     uint8_t  gpioVersion;
161     uint8_t  hsiomVersion;
162     uint8_t  ipcVersion;
163     uint8_t  periVersion;
164     uint8_t  protVersion;
165     uint8_t  srssVersion;
166     uint8_t  passVersion;
167 
168     /* Parameters */
169     uint8_t  cpussIpcNr;
170     uint8_t  cpussIpcIrqNr;
171     uint8_t  cpussDw0ChNr;
172     uint8_t  cpussDw1ChNr;
173     uint8_t  cpussFlashPaSize;
174     int16_t  cpussIpc0Irq;
175     int16_t  cpussFmIrq;
176     int16_t  cpussNotConnectedIrq;
177     uint8_t  srssNumClkpath;
178     uint8_t  srssNumPll;
179     uint8_t  srssNumHfroot;
180     uint8_t  srssIsPiloPresent;
181     uint8_t  periClockNr;
182     uint8_t  smifDeviceNr;
183     uint8_t  passSarChannels;
184     uint8_t  epMonitorNr;
185     uint8_t  udbPresent;
186     uint8_t  sysPmSimoPresent;
187     uint32_t protBusMasterMask;
188     uint32_t cryptoMemSize;
189     uint8_t  flashRwwRequired;
190     uint8_t  flashPipeRequired;
191     uint8_t  flashWriteDelay;
192     uint8_t  flashProgramDelay;
193     uint8_t  flashEraseDelay;
194     uint8_t  flashCtlMainWs0Freq;
195     uint8_t  flashCtlMainWs1Freq;
196     uint8_t  flashCtlMainWs2Freq;
197     uint8_t  flashCtlMainWs3Freq;
198     uint8_t  flashCtlMainWs4Freq;
199     uint8_t  tcpwmCC1Present;
200     uint8_t  tcpwmAMCPresent;
201     uint8_t  tcpwmSMCPrecent;
202 
203     /* Peripheral register offsets */
204 
205     /* DW registers */
206     uint16_t dwChOffset;
207     uint16_t dwChSize;
208     uint8_t  dwChCtlPrioPos;
209     uint8_t  dwChCtlPreemptablePos;
210     uint8_t  dwStatusChIdxPos;
211     uint32_t dwStatusChIdxMsk;
212 
213     /* PERI registers */
214     uint16_t periTrCmdOffset;
215     uint16_t periTrCmdGrSelMsk;
216     uint16_t periTrGrOffset;
217     uint16_t periTrGrSize;
218 
219     uint8_t  periDivCmdDivSelMsk;
220     uint8_t  periDivCmdTypeSelPos;
221     uint8_t  periDivCmdPaDivSelPos;
222     uint8_t  periDivCmdPaTypeSelPos;
223 
224     uint16_t periDiv8CtlOffset;
225     uint16_t periDiv16CtlOffset;
226     uint16_t periDiv16_5CtlOffset;
227     uint16_t periDiv24_5CtlOffset;
228 
229     /* GPIO registers */
230     uint8_t  gpioPrtIntrCfgOffset;
231     uint8_t  gpioPrtCfgOffset;
232     uint8_t  gpioPrtCfgInOffset;
233     uint8_t  gpioPrtCfgOutOffset;
234     uint8_t  gpioPrtCfgSioOffset;
235 
236     /* CPUSS registers */
237     uint32_t cpussCm0ClockCtlOffset;
238     uint32_t cpussCm4ClockCtlOffset;
239     uint32_t cpussCm4StatusOffset;
240     uint32_t cpussCm0StatusOffset;
241     uint32_t cpussCm4PwrCtlOffset;
242     uint32_t cpussTrimRamCtlOffset;
243     uint32_t cpussTrimRomCtlOffset;
244     uint32_t cpussSysTickCtlOffset;
245     uint16_t cpussCm0NmiCtlOffset;
246     uint16_t cpussCm4NmiCtlOffset;
247     uint16_t cpussRomCtl;
248     uint16_t cpussRam0Ctl0;
249     uint16_t cpussRam1Ctl0;
250     uint16_t cpussRam2Ctl0;
251     uint16_t cpussRam0PwrCtl;
252     uint16_t cpussRam1PwrCtl;
253     uint16_t cpussRam2PwrCtl;
254 
255     /* IPC registers */
256     uint16_t ipcStructSize;
257     uint32_t ipcLockStatusOffset;
258 } cy_stc_device_t;
259 
260 /*******************************************************************************
261 *                   Global Variables
262 *******************************************************************************/
263 
264 #if !(defined(CY_DEVICE_TVIIBE))
265 extern const cy_stc_device_t   cy_deviceIpBlockCfgPSoC6_01;
266 #endif
267 extern const cy_stc_device_t   cy_deviceIpBlockCfgPSoC6_02;
268 extern const cy_stc_device_t   cy_deviceIpBlockCfgPSoC6_03;
269 extern const cy_stc_device_t   cy_deviceIpBlockCfgPSoC6_04;
270 extern const cy_stc_device_t   cy_deviceIpBlockCfgTVIIBE4M;
271 extern const cy_stc_device_t   cy_deviceIpBlockCfgTVIIBE2M;
272 extern const cy_stc_device_t   cy_deviceIpBlockCfgTVIIBE1M;
273 extern const cy_stc_device_t   cy_deviceIpBlockCfgFX3G2;
274 extern const cy_stc_device_t * cy_device;
275 
276 
277 /*******************************************************************************
278 *                   Function Prototypes
279 *******************************************************************************/
280 
281 void Cy_PDL_Init(const cy_stc_device_t * device);
282 
283 /*******************************************************************************
284 *               Generic Macro Definitions
285 *******************************************************************************/
286 #define GET_ALIAS_ADDRESS(addr)             (uint32_t)(addr)
287 
288 /*******************************************************************************
289 *               Register Access Helper Macros
290 *******************************************************************************/
291 #define CY_DEVICE_CAT1A            /* Device Category */
292 #define CY_CRYPTO_V1                        (0x20U > cy_device->cryptoVersion) /* true if the mxcrypto version is 1.x */
293 
294 /* Remapping the CBUS to SAHB address & Vice versa*/
295 #define CY_REMAP_ADDRESS_CBUS_TO_SAHB(addr)               (addr)
296 #define CY_REMAP_ADDRESS_SAHB_TO_CBUS(addr)               (addr)
297 
298 #define CY_SRSS_V1_3                        (0x13U == cy_device->srssVersion)
299 #if (defined (CY_DEVICE_SERIES_FX3G2) || defined (CY_DEVICE_SERIES_FX2G3))
300 #define CY_SRSS_MFO_PRESENT                 (0)
301 #else
302 #define CY_SRSS_MFO_PRESENT                 (CY_SRSS_V1_3)
303 #endif /* CY_DEVICE_SERIES_FX3G2 */
304 
305 #if (defined(CY_DEVICE_TVIIBE))
306 
307 #define CY_SRSS_PILO_PRESENT                (0)
308 
309 #define CY_SRSS_NUM_CLKPATH                 (SRSS_NUM_CLKPATH)
310 #define CY_SRSS_NUM_PLL                     (SRSS_NUM_TOTAL_PLL)
311 #define CY_SRSS_NUM_PLL200M                 (SRSS_NUM_PLL)
312 #if defined(SRSS_NUM_PLL400M)
313 #define CY_SRSS_NUM_PLL400M                 (SRSS_NUM_PLL400M)
314 #else
315 #define CY_SRSS_NUM_PLL400M                 (0)
316 #endif
317 #define CY_SRSS_NUM_HFROOT                  (SRSS_NUM_HFROOT)
318 #define CY_SRSS_ECO_PRESENT                 (SRSS_ECO_PRESENT)
319 #define CY_SRSS_FLL_PRESENT                 (1)
320 #define CY_SRSS_PLL_PRESENT                 (SRSS_NUM_PLL)
321 #define CY_SRSS_PLL400M_PRESENT             (SRSS_NUM_PLL400M)
322 #define CY_SRSS_ALTHF_PRESENT               (SRSS_ALTHF_PRESENT)
323 
324 #define CY_SRSS_ILO_COUNT                   2
325 
326 /** HF PATH # used for PERI PCLK */
327 #define CY_SYSCLK_CLK_PERI_HF_PATH_NUM     0U
328 
329 /** HF PATH # used for Both Cores */
330 #define CY_SYSCLK_CLK_CORE_HF_PATH_NUM     0U
331 
332 /** HF PATH # used for CLOCK FAST */
333 #define CY_SYSCLK_CLK_FAST_HF_NUM          0U
334 
335 /* HF PATH # Max Allowed Frequencies */
336 #define CY_SYSCLK_HF_MAX_FREQ(hfNum)       (160000000U)
337 
338 /** FLL Max Frequency */
339 #define  CY_SYSCLK_FLL_MAX_OUTPUT_FREQ     (100000000UL)
340 
341 /* Technology Independant Register set */
342 #define SRSS_CLK_DSI_SELECT                 (((SRSS_Type *) SRSS)->CLK_DSI_SELECT)
343 #define SRSS_CLK_OUTPUT_FAST                (((SRSS_Type *) SRSS)->CLK_OUTPUT_FAST)
344 #define SRSS_CLK_OUTPUT_SLOW                (((SRSS_Type *) SRSS)->CLK_OUTPUT_SLOW)
345 #define SRSS_CLK_CAL_CNT1                   (((SRSS_Type *) SRSS)->CLK_CAL_CNT1)
346 #define SRSS_CLK_CAL_CNT2                   (((SRSS_Type *) SRSS)->CLK_CAL_CNT2)
347 #define SRSS_SRSS_INTR                      (((SRSS_Type *) SRSS)->SRSS_INTR)
348 #define SRSS_SRSS_INTR_SET                  (((SRSS_Type *) SRSS)->SRSS_INTR_SET)
349 #define SRSS_SRSS_INTR_MASK                 (((SRSS_Type *) SRSS)->SRSS_INTR_MASK)
350 #define SRSS_SRSS_INTR_MASKED               (((SRSS_Type *) SRSS)->SRSS_INTR_MASKED)
351 #define SRSS_PWR_CTL                        (((SRSS_Type *) SRSS)->PWR_CTL)
352 #define SRSS_PWR_CTL2                       (((SRSS_Type *) SRSS)->PWR_CTL2)
353 #define SRSS_PWR_HIBERNATE                  (((SRSS_Type *) SRSS)->PWR_HIBERNATE)
354 
355 #if (CY_IP_MXS40SRSS_VERSION >= 3)
356 #define SRSS_PWR_BUCK_CTL                   (((SRSS_Type *) SRSS)->PWR_BUCK_CTL)
357 #define SRSS_PWR_BUCK_CTL2                  (((SRSS_Type *) SRSS)->PWR_BUCK_CTL2)
358 #endif
359 
360 #define SRSS_PWR_SSV_CTL                    (((SRSS_Type *) SRSS)->PWR_SSV_CTL)
361 #define SRSS_PWR_SSV_STATUS                 (((SRSS_Type *) SRSS)->PWR_SSV_STATUS)
362 #define SRSS_PWR_LVD_CTL                    (((SRSS_Type *) SRSS)->PWR_LVD_CTL)
363 #define SRSS_PWR_LVD_CTL2                   (((SRSS_Type *) SRSS)->PWR_LVD_CTL2)
364 
365 #if (CY_IP_MXS40SRSS_VERSION >= 3)
366 #define SRSS_PWR_REGHC_CTL                  (((SRSS_Type *) SRSS)->PWR_REGHC_CTL)
367 #define SRSS_PWR_REGHC_STATUS               (((SRSS_Type *) SRSS)->PWR_REGHC_STATUS)
368 #define SRSS_PWR_REGHC_CTL2                 (((SRSS_Type *) SRSS)->PWR_REGHC_CTL2)
369 #define SRSS_PWR_REGHC_CTL4                 (((SRSS_Type *) SRSS)->PWR_REGHC_CTL4)
370 #endif
371 
372 #define SRSS_PWR_HIB_DATA                   (((SRSS_Type *) SRSS)->PWR_HIB_DATA)
373 
374 #if (CY_IP_MXS40SRSS_VERSION >= 3)
375 #define SRSS_PWR_PMIC_CTL                   (((SRSS_Type *) SRSS)->PWR_PMIC_CTL)
376 #define SRSS_PWR_PMIC_STATUS                (((SRSS_Type *) SRSS)->PWR_PMIC_STATUS)
377 #define SRSS_PWR_PMIC_CTL2                  (((SRSS_Type *) SRSS)->PWR_PMIC_CTL2)
378 #define SRSS_PWR_PMIC_CTL4                  (((SRSS_Type *) SRSS)->PWR_PMIC_CTL4)
379 #endif
380 
381 #define SRSS_CLK_PATH_SELECT                (((SRSS_Type *) SRSS)->CLK_PATH_SELECT)
382 #define SRSS_CLK_ROOT_SELECT                (((SRSS_Type *) SRSS)->CLK_ROOT_SELECT)
383 #define SRSS_CLK_DIRECT_SELECT              (((SRSS_Type *) SRSS)->CLK_DIRECT_SELECT)
384 #define SRSS_CLK_ECO_STATUS                 (((SRSS_Type *) SRSS)->CLK_ECO_STATUS)
385 #define SRSS_CLK_ILO_CONFIG                 (((SRSS_Type *) SRSS)->CLK_ILO0_CONFIG) /* BWC */
386 #define SRSS_CLK_ILO0_CONFIG                (((SRSS_Type *) SRSS)->CLK_ILO0_CONFIG)
387 #define SRSS_CLK_ILO1_CONFIG                (((SRSS_Type *) SRSS)->CLK_ILO1_CONFIG)
388 
389 #define SRSS_CLK_ILO_CONFIG_ENABLE_Msk      SRSS_CLK_ILO0_CONFIG_ENABLE_Msk /* BWC */
390 
391 #define SRSS_CLK_TRIM_ILO_CTL               (((SRSS_Type *) SRSS)->CLK_TRIM_ILO_CTL)
392 
393 #if (CY_IP_MXS40SRSS_VERSION >= 3)
394 #define SRSS_CLK_PILO_CONFIG                (((SRSS_Type *) SRSS)->CLK_PILO_CONFIG)
395 #endif
396 
397 #define SRSS_CLK_ECO_CONFIG                 (((SRSS_Type *) SRSS)->CLK_ECO_CONFIG)
398 #define SRSS_CLK_ECO_CONFIG2                 (((SRSS_Type *) SRSS)->CLK_ECO_CONFIG2)
399 #define SRSS_CLK_MFO_CONFIG                 (((SRSS_Type *) SRSS)->CLK_MFO_CONFIG)
400 #define SRSS_CLK_IHO_CONFIG                 (((SRSS_Type *) SRSS)->CLK_IHO_CONFIG)
401 #define SRSS_CLK_ALTHF_CTL                  (((SRSS_Type *) SRSS)->CLK_ALTHF_CTL)
402 
403 #define SRSS_CLK_ILO0_CONFIG                 (((SRSS_Type *) SRSS)->CLK_ILO0_CONFIG)
404 #define SRSS_CLK_ILO1_CONFIG                 (((SRSS_Type *) SRSS)->CLK_ILO1_CONFIG)
405 
406 #define SRSS_CSV_HF                         (((SRSS_Type *) SRSS)->CSV_HF)
407 #define SRSS_CLK_SELECT                     (((SRSS_Type *) SRSS)->CLK_SELECT)
408 #define SRSS_CLK_TIMER_CTL                  (((SRSS_Type *) SRSS)->CLK_TIMER_CTL)
409 #define SRSS_CLK_IMO_CONFIG                 (((SRSS_Type *) SRSS)->CLK_IMO_CONFIG)
410 #define SRSS_CLK_ECO_PRESCALE               (((SRSS_Type *) SRSS)->CLK_ECO_PRESCALE)
411 #define SRSS_CLK_MF_SELECT                  (((SRSS_Type *) SRSS)->CLK_MF_SELECT)
412 #define SRSS_CSV_REF_SEL                    (((SRSS_Type *) SRSS)->CSV_REF_SEL)
413 #define SRSS_CSV_REF                        (((SRSS_Type *) SRSS)->CSV_REF)
414 #define SRSS_CSV_LF                         (((SRSS_Type *) SRSS)->CSV_LF)
415 #define SRSS_CSV_ILO                        (((SRSS_Type *) SRSS)->CSV_ILO)
416 #define SRSS_RES_CAUSE                      (((SRSS_Type *) SRSS)->RES_CAUSE)
417 #define SRSS_RES_CAUSE2                     (((SRSS_Type *) SRSS)->RES_CAUSE2)
418 #define SRSS_RES_CAUSE_EXTEND               (((SRSS_Type *) SRSS)->RES_CAUSE_EXTEND)
419 #define SRSS_CLK_LP_PLL                     (((SRSS_Type *) SRSS)->CLK_LP_PLL)
420 #define SRSS_CLK_IHO                        (((SRSS_Type *) SRSS)->CLK_IHO)
421 #define SRSS_TST_XRES_SECURE                (((SRSS_Type *) SRSS)->TST_XRES_SECURE)
422 #define SRSS_RES_PXRES_CTL                  (((SRSS_Type *) SRSS)->RES_PXRES_CTL)
423 
424 #define SRSS_CLK_FLL_CONFIG                 (((SRSS_Type *) SRSS)->CLK_FLL_CONFIG)
425 #define SRSS_CLK_FLL_CONFIG2                (((SRSS_Type *) SRSS)->CLK_FLL_CONFIG2)
426 #define SRSS_CLK_FLL_CONFIG3                (((SRSS_Type *) SRSS)->CLK_FLL_CONFIG3)
427 #define SRSS_CLK_FLL_CONFIG4                (((SRSS_Type *) SRSS)->CLK_FLL_CONFIG4)
428 #define SRSS_CLK_FLL_STATUS                 (((SRSS_Type *) SRSS)->CLK_FLL_STATUS)
429 
430 #define SRSS_PWR_LVD_STATUS                 (((SRSS_Type *) SRSS)->PWR_LVD_STATUS)
431 #define SRSS_PWR_LVD_STATUS2                 (((SRSS_Type *) SRSS)->PWR_LVD_STATUS2)
432 
433 #define SRSS_SRSS_INTR_CFG                  (((SRSS_Type *) SRSS)->SRSS_AINTR_CFG)
434 
435 #define SRSS_PWR_HIB_WAKE_CTL               (((SRSS_Type *) SRSS)->PWR_HIB_WAKE_CTL)
436 #define SRSS_PWR_HIB_WAKE_CTL2              (((SRSS_Type *) SRSS)->PWR_HIB_WAKE_CTL2)
437 #define SRSS_PWR_HIB_WAKE_CAUSE             (((SRSS_Type *) SRSS)->PWR_HIB_WAKE_CAUSE)
438 #define SRSS_RES_SOFT_CTL                   (((SRSS_Type *) SRSS)->RES_SOFT_CTL)
439 
440 #define SRSS_CLK_PLL_CONFIG                 (((SRSS_Type *) SRSS)->CLK_PLL_CONFIG)
441 #define SRSS_CLK_PLL_STATUS                 (((SRSS_Type *) SRSS)->CLK_PLL_STATUS)
442 
443 #define SRSS_FLL_PATH_NUM         (0UL)
444 #define SRSS_PLL_200M_0_PATH_NUM  (1UL)
445 
446 #define SRSS_PLL400M_FRAC_BIT_COUNT (24ULL)
447 
448 #if (CY_IP_MXS40SRSS_VERSION >= 3)
449 #define SRSS_CLK_PLL_400M_CONFIG(pllNum)                 (((SRSS_Type *) SRSS)->CLK_PLL400M[pllNum].CONFIG)
450 #define SRSS_CLK_PLL_400M_CONFIG2(pllNum)                 (((SRSS_Type *) SRSS)->CLK_PLL400M[pllNum].CONFIG2)
451 #define SRSS_CLK_PLL_400M_CONFIG3(pllNum)                 (((SRSS_Type *) SRSS)->CLK_PLL400M[pllNum].CONFIG3)
452 #define SRSS_CLK_PLL_400M_STATUS(pllNum)                 (((SRSS_Type *) SRSS)->CLK_PLL400M[pllNum].STATUS)
453 #endif
454 
455 
456 #define SRSS_WDT_CTL                        (((WDT_Type*) &SRSS->WDT_STRUCT)->CTL)
457 #define SRSS_WDT_LOWER_LIMIT                (((WDT_Type*) &SRSS->WDT_STRUCT)->LOWER_LIMIT)
458 #define SRSS_WDT_UPPER_LIMIT                (((WDT_Type*) &SRSS->WDT_STRUCT)->UPPER_LIMIT)
459 #define SRSS_WDT_WARN_LIMIT                 (((WDT_Type*) &SRSS->WDT_STRUCT)->WARN_LIMIT)
460 #define SRSS_WDT_CONFIG                     (((WDT_Type*) &SRSS->WDT_STRUCT)->CONFIG)
461 #define SRSS_WDT_CNT                        (((WDT_Type*) &SRSS->WDT_STRUCT)->CNT)
462 #define SRSS_WDT_LOCK                       (((WDT_Type*) &SRSS->WDT_STRUCT)->LOCK)
463 #define SRSS_WDT_SERVICE                    (((WDT_Type*) &SRSS->WDT_STRUCT)->SERVICE)
464 #define SRSS_WDT_INTR                       (((WDT_Type*) &SRSS->WDT_STRUCT)->INTR)
465 #define SRSS_WDT_INTR_SET                   (((WDT_Type*) &SRSS->WDT_STRUCT)->INTR_SET)
466 #define SRSS_WDT_INTR_MASK                  (((WDT_Type*) &SRSS->WDT_STRUCT)->INTR_MASK)
467 #define SRSS_WDT_INTR_MASKED                (((WDT_Type*) &SRSS->WDT_STRUCT)->INTR_MASKED)
468 
469 
470 
471 #define SRSS_TST_DDFT_FAST_CTL_REG          (*(volatile uint32_t *) 0x40261104U)
472 #define SRSS_TST_DDFT_SLOW_CTL_REG          (*(volatile uint32_t *) 0x40261108U)
473 
474 #define SRSS_TST_DDFT_SLOW_CTL_MASK         (0x00001F1EU)
475 #define SRSS_TST_DDFT_FAST_CTL_MASK         (62U)
476 
477 
478 #else /* PSoC Devices */
479 
480 #define CY_SRSS_PILO_PRESENT                (1U == cy_device->srssIsPiloPresent)
481 
482 #define CY_SRSS_NUM_CLKPATH                 ((uint32_t)(cy_device->srssNumClkpath))
483 #define CY_SRSS_NUM_PLL                     ((uint32_t)(cy_device->srssNumPll))
484 #define CY_SRSS_NUM_HFROOT                  ((uint32_t)(cy_device->srssNumHfroot))
485 #define CY_SRSS_PLL_PRESENT                 SRSS_NUM_PLL
486 #define CY_SRSS_PLL400M_PRESENT             0
487 #define CY_SRSS_DPLL_LP_PRESENT             0
488 
489 #ifndef CY_EM_EEPROM_SIZE
490 #define CY_EM_EEPROM_SIZE                   0x00000000UL
491 #endif
492 
493 #define SRSS_PWR_CTL                        (((SRSS_V1_Type *) SRSS)->PWR_CTL)
494 #define SRSS_PWR_HIBERNATE                  (((SRSS_V1_Type *) SRSS)->PWR_HIBERNATE)
495 #define SRSS_PWR_TRIM_PWRSYS_CTL            (((SRSS_V1_Type *) SRSS)->PWR_TRIM_PWRSYS_CTL)
496 #define SRSS_PWR_BUCK_CTL                   (((SRSS_V1_Type *) SRSS)->PWR_BUCK_CTL)
497 #define SRSS_PWR_BUCK_CTL2                  (((SRSS_V1_Type *) SRSS)->PWR_BUCK_CTL2)
498 #define SRSS_PWR_TRIM_WAKE_CTL              (((SRSS_V1_Type *) SRSS)->PWR_TRIM_WAKE_CTL)
499 #define SRSS_PWR_LVD_CTL                    (((SRSS_V1_Type *) SRSS)->PWR_LVD_CTL)
500 #define SRSS_PWR_LVD_STATUS                 (((SRSS_V1_Type *) SRSS)->PWR_LVD_STATUS)
501 #define SRSS_WDT_CTL                        (((SRSS_V1_Type *) SRSS)->WDT_CTL)
502 #define SRSS_WDT_CNT                        (((SRSS_V1_Type *) SRSS)->WDT_CNT)
503 #define SRSS_WDT_MATCH                      (((SRSS_V1_Type *) SRSS)->WDT_MATCH)
504 #define SRSS_CLK_DSI_SELECT                 (((SRSS_V1_Type *) SRSS)->CLK_DSI_SELECT)
505 #define SRSS_CLK_PATH_SELECT                (((SRSS_V1_Type *) SRSS)->CLK_PATH_SELECT)
506 #define SRSS_CLK_ROOT_SELECT                (((SRSS_V1_Type *) SRSS)->CLK_ROOT_SELECT)
507 #define SRSS_CLK_CSV_HF_LIMIT(clk)          (((SRSS_V1_Type *) SRSS)->CLK_CSV[(clk)].HF_LIMIT)
508 #define SRSS_CLK_CSV_HF_CTL(clk)            (((SRSS_V1_Type *) SRSS)->CLK_CSV[(clk)].HF_CTL)
509 #define SRSS_CLK_SELECT                     (((SRSS_V1_Type *) SRSS)->CLK_SELECT)
510 #define SRSS_CLK_TIMER_CTL                  (((SRSS_V1_Type *) SRSS)->CLK_TIMER_CTL)
511 #define SRSS_CLK_CSV_WCO_CTL                (((SRSS_V1_Type *) SRSS)->CLK_CSV_WCO_CTL)
512 #define SRSS_CLK_ILO_CONFIG                 (((SRSS_V1_Type *) SRSS)->CLK_ILO_CONFIG)
513 #define SRSS_CLK_OUTPUT_SLOW                (((SRSS_V1_Type *) SRSS)->CLK_OUTPUT_SLOW)
514 #define SRSS_CLK_OUTPUT_FAST                (((SRSS_V1_Type *) SRSS)->CLK_OUTPUT_FAST)
515 #define SRSS_CLK_CAL_CNT1                   (((SRSS_V1_Type *) SRSS)->CLK_CAL_CNT1)
516 #define SRSS_CLK_CAL_CNT2                   (((SRSS_V1_Type *) SRSS)->CLK_CAL_CNT2)
517 #define SRSS_CLK_ECO_CONFIG                 (((SRSS_V1_Type *) SRSS)->CLK_ECO_CONFIG)
518 #define SRSS_CLK_ECO_STATUS                 (((SRSS_V1_Type *) SRSS)->CLK_ECO_STATUS)
519 #define SRSS_CLK_PILO_CONFIG                (((SRSS_V1_Type *) SRSS)->CLK_PILO_CONFIG)
520 #define SRSS_CLK_MF_SELECT                  (((SRSS_V1_Type *) SRSS)->CLK_MF_SELECT)  /* for CY_SRSS_V1_3 only */
521 #define SRSS_CLK_MFO_CONFIG                 (((SRSS_V1_Type *) SRSS)->CLK_MFO_CONFIG) /* for CY_SRSS_V1_3 only */
522 #define SRSS_CLK_FLL_CONFIG                 (((SRSS_V1_Type *) SRSS)->CLK_FLL_CONFIG)
523 #define SRSS_CLK_FLL_CONFIG2                (((SRSS_V1_Type *) SRSS)->CLK_FLL_CONFIG2)
524 #define SRSS_CLK_FLL_CONFIG3                (((SRSS_V1_Type *) SRSS)->CLK_FLL_CONFIG3)
525 #define SRSS_CLK_FLL_CONFIG4                (((SRSS_V1_Type *) SRSS)->CLK_FLL_CONFIG4)
526 #define SRSS_CLK_FLL_STATUS                 (((SRSS_V1_Type *) SRSS)->CLK_FLL_STATUS)
527 #define SRSS_CLK_PLL_CONFIG                 (((SRSS_V1_Type *) SRSS)->CLK_PLL_CONFIG)
528 #define SRSS_CLK_PLL_STATUS                 (((SRSS_V1_Type *) SRSS)->CLK_PLL_STATUS)
529 #define SRSS_SRSS_INTR                      (((SRSS_V1_Type *) SRSS)->SRSS_INTR)
530 #define SRSS_SRSS_INTR_SET                  (((SRSS_V1_Type *) SRSS)->SRSS_INTR_SET)
531 #define SRSS_SRSS_INTR_CFG                  (((SRSS_V1_Type *) SRSS)->SRSS_INTR_CFG)
532 #define SRSS_SRSS_INTR_MASK                 (((SRSS_V1_Type *) SRSS)->SRSS_INTR_MASK)
533 #define SRSS_SRSS_INTR_MASKED               (((SRSS_V1_Type *) SRSS)->SRSS_INTR_MASKED)
534 #define SRSS_CLK_TRIM_ILO_CTL               (((SRSS_V1_Type *) SRSS)->CLK_TRIM_ILO_CTL)
535 #define SRSS_CLK_TRIM_ECO_CTL               (((SRSS_V1_Type *) SRSS)->CLK_TRIM_ECO_CTL)
536 
537 #define SRSS_RES_CAUSE                      (((SRSS_V1_Type *) SRSS)->RES_CAUSE)
538 #define SRSS_RES_CAUSE2                     (((SRSS_V1_Type *) SRSS)->RES_CAUSE2)
539 
540 #define SRSS_TST_DDFT_SLOW_CTL_REG          (*(volatile uint32_t *) 0x40260108U)
541 #define SRSS_TST_DDFT_FAST_CTL_REG          (*(volatile uint32_t *) 0x40260104U)
542 
543 #define SRSS_TST_DDFT_SLOW_CTL_MASK         (0x00001F1EU)
544 #define SRSS_TST_DDFT_FAST_CTL_MASK         (62U)
545 #endif /* (defined(CY_DEVICE_TVIIBE)) */
546 
547 /*******************************************************************************
548 *                CRYPTO
549 *******************************************************************************/
550 
551 /* The CRYPTO internal-memory buffer-size in 32-bit words. */
552 #define CY_CRYPTO_MEM_BUFF_SIZE_U32         (1024U)
553 
554 /*******************************************************************************
555 *                BACKUP
556 *******************************************************************************/
557 
558 #if (defined(CY_DEVICE_TVIIBE))
559 
560 #define BACKUP_PMIC_CTL                     (((BACKUP_Type *) BACKUP)->PMIC_CTL)
561 #define BACKUP_CTL                          (((BACKUP_Type *) BACKUP)->CTL)
562 #define BACKUP_RTC_TIME                     (((BACKUP_Type *) BACKUP)->RTC_TIME)
563 #define BACKUP_RTC_DATE                     (((BACKUP_Type *) BACKUP)->RTC_DATE)
564 #define BACKUP_RTC_RW                       (((BACKUP_Type *) BACKUP)->RTC_RW)
565 #define BACKUP_CAL_CTL                      (((BACKUP_Type *) BACKUP)->CAL_CTL)
566 #define BACKUP_ALM1_TIME                    (((BACKUP_Type *) BACKUP)->ALM1_TIME)
567 #define BACKUP_ALM1_DATE                    (((BACKUP_Type *) BACKUP)->ALM1_DATE)
568 #define BACKUP_ALM2_TIME                    (((BACKUP_Type *) BACKUP)->ALM2_TIME)
569 #define BACKUP_ALM2_DATE                    (((BACKUP_Type *) BACKUP)->ALM2_DATE)
570 #define BACKUP_STATUS                       (((BACKUP_Type *) BACKUP)->STATUS)
571 #define BACKUP_INTR                         (((BACKUP_Type *) BACKUP)->INTR)
572 #define BACKUP_INTR_SET                     (((BACKUP_Type *) BACKUP)->INTR_SET)
573 #define BACKUP_INTR_MASK                    (((BACKUP_Type *) BACKUP)->INTR_MASK)
574 #define BACKUP_INTR_MASKED                  (((BACKUP_Type *) BACKUP)->INTR_MASKED)
575 #define BACKUP_RESET                        (((BACKUP_Type *) BACKUP)->RESET)
576 #define BACKUP_BREG                         (((BACKUP_Type *) BACKUP)->BREG)
577 
578 #define CY_SRSS_BACKUP_NUM_BREG             SRSS_BACKUP_NUM_BREG
579 
580 #else /* PSoC Devices */
581 
582 #define BACKUP_PMIC_CTL                     (((BACKUP_V1_Type *) BACKUP)->PMIC_CTL)
583 #define BACKUP_CTL                          (((BACKUP_V1_Type *) BACKUP)->CTL)
584 #define BACKUP_RTC_TIME                     (((BACKUP_V1_Type *) BACKUP)->RTC_TIME)
585 #define BACKUP_RTC_DATE                     (((BACKUP_V1_Type *) BACKUP)->RTC_DATE)
586 #define BACKUP_RTC_RW                       (((BACKUP_V1_Type *) BACKUP)->RTC_RW)
587 #define BACKUP_CAL_CTL                      (((BACKUP_V1_Type *) BACKUP)->CAL_CTL)
588 #define BACKUP_ALM1_TIME                    (((BACKUP_V1_Type *) BACKUP)->ALM1_TIME)
589 #define BACKUP_ALM1_DATE                    (((BACKUP_V1_Type *) BACKUP)->ALM1_DATE)
590 #define BACKUP_ALM2_TIME                    (((BACKUP_V1_Type *) BACKUP)->ALM2_TIME)
591 #define BACKUP_ALM2_DATE                    (((BACKUP_V1_Type *) BACKUP)->ALM2_DATE)
592 #define BACKUP_STATUS                       (((BACKUP_V1_Type *) BACKUP)->STATUS)
593 #define BACKUP_INTR                         (((BACKUP_V1_Type *) BACKUP)->INTR)
594 #define BACKUP_INTR_SET                     (((BACKUP_V1_Type *) BACKUP)->INTR_SET)
595 #define BACKUP_INTR_MASK                    (((BACKUP_V1_Type *) BACKUP)->INTR_MASK)
596 #define BACKUP_INTR_MASKED                  (((BACKUP_V1_Type *) BACKUP)->INTR_MASKED)
597 #define BACKUP_RESET                        (((BACKUP_V1_Type *) BACKUP)->RESET)
598 #define BACKUP_TRIM                         (((BACKUP_V1_Type *) BACKUP)->TRIM)
599 
600 #endif /* (defined(CY_DEVICE_TVIIBE)) */
601 
602 
603 /*******************************************************************************
604 *                CANFD
605 *******************************************************************************/
606 
607 #define CANFD_CTL(base)                     (((CANFD_V1_Type *)(base))->CTL)
608 #define CANFD_STATUS(base)                  (((CANFD_V1_Type *)(base))->STATUS)
609 #define CANFD_NBTP(base, chan)                    (((CANFD_V1_Type *)(base))->CH[chan].M_TTCAN.NBTP)
610 #define CANFD_IR(base, chan)                      (((CANFD_V1_Type *)(base))->CH[chan].M_TTCAN.IR)
611 #define CANFD_IE(base, chan)                      (((CANFD_V1_Type *)(base))->CH[chan].M_TTCAN.IE)
612 #define CANFD_ILS(base, chan)                     (((CANFD_V1_Type *)(base))->CH[chan].M_TTCAN.ILS)
613 #define CANFD_ILE(base, chan)                     (((CANFD_V1_Type *)(base))->CH[chan].M_TTCAN.ILE)
614 #define CANFD_CCCR(base, chan)                    (((CANFD_V1_Type *)(base))->CH[chan].M_TTCAN.CCCR)
615 #define CANFD_SIDFC(base, chan)                   (((CANFD_V1_Type *)(base))->CH[chan].M_TTCAN.SIDFC)
616 #define CANFD_XIDFC(base, chan)                   (((CANFD_V1_Type *)(base))->CH[chan].M_TTCAN.XIDFC)
617 #define CANFD_XIDAM(base, chan)                   (((CANFD_V1_Type *)(base))->CH[chan].M_TTCAN.XIDAM)
618 #define CANFD_RXESC(base, chan)                   (((CANFD_V1_Type *)(base))->CH[chan].M_TTCAN.RXESC)
619 #define CANFD_RXF0C(base, chan)                   (((CANFD_V1_Type *)(base))->CH[chan].M_TTCAN.RXF0C)
620 #define CANFD_RXF1C(base, chan)                   (((CANFD_V1_Type *)(base))->CH[chan].M_TTCAN.RXF1C)
621 #define CANFD_RXFTOP_CTL(base, chan)              (((CANFD_V1_Type *)(base))->CH[chan].RXFTOP_CTL)
622 #define CANFD_RXBC(base, chan)                    (((CANFD_V1_Type *)(base))->CH[chan].M_TTCAN.RXBC)
623 #define CANFD_TXESC(base, chan)                   (((CANFD_V1_Type *)(base))->CH[chan].M_TTCAN.TXESC)
624 #define CANFD_TXEFC(base, chan)                   (((CANFD_V1_Type *)(base))->CH[chan].M_TTCAN.TXEFC)
625 #define CANFD_TXBC(base, chan)                    (((CANFD_V1_Type *)(base))->CH[chan].M_TTCAN.TXBC)
626 #define CANFD_DBTP(base, chan)                    (((CANFD_V1_Type *)(base))->CH[chan].M_TTCAN.DBTP)
627 #define CANFD_TDCR(base, chan)                    (((CANFD_V1_Type *)(base))->CH[chan].M_TTCAN.TDCR)
628 #define CANFD_GFC(base, chan)                     (((CANFD_V1_Type *)(base))->CH[chan].M_TTCAN.GFC)
629 #define CANFD_TXBRP(base, chan)                   (((CANFD_V1_Type *)(base))->CH[chan].M_TTCAN.TXBRP)
630 #define CANFD_TXBAR(base, chan)                   (((CANFD_V1_Type *)(base))->CH[chan].M_TTCAN.TXBAR)
631 #define CANFD_TXBCR(base, chan)                   (((CANFD_V1_Type *)(base))->CH[chan].M_TTCAN.TXBCR)
632 #define CANFD_TXBTO(base, chan)                   (((CANFD_V1_Type *)(base))->CH[chan].M_TTCAN.TXBTO)
633 #define CANFD_TXBCF(base, chan)                   (((CANFD_V1_Type *)(base))->CH[chan].M_TTCAN.TXBCF)
634 #define CANFD_TXBTIE(base, chan)                  (((CANFD_V1_Type *)(base))->CH[chan].M_TTCAN.TXBTIE)
635 #define CANFD_TXBCIE(base, chan)                  (((CANFD_V1_Type *)(base))->CH[chan].M_TTCAN.TXBCIE)
636 #define CANFD_NDAT1(base, chan)                   (((CANFD_V1_Type *)(base))->CH[chan].M_TTCAN.NDAT1)
637 #define CANFD_NDAT2(base, chan)                   (((CANFD_V1_Type *)(base))->CH[chan].M_TTCAN.NDAT2)
638 #define CANFD_RXF0S(base, chan)                   (((CANFD_V1_Type *)(base))->CH[chan].M_TTCAN.RXF0S)
639 #define CANFD_RXFTOP0_DATA(base, chan)            (((CANFD_V1_Type *)(base))->CH[chan].RXFTOP0_DATA)
640 #define CANFD_RXFTOP1_DATA(base, chan)            (((CANFD_V1_Type *)(base))->CH[chan].RXFTOP1_DATA)
641 #define CANFD_RXF0A(base, chan)                   (((CANFD_V1_Type *)(base))->CH[chan].M_TTCAN.RXF0A)
642 #define CANFD_RXF1S(base, chan)                   (((CANFD_V1_Type *)(base))->CH[chan].M_TTCAN.RXF1S)
643 #define CANFD_RXF1A(base, chan)                   (((CANFD_V1_Type *)(base))->CH[chan].M_TTCAN.RXF1A)
644 #define CANFD_PSR(base, chan)                     (((CANFD_V1_Type *)(base))->CH[chan].M_TTCAN.PSR)
645 #define CANFD_TEST(base, chan)                    (((CANFD_V1_Type *)(base))->CH[chan].M_TTCAN.TEST)
646 #define CANFD_CREL(base, chan)                    (((CANFD_V1_Type *)(base))->CH[chan].M_TTCAN.CREL)
647 
648 #define CY_CANFD_CHANNELS_NUM               (0x1UL)
649 
650 
651 /*******************************************************************************
652 *                LIN
653 *******************************************************************************/
654 #if defined (CY_IP_MXLIN)
655 #define LIN0_CH1                                ((LIN_CH_Type*) &LIN0->CH[1])
656 #define LIN0_CH2                                ((LIN_CH_Type*) &LIN0->CH[2])
657 #define LIN0_CH3                                ((LIN_CH_Type*) &LIN0->CH[3])
658 #define LIN0_CH4                                ((LIN_CH_Type*) &LIN0->CH[4])
659 #define LIN0_CH5                                ((LIN_CH_Type*) &LIN0->CH[5])
660 #define LIN0_CH6                                ((LIN_CH_Type*) &LIN0->CH[6])
661 #define LIN0_CH7                                ((LIN_CH_Type*) &LIN0->CH[7])
662 #define LIN0_CH8                                ((LIN_CH_Type*) &LIN0->CH[8])
663 #define LIN0_CH9                                ((LIN_CH_Type*) &LIN0->CH[9])
664 #define LIN0_CH10                               ((LIN_CH_Type*) &LIN0->CH[10])
665 #define LIN0_CH11                               ((LIN_CH_Type*) &LIN0->CH[11])
666 #define LIN0_CH12                               ((LIN_CH_Type*) &LIN0->CH[12])
667 #define LIN0_CH13                               ((LIN_CH_Type*) &LIN0->CH[13])
668 #define LIN0_CH14                               ((LIN_CH_Type*) &LIN0->CH[14])
669 #define LIN0_CH15                               ((LIN_CH_Type*) &LIN0->CH[15])
670 #define LIN0_CH16                               ((LIN_CH_Type*) &LIN0->CH[16])
671 #define LIN0_CH17                               ((LIN_CH_Type*) &LIN0->CH[17])
672 #define LIN0_CH18                               ((LIN_CH_Type*) &LIN0->CH[18])
673 #define LIN0_CH19                               ((LIN_CH_Type*) &LIN0->CH[19])
674 #define LIN0_CH20                               ((LIN_CH_Type*) &LIN0->CH[20])
675 #define LIN0_CH21                               ((LIN_CH_Type*) &LIN0->CH[21])
676 #define LIN0_CH22                               ((LIN_CH_Type*) &LIN0->CH[22])
677 #define LIN0_CH23                               ((LIN_CH_Type*) &LIN0->CH[23])
678 #define LIN0_CH24                               ((LIN_CH_Type*) &LIN0->CH[24])
679 #define LIN0_CH25                               ((LIN_CH_Type*) &LIN0->CH[25])
680 #define LIN0_CH26                               ((LIN_CH_Type*) &LIN0->CH[26])
681 #define LIN0_CH27                               ((LIN_CH_Type*) &LIN0->CH[27])
682 #define LIN0_CH28                               ((LIN_CH_Type*) &LIN0->CH[28])
683 #define LIN0_CH29                               ((LIN_CH_Type*) &LIN0->CH[29])
684 #define LIN0_CH30                               ((LIN_CH_Type*) &LIN0->CH[30])
685 #define LIN0_CH31                               ((LIN_CH_Type*) &LIN0->CH[31])
686 
687 #define LIN_CH_CTL0(base)                       (((LIN_CH_Type *)(base))->CTL0)
688 #define LIN_CH_CTL1(base)                       (((LIN_CH_Type *)(base))->CTL1)
689 #define LIN_CH_STATUS(base)                     (((LIN_CH_Type *)(base))->STATUS)
690 #define LIN_CH_CMD(base)                        (((LIN_CH_Type *)(base))->CMD)
691 #define LIN_CH_TX_RX_STATUS(base)               (((LIN_CH_Type *)(base))->TX_RX_STATUS)
692 #define LIN_CH_PID_CHECKSUM(base)               (((LIN_CH_Type *)(base))->PID_CHECKSUM)
693 #define LIN_CH_DATA0(base)                      (((LIN_CH_Type *)(base))->DATA0)
694 #define LIN_CH_DATA1(base)                      (((LIN_CH_Type *)(base))->DATA1)
695 #define LIN_CH_INTR(base)                       (((LIN_CH_Type *)(base))->INTR)
696 #define LIN_CH_INTR_SET(base)                   (((LIN_CH_Type *)(base))->INTR_SET)
697 #define LIN_CH_INTR_MASK(base)                  (((LIN_CH_Type *)(base))->INTR_MASK)
698 #define LIN_CH_INTR_MASKED(base)                (((LIN_CH_Type *)(base))->INTR_MASKED)
699 
700 #define LIN_ERROR_CTL(base)                     (((LIN_Type *)(base))->ERROR_CTL)
701 #define LIN_TEST_CTL(base)                      (((LIN_Type *)(base))->TEST_CTL)
702 #endif /* CY_IP_MXLIN */
703 
704 /*******************************************************************************
705 *                FLASHC
706 *******************************************************************************/
707 #if (defined (CPUSS_FLASHC_PRESENT) && (CPUSS_FLASHC_PRESENT == 1)) && (defined (CPUSS_FLASHC_ECT) && (CPUSS_FLASHC_ECT == 1))
708 #define CY_IP_MXFLASHC_VERSION_ECT
709 #endif
710 
711 #if defined (CY_DEVICE_TVIIBE)
712 #define FLASHC_FLASH_CMD                    (((FLASHC_Type *)(FLASHC))->FLASH_CMD)
713 #define FLASHC_FLASH_CTL                    (((FLASHC_Type *)(FLASHC))->FLASH_CTL)
714 #define FLASHC_ECC_CTL                      (((FLASHC_Type *)(FLASHC))->ECC_CTL)
715 
716 /* FLASH Memory  */
717 #define FLASHC_FM_CTL_ECT_WORK_FLASH_SAFETY (((FLASHC_FM_CTL_ECT_Type *)(FLASHC_FM_CTL_ECT))->WORK_FLASH_SAFETY)
718 #define FLASHC_FM_CTL_ECT_MAIN_FLASH_SAFETY (((FLASHC_FM_CTL_ECT_V2_Type *)(FLASHC_FM_CTL_ECT))->MAIN_FLASH_SAFETY)
719 #define FLASHC_FM_CTL_ECT_FLASH_STATUS      (((FLASHC_FM_CTL_ECT_V2_Type *)(FLASHC_FM_CTL_ECT))->STATUS)
720 
721 #else
722 #define FLASHC_FM_CTL_ANA_CTL0              (((FLASHC_V1_Type *) cy_device->flashcBase)->FM_CTL.ANA_CTL0)
723 #define FLASHC_FM_CTL_BOOKMARK              (((FLASHC_V1_Type *) cy_device->flashcBase)->FM_CTL.BOOKMARK)
724 #define FLASHC_FLASH_CMD                    (((FLASHC_V1_Type *) cy_device->flashcBase)->FLASH_CMD)
725 #define FLASHC_FLASH_CTL                    (((FLASHC_V1_Type *) cy_device->flashcBase)->FLASH_CTL)
726 #define FLASHC_BIST_DATA_0                  (((FLASHC_V1_Type *) cy_device->flashcBase)->BIST_DATA[0U])
727 #define FLASHC_BIST_STATUS                  (((FLASHC_V1_Type *) cy_device->flashcBase)->BIST_STATUS)
728 #endif
729 
730 
731 /*******************************************************************************
732 *                SFLASH
733 *******************************************************************************/
734 #if !(defined (SRSS_HT_VARIANT) && (SRSS_HT_VARIANT == 1u))
735 
736 #define SFLASH_DIE_YEAR                     (((SFLASH_V1_Type *) SFLASH)->DIE_YEAR)
737 #define SFLASH_DIE_MINOR                    (((SFLASH_V1_Type *) SFLASH)->DIE_MINOR)
738 #define SFLASH_DIE_SORT                     (((SFLASH_V1_Type *) SFLASH)->DIE_SORT)
739 #define SFLASH_DIE_Y                        (((SFLASH_V1_Type *) SFLASH)->DIE_Y)
740 #define SFLASH_DIE_X                        (((SFLASH_V1_Type *) SFLASH)->DIE_X)
741 #define SFLASH_DIE_WAFER                    (((SFLASH_V1_Type *) SFLASH)->DIE_WAFER)
742 #define SFLASH_DIE_LOT(val)                 (((SFLASH_V1_Type *) SFLASH)->DIE_LOT[(val)])
743 #define SFLASH_FAMILY_ID                    (((SFLASH_V1_Type *) SFLASH)->FAMILY_ID)
744 #define SFLASH_SI_REVISION_ID               (((SFLASH_V1_Type *) SFLASH)->SI_REVISION_ID)
745 #define SFLASH_PWR_TRIM_WAKE_CTL            (((SFLASH_V1_Type *) SFLASH)->PWR_TRIM_WAKE_CTL)
746 #define SFLASH_LDO_0P9V_TRIM                (((SFLASH_V1_Type *) SFLASH)->LDO_0P9V_TRIM)
747 #define SFLASH_LDO_1P1V_TRIM                (((SFLASH_V1_Type *) SFLASH)->LDO_1P1V_TRIM)
748 #define SFLASH_BLE_DEVICE_ADDRESS           (((SFLASH_V1_Type *) SFLASH)->BLE_DEVICE_ADDRESS)
749 #define SFLASH_SILICON_ID                   (((SFLASH_V1_Type *) SFLASH)->SILICON_ID)
750 #define SFLASH_SINGLE_CORE                  (*(volatile uint8_t *) (SFLASH_BASE + 0xBU))
751 
752 #define SFLASH_CPUSS_TRIM_ROM_CTL_LP        (((SFLASH_V1_Type *) SFLASH)->CPUSS_TRIM_ROM_CTL_LP)
753 #define SFLASH_CPUSS_TRIM_RAM_CTL_LP        (((SFLASH_V1_Type *) SFLASH)->CPUSS_TRIM_RAM_CTL_LP)
754 #define SFLASH_CPUSS_TRIM_ROM_CTL_ULP       (((SFLASH_V1_Type *) SFLASH)->CPUSS_TRIM_ROM_CTL_ULP)
755 #define SFLASH_CPUSS_TRIM_RAM_CTL_ULP       (((SFLASH_V1_Type *) SFLASH)->CPUSS_TRIM_RAM_CTL_ULP)
756 #define SFLASH_CPUSS_TRIM_ROM_CTL_HALF_LP   (((SFLASH_V1_Type *) SFLASH)->CPUSS_TRIM_ROM_CTL_HALF_LP)
757 #define SFLASH_CPUSS_TRIM_RAM_CTL_HALF_LP   (((SFLASH_V1_Type *) SFLASH)->CPUSS_TRIM_RAM_CTL_HALF_LP)
758 #define SFLASH_CPUSS_TRIM_ROM_CTL_HALF_ULP  (((SFLASH_V1_Type *) SFLASH)->CPUSS_TRIM_ROM_CTL_HALF_ULP)
759 #define SFLASH_CPUSS_TRIM_RAM_CTL_HALF_ULP  (((SFLASH_V1_Type *) SFLASH)->CPUSS_TRIM_RAM_CTL_HALF_ULP)
760 
761 #define SFLASH_CSD0_ADC_VREF0_TRIM          (((SFLASH_V1_Type *) SFLASH)->CSDV2_CSD0_ADC_VREF0)
762 #define SFLASH_CSD0_ADC_VREF1_TRIM          (((SFLASH_V1_Type *) SFLASH)->CSDV2_CSD0_ADC_VREF1)
763 #define SFLASH_CSD0_ADC_VREF2_TRIM          (((SFLASH_V1_Type *) SFLASH)->CSDV2_CSD0_ADC_VREF2)
764 
765 #endif  /* defined (SRSS_HT_VARIANT) && (SRSS_HT_VARIANT == 1u) */
766 
767 
768 /*******************************************************************************
769 *                CPUSS
770 *******************************************************************************/
771 
772 #define CY_CPUSS_V1                         (0x20U > cy_device->cpussVersion)
773 
774 #define CY_CPUSS_NOT_CONNECTED_IRQN         ((uint32_t)(cy_device->cpussNotConnectedIrq))
775 #define CY_CPUSS_DISCONNECTED_IRQN          ((cy_en_intr_t)CY_CPUSS_NOT_CONNECTED_IRQN)
776 #define CY_CPUSS_UNCONNECTED_IRQN           ((IRQn_Type)CY_CPUSS_NOT_CONNECTED_IRQN)
777 
778 #define CPUSS_CM0_CLOCK_CTL                 (*(volatile uint32_t *) (cy_device->cpussBase + cy_device->cpussCm0ClockCtlOffset))
779 #define CPUSS_CM4_CLOCK_CTL                 (*(volatile uint32_t *) (cy_device->cpussBase + cy_device->cpussCm4ClockCtlOffset))
780 #define CPUSS_CM4_STATUS                    (*(volatile uint32_t *) (cy_device->cpussBase + cy_device->cpussCm4StatusOffset))
781 #define CPUSS_CM0_STATUS                    (*(volatile uint32_t *) (cy_device->cpussBase + cy_device->cpussCm0StatusOffset))
782 #define CPUSS_CM4_PWR_CTL                   (*(volatile uint32_t *) (cy_device->cpussBase + cy_device->cpussCm4PwrCtlOffset))
783 #define CPUSS_TRIM_RAM_CTL                  (*(volatile uint32_t *) (cy_device->cpussBase + cy_device->cpussTrimRamCtlOffset))
784 #define CPUSS_TRIM_ROM_CTL                  (*(volatile uint32_t *) (cy_device->cpussBase + cy_device->cpussTrimRomCtlOffset))
785 #define CPUSS_SYSTICK_CTL                   (*(volatile uint32_t *) (cy_device->cpussBase + cy_device->cpussSysTickCtlOffset))
786 
787 #define CPUSS_ROM_CTL                       (*(volatile uint32_t *) (cy_device->cpussBase + cy_device->cpussRomCtl))
788 #define CPUSS_RAM0_CTL0                     (*(volatile uint32_t *) (cy_device->cpussBase + cy_device->cpussRam0Ctl0))
789 #define CPUSS_RAM0_PWR_MACRO_CTL(macroIdx)  ((((CPUSS_Type *)(CPUSS_BASE))->RAM0_PWR_MACRO_CTL[(macroIdx)]))
790 #define CPUSS_RAM1_CTL0                     (*(volatile uint32_t *) (cy_device->cpussBase + cy_device->cpussRam1Ctl0))
791 #define CPUSS_RAM2_CTL0                     (*(volatile uint32_t *) (cy_device->cpussBase + cy_device->cpussRam2Ctl0))
792 #define CPUSS_RAM0_PWR_CTL(macroIdx)        (((volatile uint32_t *) (cy_device->cpussBase + cy_device->cpussRam0PwrCtl))[(macroIdx)])
793 #define CPUSS_RAM1_PWR_CTL                  (*(volatile uint32_t *) (cy_device->cpussBase + cy_device->cpussRam1PwrCtl))
794 #define CPUSS_RAM2_PWR_CTL                  (*(volatile uint32_t *) (cy_device->cpussBase + cy_device->cpussRam2PwrCtl))
795 
796 #define CPUSS_CM0_NMI_CTL(nmi)              (((volatile uint32_t *) (cy_device->cpussBase + cy_device->cpussCm0NmiCtlOffset))[(nmi)])
797 #define CPUSS_CM4_NMI_CTL(nmi)              (((volatile uint32_t *) (cy_device->cpussBase + cy_device->cpussCm4NmiCtlOffset))[(nmi)])
798 
799 /* used in V1 code only */
800 #define CPUSS_CM0_INT_CTL                   ((volatile uint32_t *) &(((CPUSS_V1_Type *)(cy_device->cpussBase))->CM0_INT_CTL0))
801 
802 /* used in V2 code only */
803 #define CPUSS_CM0_SYSTEM_INT_CTL            (((CPUSS_V2_Type *)(cy_device->cpussBase))->CM0_SYSTEM_INT_CTL)
804 #define CPUSS_CM0_INT_STATUS                ((volatile const uint32_t *) &(((CPUSS_V2_Type *)(cy_device->cpussBase))->CM0_INT0_STATUS))
805 #define CPUSS_CM4_SYSTEM_INT_CTL            (((CPUSS_V2_Type *)(cy_device->cpussBase))->CM4_SYSTEM_INT_CTL)
806 #define CPUSS_CM4_INT_STATUS                ((volatile const uint32_t *) &(((CPUSS_V2_Type *)(cy_device->cpussBase))->CM4_INT0_STATUS))
807 
808 #define CPUSS_SRAM_COUNT                    (1u + CPUSS_RAMC1_PRESENT + CPUSS_RAMC2_PRESENT)
809 
810 #if defined(CY_IP_M4CPUSS_VERSION) && (CY_IP_M4CPUSS_VERSION == 2u)
811 #define CPUSS_PRODUCT_ID                    (((CPUSS_Type*) CPUSS_BASE)->PRODUCT_ID)
812 #endif
813 
814 /* ARM core registers */
815 #define SYSTICK_CTRL                        (((SysTick_Type *)SysTick)->CTRL)
816 #define SYSTICK_LOAD                        (((SysTick_Type *)SysTick)->LOAD)
817 #define SYSTICK_VAL                         (((SysTick_Type *)SysTick)->VAL)
818 #define SCB_SCR                             (((SCB_Type *)SCB)->SCR)
819 
820 #define UDB_UDBIF_BANK_CTL                  (((UDB_V1_Type *) cy_device->udbBase)->UDBIF.BANK_CTL)
821 #define UDB_BCTL_MDCLK_EN                   (((UDB_V1_Type *) cy_device->udbBase)->BCTL.MDCLK_EN)
822 #define UDB_BCTL_MBCLK_EN                   (((UDB_V1_Type *) cy_device->udbBase)->BCTL.MBCLK_EN)
823 #define UDB_BCTL_BOTSEL_L                   (((UDB_V1_Type *) cy_device->udbBase)->BCTL.BOTSEL_L)
824 #define UDB_BCTL_BOTSEL_U                   (((UDB_V1_Type *) cy_device->udbBase)->BCTL.BOTSEL_U)
825 #define UDB_BCTL_QCLK_EN_0                  (((UDB_V1_Type *) cy_device->udbBase)->BCTL.QCLK_EN[0U])
826 #define UDB_BCTL_QCLK_EN_1                  (((UDB_V1_Type *) cy_device->udbBase)->BCTL.QCLK_EN[1U])
827 #define UDB_BCTL_QCLK_EN_2                  (((UDB_V1_Type *) cy_device->udbBase)->BCTL.QCLK_EN[2U])
828 
829 
830 /*******************************************************************************
831 *                FAULT
832 *******************************************************************************/
833 #if defined (CY_DEVICE_TVIIBE)
834 
835 #if defined(CPUSS_FAULT_FAULT_NR) && (CPUSS_FAULT_FAULT_NR > 0)
836 #define CY_IP_MXS40FAULT                        (1u)
837 #endif
838 
839 #define FAULT_CTL(base)                         (((FAULT_STRUCT_Type *)(base))->CTL)
840 #define FAULT_STATUS(base)                      (((FAULT_STRUCT_Type *)(base))->STATUS)
841 #define FAULT_DATA(base)                        (((FAULT_STRUCT_Type *)(base))->DATA)
842 #define FAULT_PENDING0(base)                    (((FAULT_STRUCT_Type *)(base))->PENDING0)
843 #define FAULT_PENDING1(base)                    (((FAULT_STRUCT_Type *)(base))->PENDING1)
844 #define FAULT_PENDING2(base)                    (((FAULT_STRUCT_Type *)(base))->PENDING2)
845 #define FAULT_MASK0(base)                       (((FAULT_STRUCT_Type *)(base))->MASK0)
846 #define FAULT_MASK1(base)                       (((FAULT_STRUCT_Type *)(base))->MASK1)
847 #define FAULT_MASK2(base)                       (((FAULT_STRUCT_Type *)(base))->MASK2)
848 #define FAULT_INTR(base)                        (((FAULT_STRUCT_Type *)(base))->INTR)
849 #define FAULT_INTR_SET(base)                    (((FAULT_STRUCT_Type *)(base))->INTR_SET)
850 #define FAULT_INTR_MASK(base)                   (((FAULT_STRUCT_Type *)(base))->INTR_MASK)
851 #define FAULT_INTR_MASKED(base)                 (((FAULT_STRUCT_Type *)(base))->INTR_MASKED)
852 #endif
853 
854 /*******************************************************************************
855 *                LPCOMP
856 *******************************************************************************/
857 
858 #define LPCOMP_CMP0_CTRL(base)              (((LPCOMP_Type *)(base))->CMP0_CTRL)
859 #define LPCOMP_CMP1_CTRL(base)              (((LPCOMP_Type *)(base))->CMP1_CTRL)
860 #define LPCOMP_CMP0_SW_CLEAR(base)          (((LPCOMP_Type *)(base))->CMP0_SW_CLEAR)
861 #define LPCOMP_CMP1_SW_CLEAR(base)          (((LPCOMP_Type *)(base))->CMP1_SW_CLEAR)
862 #define LPCOMP_CMP0_SW(base)                (((LPCOMP_Type *)(base))->CMP0_SW)
863 #define LPCOMP_CMP1_SW(base)                (((LPCOMP_Type *)(base))->CMP1_SW)
864 #define LPCOMP_STATUS(base)                 (((LPCOMP_Type *)(base))->STATUS)
865 #define LPCOMP_CONFIG(base)                 (((LPCOMP_Type *)(base))->CONFIG)
866 #define LPCOMP_INTR(base)                   (((LPCOMP_Type *)(base))->INTR)
867 #define LPCOMP_INTR_SET(base)               (((LPCOMP_Type *)(base))->INTR_SET)
868 #define LPCOMP_INTR_MASK(base)              (((LPCOMP_Type *)(base))->INTR_MASK)
869 #define LPCOMP_INTR_MASKED(base)            (((LPCOMP_Type *)(base))->INTR_MASKED)
870 
871 
872 /*******************************************************************************
873 *                MCWDT
874 *******************************************************************************/
875 
876 #if defined (CY_DEVICE_TVIIBE)
877 #define MCWDT_CTR_CTL(base, counter)            (((MCWDT_Type *)(base))->CTR[counter].CTL)
878 #define MCWDT_CTR_LOWER_LIMIT(base, counter)    (((MCWDT_Type *)(base))->CTR[counter].LOWER_LIMIT)
879 #define MCWDT_CTR_UPPER_LIMIT(base, counter)    (((MCWDT_Type *)(base))->CTR[counter].UPPER_LIMIT)
880 #define MCWDT_CTR_WARN_LIMIT(base, counter)     (((MCWDT_Type *)(base))->CTR[counter].WARN_LIMIT)
881 #define MCWDT_CTR_CONFIG(base, counter)         (((MCWDT_Type *)(base))->CTR[counter].CONFIG)
882 #define MCWDT_CTR_CNT(base, counter)            (((MCWDT_Type *)(base))->CTR[counter].CNT)
883 #define MCWDT_CPU_SELECT(base)                  (((MCWDT_Type *)(base))->CPU_SELECT)
884 #define MCWDT_CTR2_CTL(base)                    (((MCWDT_Type *)(base))->CTR2_CTL)
885 #define MCWDT_CTR2_CONFIG(base)                 (((MCWDT_Type *)(base))->CTR2_CONFIG)
886 #define MCWDT_CTR2_CNT(base)                    (((MCWDT_Type *)(base))->CTR2_CNT)
887 #define MCWDT_LOCK(base)                        (((MCWDT_Type *)(base))->LOCK)
888 #define MCWDT_SERVICE(base)                     (((MCWDT_Type *)(base))->SERVICE)
889 #define MCWDT_INTR(base)                        (((MCWDT_Type *)(base))->INTR)
890 #define MCWDT_INTR_SET(base)                    (((MCWDT_Type *)(base))->INTR_SET)
891 #define MCWDT_INTR_MASK(base)                   (((MCWDT_Type *)(base))->INTR_MASK)
892 #define MCWDT_INTR_MASKED(base)                 (((MCWDT_Type *)(base))->INTR_MASKED)
893 #else
894 #define MCWDT_CNTLOW(base)      (((MCWDT_STRUCT_Type *)(base))->MCWDT_CNTLOW)
895 #define MCWDT_CNTHIGH(base)     (((MCWDT_STRUCT_Type *)(base))->MCWDT_CNTHIGH)
896 #define MCWDT_MATCH(base)       (((MCWDT_STRUCT_Type *)(base))->MCWDT_MATCH)
897 #define MCWDT_CONFIG(base)      (((MCWDT_STRUCT_Type *)(base))->MCWDT_CONFIG)
898 #define MCWDT_LOCK(base)        (((MCWDT_STRUCT_Type *)(base))->MCWDT_LOCK)
899 #define MCWDT_CTL(base)         (((MCWDT_STRUCT_Type *)(base))->MCWDT_CTL)
900 #define MCWDT_INTR(base)        (((MCWDT_STRUCT_Type *)(base))->MCWDT_INTR)
901 #define MCWDT_INTR_SET(base)    (((MCWDT_STRUCT_Type *)(base))->MCWDT_INTR_SET)
902 #define MCWDT_INTR_MASK(base)   (((MCWDT_STRUCT_Type *)(base))->MCWDT_INTR_MASK)
903 #define MCWDT_INTR_MASKED(base) (((MCWDT_STRUCT_Type *)(base))->MCWDT_INTR_MASKED)
904 #endif
905 
906 
907 /*******************************************************************************
908 *                TCPWM
909 *******************************************************************************/
910 
911 #define TCPWM_CTRL_SET(base)                (((TCPWM_V1_Type *)(base))->CTRL_SET)
912 #define TCPWM_CTRL_CLR(base)                (((TCPWM_V1_Type *)(base))->CTRL_CLR)
913 #define TCPWM_CMD_START(base)               (((TCPWM_V1_Type *)(base))->CMD_START)
914 #define TCPWM_CMD_RELOAD(base)              (((TCPWM_V1_Type *)(base))->CMD_RELOAD)
915 #define TCPWM_CMD_STOP(base)                (((TCPWM_V1_Type *)(base))->CMD_STOP)
916 #define TCPWM_CMD_CAPTURE(base)             (((TCPWM_V1_Type *)(base))->CMD_CAPTURE)
917 
918 #define TCPWM_CNT_CTRL(base, cntNum)         (((TCPWM_V1_Type *)(base))->CNT[cntNum].CTRL)
919 #define TCPWM_CNT_CC(base, cntNum)           (((TCPWM_V1_Type *)(base))->CNT[cntNum].CC)
920 #define TCPWM_CNT_CC_BUFF(base, cntNum)      (((TCPWM_V1_Type *)(base))->CNT[cntNum].CC_BUFF)
921 #define TCPWM_CNT_COUNTER(base, cntNum)      (((TCPWM_V1_Type *)(base))->CNT[cntNum].COUNTER)
922 #define TCPWM_CNT_PERIOD(base, cntNum)       (((TCPWM_V1_Type *)(base))->CNT[cntNum].PERIOD)
923 #define TCPWM_CNT_PERIOD_BUFF(base, cntNum)  (((TCPWM_V1_Type *)(base))->CNT[cntNum].PERIOD_BUFF)
924 #define TCPWM_CNT_STATUS(base, cntNum)       (((TCPWM_V1_Type *)(base))->CNT[cntNum].STATUS)
925 #define TCPWM_CNT_INTR(base, cntNum)         (((TCPWM_V1_Type *)(base))->CNT[cntNum].INTR)
926 #define TCPWM_CNT_INTR_SET(base, cntNum)     (((TCPWM_V1_Type *)(base))->CNT[cntNum].INTR_SET)
927 #define TCPWM_CNT_INTR_MASK(base, cntNum)    (((TCPWM_V1_Type *)(base))->CNT[cntNum].INTR_MASK)
928 #define TCPWM_CNT_INTR_MASKED(base, cntNum)  (((TCPWM_V1_Type *)(base))->CNT[cntNum].INTR_MASKED)
929 #define TCPWM_CNT_TR_CTRL0(base, cntNum)     (((TCPWM_V1_Type *)(base))->CNT[cntNum].TR_CTRL0)
930 #define TCPWM_CNT_TR_CTRL1(base, cntNum)     (((TCPWM_V1_Type *)(base))->CNT[cntNum].TR_CTRL1)
931 #define TCPWM_CNT_TR_CTRL2(base, cntNum)     (((TCPWM_V1_Type *)(base))->CNT[cntNum].TR_CTRL2)
932 
933 #if defined (CY_DEVICE_TVIIBE)
934 
935 #if (CY_IP_MXTCPWM_INSTANCES == 1UL)
936 #define TCPWM_GRP_CC1_PRESENT_STATUS(base) (TCPWM_GRP_NR0_CNT_GRP_CC1_PRESENT | (TCPWM_GRP_NR1_CNT_GRP_CC1_PRESENT << 1) | (TCPWM_GRP_NR2_CNT_GRP_CC1_PRESENT << 2))
937 #define TCPWM_GRP_AMC_PRESENT_STATUS(base) (TCPWM_GRP_NR0_CNT_GRP_AMC_PRESENT | (TCPWM_GRP_NR1_CNT_GRP_AMC_PRESENT << 1) | (TCPWM_GRP_NR2_CNT_GRP_CC1_PRESENT << 2))
938 #define TCPWM_GRP_SMC_PRESENT_STATUS(base) (TCPWM_GRP_NR0_CNT_GRP_SMC_PRESENT | (TCPWM_GRP_NR1_CNT_GRP_SMC_PRESENT << 1) | (TCPWM_GRP_NR2_CNT_GRP_CC1_PRESENT << 2))
939 #endif
940 
941 #if (CY_IP_MXTCPWM_INSTANCES == 2UL)
942 #define TCPWM_GRP_CC1_PRESENT_STATUS(base) (((base) == (TCPWM_Type *) TCPWM0_BASE) ? (TCPWM0_GRP_NR0_CNT_GRP_CC1_PRESENT | (TCPWM0_GRP_NR1_CNT_GRP_CC1_PRESENT << 1) | (TCPWM0_GRP_NR2_CNT_GRP_CC1_PRESENT << 2)) : (TCPWM1_GRP_NR0_CNT_GRP_CC1_PRESENT | (TCPWM1_GRP_NR1_CNT_GRP_CC1_PRESENT << 1) | (TCPWM1_GRP_NR2_CNT_GRP_CC1_PRESENT << 2)))
943 #define TCPWM_GRP_AMC_PRESENT_STATUS(base) (((base) == (TCPWM_Type *) TCPWM0_BASE) ? (TCPWM0_GRP_NR0_CNT_GRP_AMC_PRESENT | (TCPWM0_GRP_NR1_CNT_GRP_AMC_PRESENT << 1) | (TCPWM0_GRP_NR2_CNT_GRP_CC1_PRESENT << 2)) : (TCPWM1_GRP_NR0_CNT_GRP_AMC_PRESENT | (TCPWM1_GRP_NR1_CNT_GRP_AMC_PRESENT << 1) | (TCPWM1_GRP_NR2_CNT_GRP_CC1_PRESENT << 2)))
944 #define TCPWM_GRP_SMC_PRESENT_STATUS(base) (((base) == (TCPWM_Type *) TCPWM0_BASE) ? (TCPWM0_GRP_NR0_CNT_GRP_SMC_PRESENT | (TCPWM0_GRP_NR1_CNT_GRP_SMC_PRESENT << 1) | (TCPWM0_GRP_NR2_CNT_GRP_CC1_PRESENT << 2)) : (TCPWM1_GRP_NR0_CNT_GRP_SMC_PRESENT | (TCPWM1_GRP_NR1_CNT_GRP_SMC_PRESENT << 1) | (TCPWM1_GRP_NR2_CNT_GRP_CC1_PRESENT << 2)))
945 #endif
946 
947 #define TCPWM_GRP_CC1(base, grp) ((bool)(((TCPWM_GRP_CC1_PRESENT_STATUS(base)) >> (grp)) & 0x01U))
948 #define TCPWM_GRP_AMC(base, grp) ((bool)(((TCPWM_GRP_AMC_PRESENT_STATUS(base)) >> (grp)) & 0x01U))
949 #define TCPWM_GRP_SMC(base, grp) ((bool)(((TCPWM_GRP_SMC_PRESENT_STATUS(base)) >> (grp)) & 0x01U))
950 
951 #else /* PSoC Devices */
952 
953 #define TCPWM_GRP_CC1(base, grp)                   ((((cy_device->tcpwmCC1Present) >> (grp)) & 0x01U) != 0U)
954 #define TCPWM_GRP_AMC(base, grp)                   ((((cy_device->tcpwmAMCPresent) >> (grp)) & 0x01U) != 0U)
955 #define TCPWM_GRP_SMC(base, grp)                   ((((cy_device->tcpwmSMCPrecent) >> (grp)) & 0x01U) != 0U)
956 
957 #endif /* defined(CY_DEVICE_TVIIBE) */
958 
959 #define TCPWM_GRP_CNT_GET_GRP(cntNum)        ((cntNum )/ 256U)
960 
961 #define TCPWM_GRP_CNT_CTRL(base, grp, cntNum)           (((TCPWM_V2_Type *)(base))->GRP[grp].CNT[((cntNum) % 256U)].CTRL)
962 #define TCPWM_GRP_CNT_STATUS(base, grp, cntNum)         (((TCPWM_V2_Type *)(base))->GRP[grp].CNT[((cntNum) % 256U)].STATUS)
963 #define TCPWM_GRP_CNT_COUNTER(base, grp, cntNum)        (((TCPWM_V2_Type *)(base))->GRP[grp].CNT[((cntNum) % 256U)].COUNTER)
964 #define TCPWM_GRP_CNT_CC0(base, grp, cntNum)            (((TCPWM_V2_Type *)(base))->GRP[grp].CNT[((cntNum) % 256U)].CC0)
965 #define TCPWM_GRP_CNT_CC0_BUFF(base, grp, cntNum)       (((TCPWM_V2_Type *)(base))->GRP[grp].CNT[((cntNum) % 256U)].CC0_BUFF)
966 #define TCPWM_GRP_CNT_CC1(base, grp, cntNum)            (((TCPWM_V2_Type *)(base))->GRP[grp].CNT[((cntNum) % 256U)].CC1)
967 #define TCPWM_GRP_CNT_CC1_BUFF(base, grp, cntNum)       (((TCPWM_V2_Type *)(base))->GRP[grp].CNT[((cntNum) % 256U)].CC1_BUFF)
968 #define TCPWM_GRP_CNT_PERIOD(base, grp, cntNum)         (((TCPWM_V2_Type *)(base))->GRP[grp].CNT[((cntNum) % 256U)].PERIOD)
969 #define TCPWM_GRP_CNT_PERIOD_BUFF(base, grp, cntNum)    (((TCPWM_V2_Type *)(base))->GRP[grp].CNT[((cntNum) % 256U)].PERIOD_BUFF)
970 #define TCPWM_GRP_CNT_LINE_SEL(base, grp, cntNum)       (((TCPWM_V2_Type *)(base))->GRP[grp].CNT[((cntNum) % 256U)].LINE_SEL)
971 #define TCPWM_GRP_CNT_LINE_SEL_BUFF(base, grp, cntNum)  (((TCPWM_V2_Type *)(base))->GRP[grp].CNT[((cntNum) % 256U)].LINE_SEL_BUFF)
972 #define TCPWM_GRP_CNT_DT(base, grp, cntNum)             (((TCPWM_V2_Type *)(base))->GRP[grp].CNT[((cntNum) % 256U)].DT)
973 #define TCPWM_GRP_CNT_TR_CMD(base, grp, cntNum)         (((TCPWM_V2_Type *)(base))->GRP[grp].CNT[((cntNum) % 256U)].TR_CMD)
974 #define TCPWM_GRP_CNT_TR_IN_SEL0(base, grp, cntNum)     (((TCPWM_V2_Type *)(base))->GRP[grp].CNT[((cntNum) % 256U)].TR_IN_SEL0)
975 #define TCPWM_GRP_CNT_TR_IN_SEL1(base, grp, cntNum)     (((TCPWM_V2_Type *)(base))->GRP[grp].CNT[((cntNum) % 256U)].TR_IN_SEL1)
976 #define TCPWM_GRP_CNT_TR_IN_EDGE_SEL(base, grp, cntNum) (((TCPWM_V2_Type *)(base))->GRP[grp].CNT[((cntNum) % 256U)].TR_IN_EDGE_SEL)
977 #define TCPWM_GRP_CNT_TR_PWM_CTRL(base, grp, cntNum)    (((TCPWM_V2_Type *)(base))->GRP[grp].CNT[((cntNum) % 256U)].TR_PWM_CTRL)
978 #define TCPWM_GRP_CNT_TR_OUT_SEL(base, grp, cntNum)     (((TCPWM_V2_Type *)(base))->GRP[grp].CNT[((cntNum) % 256U)].TR_OUT_SEL)
979 #define TCPWM_GRP_CNT_INTR(base, grp, cntNum)           (((TCPWM_V2_Type *)(base))->GRP[grp].CNT[((cntNum) % 256U)].INTR)
980 #define TCPWM_GRP_CNT_INTR_SET(base, grp, cntNum)       (((TCPWM_V2_Type *)(base))->GRP[grp].CNT[((cntNum) % 256U)].INTR_SET)
981 #define TCPWM_GRP_CNT_INTR_MASK(base, grp, cntNum)      (((TCPWM_V2_Type *)(base))->GRP[grp].CNT[((cntNum) % 256U)].INTR_MASK)
982 #define TCPWM_GRP_CNT_INTR_MASKED(base, grp, cntNum)    (((TCPWM_V2_Type *)(base))->GRP[grp].CNT[((cntNum) % 256U)].INTR_MASKED)
983 
984 #if defined (CY_DEVICE_TVIIBE)
985 /* For backward compatibility, TCPWM_CNT_STATUS_RUNNING_Pos was set to the
986 *  value of TCPWM_GRP_CNT_V2_STATUS_RUNNING. This needs to be defined for version 2 only.
987 */
988 #define TCPWM_CNT_STATUS_RUNNING_Pos (31UL)
989 #endif
990 
991 
992 /*******************************************************************************
993 *                SAR
994 *******************************************************************************/
995 
996 #define CY_SAR_INSTANCES                    (2UL)
997 #define CY_SAR0_BASE                        ((SAR_Type*)(cy_device->sar0Base))
998 #define CY_SAR_INSTANCE(base)               ((CY_SAR0_BASE == (base)) ? 0UL : 1UL)
999 
1000 #define SAR_SAMPLE_CTRL(base)               (((SAR_V1_Type *)(base))->SAMPLE_CTRL)
1001 #define SAR_SAMPLE_TIME01(base)             (((SAR_V1_Type *)(base))->SAMPLE_TIME01)
1002 #define SAR_SAMPLE_TIME23(base)             (((SAR_V1_Type *)(base))->SAMPLE_TIME23)
1003 
1004 #define SAR_RANGE_THRES(base)               (((SAR_V1_Type *)(base))->RANGE_THRES)
1005 #define SAR_RANGE_COND(base)                (((SAR_V1_Type *)(base))->RANGE_COND)
1006 #define SAR_RANGE_INTR(base)                (((SAR_V1_Type *)(base))->RANGE_INTR)
1007 #define SAR_RANGE_INTR_SET(base)            (((SAR_V1_Type *)(base))->RANGE_INTR_SET)
1008 
1009 #define SAR_RANGE_INTR_MASK(base)           (((SAR_V1_Type *)(base))->RANGE_INTR_MASK)
1010 #define SAR_RANGE_INTR_MASKED(base)         (((SAR_V1_Type *)(base))->RANGE_INTR_MASKED)
1011 
1012 #define SAR_CHAN_EN(base)                   (((SAR_V1_Type *)(base))->CHAN_EN)
1013 #define SAR_CHAN_CONFIG(base, chan)         (((SAR_V1_Type *)(base))->CHAN_CONFIG[(chan)])
1014 #define SAR_CHAN_RESULT(base, chan )        (((SAR_V1_Type *)(base))->CHAN_RESULT[(chan)])
1015 #define SAR_CHAN_RESULT_UPDATED(base)       (((SAR_V1_Type *)(base))->CHAN_RESULT_UPDATED)
1016 
1017 #define SAR_INTR(base)                      (((SAR_V1_Type *)(base))->INTR)
1018 #define SAR_INTR_MASK(base)                 (((SAR_V1_Type *)(base))->INTR_MASK)
1019 #define SAR_INTR_MASKED(base)               (((SAR_V1_Type *)(base))->INTR_MASKED)
1020 #define SAR_INTR_SET(base)                  (((SAR_V1_Type *)(base))->INTR_SET)
1021 #define SAR_INTR_CAUSE(base)                (((SAR_V1_Type *)(base))->INTR_CAUSE)
1022 
1023 #define SAR_MUX_SWITCH_CLEAR0(base)         (((SAR_V1_Type *)(base))->MUX_SWITCH_CLEAR0)
1024 #define SAR_MUX_SWITCH0(base)               (((SAR_V1_Type *)(base))->MUX_SWITCH0)
1025 #define SAR_MUX_SWITCH_SQ_CTRL(base)        (((SAR_V1_Type *)(base))->MUX_SWITCH_SQ_CTRL)
1026 #define SAR_MUX_SWITCH_DS_CTRL(base)        (((SAR_V1_Type *)(base))->MUX_SWITCH_DS_CTRL)
1027 
1028 #define SAR_ANA_TRIM0(base)                 (((SAR_V1_Type *)(base))->ANA_TRIM0)
1029 #define SAR_CTRL(base)                      (((SAR_V1_Type *)(base))->CTRL)
1030 #define SAR_STATUS(base)                    (((SAR_V1_Type *)(base))->STATUS)
1031 #define SAR_START_CTRL(base)                (((SAR_V1_Type *)(base))->START_CTRL)
1032 
1033 #define SAR_SATURATE_INTR(base)             (((SAR_V1_Type *)(base))->SATURATE_INTR)
1034 #define SAR_SATURATE_INTR_MASK(base)        (((SAR_V1_Type *)(base))->SATURATE_INTR_MASK)
1035 #define SAR_SATURATE_INTR_MASKED(base)      (((SAR_V1_Type *)(base))->SATURATE_INTR_MASKED)
1036 #define SAR_SATURATE_INTR_SET(base)         (((SAR_V1_Type *)(base))->SATURATE_INTR_SET)
1037 
1038 #define SAR_INJ_CHAN_CONFIG(base)           (((SAR_V1_Type *)(base))->INJ_CHAN_CONFIG)
1039 #define SAR_INJ_RESULT(base)                (((SAR_V1_Type *)(base))->INJ_RESULT)
1040 
1041 /*******************************************************************************
1042 *                SDHC
1043 *******************************************************************************/
1044 
1045 #define SDHC_WRAP_CTL(base)                     (((SDHC_V1_Type *)(base))->WRAP.CTL)
1046 #define SDHC_CORE_SDMASA_R(base)                (((SDHC_V1_Type *)(base))->CORE.SDMASA_R)
1047 #define SDHC_CORE_BLOCKSIZE_R(base)             (((SDHC_V1_Type *)(base))->CORE.BLOCKSIZE_R)
1048 #define SDHC_CORE_BLOCKCOUNT_R(base)            (((SDHC_V1_Type *)(base))->CORE.BLOCKCOUNT_R)
1049 #define SDHC_CORE_ARGUMENT_R(base)              (((SDHC_V1_Type *)(base))->CORE.ARGUMENT_R)
1050 #define SDHC_CORE_XFER_MODE_R(base)             (((SDHC_V1_Type *)(base))->CORE.XFER_MODE_R)
1051 #define SDHC_CORE_CMD_R(base)                   (((SDHC_V1_Type *)(base))->CORE.CMD_R)
1052 #define SDHC_CORE_RESP01_R(base)                (((SDHC_V1_Type *)(base))->CORE.RESP01_R)
1053 #define SDHC_CORE_RESP23_R(base)                (((SDHC_V1_Type *)(base))->CORE.RESP23_R)
1054 #define SDHC_CORE_RESP45_R(base)                (((SDHC_V1_Type *)(base))->CORE.RESP45_R)
1055 #define SDHC_CORE_RESP67_R(base)                (((SDHC_V1_Type *)(base))->CORE.RESP67_R)
1056 #define SDHC_CORE_BUF_DATA_R(base)              (((SDHC_V1_Type *)(base))->CORE.BUF_DATA_R)
1057 #define SDHC_CORE_PSTATE_REG(base)              (((SDHC_V1_Type *)(base))->CORE.PSTATE_REG)
1058 #define SDHC_CORE_HOST_CTRL1_R(base)            (((SDHC_V1_Type *)(base))->CORE.HOST_CTRL1_R)
1059 #define SDHC_CORE_PWR_CTRL_R(base)              (((SDHC_V1_Type *)(base))->CORE.PWR_CTRL_R)
1060 #define SDHC_CORE_BGAP_CTRL_R(base)             (((SDHC_V1_Type *)(base))->CORE.BGAP_CTRL_R)
1061 #define SDHC_CORE_WUP_CTRL_R(base)              (((SDHC_V1_Type *)(base))->CORE.WUP_CTRL_R)
1062 #define SDHC_CORE_CLK_CTRL_R(base)              (((SDHC_V1_Type *)(base))->CORE.CLK_CTRL_R)
1063 #define SDHC_CORE_TOUT_CTRL_R(base)             (((SDHC_V1_Type *)(base))->CORE.TOUT_CTRL_R)
1064 #define SDHC_CORE_SW_RST_R(base)                (((SDHC_V1_Type *)(base))->CORE.SW_RST_R)
1065 #define SDHC_CORE_NORMAL_INT_STAT_R(base)       (((SDHC_V1_Type *)(base))->CORE.NORMAL_INT_STAT_R)
1066 #define SDHC_CORE_ERROR_INT_STAT_R(base)        (((SDHC_V1_Type *)(base))->CORE.ERROR_INT_STAT_R)
1067 #define SDHC_CORE_NORMAL_INT_STAT_EN_R(base)    (((SDHC_V1_Type *)(base))->CORE.NORMAL_INT_STAT_EN_R)
1068 #define SDHC_CORE_ERROR_INT_STAT_EN_R(base)     (((SDHC_V1_Type *)(base))->CORE.ERROR_INT_STAT_EN_R)
1069 #define SDHC_CORE_NORMAL_INT_SIGNAL_EN_R(base)  (((SDHC_V1_Type *)(base))->CORE.NORMAL_INT_SIGNAL_EN_R)
1070 #define SDHC_CORE_ERROR_INT_SIGNAL_EN_R(base)   (((SDHC_V1_Type *)(base))->CORE.ERROR_INT_SIGNAL_EN_R)
1071 #define SDHC_CORE_AUTO_CMD_STAT_R(base)         (((SDHC_V1_Type *)(base))->CORE.AUTO_CMD_STAT_R)
1072 #define SDHC_CORE_HOST_CTRL2_R(base)            (((SDHC_V1_Type *)(base))->CORE.HOST_CTRL2_R)
1073 #define SDHC_CORE_CAPABILITIES1_R(base)         (((SDHC_V1_Type *)(base))->CORE.CAPABILITIES1_R)
1074 #define SDHC_CORE_CAPABILITIES2_R(base)         (((SDHC_V1_Type *)(base))->CORE.CAPABILITIES2_R)
1075 #define SDHC_CORE_CURR_CAPABILITIES1_R(base)    (((SDHC_V1_Type *)(base))->CORE.CURR_CAPABILITIES1_R)
1076 #define SDHC_CORE_CURR_CAPABILITIES2_R(base)    (((SDHC_V1_Type *)(base))->CORE.CURR_CAPABILITIES2_R)
1077 #define SDHC_CORE_ADMA_ERR_STAT_R(base)         (((SDHC_V1_Type *)(base))->CORE.ADMA_ERR_STAT_R)
1078 #define SDHC_CORE_ADMA_SA_LOW_R(base)           (((SDHC_V1_Type *)(base))->CORE.ADMA_SA_LOW_R)
1079 #define SDHC_CORE_ADMA_ID_LOW_R(base)           (((SDHC_V1_Type *)(base))->CORE.ADMA_ID_LOW_R)
1080 #define SDHC_CORE_EMMC_CTRL_R(base)             (((SDHC_V1_Type *)(base))->CORE.EMMC_CTRL_R)
1081 #define SDHC_CORE_GP_OUT_R(base)                (((SDHC_V1_Type *)(base))->CORE.GP_OUT_R)
1082 
1083 
1084 /*******************************************************************************
1085 *                SMARTIO
1086 *******************************************************************************/
1087 
1088 #define SMARTIO_PRT_CTL(base)               (((SMARTIO_PRT_Type *)(base))->CTL)
1089 #define SMARTIO_PRT_SYNC_CTL(base)          (((SMARTIO_PRT_Type *)(base))->SYNC_CTL)
1090 #define SMARTIO_PRT_LUT_SEL(base, idx)      (((SMARTIO_PRT_Type *)(base))->LUT_SEL[idx])
1091 #define SMARTIO_PRT_LUT_CTL(base, idx)      (((SMARTIO_PRT_Type *)(base))->LUT_CTL[idx])
1092 #define SMARTIO_PRT_DU_SEL(base)            (((SMARTIO_PRT_Type *)(base))->DU_SEL)
1093 #define SMARTIO_PRT_DU_CTL(base)            (((SMARTIO_PRT_Type *)(base))->DU_CTL)
1094 #define SMARTIO_PRT_DATA(base)              (((SMARTIO_PRT_Type *)(base))->DATA)
1095 
1096 
1097 #if (defined (CY_IP_MXTDM))
1098 /*******************************************************************************
1099 *               TDM
1100 *******************************************************************************/
1101 
1102 #define TDM_STRUCT_Type                     TDM_TDM_STRUCT_Type
1103 #define TDM_TX_STRUCT_Type                  TDM_TDM_STRUCT_TDM_TX_STRUCT_Type
1104 #define TDM_RX_STRUCT_Type                  TDM_TDM_STRUCT_TDM_RX_STRUCT_Type
1105 #define TDM_STRUCT0                         TDM0_TDM_STRUCT0
1106 #define TDM_STRUCT1                         TDM0_TDM_STRUCT1
1107 #define TDM_STRUCT0_TX                      TDM0_TDM_STRUCT0_TDM_TX_STRUCT
1108 #define TDM_STRUCT1_TX                      TDM0_TDM_STRUCT1_TDM_TX_STRUCT
1109 #define TDM_STRUCT0_RX                      TDM0_TDM_STRUCT0_TDM_RX_STRUCT
1110 #define TDM_STRUCT1_RX                      TDM0_TDM_STRUCT1_TDM_RX_STRUCT
1111 #define TDM_STRUCT_TX_CTL(base)             (((TDM_TDM_STRUCT_TDM_TX_STRUCT_Type *)(base))->TX_CTL)
1112 #define TDM_STRUCT_TX_IF_CTL(base)          (((TDM_TDM_STRUCT_TDM_TX_STRUCT_Type *)(base))->TX_IF_CTL)
1113 #define TDM_STRUCT_TX_CH_CTL(base)          (((TDM_TDM_STRUCT_TDM_TX_STRUCT_Type *)(base))->TX_CH_CTL)
1114 #define TDM_STRUCT_TX_TEST_CTL(base)        (((TDM_TDM_STRUCT_TDM_TX_STRUCT_Type *)(base))->TX_TEST_CTL)
1115 #define TDM_STRUCT_TX_ROUTE_CTL(base)       (((TDM_TDM_STRUCT_TDM_TX_STRUCT_Type *)(base))->TX_ROUTE_CTL)
1116 #define TDM_STRUCT_TX_FIFO_CTL(base)        (((TDM_TDM_STRUCT_TDM_TX_STRUCT_Type *)(base))->TX_FIFO_CTL)
1117 #define TDM_STRUCT_TX_FIFO_STATUS(base)     (((TDM_TDM_STRUCT_TDM_TX_STRUCT_Type *)(base))->TX_FIFO_STATUS)
1118 #define TDM_STRUCT_TX_FIFO_WR(base)         (((TDM_TDM_STRUCT_TDM_TX_STRUCT_Type *)(base))->TX_FIFO_WR)
1119 #define TDM_STRUCT_TX_INTR_TX(base)         (((TDM_TDM_STRUCT_TDM_TX_STRUCT_Type *)(base))->INTR_TX)
1120 #define TDM_STRUCT_TX_INTR_TX_SET(base)     (((TDM_TDM_STRUCT_TDM_TX_STRUCT_Type *)(base))->INTR_TX_SET)
1121 #define TDM_STRUCT_TX_INTR_TX_MASK(base)    (((TDM_TDM_STRUCT_TDM_TX_STRUCT_Type *)(base))->INTR_TX_MASK)
1122 #define TDM_STRUCT_TX_INTR_TX_MASKED(base)  (((TDM_TDM_STRUCT_TDM_TX_STRUCT_Type *)(base))->INTR_TX_MASKED)
1123 
1124 #define TDM_STRUCT_RX_CTL(base)             (((TDM_TDM_STRUCT_TDM_RX_STRUCT_Type *)(base))->RX_CTL)
1125 #define TDM_STRUCT_RX_IF_CTL(base)          (((TDM_TDM_STRUCT_TDM_RX_STRUCT_Type *)(base))->RX_IF_CTL)
1126 #define TDM_STRUCT_RX_CH_CTL(base)          (((TDM_TDM_STRUCT_TDM_RX_STRUCT_Type *)(base))->RX_CH_CTL)
1127 #define TDM_STRUCT_RX_TEST_CTL(base)        (((TDM_TDM_STRUCT_TDM_RX_STRUCT_Type *)(base))->RX_TEST_CTL)
1128 #define TDM_STRUCT_RX_ROUTE_CTL(base)       (((TDM_TDM_STRUCT_TDM_RX_STRUCT_Type *)(base))->RX_ROUTE_CTL)
1129 #define TDM_STRUCT_RX_FIFO_CTL(base)        (((TDM_TDM_STRUCT_TDM_RX_STRUCT_Type *)(base))->RX_FIFO_CTL)
1130 #define TDM_STRUCT_RX_FIFO_STATUS(base)     (((TDM_TDM_STRUCT_TDM_RX_STRUCT_Type *)(base))->RX_FIFO_STATUS)
1131 #define TDM_STRUCT_RX_FIFO_RD(base)         (((TDM_TDM_STRUCT_TDM_RX_STRUCT_Type *)(base))->RX_FIFO_RD)
1132 #define TDM_STRUCT_RX_FIFO_RD_SILENT(base)  (((TDM_TDM_STRUCT_TDM_RX_STRUCT_Type *)(base))->RX_FIFO_RD_SILENT)
1133 #define TDM_STRUCT_RX_INTR_RX(base)         (((TDM_TDM_STRUCT_TDM_RX_STRUCT_Type *)(base))->INTR_RX)
1134 #define TDM_STRUCT_RX_INTR_RX_SET(base)     (((TDM_TDM_STRUCT_TDM_RX_STRUCT_Type *)(base))->INTR_RX_SET)
1135 #define TDM_STRUCT_RX_INTR_RX_MASK(base)    (((TDM_TDM_STRUCT_TDM_RX_STRUCT_Type *)(base))->INTR_RX_MASK)
1136 #define TDM_STRUCT_RX_INTR_RX_MASKED(base)  (((TDM_TDM_STRUCT_TDM_RX_STRUCT_Type *)(base))->INTR_RX_MASKED)
1137 #endif /* CY_IP_MXTDM */
1138 
1139 
1140 /*******************************************************************************
1141 *                SMIF
1142 *******************************************************************************/
1143 
1144 #define SMIF_DEVICE_CTL(base)               (((SMIF_DEVICE_V1_Type *)(base))->CTL)
1145 #define SMIF_DEVICE_ADDR(base)              (((SMIF_DEVICE_V1_Type *)(base))->ADDR)
1146 #define SMIF_DEVICE_ADDR_CTL(base)          (((SMIF_DEVICE_V1_Type *)(base))->ADDR_CTL)
1147 #define SMIF_DEVICE_MASK(base)              (((SMIF_DEVICE_V1_Type *)(base))->MASK)
1148 #define SMIF_DEVICE_RD_CMD_CTL(base)        (((SMIF_DEVICE_V1_Type *)(base))->RD_CMD_CTL)
1149 #define SMIF_DEVICE_RD_ADDR_CTL(base)       (((SMIF_DEVICE_V1_Type *)(base))->RD_ADDR_CTL)
1150 #define SMIF_DEVICE_RD_MODE_CTL(base)       (((SMIF_DEVICE_V1_Type *)(base))->RD_MODE_CTL)
1151 #define SMIF_DEVICE_RD_DUMMY_CTL(base)      (((SMIF_DEVICE_V1_Type *)(base))->RD_DUMMY_CTL)
1152 #define SMIF_DEVICE_RD_DATA_CTL(base)       (((SMIF_DEVICE_V1_Type *)(base))->RD_DATA_CTL)
1153 #define SMIF_DEVICE_WR_CMD_CTL(base)        (((SMIF_DEVICE_V1_Type *)(base))->WR_CMD_CTL)
1154 #define SMIF_DEVICE_WR_ADDR_CTL(base)       (((SMIF_DEVICE_V1_Type *)(base))->WR_ADDR_CTL)
1155 #define SMIF_DEVICE_WR_MODE_CTL(base)       (((SMIF_DEVICE_V1_Type *)(base))->WR_MODE_CTL)
1156 #define SMIF_DEVICE_WR_DUMMY_CTL(base)      (((SMIF_DEVICE_V1_Type *)(base))->WR_DUMMY_CTL)
1157 #define SMIF_DEVICE_WR_DATA_CTL(base)       (((SMIF_DEVICE_V1_Type *)(base))->WR_DATA_CTL)
1158 
1159 #define SMIF_DEVICE_IDX(base, deviceIndex)                 (((SMIF_V1_Type *)(base))->DEVICE[deviceIndex])
1160 
1161 #define SMIF_DEVICE_IDX_CTL(base, deviceIndex)             (SMIF_DEVICE_IDX(base, deviceIndex).CTL)
1162 #define SMIF_DEVICE_IDX_ADDR(base, deviceIndex)            (SMIF_DEVICE_IDX(base, deviceIndex).ADDR)
1163 #define SMIF_DEVICE_IDX_ADDR_CTL(base, deviceIndex)        (SMIF_DEVICE_IDX(base, deviceIndex).ADDR_CTL)
1164 #define SMIF_DEVICE_IDX_MASK(base, deviceIndex)            (SMIF_DEVICE_IDX(base, deviceIndex).MASK)
1165 #define SMIF_DEVICE_IDX_RD_CMD_CTL(base, deviceIndex)      (SMIF_DEVICE_IDX(base, deviceIndex).RD_CMD_CTL)
1166 #define SMIF_DEVICE_IDX_RD_ADDR_CTL(base, deviceIndex)     (SMIF_DEVICE_IDX(base, deviceIndex).RD_ADDR_CTL)
1167 #define SMIF_DEVICE_IDX_RD_MODE_CTL(base, deviceIndex)     (SMIF_DEVICE_IDX(base, deviceIndex).RD_MODE_CTL)
1168 #define SMIF_DEVICE_IDX_RD_DUMMY_CTL(base, deviceIndex)    (SMIF_DEVICE_IDX(base, deviceIndex).RD_DUMMY_CTL)
1169 #define SMIF_DEVICE_IDX_RD_DATA_CTL(base, deviceIndex)     (SMIF_DEVICE_IDX(base, deviceIndex).RD_DATA_CTL)
1170 #define SMIF_DEVICE_IDX_WR_CMD_CTL(base, deviceIndex)      (SMIF_DEVICE_IDX(base, deviceIndex).WR_CMD_CTL)
1171 #define SMIF_DEVICE_IDX_WR_ADDR_CTL(base, deviceIndex)     (SMIF_DEVICE_IDX(base, deviceIndex).WR_ADDR_CTL)
1172 #define SMIF_DEVICE_IDX_WR_MODE_CTL(base, deviceIndex)     (SMIF_DEVICE_IDX(base, deviceIndex).WR_MODE_CTL)
1173 #define SMIF_DEVICE_IDX_WR_DUMMY_CTL(base, deviceIndex)    (SMIF_DEVICE_IDX(base, deviceIndex).WR_DUMMY_CTL)
1174 #define SMIF_DEVICE_IDX_WR_DATA_CTL(base, deviceIndex)     (SMIF_DEVICE_IDX(base, deviceIndex).WR_DATA_CTL)
1175 
1176 #define SMIF_CTL(base)                      (((SMIF_V1_Type *)(base))->CTL)
1177 #define SMIF_STATUS(base)                   (((SMIF_V1_Type *)(base))->STATUS)
1178 #define SMIF_TX_DATA_FIFO_CTL(base)         (((SMIF_V1_Type *)(base))->TX_DATA_FIFO_CTL)
1179 #define SMIF_RX_DATA_FIFO_CTL(base)         (((SMIF_V1_Type *)(base))->RX_DATA_FIFO_CTL)
1180 #define SMIF_TX_DATA_FIFO_WR1(base)         (((SMIF_V1_Type *)(base))->TX_DATA_FIFO_WR1)
1181 #define SMIF_TX_DATA_FIFO_WR2(base)         (((SMIF_V1_Type *)(base))->TX_DATA_FIFO_WR2)
1182 #define SMIF_TX_DATA_FIFO_WR4(base)         (((SMIF_V1_Type *)(base))->TX_DATA_FIFO_WR4)
1183 #define SMIF_RX_DATA_FIFO_RD1(base)         (((SMIF_V1_Type *)(base))->RX_DATA_FIFO_RD1)
1184 #define SMIF_RX_DATA_FIFO_RD2(base)         (((SMIF_V1_Type *)(base))->RX_DATA_FIFO_RD2)
1185 #define SMIF_RX_DATA_FIFO_RD4(base)         (((SMIF_V1_Type *)(base))->RX_DATA_FIFO_RD4)
1186 #define SMIF_TX_CMD_FIFO_WR(base)           (((SMIF_V1_Type *)(base))->TX_CMD_FIFO_WR)
1187 #define SMIF_TX_CMD_FIFO_STATUS(base)       (((SMIF_V1_Type *)(base))->TX_CMD_FIFO_STATUS)
1188 #define SMIF_RX_DATA_FIFO_STATUS(base)      (((SMIF_V1_Type *)(base))->RX_DATA_FIFO_STATUS)
1189 #define SMIF_TX_DATA_FIFO_STATUS(base)      (((SMIF_V1_Type *)(base))->TX_DATA_FIFO_STATUS)
1190 #define SMIF_INTR(base)                     (((SMIF_V1_Type *)(base))->INTR)
1191 #define SMIF_INTR_SET(base)                 (((SMIF_V1_Type *)(base))->INTR_SET)
1192 #define SMIF_INTR_MASK(base)                (((SMIF_V1_Type *)(base))->INTR_MASK)
1193 #define SMIF_INTR_MASKED(base)              (((SMIF_V1_Type *)(base))->INTR_MASKED)
1194 #define SMIF_CRYPTO_INPUT0(base)            (((SMIF_V1_Type *)(base))->CRYPTO_INPUT0)
1195 #define SMIF_CRYPTO_INPUT1(base)            (((SMIF_V1_Type *)(base))->CRYPTO_INPUT1)
1196 #define SMIF_CRYPTO_INPUT2(base)            (((SMIF_V1_Type *)(base))->CRYPTO_INPUT2)
1197 #define SMIF_CRYPTO_INPUT3(base)            (((SMIF_V1_Type *)(base))->CRYPTO_INPUT3)
1198 #define SMIF_CRYPTO_KEY0(base)              (((SMIF_V1_Type *)(base))->CRYPTO_KEY0)
1199 #define SMIF_CRYPTO_KEY1(base)              (((SMIF_V1_Type *)(base))->CRYPTO_KEY1)
1200 #define SMIF_CRYPTO_KEY2(base)              (((SMIF_V1_Type *)(base))->CRYPTO_KEY2)
1201 #define SMIF_CRYPTO_KEY3(base)              (((SMIF_V1_Type *)(base))->CRYPTO_KEY3)
1202 #define SMIF_CRYPTO_OUTPUT0(base)           (((SMIF_V1_Type *)(base))->CRYPTO_OUTPUT0)
1203 #define SMIF_CRYPTO_OUTPUT1(base)           (((SMIF_V1_Type *)(base))->CRYPTO_OUTPUT1)
1204 #define SMIF_CRYPTO_OUTPUT2(base)           (((SMIF_V1_Type *)(base))->CRYPTO_OUTPUT2)
1205 #define SMIF_CRYPTO_OUTPUT3(base)           (((SMIF_V1_Type *)(base))->CRYPTO_OUTPUT3)
1206 #define SMIF_CRYPTO_CMD(base)               (((SMIF_V1_Type *)(base))->CRYPTO_CMD)
1207 #define SMIF_SLOW_CA_CTL(base)              (((SMIF_V1_Type *)(base))->SLOW_CA_CTL)
1208 #define SMIF_FAST_CA_CTL(base)              (((SMIF_V1_Type *)(base))->FAST_CA_CTL)
1209 #define SMIF_SLOW_CA_CMD(base)              (((SMIF_V1_Type *)(base))->SLOW_CA_CMD)
1210 #define SMIF_FAST_CA_CMD(base)              (((SMIF_V1_Type *)(base))->FAST_CA_CMD)
1211 
1212 
1213 /*******************************************************************************
1214 *                DW
1215 *******************************************************************************/
1216 #define CY_DW_V1                            (0x20U > cy_device->dwVersion)
1217 #define CY_DW_CRC                           ((uint32_t)(0x20U <= cy_device->dwVersion))
1218 #define CY_DW0_BASE                         ((DW_Type*) 0x40280000UL)
1219 #define CY_DW0_CH_NR                        (cy_device->cpussDw0ChNr)
1220 #define CY_DW1_CH_NR                        (cy_device->cpussDw1ChNr)
1221 
1222 #define CY_DW_CH_CTL_PRIO_Pos               ((uint32_t)(cy_device->dwChCtlPrioPos))
1223 #define CY_DW_CH_CTL_PRIO_Msk               ((uint32_t)(0x3UL << CY_DW_CH_CTL_PRIO_Pos))
1224 #define CY_DW_CH_CTL_PREEMPTABLE_Pos        ((uint32_t)(cy_device->dwChCtlPreemptablePos))
1225 #define CY_DW_CH_CTL_PREEMPTABLE_Msk        ((uint32_t)(0x1UL << CY_DW_CH_CTL_PREEMPTABLE_Pos))
1226 #define CY_DW_STATUS_CH_IDX_Pos             ((uint32_t)(cy_device->dwStatusChIdxPos))
1227 #define CY_DW_STATUS_CH_IDX_Msk             (cy_device->dwStatusChIdxMsk)
1228 
1229 #define DW_CTL(base)                        (((DW_Type*)(base))->CTL)
1230 #define DW_STATUS(base)                     (((DW_Type const*)(base))->STATUS)
1231 #if (CY_IP_M4CPUSS_DMA_VERSION == 1U)
1232 #define DW_PENDING(base)                    (((DW_Type*)(base))->PENDING)
1233 #else
1234 #define DW_CH_STRUCT_CH_STATUS_PENDING_Msk  DW_CH_STRUCT_V2_CH_STATUS_PENDING_Msk
1235 #define DW_CH_STRUCT_CH_STATUS_PENDING_Pos  DW_CH_STRUCT_V2_CH_STATUS_PENDING_Pos
1236 #endif
1237 #define DW_DESCR_SRC(base)                  (((DW_Type*)(base))->ACT_DESCR_SRC)
1238 #define DW_DESCR_DST(base)                  (((DW_Type*)(base))->ACT_DESCR_DST)
1239 
1240 #define DW_CRC_CTL(base)                    (((DW_V2_Type*)(base))->CRC_CTL)
1241 #define DW_CRC_DATA_CTL(base)               (((DW_V2_Type*)(base))->CRC_DATA_CTL)
1242 #define DW_CRC_REM_CTL(base)                (((DW_V2_Type*)(base))->CRC_REM_CTL)
1243 #define DW_CRC_POL_CTL(base)                (((DW_V2_Type*)(base))->CRC_POL_CTL)
1244 #define DW_CRC_LFSR_CTL(base)               (((DW_V2_Type*)(base))->CRC_LFSR_CTL)
1245 
1246 #define DW_CH(base, chan)                   ((DW_CH_STRUCT_V2_Type*)((uint32_t)(base) + cy_device->dwChOffset + ((chan) * cy_device->dwChSize)))
1247 #define DW_CH_CTL(base, chan)               (DW_CH(base, chan)->CH_CTL)
1248 #define DW_CH_STATUS(base, chan)            (DW_CH(base, chan)->CH_STATUS)
1249 #define DW_CH_IDX(base, chan)               (DW_CH(base, chan)->CH_IDX)
1250 #define DW_CH_CURR_PTR(base, chan)          (DW_CH(base, chan)->CH_CURR_PTR)
1251 
1252 #define DW_CH_INTR(base, chan)              (DW_CH(base, chan)->INTR)
1253 #define DW_CH_INTR_SET(base, chan)          (DW_CH(base, chan)->INTR_SET)
1254 #define DW_CH_INTR_MASK(base, chan)         (DW_CH(base, chan)->INTR_MASK)
1255 #define DW_CH_INTR_MASKED(base, chan)       (DW_CH(base, chan)->INTR_MASKED)
1256 #define DW_CH_TR_CMD(base, chan)            (DW_CH((base), (chan))->TR_CMD)
1257 
1258 #if defined DW_CH_STRUCT_V2_TR_CMD_ACTIVATE_Msk
1259 #define DW_CH_STRUCT_TR_CMD_ACTIVATE_Msk DW_CH_STRUCT_V2_TR_CMD_ACTIVATE_Msk
1260 #define DW_CH_STRUCT_TR_CMD_ACTIVATE_Pos DW_CH_STRUCT_V2_TR_CMD_ACTIVATE_Pos
1261 #endif
1262 /*******************************************************************************
1263 *                DMAC
1264 *******************************************************************************/
1265 
1266 #define CY_DMAC_CH_NR                       CPUSS_DMAC_CH_NR
1267 #define DMAC_CTL(base)                      (((DMAC_V2_Type*)(base))->CTL)
1268 #define DMAC_ACTIVE(base)                   (((DMAC_V2_Type const*)(base))->ACTIVE)
1269 #define DMAC_CH(base, chan)                 (&(((DMAC_V2_Type*)(base))->CH[(chan)]))
1270 #define DMAC_CH_CTL(base, chan)             (DMAC_CH(base, chan)->CTL)
1271 #define DMAC_CH_IDX(base, chan)             (DMAC_CH(base, chan)->IDX)
1272 #define DMAC_CH_CURR(base, chan)            (DMAC_CH(base, chan)->CURR)
1273 #define DMAC_CH_DESCR_SRC(base, chan)       (DMAC_CH(base, chan)->DESCR_SRC)
1274 #define DMAC_CH_DESCR_DST(base, chan)       (DMAC_CH(base, chan)->DESCR_DST)
1275 #define DMAC_CH_INTR(base, chan)            (DMAC_CH(base, chan)->INTR)
1276 #define DMAC_CH_INTR_SET(base, chan)        (DMAC_CH(base, chan)->INTR_SET)
1277 #define DMAC_CH_INTR_MASK(base, chan)       (DMAC_CH(base, chan)->INTR_MASK)
1278 #define DMAC_CH_INTR_MASKED(base, chan)     (DMAC_CH(base, chan)->INTR_MASKED)
1279 
1280 
1281 /*******************************************************************************
1282 *                PERI
1283 *******************************************************************************/
1284 #if (defined(CY_DEVICE_TVIIBE) || defined(CY_DEVICE_SERIES_FX3G2) || defined(CY_DEVICE_SERIES_FX2G3))
1285 #define CY_PERI_BASE                        ((PERI_Type *) cy_device->periBase)
1286 #else /* (defined(CY_DEVICE_TVIIBE)) */
1287 #define CY_PERI_BASE                        ((PERI_V1_Type *) cy_device->periBase)
1288 #endif /* (defined(CY_DEVICE_TVIIBE)) */
1289 
1290 #define CY_PERI_V1                          ((uint32_t)(0x20U > cy_device->periVersion)) /* true if the mxperi version is 1.x */
1291 #define CY_PERI_V2_TR_GR_SIZE               (sizeof(PERI_TR_GR_V2_Type))
1292 #define CY_PERI_TR_CTL_NUM                  ((uint32_t)cy_device->periTrGrSize / sizeof(uint32_t))
1293 #define CY_PERI_TR_CTL_SEL_Pos              (0UL)
1294 #define CY_PERI_TR_CTL_SEL_Msk              ((uint32_t)CY_PERI_TR_CTL_NUM - 1UL)
1295 #define CY_PERI_TR_CMD_GROUP_SEL_Pos        (PERI_TR_CMD_GROUP_SEL_Pos)
1296 #define CY_PERI_TR_CMD_GROUP_SEL_Msk        ((uint32_t)cy_device->periTrCmdGrSelMsk)
1297 
1298 #define PERI_TR_CMD                         (*(volatile uint32_t*)((uint32_t)cy_device->periBase + \
1299                                                                    (uint32_t)cy_device->periTrCmdOffset))
1300 #define PERI_TR_GR_TR_CTL(group, trCtl)     (*(volatile uint32_t*)((uint32_t)cy_device->periBase + \
1301                                                                    (uint32_t)cy_device->periTrGrOffset + \
1302                                                         ((group) * (uint32_t)cy_device->periTrGrSize) + \
1303                                                         ((trCtl) * (uint32_t)sizeof(uint32_t))))
1304 
1305 #define CY_PERI_CLOCK_NR                    ((uint32_t)(cy_device->periClockNr))
1306 
1307 #define CY_PERI_DIV_CMD_DIV_SEL_Pos         (PERI_DIV_CMD_DIV_SEL_Pos)
1308 #define CY_PERI_DIV_CMD_DIV_SEL_Msk         ((uint32_t)(cy_device->periDivCmdDivSelMsk))
1309 #define CY_PERI_DIV_CMD_TYPE_SEL_Pos        ((uint32_t)(cy_device->periDivCmdTypeSelPos))
1310 #define CY_PERI_DIV_CMD_TYPE_SEL_Msk        ((uint32_t)(0x3UL << CY_PERI_DIV_CMD_TYPE_SEL_Pos))
1311 #define CY_PERI_DIV_CMD_PA_DIV_SEL_Pos      ((uint32_t)(cy_device->periDivCmdPaDivSelPos))
1312 #define CY_PERI_DIV_CMD_PA_DIV_SEL_Msk      ((uint32_t)(CY_PERI_DIV_CMD_DIV_SEL_Msk << CY_PERI_DIV_CMD_PA_DIV_SEL_Pos))
1313 #define CY_PERI_DIV_CMD_PA_TYPE_SEL_Pos     ((uint32_t)(cy_device->periDivCmdPaTypeSelPos))
1314 #define CY_PERI_DIV_CMD_PA_TYPE_SEL_Msk     ((uint32_t)(0x3UL << CY_PERI_DIV_CMD_PA_TYPE_SEL_Pos))
1315 
1316 #define PERI_CLOCK_CTL                      ((CY_PERI_BASE)->CLOCK_CTL)
1317 
1318 #define CY_PERI_CLOCK_CTL_DIV_SEL_Pos       (PERI_CLOCK_CTL_DIV_SEL_Pos)
1319 #define CY_PERI_CLOCK_CTL_DIV_SEL_Msk       (CY_PERI_DIV_CMD_DIV_SEL_Msk)
1320 #define CY_PERI_CLOCK_CTL_TYPE_SEL_Pos      (CY_PERI_DIV_CMD_TYPE_SEL_Pos)
1321 #define CY_PERI_CLOCK_CTL_TYPE_SEL_Msk      (CY_PERI_DIV_CMD_TYPE_SEL_Msk)
1322 
1323 
1324 #if defined (CY_IP_MXS40SRSS) && (CY_IP_MXS40SRSS_VERSION >= 2)
1325 #define PERI_DIV_8_CTL(instNum, grNum, divNum)      (((volatile uint32_t *)((uint32_t)(cy_device->periBase) + (uint32_t)(cy_device->periDiv8CtlOffset)))[divNum])
1326 #define PERI_DIV_16_CTL(instNum, grNum, divNum)     (((volatile uint32_t *)((uint32_t)(cy_device->periBase) + (uint32_t)(cy_device->periDiv16CtlOffset)))[divNum])
1327 #define PERI_DIV_16_5_CTL(instNum, grNum, divNum)   (((volatile uint32_t *)((uint32_t)(cy_device->periBase) + (uint32_t)(cy_device->periDiv16_5CtlOffset)))[divNum])
1328 #define PERI_DIV_24_5_CTL(instNum, grNum, divNum)   (((volatile uint32_t *)((uint32_t)(cy_device->periBase) + (uint32_t)(cy_device->periDiv24_5CtlOffset)))[divNum])
1329 #define PERI_DIV_CMD(instNum, grNum)                ((CY_PERI_BASE)->DIV_CMD)
1330 
1331 /* Remap these V1 defines to V2 for compatibility. */
1332 #define PERI_TR_GR_TR_OUT_CTL_TR_SEL_Msk    (PERI_TR_GR_TR_CTL_TR_SEL_Msk)
1333 #define PERI_TR_GR_TR_OUT_CTL_TR_SEL_Pos    (PERI_TR_GR_TR_CTL_TR_SEL_Pos)
1334 #define PERI_TR_GR_TR_OUT_CTL_TR_INV_Msk    (PERI_TR_GR_TR_CTL_TR_INV_Msk)
1335 #define PERI_TR_GR_TR_OUT_CTL_TR_EDGE_Pos   (PERI_TR_GR_TR_CTL_TR_EDGE_Pos)
1336 #define PERI_TR_GR_TR_OUT_CTL_TR_EDGE_Msk   (PERI_TR_GR_TR_CTL_TR_EDGE_Msk)
1337 
1338 #define PERI_TR_CMD_COUNT_Pos 0UL
1339 #define PERI_TR_CMD_COUNT_Msk 0UL
1340 
1341 #define PERI_PCLK_PERI_NUM_Msk                 (0x000000FFU)
1342 #define PERI_PCLK_GR_NUM_Msk                   (0x0000FF00U)
1343 #define PERI_PCLK_GR_NUM_Pos                   (8U)
1344 #define PERI_PCLK_PERIPHERAL_GROUP_NUM         (1UL << PERI_PCLK_GR_NUM_Pos)
1345 #define PERI_PCLK_INST_NUM_Msk                 (0x00FF0000U)
1346 #define PERI_PCLK_INST_NUM_Pos                 (16U)
1347 
1348 #define PERI_PCLK_GR_DIV_8_NR(instNum, grNum)       (PERI_DIV_8_NR)
1349 #define PERI_PCLK_GR_DIV_16_NR(instNum, grNum)      (PERI_DIV_16_NR)
1350 #define PERI_PCLK_GR_DIV_16_5_NR(instNum, grNum)    (PERI_DIV_16_5_NR)
1351 #define PERI_PCLK_GR_DIV_24_5_NR(instNum, grNum)    (PERI_DIV_24_5_NR)
1352 #else
1353 #define PERI_DIV_8_CTL                      ((volatile uint32_t *)((uint32_t)(cy_device->periBase) + (uint32_t)(cy_device->periDiv8CtlOffset)))
1354 #define PERI_DIV_16_CTL                     ((volatile uint32_t *)((uint32_t)(cy_device->periBase) + (uint32_t)(cy_device->periDiv16CtlOffset)))
1355 #define PERI_DIV_16_5_CTL                   ((volatile uint32_t *)((uint32_t)(cy_device->periBase) + (uint32_t)(cy_device->periDiv16_5CtlOffset)))
1356 #define PERI_DIV_24_5_CTL                   ((volatile uint32_t *)((uint32_t)(cy_device->periBase) + (uint32_t)(cy_device->periDiv24_5CtlOffset)))
1357 #define PERI_DIV_CMD                        ((CY_PERI_BASE)->DIV_CMD)
1358 #endif
1359 
1360 #define PERI_GR_SL_CTL(udbGroupNr)          ((CY_PERI_BASE)->GR[udbGroupNr].SL_CTL)
1361 
1362 #define PERI_PPU_PR_ADDR0(base)             (((PERI_PPU_PR_V1_Type *) (base))->ADDR0)
1363 #define PERI_PPU_PR_ATT0(base)              (((PERI_PPU_PR_V1_Type *) (base))->ATT0)
1364 #define PERI_PPU_PR_ATT1(base)              (((PERI_PPU_PR_V1_Type *) (base))->ATT1)
1365 
1366 #define PERI_PPU_GR_ADDR0(base)             (((PERI_PPU_GR_V1_Type *) (base))->ADDR0)
1367 #define PERI_PPU_GR_ATT0(base)              (((PERI_PPU_GR_V1_Type *) (base))->ATT0)
1368 #define PERI_PPU_GR_ATT1(base)              (((PERI_PPU_GR_V1_Type *) (base))->ATT1)
1369 
1370 #define PERI_GR_PPU_SL_ADDR0(base)          (((PERI_GR_PPU_SL_V1_Type *) (base))->ADDR0)
1371 #define PERI_GR_PPU_SL_ATT0(base)           (((PERI_GR_PPU_SL_V1_Type *) (base))->ATT0)
1372 #define PERI_GR_PPU_SL_ATT1(base)           (((PERI_GR_PPU_SL_V1_Type *) (base))->ATT1)
1373 
1374 #define PERI_GR_PPU_RG_ADDR0(base)          (((PERI_GR_PPU_RG_V1_Type *) (base))->ADDR0)
1375 #define PERI_GR_PPU_RG_ATT0(base)           (((PERI_GR_PPU_RG_V1_Type *) (base))->ATT0)
1376 #define PERI_GR_PPU_RG_ATT1(base)           (((PERI_GR_PPU_RG_V1_Type *) (base))->ATT1)
1377 
1378 #define PERI_MS_PPU_PR_SL_ADDR(base)        (((PERI_MS_PPU_PR_V2_Type *) (base))->SL_ADDR)
1379 #define PERI_MS_PPU_PR_SL_SIZE(base)        (((PERI_MS_PPU_PR_V2_Type *) (base))->SL_SIZE)
1380 #define PERI_MS_PPU_PR_MS_ATT(base)         ((volatile uint32_t *) &(((PERI_MS_PPU_PR_V2_Type *)(base))->MS_ATT0))
1381 #define PERI_MS_PPU_PR_SL_ATT(base)         ((volatile uint32_t *) &(((PERI_MS_PPU_PR_V2_Type *)(base))->SL_ATT0))
1382 #define PERI_MS_PPU_FX_MS_ATT(base)         ((volatile uint32_t *) &(((PERI_MS_PPU_FX_V2_Type *)(base))->MS_ATT0))
1383 #define PERI_MS_PPU_FX_SL_ATT(base)         ((volatile uint32_t *) &(((PERI_MS_PPU_FX_V2_Type *)(base))->SL_ATT0))
1384 
1385 #define PROT_PERI_PPU_PR_STRUCT_IDX_ATT0(stcIdx)    ((CY_PERI_BASE)->PPU_PR[(stcIdx)].ATT0)
1386 #define PROT_PERI_PPU_PR_STRUCT_IDX_ATT1(stcIdx)    ((CY_PERI_BASE)->PPU_PR[(stcIdx)].ATT1)
1387 
1388 #define PROT_PERI_PPU_PR_STRUCT_IDX(stcIdx)         ((PERI_PPU_PR_Type*) &(CY_PERI_BASE)->PPU_PR[(stcIdx)])
1389 
1390 
1391 /*******************************************************************************
1392 *                PROT
1393 *******************************************************************************/
1394 #define CY_PROT_BASE                        (cy_device->protBase)
1395 
1396 #define CY_PROT_PC_MAX                      (8UL)
1397 #define CY_PROT_BUS_MASTER_MASK             (cy_device->protBusMasterMask)
1398 #define PROT_MPU_MS_CTL(mpu)                (((PROT_Type*)CY_PROT_BASE)->CYMPU[(mpu)].MS_CTL)
1399 #define PROT_MPU_MPU_STRUCT_ADDR(base)      (((PROT_MPU_MPU_STRUCT_Type *) (base))->ADDR)
1400 #define PROT_MPU_MPU_STRUCT_ATT(base)       (((PROT_MPU_MPU_STRUCT_Type *) (base))->ATT)
1401 
1402 #define PROT_SMPU_SMPU_STRUCT_ADDR0(base)   (((PROT_SMPU_SMPU_STRUCT_Type *) (base))->ADDR0)
1403 #define PROT_SMPU_SMPU_STRUCT_ADDR1(base)   (((PROT_SMPU_SMPU_STRUCT_Type *) (base))->ADDR1)
1404 #define PROT_SMPU_SMPU_STRUCT_ATT0(base)    (((PROT_SMPU_SMPU_STRUCT_Type *) (base))->ATT0)
1405 #define PROT_SMPU_SMPU_STRUCT_ATT1(base)    (((PROT_SMPU_SMPU_STRUCT_Type *) (base))->ATT1)
1406 
1407 #define PROT_SMPU_SMPU_STRUCT_IDX_ATT0(stcIdx)    (((PROT_SMPU_Type *) CY_PROT_BASE)->SMPU_STRUCT[(stcIdx)].ATT0)
1408 #define PROT_SMPU_SMPU_STRUCT_IDX_ATT1(stcIdx)    (((PROT_SMPU_Type *) CY_PROT_BASE)->SMPU_STRUCT[(stcIdx)].ATT1)
1409 #define PROT_SMPU_SMPU_STRUCT_IDX(stcIdx)         (((PROT_SMPU_SMPU_STRUCT_Type *) &((PROT_SMPU_Type *) CY_PROT_BASE)->SMPU_STRUCT[(stcIdx)]))
1410 
1411 
1412 /*******************************************************************************
1413 *                IOSS
1414 *******************************************************************************/
1415 
1416 #define CY_GPIO_BASE                       ((uint32_t)(cy_device->gpioBase))
1417 
1418 #if defined (CY_IP_MXS40IOSS_VERSION) && (CY_IP_MXS40IOSS_VERSION == 5)
1419 #define GPIO_INTR_CAUSE0                   (((GPIO_V5_Type*)(cy_device->gpioBase))->INTR_CAUSE0)
1420 #define GPIO_INTR_CAUSE1                   (((GPIO_V5_Type*)(cy_device->gpioBase))->INTR_CAUSE1)
1421 #define GPIO_INTR_CAUSE2                   (((GPIO_V5_Type*)(cy_device->gpioBase))->INTR_CAUSE2)
1422 #define GPIO_INTR_CAUSE3                   (((GPIO_V5_Type*)(cy_device->gpioBase))->INTR_CAUSE3)
1423 
1424 #define GPIO_PRT_V2_Type GPIO_PRT_V5_Type
1425 #define HSIOM_PRT_V2_Type HSIOM_PRT_V5_Type
1426 
1427 #elif defined (CY_IP_MXS40IOSS_VERSION) && (CY_IP_MXS40IOSS_VERSION == 2)
1428 #define GPIO_INTR_CAUSE0                   (((GPIO_V2_Type*)(cy_device->gpioBase))->INTR_CAUSE0)
1429 #define GPIO_INTR_CAUSE1                   (((GPIO_V2_Type*)(cy_device->gpioBase))->INTR_CAUSE1)
1430 #define GPIO_INTR_CAUSE2                   (((GPIO_V2_Type*)(cy_device->gpioBase))->INTR_CAUSE2)
1431 #define GPIO_INTR_CAUSE3                   (((GPIO_V2_Type*)(cy_device->gpioBase))->INTR_CAUSE3)
1432 
1433 /* The GPIO driver requires the HSIOM_PRT_V1_Type in order to compile, even if the device contains V2 version
1434 *  of the HSIOM IP.  This should be removed once the GPIO driver is corrected.
1435 */
1436 #define HSIOM_PRT_V1_Type   HSIOM_PRT_V2_Type
1437 #define HSIOM_V1_Type       HSIOM_V2_Type
1438 #else /* IOSS_VERSION == 1 */
1439 #define GPIO_INTR_CAUSE0                   (((GPIO_V1_Type*)(cy_device->gpioBase))->INTR_CAUSE0)
1440 #define GPIO_INTR_CAUSE1                   (((GPIO_V1_Type*)(cy_device->gpioBase))->INTR_CAUSE1)
1441 #define GPIO_INTR_CAUSE2                   (((GPIO_V1_Type*)(cy_device->gpioBase))->INTR_CAUSE2)
1442 #define GPIO_INTR_CAUSE3                   (((GPIO_V1_Type*)(cy_device->gpioBase))->INTR_CAUSE3)
1443 #endif
1444 
1445 #define GPIO_PRT_OUT(base)                 (((GPIO_PRT_Type*)(base))->OUT)
1446 #define GPIO_PRT_OUT_CLR(base)             (((GPIO_PRT_Type*)(base))->OUT_CLR)
1447 #define GPIO_PRT_OUT_SET(base)             (((GPIO_PRT_Type*)(base))->OUT_SET)
1448 #define GPIO_PRT_OUT_INV(base)             (((GPIO_PRT_Type*)(base))->OUT_INV)
1449 #define GPIO_PRT_IN(base)                  (((GPIO_PRT_Type*)(base))->IN)
1450 #define GPIO_PRT_INTR(base)                (((GPIO_PRT_Type*)(base))->INTR)
1451 #define GPIO_PRT_INTR_MASK(base)           (((GPIO_PRT_Type*)(base))->INTR_MASK)
1452 #define GPIO_PRT_INTR_MASKED(base)         (((GPIO_PRT_Type*)(base))->INTR_MASKED)
1453 #define GPIO_PRT_INTR_SET(base)            (((GPIO_PRT_Type*)(base))->INTR_SET)
1454 
1455 #define GPIO_PRT_INTR_CFG(base)            (*(volatile uint32_t *)((uint32_t)(base) + (uint32_t)(cy_device->gpioPrtIntrCfgOffset)))
1456 #define GPIO_PRT_CFG(base)                 (*(volatile uint32_t *)((uint32_t)(base) + (uint32_t)(cy_device->gpioPrtCfgOffset)))
1457 #define GPIO_PRT_CFG_IN(base)              (*(volatile uint32_t *)((uint32_t)(base) + (uint32_t)(cy_device->gpioPrtCfgInOffset)))
1458 #define GPIO_PRT_CFG_OUT(base)             (*(volatile uint32_t *)((uint32_t)(base) + (uint32_t)(cy_device->gpioPrtCfgOutOffset)))
1459 #define GPIO_PRT_CFG_SIO(base)             (*(volatile uint32_t *)((uint32_t)(base) + (uint32_t)(cy_device->gpioPrtCfgSioOffset)))
1460 #define GPIO_PRT_CFG_IN_AUTOLVL(base)      (((GPIO_PRT_Type*)(base))->CFG_IN_AUTOLVL)
1461 
1462 #define CY_HSIOM_BASE                      ((uint32_t)(cy_device->hsiomBase))
1463 
1464 #define HSIOM_PRT_PORT_SEL0(base)          (((HSIOM_PRT_V1_Type *)(base))->PORT_SEL0)
1465 #define HSIOM_PRT_PORT_SEL1(base)          (((HSIOM_PRT_V1_Type *)(base))->PORT_SEL1)
1466 
1467 #define HSIOM_AMUX_SPLIT_CTL(switchCtrl)   (((HSIOM_Type *) CY_HSIOM_BASE)->AMUX_SPLIT_CTL[switchCtrl])
1468 
1469 
1470 /*******************************************************************************
1471 *                I2S
1472 *******************************************************************************/
1473 #if (defined(AUDIOSS_I2S) || defined(AUDIOSS0_I2S))
1474 #define AUDIOSS_I2S_PRESENT
1475 #endif
1476 
1477 #define REG_I2S_CTL(base)                   (((I2S_V1_Type*)(base))->CTL)
1478 #define REG_I2S_CMD(base)                   (((I2S_V1_Type*)(base))->CMD)
1479 #define REG_I2S_CLOCK_CTL(base)             (((I2S_V1_Type*)(base))->CLOCK_CTL)
1480 #define REG_I2S_TR_CTL(base)                (((I2S_V1_Type*)(base))->TR_CTL)
1481 #define REG_I2S_TX_CTL(base)                (((I2S_V1_Type*)(base))->TX_CTL)
1482 #define REG_I2S_TX_FIFO_CTL(base)           (((I2S_V1_Type*)(base))->TX_FIFO_CTL)
1483 #define REG_I2S_TX_FIFO_STATUS(base)        (((I2S_V1_Type*)(base))->TX_FIFO_STATUS)
1484 #define REG_I2S_TX_FIFO_WR(base)            (((I2S_V1_Type*)(base))->TX_FIFO_WR)
1485 #define REG_I2S_TX_WATCHDOG(base)           (((I2S_V1_Type*)(base))->TX_WATCHDOG)
1486 #define REG_I2S_RX_CTL(base)                (((I2S_V1_Type*)(base))->RX_CTL)
1487 #define REG_I2S_RX_FIFO_CTL(base)           (((I2S_V1_Type*)(base))->RX_FIFO_CTL)
1488 #define REG_I2S_RX_FIFO_STATUS(base)        (((I2S_V1_Type*)(base))->RX_FIFO_STATUS)
1489 #define REG_I2S_RX_FIFO_RD(base)            (((I2S_V1_Type*)(base))->RX_FIFO_RD)
1490 #define REG_I2S_RX_FIFO_RD_SILENT(base)     (((I2S_V1_Type*)(base))->RX_FIFO_RD_SILENT)
1491 #define REG_I2S_RX_WATCHDOG(base)           (((I2S_V1_Type*)(base))->RX_WATCHDOG)
1492 #define REG_I2S_INTR(base)                  (((I2S_V1_Type*)(base))->INTR)
1493 #define REG_I2S_INTR_SET(base)              (((I2S_V1_Type*)(base))->INTR_SET)
1494 #define REG_I2S_INTR_MASK(base)             (((I2S_V1_Type*)(base))->INTR_MASK)
1495 #define REG_I2S_INTR_MASKED(base)           (((I2S_V1_Type*)(base))->INTR_MASKED)
1496 
1497 
1498 /*******************************************************************************
1499 *                PDM
1500 *******************************************************************************/
1501 #if (defined(AUDIOSS_PDM) || defined(AUDIOSS0_PDM))
1502 #define AUDIOSS_PDM_PRESENT
1503 #endif
1504 
1505 #if (defined(CY_IP_MXPDM))
1506 #define PDM_PCM_CTL(base)                               (((PDM_Type*)(base))->CTL)
1507 #define PDM_PCM_CTL_CLR(base)                           (((PDM_Type*)(base))->CTL_CLR)
1508 #define PDM_PCM_CTL_SET(base)                           (((PDM_Type*)(base))->CTL_SET)
1509 #define PDM_PCM_CLOCK_CTL(base)                           (((PDM_Type*)(base))->CLOCK_CTL)
1510 #define PDM_PCM_ROUTE_CTL(base)                           (((PDM_Type*)(base))->ROUTE_CTL)
1511 #define PDM_PCM_TEST_CTL(base)                           (((PDM_Type*)(base))->TEST_CTL)
1512 #define PDM_PCM_FIR0_COEFF0(base)                       (((PDM_Type*)(base))->FIR0_COEFF0)
1513 #define PDM_PCM_FIR0_COEFF1(base)                       (((PDM_Type*)(base))->FIR0_COEFF1)
1514 #define PDM_PCM_FIR0_COEFF2(base)                       (((PDM_Type*)(base))->FIR0_COEFF2)
1515 #define PDM_PCM_FIR0_COEFF3(base)                       (((PDM_Type*)(base))->FIR0_COEFF3)
1516 #define PDM_PCM_FIR0_COEFF4(base)                       (((PDM_Type*)(base))->FIR0_COEFF4)
1517 #define PDM_PCM_FIR0_COEFF5(base)                       (((PDM_Type*)(base))->FIR0_COEFF5)
1518 #define PDM_PCM_FIR0_COEFF6(base)                       (((PDM_Type*)(base))->FIR0_COEFF6)
1519 #define PDM_PCM_FIR0_COEFF7(base)                       (((PDM_Type*)(base))->FIR0_COEFF7)
1520 
1521 #define PDM_PCM_FIR1_COEFF0(base)                       (((PDM_Type*)(base))->FIR1_COEFF0)
1522 #define PDM_PCM_FIR1_COEFF1(base)                       (((PDM_Type*)(base))->FIR1_COEFF1)
1523 #define PDM_PCM_FIR1_COEFF2(base)                       (((PDM_Type*)(base))->FIR1_COEFF2)
1524 #define PDM_PCM_FIR1_COEFF3(base)                       (((PDM_Type*)(base))->FIR1_COEFF3)
1525 #define PDM_PCM_FIR1_COEFF4(base)                       (((PDM_Type*)(base))->FIR1_COEFF4)
1526 #define PDM_PCM_FIR1_COEFF5(base)                       (((PDM_Type*)(base))->FIR1_COEFF5)
1527 #define PDM_PCM_FIR1_COEFF6(base)                       (((PDM_Type*)(base))->FIR1_COEFF6)
1528 #define PDM_PCM_FIR1_COEFF7(base)                       (((PDM_Type*)(base))->FIR1_COEFF7)
1529 #define PDM_PCM_FIR1_COEFF8(base)                       (((PDM_Type*)(base))->FIR1_COEFF8)
1530 #define PDM_PCM_FIR1_COEFF9(base)                       (((PDM_Type*)(base))->FIR1_COEFF9)
1531 #define PDM_PCM_FIR1_COEFF10(base)                       (((PDM_Type*)(base))->FIR1_COEFF10)
1532 #define PDM_PCM_FIR1_COEFF11(base)                       (((PDM_Type*)(base))->FIR1_COEFF11)
1533 #define PDM_PCM_FIR1_COEFF12(base)                       (((PDM_Type*)(base))->FIR1_COEFF12)
1534 #define PDM_PCM_FIR1_COEFF13(base)                       (((PDM_Type*)(base))->FIR1_COEFF13)
1535 
1536 
1537 #define PDM_PCM_CH_CTL(base, chnum)                   (((PDM_Type*)(base))->CH[chnum].CTL)
1538 #define PDM_PCM_CH_IF_CTL(base, chnum)                   (((PDM_Type*)(base))->CH[chnum].IF_CTL)
1539 #define PDM_PCM_CH_CIC_CTL(base, chnum)               (((PDM_Type*)(base))->CH[chnum].CIC_CTL)
1540 #define PDM_PCM_CH_FIR0_CTL(base, chnum)              (((PDM_Type*)(base))->CH[chnum].FIR0_CTL)
1541 #define PDM_PCM_CH_FIR1_CTL(base, chnum)              (((PDM_Type*)(base))->CH[chnum].FIR1_CTL)
1542 #define PDM_PCM_CH_DC_BLOCK_CTL(base, chnum)          (((PDM_Type*)(base))->CH[chnum].DC_BLOCK_CTL)
1543 #define PDM_PCM_INTR_RX_MASK(base, chnum)             (((PDM_Type*)(base))->CH[chnum].INTR_RX_MASK)
1544 #define PDM_PCM_INTR_RX_MASKED(base, chnum)           (((PDM_Type*)(base))->CH[chnum].INTR_RX_MASKED)
1545 #define PDM_PCM_INTR_RX(base, chnum)                  (((PDM_Type*)(base))->CH[chnum].INTR_RX)
1546 #define PDM_PCM_INTR_RX_SET(base, chnum)              (((PDM_Type*)(base))->CH[chnum].INTR_RX_SET)
1547 #define PDM_PCM_RX_FIFO_STATUS(base, chnum)              (((PDM_Type*)(base))->CH[chnum].RX_FIFO_STATUS)
1548 #define PDM_PCM_RX_FIFO_CTL(base, chnum)                 (((PDM_Type*)(base))->CH[chnum].RX_FIFO_CTL)
1549 #define PDM_PCM_RX_FIFO_RD(base, chnum)                  (((PDM_Type*)(base))->CH[chnum].RX_FIFO_RD)
1550 #define PDM_PCM_RX_FIFO_RD_SILENT(base, chnum)           (((PDM_Type*)(base))->CH[chnum].RX_FIFO_RD_SILENT)
1551 #else
1552 #define PDM_PCM_CTL(base)                   (((PDM_V1_Type*)(base))->CTL)
1553 #define PDM_PCM_CMD(base)                   (((PDM_V1_Type*)(base))->CMD)
1554 #define PDM_PCM_CLOCK_CTL(base)             (((PDM_V1_Type*)(base))->CLOCK_CTL)
1555 #define PDM_PCM_MODE_CTL(base)              (((PDM_V1_Type*)(base))->MODE_CTL)
1556 #define PDM_PCM_DATA_CTL(base)              (((PDM_V1_Type*)(base))->DATA_CTL)
1557 #define PDM_PCM_TR_CTL(base)                (((PDM_V1_Type*)(base))->TR_CTL)
1558 #define PDM_PCM_INTR_MASK(base)             (((PDM_V1_Type*)(base))->INTR_MASK)
1559 #define PDM_PCM_INTR_MASKED(base)           (((PDM_V1_Type*)(base))->INTR_MASKED)
1560 #define PDM_PCM_INTR(base)                  (((PDM_V1_Type*)(base))->INTR)
1561 #define PDM_PCM_INTR_SET(base)              (((PDM_V1_Type*)(base))->INTR_SET)
1562 #define PDM_PCM_RX_FIFO_STATUS(base)        (((PDM_V1_Type*)(base))->RX_FIFO_STATUS)
1563 #define PDM_PCM_RX_FIFO_CTL(base)           (((PDM_V1_Type*)(base))->RX_FIFO_CTL)
1564 #define PDM_PCM_RX_FIFO_RD(base)            (((PDM_V1_Type*)(base))->RX_FIFO_RD)
1565 #define PDM_PCM_RX_FIFO_RD_SILENT(base)     (((PDM_V1_Type*)(base))->RX_FIFO_RD_SILENT)
1566 #endif /* CY_IP_MXPDM */
1567 
1568 
1569 /*******************************************************************************
1570 *                LCD
1571 *******************************************************************************/
1572 
1573 #define LCD_OCTET_NUM                       (8U) /* LCD_NUMPORTS - number of octets supporting up to 4 COMs */
1574 #define LCD_OCTET_NUM_8                     (8U) /* LCD_NUMPORTS8 - number of octets supporting up to 8 COMs */
1575 #define LCD_OCTET_NUM_16                    (0U) /* LCD_NUMPORTS16 - number of octets supporting up to 16 COMs */
1576 #define LCD_COM_NUM                         (8U) /* LCD_CHIP_TOP_COM_NR - maximum number of commons */
1577 
1578 #define LCD_ID(base)                        (((LCD_V1_Type*)(base))->ID)
1579 #define LCD_CONTROL(base)                   (((LCD_V1_Type*)(base))->CONTROL)
1580 #define LCD_DIVIDER(base)                   (((LCD_V1_Type*)(base))->DIVIDER)
1581 #define LCD_DATA0(base)                     (((LCD_V1_Type*)(base))->DATA0)
1582 #define LCD_DATA1(base)                     (((LCD_V1_Type*)(base))->DATA1)
1583 #define LCD_DATA2(base)                     (((LCD_V1_Type*)(base))->DATA2)
1584 #define LCD_DATA3(base)                     (((LCD_V1_Type*)(base))->DATA3)
1585 
1586 
1587 /*******************************************************************************
1588 *                IPC
1589 *******************************************************************************/
1590 /* Disable the default IPC configuration.  Most CAT1A devices use endpoint IPC channels
1591  * to communicate with the flash & srom drivers, however CAT1C uses ECT flash and the
1592  * syscall IPC channels and doesn't need/isn't compatible with the default CAT1A
1593  * IPC configuration.  */
1594 #if defined (CY_DEVICE_TVIIBE)
1595     #ifndef CY_IPC_DEFAULT_CFG_DISABLE
1596         #define CY_IPC_DEFAULT_CFG_DISABLE
1597     #endif
1598 #endif
1599 
1600 #define CY_IPC_V1                              (0x20u > cy_device->ipcVersion) /* true if the IPC version is 1.x */
1601 
1602 #define REG_IPC_STRUCT_ACQUIRE(base)           (((IPC_STRUCT_Type*)(base))->ACQUIRE)
1603 #define REG_IPC_STRUCT_RELEASE(base)           (((IPC_STRUCT_Type*)(base))->RELEASE)
1604 #define REG_IPC_STRUCT_NOTIFY(base)            (((IPC_STRUCT_Type*)(base))->NOTIFY)
1605 #if (CY_IP_M4CPUSS_VERSION == 1U)
1606 #define REG_IPC_STRUCT_DATA(base)              (((IPC_STRUCT_V1_Type*)(base))->DATA)
1607 #else
1608 #define REG_IPC_STRUCT_DATA(base)              (((IPC_STRUCT_V2_Type*)(base))->DATA0)
1609 #endif
1610 #define REG_IPC_STRUCT_DATA1(base)             (((IPC_STRUCT_V2_Type*)(base))->DATA1)
1611 #define REG_IPC_STRUCT_LOCK_STATUS(base)       (*(volatile uint32_t*)((uint32_t)(base) + cy_device->ipcLockStatusOffset))
1612 
1613 #define REG_IPC_INTR_STRUCT_INTR(base)         (((IPC_INTR_STRUCT_Type*)(base))->INTR)
1614 #define REG_IPC_INTR_STRUCT_INTR_SET(base)     (((IPC_INTR_STRUCT_Type*)(base))->INTR_SET)
1615 #define REG_IPC_INTR_STRUCT_INTR_MASK(base)    (((IPC_INTR_STRUCT_Type*)(base))->INTR_MASK)
1616 #define REG_IPC_INTR_STRUCT_INTR_MASKED(base)  (((IPC_INTR_STRUCT_Type*)(base))->INTR_MASKED)
1617 
1618 #define CY_IPC_STRUCT_PTR(ipcIndex)            ((IPC_STRUCT_Type*)(cy_device->ipcBase + (cy_device->ipcStructSize * (ipcIndex))))
1619 #define CY_IPC_INTR_STRUCT_PTR(ipcIntrIndex)   (&(((IPC_Type *)cy_device->ipcBase)->INTR_STRUCT[ipcIntrIndex]))
1620 
1621 #define CY_IPC_STRUCT_PTR_FOR_IP(ipcIndex, base)            ((IPC_STRUCT_Type*)((uint32_t)(base) + (sizeof(IPC_STRUCT_Type) * (ipcIndex))))
1622 #define CY_IPC_INTR_STRUCT_PTR_FOR_IP(ipcIntrIndex, base)   (&(((IPC_Type *)base)->INTR_STRUCT[ipcIntrIndex]))
1623 
1624 #define CY_IPC_INSTANCES                       (1U)
1625 #define CY_IPC_CHANNELS                        ((uint32_t)(cy_device->cpussIpcNr))
1626 #define CY_IPC_INTERRUPTS                      ((uint32_t)(cy_device->cpussIpcIrqNr))
1627 #define CY_IPC_CHANNELS_PER_INSTANCE           CY_IPC_CHANNELS
1628 #define CY_IPC_INTERRUPTS_PER_INSTANCE         CY_IPC_INTERRUPTS
1629 
1630 /* ipcChannel comprises of total number of channels present in all IPC IP instances */
1631 #define CY_IPC_PIPE_CHANNEL_NUMBER_WITHIN_INSTANCE(ipcChannel) (((ipcChannel)%CY_IPC_CHANNELS_PER_INSTANCE))
1632 #define CY_IPC_PIPE_INTR_NUMBER_WITHIN_INSTANCE(ipcIntr)       (((ipcIntr)%CY_IPC_INTERRUPTS_PER_INSTANCE))
1633 
1634 /* IPC channel definitions  */
1635 /* Most Cat1A devices have 16 channels, except TVIIBE Cat1A devices which have 8 channels. */
1636 #define CY_IPC_CHAN_SYSCALL_CM0             (0U)  /* System calls for the CM0 processor */
1637 #define CY_IPC_CHAN_SYSCALL_CM4             (1U)  /* System calls for the 1st non-CM0 processor */
1638 #define CY_IPC_CHAN_SYSCALL_DAP             (2UL) /* System calls for the DAP */
1639 #define CY_IPC_CHAN_SEMA                    (3UL) /* IPC data channel for the Semaphores */
1640 #if defined (CPUSS_IPC_IPC_NR) && (CPUSS_IPC_IPC_NR > 0) && (CPUSS_IPC_IPC_NR <= 8)
1641     #define CY_IPC_CHAN_USER                    (CY_IPC_CHAN_SEMA + 1u)
1642 #else
1643     #define CY_IPC_CHAN_PRA                     (4UL) /* IPC data channel for PRA */
1644     #define CY_IPC_CHAN_CYPIPE_EP0              (5UL) /* IPC data channel for CYPIPE EP0 */
1645     #define CY_IPC_CHAN_CYPIPE_EP1              (6UL) /* IPC data channel for CYPIPE EP1 */
1646     #define CY_IPC_CHAN_DDFT                    (7UL) /* IPC data channel for DDFT */
1647     #define CY_IPC_CHAN_USER                    (CY_IPC_CHAN_DDFT + 1)
1648 #endif
1649 
1650 /* IPC Notify interrupts definitions */
1651 /* Most Cat1A devices have 16 channels, except TVIIBE Cat1A devices which have 8 channels. */
1652 #if defined (CPUSS_IPC_IPC_NR) && (CPUSS_IPC_IPC_NR > 0) && (CPUSS_IPC_IPC_NR <= 8)
1653     /* IPC Notify interrupts definitions */
1654     #define CY_IPC_INTR_SYSCALL1                (0UL)
1655     #define CY_IPC_INTR_USER                    (CY_IPC_INTR_SYSCALL1 + 1UL)
1656 #else
1657     #define CY_IPC_INTR_SYSCALL1                (0UL)
1658     #define CY_IPC_INTR_CYPIPE_EP0              (3UL)
1659     #define CY_IPC_INTR_CYPIPE_EP1              (4UL)
1660     #define CY_IPC_INTR_PRA                     (5UL)
1661     #define CY_IPC_INTR_SPARE                   (7UL)
1662     /* Endpoint indexes in the pipe array */
1663     #define CY_IPC_EP_CYPIPE_CM0_ADDR           (0UL)
1664     #define CY_IPC_EP_CYPIPE_CM4_ADDR           (1UL)
1665 #endif
1666 
1667 
1668 /*******************************************************************************
1669 *                CTB
1670 *******************************************************************************/
1671 
1672 #define CTBM_CTB_CTRL(base)                 (((CTBM_V1_Type *) (base))->CTB_CTRL)
1673 #define CTBM_CTB_SW_DS_CTRL(base)           (((CTBM_V1_Type *) (base))->CTB_SW_DS_CTRL)
1674 #define CTBM_CTB_SW_SQ_CTRL(base)           (((CTBM_V1_Type *) (base))->CTB_SW_SQ_CTRL)
1675 #define CTBM_CTD_SW(base)                   (((CTBM_V1_Type *) (base))->CTD_SW)
1676 #define CTBM_CTD_SW_CLEAR(base)             (((CTBM_V1_Type *) (base))->CTD_SW_CLEAR)
1677 #define CTBM_COMP_STAT(base)                (((CTBM_V1_Type *) (base))->COMP_STAT)
1678 #define CTBM_OA0_SW_CLEAR(base)             (((CTBM_V1_Type *) (base))->OA0_SW_CLEAR)
1679 #define CTBM_OA1_SW_CLEAR(base)             (((CTBM_V1_Type *) (base))->OA1_SW_CLEAR)
1680 #define CTBM_OA0_SW(base)                   (((CTBM_V1_Type *) (base))->OA0_SW)
1681 #define CTBM_OA1_SW(base)                   (((CTBM_V1_Type *) (base))->OA1_SW)
1682 #define CTBM_OA_RES0_CTRL(base)             (((CTBM_V1_Type *) (base))->OA_RES0_CTRL)
1683 #define CTBM_OA_RES1_CTRL(base)             (((CTBM_V1_Type *) (base))->OA_RES1_CTRL)
1684 #define CTBM_OA0_COMP_TRIM(base)            (((CTBM_V1_Type *) (base))->OA0_COMP_TRIM)
1685 #define CTBM_OA1_COMP_TRIM(base)            (((CTBM_V1_Type *) (base))->OA1_COMP_TRIM)
1686 #define CTBM_OA0_OFFSET_TRIM(base)          (((CTBM_V1_Type *) (base))->OA0_OFFSET_TRIM)
1687 #define CTBM_OA1_OFFSET_TRIM(base)          (((CTBM_V1_Type *) (base))->OA1_OFFSET_TRIM)
1688 #define CTBM_OA0_SLOPE_OFFSET_TRIM(base)    (((CTBM_V1_Type *) (base))->OA0_SLOPE_OFFSET_TRIM)
1689 #define CTBM_OA1_SLOPE_OFFSET_TRIM(base)    (((CTBM_V1_Type *) (base))->OA1_SLOPE_OFFSET_TRIM)
1690 #define CTBM_INTR(base)                     (((CTBM_V1_Type *) (base))->INTR)
1691 #define CTBM_INTR_SET(base)                 (((CTBM_V1_Type *) (base))->INTR_SET)
1692 #define CTBM_INTR_MASK(base)                (((CTBM_V1_Type *) (base))->INTR_MASK)
1693 #define CTBM_INTR_MASKED(base)              (((CTBM_V1_Type *) (base))->INTR_MASKED)
1694 
1695 
1696 /*******************************************************************************
1697 *                CTDAC
1698 *******************************************************************************/
1699 
1700 #define CTDAC_CTDAC_CTRL(base)              (((CTDAC_V1_Type *) (base))->CTDAC_CTRL)
1701 #define CTDAC_CTDAC_SW(base)                (((CTDAC_V1_Type *) (base))->CTDAC_SW)
1702 #define CTDAC_CTDAC_SW_CLEAR(base)          (((CTDAC_V1_Type *) (base))->CTDAC_SW_CLEAR)
1703 #define CTDAC_CTDAC_VAL(base)               (((CTDAC_V1_Type *) (base))->CTDAC_VAL)
1704 #define CTDAC_CTDAC_VAL_NXT(base)           (((CTDAC_V1_Type *) (base))->CTDAC_VAL_NXT)
1705 #define CTDAC_INTR(base)                    (((CTDAC_V1_Type *) (base))->INTR)
1706 #define CTDAC_INTR_SET(base)                (((CTDAC_V1_Type *) (base))->INTR_SET)
1707 #define CTDAC_INTR_MASK(base)               (((CTDAC_V1_Type *) (base))->INTR_MASK)
1708 #define CTDAC_INTR_MASKED(base)             (((CTDAC_V1_Type *) (base))->INTR_MASKED)
1709 
1710 
1711 /*******************************************************************************
1712 *                SYSANALOG
1713 *******************************************************************************/
1714 
1715 #define CY_PASS_V1                          (0x20U > cy_device->passVersion)
1716 #define CY_PASS_ADDR                        ((PASS_Type*)cy_device->passBase)
1717 #define CY_PASS_V2_ADDR                     ((PASS_V2_Type*)cy_device->passBase)
1718 
1719 #define CY_SAR_PASS_BASE(sarBase)           ((NULL != (sarBase)) ? ((PASS_V2_Type*) cy_device->passBase) : NULL) /* temporary solution for single pass instance */
1720 #define CY_CTB_PASS_BASE(ctbBase)           ((NULL != (ctbBase)) ? ((PASS_V2_Type*) cy_device->passBase) : NULL) /* temporary solution for single ctb instance */
1721 #define CY_CTB_INST(ctbBase)                ((NULL != (ctbBase)) ? 0UL : 0UL) /* temporary solution for single ctb instance */
1722 
1723 #define PASS_AREF_AREF_CTRL                 (((PASS_V1_Type*) CY_PASS_ADDR)->AREF.AREF_CTRL)
1724 #define PASS_INTR_CAUSE(passBase)           (((PASS_V1_Type*) (passBase))->INTR_CAUSE)
1725 
1726 #define PASS_CTBM_CLOCK_SEL(ctbBase)        (CY_CTB_PASS_BASE(ctbBase)->CTBM_CLOCK_SEL[CY_CTB_INST(ctbBase)])
1727 
1728 #define PASS_DPSLP_CLOCK_SEL(passBase)      (((PASS_V2_Type*) (passBase))->DPSLP_CLOCK_SEL)
1729 #define PASS_LPOSC_CTRL(passBase)           (((PASS_V2_Type*) (passBase))->LPOSC.CTRL)
1730 #define PASS_LPOSC_CONFIG(passBase)         (((PASS_V2_Type*) (passBase))->LPOSC.CONFIG)
1731 #define PASS_TIMER_CTRL(passBase)           (((PASS_V2_Type*) (passBase))->TIMER.CTRL)
1732 #define PASS_TIMER_CONFIG(passBase)         (((PASS_V2_Type*) (passBase))->TIMER.CONFIG)
1733 #define PASS_TIMER_PERIOD(passBase)         (((PASS_V2_Type*) (passBase))->TIMER.PERIOD)
1734 
1735 #define PASS_SAR_SIMULT_CTRL(passBase)      (((PASS_V2_Type*) (passBase))->SAR_SIMULT_CTRL)
1736 #define PASS_SAR_TR_SCAN_CNT(passBase)      (((PASS_V2_Type*) (passBase))->SAR_TR_SCAN_CNT)
1737 #define PASS_SAR_OVR_CTRL(passBase)         (((PASS_V2_Type*) (passBase))->SAR_OVR_CTRL)
1738 #define PASS_SAR_SIMULT_FW_START_CTRL(passBase) (((PASS_V2_Type*) (passBase))->SAR_SIMULT_FW_START_CTRL)
1739 #define PASS_ANA_PWR_CFG(passBase)          (((PASS_V2_Type*) (passBase))->ANA_PWR_CFG)
1740 #define PASS_SAR_TR_OUT_CTRL(passBase)      (((PASS_V2_Type*) (passBase))->SAR_TR_OUT_CTRL)
1741 
1742 #define PASS_SAR_DPSLP_CTRL(sarBase)        (((PASS_V2_Type*) cy_device->passBase)->SAR_DPSLP_CTRL[CY_SAR_INSTANCE(sarBase)])
1743 #define PASS_SAR_CLOCK_SEL(sarBase)         (((PASS_V2_Type*) cy_device->passBase)->SAR_CLOCK_SEL[CY_SAR_INSTANCE(sarBase)])
1744 
1745 #define PASS_FIFO_BASE(sarBase)             ((PASS_FIFO_V2_Type*)&(((PASS_V2_Type*)cy_device->passBase)->FIFO[CY_SAR_INSTANCE(sarBase)]))
1746 #define PASS_FIFO_CTRL(sarBase)             (PASS_FIFO_BASE(sarBase)->CTRL)
1747 #define PASS_FIFO_CONFIG(sarBase)           (PASS_FIFO_BASE(sarBase)->CONFIG)
1748 #define PASS_FIFO_LEVEL(sarBase)            (PASS_FIFO_BASE(sarBase)->LEVEL)
1749 #define PASS_FIFO_USED(sarBase)             (PASS_FIFO_BASE(sarBase)->USED)
1750 #define PASS_FIFO_RD_DATA(sarBase)          (PASS_FIFO_BASE(sarBase)->RD_DATA)
1751 #define PASS_FIFO_INTR(sarBase)             (PASS_FIFO_BASE(sarBase)->INTR)
1752 #define PASS_FIFO_INTR_SET(sarBase)         (PASS_FIFO_BASE(sarBase)->INTR_SET)
1753 #define PASS_FIFO_INTR_MASK(sarBase)        (PASS_FIFO_BASE(sarBase)->INTR_MASK)
1754 #define PASS_FIFO_INTR_MASKED(sarBase)      (PASS_FIFO_BASE(sarBase)->INTR_MASKED)
1755 
1756 /*******************************************************************************
1757 *                SAR ADC
1758 *******************************************************************************/
1759 /** Channel TR_CTL register access macro. */
1760 #define SAR2_CH_TR_CTL(base, channel) (((PASS_SAR_Type *)base)->CH[channel].TR_CTL)
1761 
1762 /** Channel SAMPLE_CTL register access macro. */
1763 #define SAR2_CH_SAMPLE_CTL(base, channel) (((PASS_SAR_Type *)base)->CH[channel].SAMPLE_CTL)
1764 
1765 /** Channel POST_CTL register access macro. */
1766 #define SAR2_CH_POST_CTL(base, channel) (((PASS_SAR_Type *)base)->CH[channel].POST_CTL)
1767 
1768 /** Channel RANGE_CTL register access macro. */
1769 #define SAR2_CH_RANGE_CTL(base, channel) (((PASS_SAR_Type *)base)->CH[channel].RANGE_CTL)
1770 
1771 /** Channel INTR register access macro. */
1772 #define SAR2_CH_INTR(base, channel) (((PASS_SAR_Type *)base)->CH[channel].INTR)
1773 
1774 /** Channel INTR_SET register access macro. */
1775 #define SAR2_CH_INTR_SET(base, channel) (((PASS_SAR_Type *)base)->CH[channel].INTR_SET)
1776 
1777 /** Channel INTR_MASK register access macro. */
1778 #define SAR2_CH_INTR_MASK(base, channel) (((PASS_SAR_Type *)base)->CH[channel].INTR_MASK)
1779 
1780 /** Channel INTR_MASKED register access macro. */
1781 #define SAR2_CH_INTR_MASKED(base, channel) (((PASS_SAR_Type *)base)->CH[channel].INTR_MASKED)
1782 
1783 /** Channel WORK register access macro. */
1784 #define SAR2_CH_WORK(base, channel) (((PASS_SAR_Type *)base)->CH[channel].WORK)
1785 
1786 /** Channel WORK register access macro. */
1787 #define SAR2_CH_RESULT(base, channel) (((PASS_SAR_Type *)base)->CH[channel].WORK)
1788 
1789 /** Channel GRP_STAT register access macro. */
1790 #define SAR2_CH_GRP_STAT(base, channel) (((PASS_SAR_Type *)base)->CH[channel].GRP_STAT)
1791 
1792 /** Channel ENABLE register access macro. */
1793 #define SAR2_CH_ENABLE(base, channel) (((PASS_SAR_Type *)base)->CH[channel].ENABLE)
1794 
1795 /** Channel TR_CMD register access macro. */
1796 #define SAR2_CH_TR_CMD(base, channel) (((PASS_SAR_Type *)base)->CH[channel].TR_CMD)
1797 
1798 /*******************************************************************************
1799 *                SCB
1800 *******************************************************************************/
1801 
1802 #if (defined(CY_DEVICE_TVIIBE))
1803 #define SCB_CTRL(base)                      (((CySCB_Type*) (base))->CTRL)
1804 #define SCB_SPI_CTRL(base)                  (((CySCB_Type*) (base))->SPI_CTRL)
1805 #define SCB_SPI_STATUS(base)                (((CySCB_Type*) (base))->SPI_STATUS)
1806 #define SCB_SPI_TX_CTRL(base)               (((CySCB_Type*) (base))->SPI_TX_CTRL)
1807 #define SCB_SPI_RX_CTRL(base)               (((CySCB_Type*) (base))->SPI_RX_CTRL)
1808 #define SCB_UART_CTRL(base)                 (((CySCB_Type*) (base))->UART_CTRL)
1809 #define SCB_UART_TX_CTRL(base)              (((CySCB_Type*) (base))->UART_TX_CTRL)
1810 #define SCB_UART_RX_CTRL(base)              (((CySCB_Type*) (base))->UART_RX_CTRL)
1811 #define SCB_UART_FLOW_CTRL(base)            (((CySCB_Type*) (base))->UART_FLOW_CTRL)
1812 #define SCB_I2C_CTRL(base)                  (((CySCB_Type*) (base))->I2C_CTRL)
1813 #define SCB_I2C_STATUS(base)                (((CySCB_Type*) (base))->I2C_STATUS)
1814 #define SCB_I2C_M_CMD(base)                 (((CySCB_Type*) (base))->I2C_M_CMD)
1815 #define SCB_I2C_S_CMD(base)                 (((CySCB_Type*) (base))->I2C_S_CMD)
1816 #define SCB_I2C_CFG(base)                   (((CySCB_Type*) (base))->I2C_CFG)
1817 #define SCB_TX_CTRL(base)                   (((CySCB_Type*) (base))->TX_CTRL)
1818 #define SCB_TX_FIFO_CTRL(base)              (((CySCB_Type*) (base))->TX_FIFO_CTRL)
1819 #define SCB_TX_FIFO_STATUS(base)            (((CySCB_Type*) (base))->TX_FIFO_STATUS)
1820 #define SCB_TX_FIFO_WR(base)                (((CySCB_Type*) (base))->TX_FIFO_WR)
1821 #define SCB_RX_CTRL(base)                   (((CySCB_Type*) (base))->RX_CTRL)
1822 #define SCB_RX_FIFO_CTRL(base)              (((CySCB_Type*) (base))->RX_FIFO_CTRL)
1823 #define SCB_RX_FIFO_STATUS(base)            (((CySCB_Type*) (base))->RX_FIFO_STATUS)
1824 #define SCB_RX_MATCH(base)                  (((CySCB_Type*) (base))->RX_MATCH)
1825 #define SCB_RX_FIFO_RD(base)                (((CySCB_Type*) (base))->RX_FIFO_RD)
1826 #define SCB_INTR_CAUSE(base)                (((CySCB_Type*) (base))->INTR_CAUSE)
1827 #define SCB_INTR_I2C_EC(base)               (((CySCB_Type*) (base))->INTR_I2C_EC)
1828 #define SCB_INTR_I2C_EC_MASK(base)          (((CySCB_Type*) (base))->INTR_I2C_EC_MASK)
1829 #define SCB_INTR_I2C_EC_MASKED(base)        (((CySCB_Type*) (base))->INTR_I2C_EC_MASKED)
1830 #define SCB_INTR_SPI_EC(base)               (((CySCB_Type*) (base))->INTR_SPI_EC)
1831 #define SCB_INTR_SPI_EC_MASK(base)          (((CySCB_Type*) (base))->INTR_SPI_EC_MASK)
1832 #define SCB_INTR_SPI_EC_MASKED(base)        (((CySCB_Type*) (base))->INTR_SPI_EC_MASKED)
1833 #define SCB_INTR_M(base)                    (((CySCB_Type*) (base))->INTR_M)
1834 #define SCB_INTR_M_SET(base)                (((CySCB_Type*) (base))->INTR_M_SET)
1835 #define SCB_INTR_M_MASK(base)               (((CySCB_Type*) (base))->INTR_M_MASK)
1836 #define SCB_INTR_M_MASKED(base)             (((CySCB_Type*) (base))->INTR_M_MASKED)
1837 #define SCB_INTR_S(base)                    (((CySCB_Type*) (base))->INTR_S)
1838 #define SCB_INTR_S_SET(base)                (((CySCB_Type*) (base))->INTR_S_SET)
1839 #define SCB_INTR_S_MASK(base)               (((CySCB_Type*) (base))->INTR_S_MASK)
1840 #define SCB_INTR_S_MASKED(base)             (((CySCB_Type*) (base))->INTR_S_MASKED)
1841 #define SCB_INTR_TX(base)                   (((CySCB_Type*) (base))->INTR_TX)
1842 #define SCB_INTR_TX_SET(base)               (((CySCB_Type*) (base))->INTR_TX_SET)
1843 #define SCB_INTR_TX_MASK(base)              (((CySCB_Type*) (base))->INTR_TX_MASK)
1844 #define SCB_INTR_TX_MASKED(base)            (((CySCB_Type*) (base))->INTR_TX_MASKED)
1845 #define SCB_INTR_RX(base)                   (((CySCB_Type*) (base))->INTR_RX)
1846 #define SCB_INTR_RX_SET(base)               (((CySCB_Type*) (base))->INTR_RX_SET)
1847 #define SCB_INTR_RX_MASK(base)              (((CySCB_Type*) (base))->INTR_RX_MASK)
1848 #define SCB_INTR_RX_MASKED(base)            (((CySCB_Type*) (base))->INTR_RX_MASKED)
1849 
1850 #else /* PSoC Devices */
1851 #define SCB_CTRL(base)                      (((CySCB_V1_Type*) (base))->CTRL)
1852 #define SCB_SPI_CTRL(base)                  (((CySCB_V1_Type*) (base))->SPI_CTRL)
1853 #define SCB_SPI_STATUS(base)                (((CySCB_V1_Type*) (base))->SPI_STATUS)
1854 #define SCB_UART_CTRL(base)                 (((CySCB_V1_Type*) (base))->UART_CTRL)
1855 #define SCB_UART_TX_CTRL(base)              (((CySCB_V1_Type*) (base))->UART_TX_CTRL)
1856 #define SCB_UART_RX_CTRL(base)              (((CySCB_V1_Type*) (base))->UART_RX_CTRL)
1857 #define SCB_UART_FLOW_CTRL(base)            (((CySCB_V1_Type*) (base))->UART_FLOW_CTRL)
1858 #define SCB_I2C_CTRL(base)                  (((CySCB_V1_Type*) (base))->I2C_CTRL)
1859 #define SCB_I2C_STATUS(base)                (((CySCB_V1_Type*) (base))->I2C_STATUS)
1860 #define SCB_I2C_M_CMD(base)                 (((CySCB_V1_Type*) (base))->I2C_M_CMD)
1861 #define SCB_I2C_S_CMD(base)                 (((CySCB_V1_Type*) (base))->I2C_S_CMD)
1862 #define SCB_I2C_CFG(base)                   (((CySCB_V1_Type*) (base))->I2C_CFG)
1863 #define SCB_TX_CTRL(base)                   (((CySCB_V1_Type*) (base))->TX_CTRL)
1864 #define SCB_TX_FIFO_CTRL(base)              (((CySCB_V1_Type*) (base))->TX_FIFO_CTRL)
1865 #define SCB_TX_FIFO_STATUS(base)            (((CySCB_V1_Type*) (base))->TX_FIFO_STATUS)
1866 #define SCB_TX_FIFO_WR(base)                (((CySCB_V1_Type*) (base))->TX_FIFO_WR)
1867 #define SCB_RX_CTRL(base)                   (((CySCB_V1_Type*) (base))->RX_CTRL)
1868 #define SCB_RX_FIFO_CTRL(base)              (((CySCB_V1_Type*) (base))->RX_FIFO_CTRL)
1869 #define SCB_RX_FIFO_STATUS(base)            (((CySCB_V1_Type*) (base))->RX_FIFO_STATUS)
1870 #define SCB_RX_MATCH(base)                  (((CySCB_V1_Type*) (base))->RX_MATCH)
1871 #define SCB_RX_FIFO_RD(base)                (((CySCB_V1_Type*) (base))->RX_FIFO_RD)
1872 #define SCB_INTR_CAUSE(base)                (((CySCB_V1_Type*) (base))->INTR_CAUSE)
1873 #define SCB_INTR_I2C_EC(base)               (((CySCB_V1_Type*) (base))->INTR_I2C_EC)
1874 #define SCB_INTR_I2C_EC_MASK(base)          (((CySCB_V1_Type*) (base))->INTR_I2C_EC_MASK)
1875 #define SCB_INTR_I2C_EC_MASKED(base)        (((CySCB_V1_Type*) (base))->INTR_I2C_EC_MASKED)
1876 #define SCB_INTR_SPI_EC(base)               (((CySCB_V1_Type*) (base))->INTR_SPI_EC)
1877 #define SCB_INTR_SPI_EC_MASK(base)          (((CySCB_V1_Type*) (base))->INTR_SPI_EC_MASK)
1878 #define SCB_INTR_SPI_EC_MASKED(base)        (((CySCB_V1_Type*) (base))->INTR_SPI_EC_MASKED)
1879 #define SCB_INTR_M(base)                    (((CySCB_V1_Type*) (base))->INTR_M)
1880 #define SCB_INTR_M_SET(base)                (((CySCB_V1_Type*) (base))->INTR_M_SET)
1881 #define SCB_INTR_M_MASK(base)               (((CySCB_V1_Type*) (base))->INTR_M_MASK)
1882 #define SCB_INTR_M_MASKED(base)             (((CySCB_V1_Type*) (base))->INTR_M_MASKED)
1883 #define SCB_INTR_S(base)                    (((CySCB_V1_Type*) (base))->INTR_S)
1884 #define SCB_INTR_S_SET(base)                (((CySCB_V1_Type*) (base))->INTR_S_SET)
1885 #define SCB_INTR_S_MASK(base)               (((CySCB_V1_Type*) (base))->INTR_S_MASK)
1886 #define SCB_INTR_S_MASKED(base)             (((CySCB_V1_Type*) (base))->INTR_S_MASKED)
1887 #define SCB_INTR_TX(base)                   (((CySCB_V1_Type*) (base))->INTR_TX)
1888 #define SCB_INTR_TX_SET(base)               (((CySCB_V1_Type*) (base))->INTR_TX_SET)
1889 #define SCB_INTR_TX_MASK(base)              (((CySCB_V1_Type*) (base))->INTR_TX_MASK)
1890 #define SCB_INTR_TX_MASKED(base)            (((CySCB_V1_Type*) (base))->INTR_TX_MASKED)
1891 #define SCB_INTR_RX(base)                   (((CySCB_V1_Type*) (base))->INTR_RX)
1892 #define SCB_INTR_RX_SET(base)               (((CySCB_V1_Type*) (base))->INTR_RX_SET)
1893 #define SCB_INTR_RX_MASK(base)              (((CySCB_V1_Type*) (base))->INTR_RX_MASK)
1894 #define SCB_INTR_RX_MASKED(base)            (((CySCB_V1_Type*) (base))->INTR_RX_MASKED)
1895 #endif /* (defined(CY_DEVICE_TVIIBE)) */
1896 
1897 /*******************************************************************************
1898 *                PROFILE
1899 *******************************************************************************/
1900 
1901 #define CY_EP_MONITOR_COUNT                 ((uint32_t)(cy_device->epMonitorNr))
1902 #define CY_EP_CNT_NR                        (8UL)
1903 #define PROFILE_CTL                         (((PROFILE_V1_Type*) PROFILE_BASE)->CTL)
1904 #define PROFILE_STATUS                      (((PROFILE_V1_Type*) PROFILE_BASE)->STATUS)
1905 #define PROFILE_CMD                         (((PROFILE_V1_Type*) PROFILE_BASE)->CMD)
1906 #define PROFILE_INTR                        (((PROFILE_V1_Type*) PROFILE_BASE)->INTR)
1907 #define PROFILE_INTR_MASK                   (((PROFILE_V1_Type*) PROFILE_BASE)->INTR_MASK)
1908 #define PROFILE_INTR_MASKED                 (((PROFILE_V1_Type*) PROFILE_BASE)->INTR_MASKED)
1909 #define PROFILE_CNT_STRUCT                  (((PROFILE_V1_Type*) PROFILE_BASE)->CNT_STRUCT)
1910 
1911 
1912 /*******************************************************************************
1913 *                BLE
1914 *******************************************************************************/
1915 
1916 #define BLE_RCB_INTR                        (((BLE_V1_Type *) BLE_BASE)->RCB.INTR)
1917 #define BLE_RCB_TX_FIFO_WR                  (((BLE_V1_Type *) BLE_BASE)->RCB.TX_FIFO_WR)
1918 #define BLE_RCB_RX_FIFO_RD                  (((BLE_V1_Type *) BLE_BASE)->RCB.RX_FIFO_RD)
1919 #define BLE_RCB_CTRL                        (((BLE_V1_Type *) BLE_BASE)->RCB.CTRL)
1920 #define BLE_RCB_RCBLL_CTRL                  (((BLE_V1_Type *) BLE_BASE)->RCB.RCBLL.CTRL)
1921 #define BLE_BLESS_XTAL_CLK_DIV_CONFIG       (((BLE_V1_Type *) BLE_BASE)->BLESS.XTAL_CLK_DIV_CONFIG)
1922 #define BLE_BLESS_MT_CFG                    (((BLE_V1_Type *) BLE_BASE)->BLESS.MT_CFG)
1923 #define BLE_BLESS_MT_STATUS                 (((BLE_V1_Type *) BLE_BASE)->BLESS.MT_STATUS)
1924 #define BLE_BLESS_MT_DELAY_CFG              (((BLE_V1_Type *) BLE_BASE)->BLESS.MT_DELAY_CFG)
1925 #define BLE_BLESS_MT_DELAY_CFG2             (((BLE_V1_Type *) BLE_BASE)->BLESS.MT_DELAY_CFG2)
1926 #define BLE_BLESS_MT_DELAY_CFG3             (((BLE_V1_Type *) BLE_BASE)->BLESS.MT_DELAY_CFG3)
1927 #define BLE_BLESS_MT_VIO_CTRL               (((BLE_V1_Type *) BLE_BASE)->BLESS.MT_VIO_CTRL)
1928 #define BLE_BLESS_LL_CLK_EN                 (((BLE_V1_Type *) BLE_BASE)->BLESS.LL_CLK_EN)
1929 #define BLE_BLESS_MISC_EN_CTRL              (((BLE_V1_Type *) BLE_BASE)->BLESS.MISC_EN_CTRL)
1930 #define BLE_BLESS_INTR_STAT                 (((BLE_V1_Type *) BLE_BASE)->BLESS.INTR_STAT)
1931 #define BLE_BLELL_EVENT_INTR                (((BLE_V1_Type *) BLE_BASE)->BLELL.EVENT_INTR)
1932 #define BLE_BLELL_CONN_INTR                 (((BLE_V1_Type *) BLE_BASE)->BLELL.CONN_INTR)
1933 #define BLE_BLELL_CONN_EXT_INTR             (((BLE_V1_Type *) BLE_BASE)->BLELL.CONN_EXT_INTR)
1934 #define BLE_BLELL_SCAN_INTR                 (((BLE_V1_Type *) BLE_BASE)->BLELL.SCAN_INTR)
1935 #define BLE_BLELL_ADV_INTR                  (((BLE_V1_Type *) BLE_BASE)->BLELL.ADV_INTR)
1936 
1937 
1938 /*******************************************************************************
1939 *                USBFS Device
1940 *******************************************************************************/
1941 
1942 #define USBFS_DEV_CR0(base)             (((USBFS_V1_Type *)(base))->USBDEV.CR0)
1943 #define USBFS_DEV_CR1(base)             (((USBFS_V1_Type *)(base))->USBDEV.CR1)
1944 #define USBFS_DEV_USBIO_CR0(base)       (((USBFS_V1_Type *)(base))->USBDEV.USBIO_CR0)
1945 #define USBFS_DEV_USBIO_CR2(base)       (((USBFS_V1_Type *)(base))->USBDEV.USBIO_CR2)
1946 #define USBFS_DEV_USBIO_CR1(base)       (((USBFS_V1_Type *)(base))->USBDEV.USBIO_CR1)
1947 #define USBFS_DEV_USB_CLK_EN(base)      (((USBFS_V1_Type *)(base))->USBDEV.USB_CLK_EN)
1948 #define USBFS_DEV_BUS_RST_CNT(base)     (((USBFS_V1_Type *)(base))->USBDEV.BUS_RST_CNT)
1949 #define USBFS_DEV_OSCLK_DR0(base)       (((USBFS_V1_Type *)(base))->USBDEV.EP_TYPE)
1950 #define USBFS_DEV_OSCLK_DR1(base)       (((USBFS_V1_Type *)(base))->USBDEV.OSCLK_DR0)
1951 #define USBFS_DEV_SOF0(base)            (((USBFS_V1_Type *)(base))->USBDEV.SOF0)
1952 #define USBFS_DEV_SOF1(base)            (((USBFS_V1_Type *)(base))->USBDEV.SOF1)
1953 #define USBFS_DEV_SOF16(base)           (((USBFS_V1_Type *)(base))->USBDEV.OSCLK_DR1)
1954 #define USBFS_DEV_OSCLK_DR16(base)      (((USBFS_V1_Type *)(base))->USBDEV.SOF16)
1955 #define USBFS_DEV_ARB_CFG(base)         (((USBFS_V1_Type *)(base))->USBDEV.ARB_CFG)
1956 #define USBFS_DEV_DYN_RECONFIG(base)    (((USBFS_V1_Type *)(base))->USBDEV.DYN_RECONFIG)
1957 #define USBFS_DEV_BUF_SIZE(base)        (((USBFS_V1_Type *)(base))->USBDEV.BUF_SIZE)
1958 #define USBFS_DEV_EP_ACTIVE(base)       (((USBFS_V1_Type *)(base))->USBDEV.EP_ACTIVE)
1959 #define USBFS_DEV_EP_TYPE(base)         (((USBFS_V1_Type *)(base))->USBDEV.EP_TYPE)
1960 #define USBFS_DEV_CWA16(base)           (((USBFS_V1_Type *)(base))->USBDEV.CWA16)
1961 #define USBFS_DEV_CWA(base)             (((USBFS_V1_Type *)(base))->USBDEV.CWA)
1962 #define USBFS_DEV_CWA_MSB(base)         (((USBFS_V1_Type *)(base))->USBDEV.CWA_MSB)
1963 #define USBFS_DEV_DMA_THRES16(base)     (((USBFS_V1_Type *)(base))->USBDEV.DMA_THRES16)
1964 #define USBFS_DEV_DMA_THRES(base)       (((USBFS_V1_Type *)(base))->USBDEV.DMA_THRES)
1965 #define USBFS_DEV_DMA_THRES_MSB(base)   (((USBFS_V1_Type *)(base))->USBDEV.DMA_THRES_MSB)
1966 
1967 #define USBFS_DEV_SIE_EP_INT_EN(base)   (((USBFS_V1_Type *)(base))->USBDEV.SIE_EP_INT_EN)
1968 #define USBFS_DEV_SIE_EP_INT_SR(base)   (((USBFS_V1_Type *)(base))->USBDEV.SIE_EP_INT_SR)
1969 #define USBFS_DEV_ARB_INT_EN(base)      (((USBFS_V1_Type *)(base))->USBDEV.ARB_INT_EN)
1970 #define USBFS_DEV_ARB_INT_SR(base)      (((USBFS_V1_Type *)(base))->USBDEV.ARB_INT_SR)
1971 
1972 #define USBFS_DEV_EP0_CR(base)          (((USBFS_V1_Type *)(base))->USBDEV.EP0_CR)
1973 #define USBFS_DEV_EP0_CNT(base)         (((USBFS_V1_Type *)(base))->USBDEV.EP0_CNT)
1974 #define USBFS_DEV_EP0_DR(base, idx)     (((USBFS_V1_Type *)(base))->USBDEV.EP0_DR[idx])
1975 
1976 #define USBFS_DEV_MEM_DATA(base, idx)   (((USBFS_V1_Type *)(base))->USBDEV.MEM[idx])
1977 
1978 #define USBFS_DEV_SIE_REGS_BASE        (0x30U)
1979 #define USBFS_DEV_SIE_REGS_SIZE        (0x40U)
1980 #define USBFS_DEV_SIE_EP_CNT0_OFFSET   (0x00U)
1981 #define USBFS_DEV_SIE_EP_CNT1_OFFSET   (0x04U)
1982 #define USBFS_DEV_SIE_EP_CR0_OFFSET    (0x08U)
1983 #define USBFS_DEV_SIE_REGS(base, endpoint) ((uint32_t)(base) + USBFS_DEV_SIE_REGS_BASE + ((endpoint) * USBFS_DEV_SIE_REGS_SIZE))
1984 
1985 #define USBFS_DEV_SIE_EP_CNT0(base, endpoint)  (*(volatile uint32_t *) (USBFS_DEV_SIE_REGS(base, endpoint) + \
1986                                                                         USBFS_DEV_SIE_EP_CNT0_OFFSET))
1987 #define USBFS_DEV_SIE_EP_CNT1(base, endpoint)  (*(volatile uint32_t *) (USBFS_DEV_SIE_REGS(base, endpoint) + \
1988                                                                         USBFS_DEV_SIE_EP_CNT1_OFFSET))
1989 #define USBFS_DEV_SIE_EP_CR0(base, endpoint)   (*(volatile uint32_t *) (USBFS_DEV_SIE_REGS(base, endpoint) + \
1990                                                                         USBFS_DEV_SIE_EP_CR0_OFFSET))
1991 
1992 #define USBFS_DEV_ARB_REGS_BASE         (0x200U)
1993 #define USBFS_DEV_ARB_REGS_SIZE         (0x40U)
1994 #define USBFS_DEV_ARB_EP_CFG_OFFSET     (0x00U)
1995 #define USBFS_DEV_ARB_EP_INT_EN_OFFSET  (0x04U)
1996 #define USBFS_DEV_ARB_EP_SR_OFFSET      (0x08U)
1997 #define USBFS_DEV_ARB_RW_WA_OFFSET      (0x10U)
1998 #define USBFS_DEV_ARB_RW_WA_MSB_OFFSET  (0x14U)
1999 #define USBFS_DEV_ARB_RW_RA_OFFSET      (0x18U)
2000 #define USBFS_DEV_ARB_RW_RA_MSB_OFFSET  (0x1CU)
2001 #define USBFS_DEV_ARB_RW_DR_OFFSET      (0x20U)
2002 #define USBFS_DEV_ARB_REGS(base, endpoint) ((uint32_t)(base) + USBFS_DEV_ARB_REGS_BASE + ((endpoint) * USBFS_DEV_ARB_REGS_SIZE))
2003 
2004 #define USBFS_DEV_ARB_EP_CFG(base, endpoint)       (*(volatile uint32_t *) (USBFS_DEV_ARB_REGS(base, endpoint) + \
2005                                                                             USBFS_DEV_ARB_EP_CFG_OFFSET))
2006 #define USBFS_DEV_ARB_EP_INT_EN(base, endpoint)    (*(volatile uint32_t *) (USBFS_DEV_ARB_REGS(base, endpoint) + \
2007                                                                             USBFS_DEV_ARB_EP_INT_EN_OFFSET))
2008 #define USBFS_DEV_ARB_EP_SR(base, endpoint)        (*(volatile uint32_t *) (USBFS_DEV_ARB_REGS(base, endpoint) + \
2009                                                                             USBFS_DEV_ARB_EP_SR_OFFSET))
2010 #define USBFS_DEV_ARB_RW_WA(base, endpoint)        (*(volatile uint32_t *) (USBFS_DEV_ARB_REGS(base, endpoint) + \
2011                                                                             USBFS_DEV_ARB_RW_WA_OFFSET))
2012 #define USBFS_DEV_ARB_RW_WA_MSB(base, endpoint)    (*(volatile uint32_t *) (USBFS_DEV_ARB_REGS(base, endpoint) + \
2013                                                                             USBFS_DEV_ARB_RW_WA_MSB_OFFSET))
2014 #define USBFS_DEV_ARB_RW_RA(base, endpoint)        (*(volatile uint32_t *) (USBFS_DEV_ARB_REGS(base, endpoint) + \
2015                                                                             USBFS_DEV_ARB_RW_RA_OFFSET))
2016 #define USBFS_DEV_ARB_RW_RA_MSB(base, endpoint)    (*(volatile uint32_t *) (USBFS_DEV_ARB_REGS(base, endpoint) + \
2017                                                                             USBFS_DEV_ARB_RW_RA_MSB_OFFSET))
2018 #define USBFS_DEV_ARB_RW_DR(base, endpoint)        (*(volatile uint32_t *) (USBFS_DEV_ARB_REGS(base, endpoint) + \
2019                                                                             USBFS_DEV_ARB_RW_DR_OFFSET))
2020 
2021 #define USBFS_DEV_ARB_REGS16_BASE       (0x1210U)
2022 #define USBFS_DEV_ARB_REGS16_SIZE       (0x40U)
2023 #define USBFS_DEV_ARB_RW_WA16_OFFSET    (0x00U)
2024 #define USBFS_DEV_ARB_RW_RA16_OFFSET    (0x08U)
2025 #define USBFS_DEV_ARB_RW_DR16_OFFSET    (0x10U)
2026 #define USBFS_DEV_ARB_REGS_16(base, endpoint) ((uint32_t)(base) + USBFS_DEV_ARB_REGS16_BASE + ((endpoint) * USBFS_DEV_ARB_REGS16_SIZE))
2027 
2028 #define USBFS_DEV_ARB_RW_WA16(base, endpoint)      (*(volatile uint32_t *) (USBFS_DEV_ARB_REGS_16(base, endpoint) + \
2029                                                                             USBFS_DEV_ARB_RW_WA16_OFFSET))
2030 #define USBFS_DEV_ARB_RW_RA16(base, endpoint)      (*(volatile uint32_t *) (USBFS_DEV_ARB_REGS_16(base, endpoint) + \
2031                                                                             USBFS_DEV_ARB_RW_RA16_OFFSET))
2032 #define USBFS_DEV_ARB_RW_DR16(base, endpoint)      (*(volatile uint32_t *) (USBFS_DEV_ARB_REGS_16(base, endpoint) + \
2033                                                                             USBFS_DEV_ARB_RW_DR16_OFFSET))
2034 
2035 #define USBFS_DEV_LPM_POWER_CTL(base)       (((USBFS_V1_Type *)(base))->USBLPM.POWER_CTL)
2036 #define USBFS_DEV_LPM_USBIO_CTL(base)       (((USBFS_V1_Type *)(base))->USBLPM.USBIO_CTL)
2037 #define USBFS_DEV_LPM_FLOW_CTL(base)        (((USBFS_V1_Type *)(base))->USBLPM.FLOW_CTL)
2038 #define USBFS_DEV_LPM_LPM_CTL(base)         (((USBFS_V1_Type *)(base))->USBLPM.LPM_CTL)
2039 #define USBFS_DEV_LPM_LPM_STAT(base)        (((USBFS_V1_Type const *)(base))->USBLPM.LPM_STAT)
2040 #define USBFS_DEV_LPM_INTR_SIE(base)        (((USBFS_V1_Type *)(base))->USBLPM.INTR_SIE)
2041 #define USBFS_DEV_LPM_INTR_SIE_SET(base)    (((USBFS_V1_Type *)(base))->USBLPM.INTR_SIE_SET)
2042 #define USBFS_DEV_LPM_INTR_SIE_MASK(base)   (((USBFS_V1_Type *)(base))->USBLPM.INTR_SIE_MASK)
2043 #define USBFS_DEV_LPM_INTR_SIE_MASKED(base) (((USBFS_V1_Type *)(base))->USBLPM.INTR_SIE_MASKED)
2044 #define USBFS_DEV_LPM_INTR_LVL_SEL(base)    (((USBFS_V1_Type *)(base))->USBLPM.INTR_LVL_SEL)
2045 #define USBFS_DEV_LPM_INTR_CAUSE_HI(base)   (((USBFS_V1_Type const *)(base))->USBLPM.INTR_CAUSE_HI)
2046 #define USBFS_DEV_LPM_INTR_CAUSE_MED(base)  (((USBFS_V1_Type const *)(base))->USBLPM.INTR_CAUSE_MED)
2047 #define USBFS_DEV_LPM_INTR_CAUSE_LO(base)   (((USBFS_V1_Type const *)(base))->USBLPM.INTR_CAUSE_LO)
2048 #define USBFS_DEV_LPM_DFT_CTL(base)         (((USBFS_V1_Type *)(base))->USBLPM.DFT_CTL)
2049 
2050 #define USBFS_HOST_CTL0(base)               (((USBFS_V1_Type *)(base))->USBHOST.HOST_CTL0)
2051 #define USBFS_HOST_CTL1(base)               (((USBFS_V1_Type *)(base))->USBHOST.HOST_CTL1)
2052 #define USBFS_HOST_CTL2(base)               (((USBFS_V1_Type *)(base))->USBHOST.HOST_CTL2)
2053 #define USBFS_HOST_ERR(base)                (((USBFS_V1_Type *)(base))->USBHOST.HOST_ERR)
2054 #define USBFS_HOST_STATUS(base)             (((USBFS_V1_Type *)(base))->USBHOST.HOST_STATUS)
2055 #define USBFS_HOST_FCOMP(base)              (((USBFS_V1_Type *)(base))->USBHOST.HOST_FCOMP)
2056 #define USBFS_HOST_RTIMER(base)             (((USBFS_V1_Type *)(base))->USBHOST.HOST_RTIMER)
2057 #define USBFS_HOST_ADDR(base)               (((USBFS_V1_Type *)(base))->USBHOST.HOST_ADDR)
2058 #define USBFS_HOST_EOF(base)                (((USBFS_V1_Type *)(base))->USBHOST.HOST_EOF)
2059 #define USBFS_HOST_FRAME(base)              (((USBFS_V1_Type *)(base))->USBHOST.HOST_FRAME)
2060 #define USBFS_HOST_TOKEN(base)              (((USBFS_V1_Type *)(base))->USBHOST.HOST_TOKEN)
2061 #define USBFS_HOST_EP1_CTL(base)            (((USBFS_V1_Type *)(base))->USBHOST.HOST_EP1_CTL)
2062 #define USBFS_HOST_EP1_STATUS(base)         (((USBFS_V1_Type *)(base))->USBHOST.HOST_EP1_STATUS)
2063 #define USBFS_HOST_EP1_RW1_DR(base)         (((USBFS_V1_Type *)(base))->USBHOST.HOST_EP1_RW1_DR)
2064 #define USBFS_HOST_EP1_RW2_DR(base)         (((USBFS_V1_Type *)(base))->USBHOST.HOST_EP1_RW2_DR)
2065 #define USBFS_HOST_EP2_CTL(base)            (((USBFS_V1_Type *)(base))->USBHOST.HOST_EP2_CTL)
2066 #define USBFS_HOST_EP2_STATUS(base)         (((USBFS_V1_Type *)(base))->USBHOST.HOST_EP2_STATUS)
2067 #define USBFS_HOST_EP2_RW1_DR(base)         (((USBFS_V1_Type *)(base))->USBHOST.HOST_EP2_RW1_DR)
2068 #define USBFS_HOST_EP2_RW2_DR(base)         (((USBFS_V1_Type *)(base))->USBHOST.HOST_EP2_RW2_DR)
2069 #define USBFS_HOST_LVL1_SEL(base)           (((USBFS_V1_Type *)(base))->USBHOST.HOST_LVL1_SEL)
2070 #define USBFS_HOST_LVL2_SEL(base)           (((USBFS_V1_Type *)(base))->USBHOST.HOST_LVL2_SEL)
2071 #define USBFS_INTR_USBHOST_CAUSE_HI(base)   (((USBFS_V1_Type *)(base))->USBHOST.INTR_USBHOST_CAUSE_HI)
2072 #define USBFS_INTR_USBHOST_CAUSE_MED(base)  (((USBFS_V1_Type *)(base))->USBHOST.INTR_USBHOST_CAUSE_MED)
2073 #define USBFS_INTR_USBHOST_CAUSE_LO(base)   (((USBFS_V1_Type *)(base))->USBHOST.INTR_USBHOST_CAUSE_LO)
2074 #define USBFS_INTR_HOST_EP_CAUSE_HI(base)   (((USBFS_V1_Type *)(base))->USBHOST.INTR_HOST_EP_CAUSE_HI)
2075 #define USBFS_INTR_HOST_EP_CAUSE_MED(base)  (((USBFS_V1_Type *)(base))->USBHOST.INTR_HOST_EP_CAUSE_MED)
2076 #define USBFS_INTR_HOST_EP_CAUSE_LO(base)   (((USBFS_V1_Type *)(base))->USBHOST.INTR_HOST_EP_CAUSE_LO)
2077 #define USBFS_INTR_USBHOST(base)            (((USBFS_V1_Type *)(base))->USBHOST.INTR_USBHOST)
2078 #define USBFS_INTR_USBHOST_SET(base)        (((USBFS_V1_Type *)(base))->USBHOST.INTR_USBHOST_SET)
2079 #define USBFS_INTR_USBHOST_MASK(base)       (((USBFS_V1_Type *)(base))->USBHOST.INTR_USBHOST_MASK)
2080 #define USBFS_INTR_USBHOST_MASKED(base)     (((USBFS_V1_Type *)(base))->USBHOST.INTR_USBHOST_MASKED)
2081 #define USBFS_INTR_HOST_EP(base)            (((USBFS_V1_Type *)(base))->USBHOST.INTR_HOST_EP)
2082 #define USBFS_INTR_HOST_EP_SET(base)        (((USBFS_V1_Type *)(base))->USBHOST.INTR_HOST_EP_SET)
2083 #define USBFS_INTR_HOST_EP_MASK(base)       (((USBFS_V1_Type *)(base))->USBHOST.INTR_HOST_EP_MASK)
2084 #define USBFS_INTR_HOST_EP_MASKED(base)     (((USBFS_V1_Type *)(base))->USBHOST.INTR_HOST_EP_MASKED)
2085 #define USBFS_HOST_DMA_ENBL(base)           (((USBFS_V1_Type *)(base))->USBHOST.HOST_DMA_ENBL)
2086 #define USBFS_HOST_EP1_BLK(base)            (((USBFS_V1_Type *)(base))->USBHOST.HOST_EP1_BLK)
2087 #define USBFS_HOST_EP2_BLK(base)            (((USBFS_V1_Type *)(base))->USBHOST.HOST_EP2_BLK)
2088 
2089 
2090 #if (defined (CY_IP_MXS40USBHSDEV))
2091 /*******************************************************************************
2092 *                MXS40USBHSDEV
2093 *******************************************************************************/
2094 
2095 #define USBHSDEV_DEV_PWR_CS_DISCON              (1U << USBHSDEV_DEV_PWR_CS_DISCON_Pos)
2096 #define USBHSDEV_DEV_LPM_ATTR_RMT_WAKEUP_ENABLE (1U << USBHSDEV_DEV_LPM_ATTR_RMT_WAKEUP_ENABLE_Pos)
2097 #define USBHSDEV_DEV_LPM_ATTR_L2_SUSP_RMT_WAKEUP_EN (1U << USBHSDEV_DEV_LPM_ATTR_L2_SUSP_RMT_WAKEUP_EN_Pos)
2098 #define USBHSDEV_DEV_PWR_CS_DEV_SUSPEND         (1U << USBHSDEV_DEV_PWR_CS_DEV_SUSPEND_Pos)
2099 #define USBHSDEV_DEV_PWR_CS_FORCE_FS            (1U << USBHSDEV_DEV_PWR_CS_FORCE_FS_Pos)
2100 #define USBHSDEV_DEV_PWR_CS_SIGRSUME            (1U << USBHSDEV_DEV_PWR_CS_SIGRSUME_Pos)
2101 #define USBHSDEV_DEV_PWR_CS_L0_ACTIVE           (1U << USBHSDEV_DEV_PWR_CS_L0_ACTIVE_Pos)
2102 #define USBHSDEV_DEV_PWR_CS_L2_SUSPEND          (1U << USBHSDEV_DEV_PWR_CS_L2_SUSPEND_Pos)
2103 #define USBHSDEV_DEV_PWR_CS_L1_SLEEP            (1U << USBHSDEV_DEV_PWR_CS_L1_SLEEP_Pos)
2104 #define USBHSDEV_DEV_EPI_CS_NAK                 (1U << USBHSDEV_DEV_EPI_CS_NAK_Pos)
2105 #define USBHSDEV_DEV_EPO_CS_NAK                 (1U << USBHSDEV_DEV_EPO_CS_NAK_Pos)
2106 #define USBHSDEV_DEV_CS_SETUP_CLR_BUSY          (1U << USBHSDEV_DEV_CS_SETUP_CLR_BUSY_Pos)
2107 #define USBHSDEV_DEV_CS_NAKALL                  (1U << USBHSDEV_DEV_CS_NAKALL_Pos)
2108 #define USBHSDEV_DEV_EPI_CS_STALL               (1U << USBHSDEV_DEV_EPI_CS_STALL_Pos)
2109 #define USBHSDEV_DEV_EPO_CS_STALL               (1U << USBHSDEV_DEV_EPO_CS_STALL_Pos)
2110 #define USBHSDEV_DEV_TOGGLE_IO                  (1U << USBHSDEV_DEV_TOGGLE_IO_Pos)
2111 #define USBHSDEV_DEV_TOGGLE_TOGGLE_VALID        (1U << USBHSDEV_DEV_TOGGLE_TOGGLE_VALID_Pos)
2112 #define USBHSDEV_DEV_TOGGLE_R                   (1U << USBHSDEV_DEV_TOGGLE_R_Pos)
2113 #define USBHSDEV_DEV_EPO_CS_VALID               (1U << USBHSDEV_DEV_EPO_CS_VALID_Pos)
2114 #define USBHSDEV_DEV_EPI_CS_VALID               (1U << USBHSDEV_DEV_EPI_CS_VALID_Pos)
2115 #define USBHSDEV_EEPM_ENDPOINT_EGRS_FLUSH_EP    (1U << USBHSDEV_EEPM_ENDPOINT_EGRS_FLUSH_EP_Pos)
2116 #define USBHSDEV_EPM_CS_EGRS_FORCE_FLUSH_ALL    (1U << USBHSDEV_EPM_CS_EGRS_FORCE_FLUSH_ALL_Pos)
2117 #define USBHSDEV_EPM_CS_IGRS_FORCE_FLUSH_ALL    (1U << USBHSDEV_EPM_CS_IGRS_FORCE_FLUSH_ALL_Pos)
2118 #define USBHSDEV_DEV_EPI_CS_ZERO_MASK           (1U << USBHSDEV_DEV_EPI_CS_ZERO_MASK_Pos)
2119 #define USBHSDEV_DEV_CTL_INTR_MASK_SETADDR      (1U << USBHSDEV_DEV_CTL_INTR_MASK_SETADDR_Pos)
2120 #define USBHSDEV_DEV_CTL_INTR_MASK_SOF          (1U << USBHSDEV_DEV_CTL_INTR_MASK_SOF_Pos)
2121 #define USBHSDEV_DEV_CTL_INTR_MASK_SUSP         (1U << USBHSDEV_DEV_CTL_INTR_MASK_SUSP_Pos)
2122 #define USBHSDEV_DEV_CTL_INTR_MASK_URESET       (1U << USBHSDEV_DEV_CTL_INTR_MASK_URESET_Pos)
2123 #define USBHSDEV_DEV_CTL_INTR_MASK_HSGRANT      (1U << USBHSDEV_DEV_CTL_INTR_MASK_HSGRANT_Pos)
2124 #define USBHSDEV_DEV_CTL_INTR_MASK_SUTOK        (1U << USBHSDEV_DEV_CTL_INTR_MASK_SUTOK_Pos)
2125 #define USBHSDEV_DEV_CTL_INTR_MASK_SUDAV        (1U << USBHSDEV_DEV_CTL_INTR_MASK_SUDAV_Pos)
2126 #define USBHSDEV_DEV_CTL_INTR_MASK_ERRLIMIT     (1U << USBHSDEV_DEV_CTL_INTR_MASK_ERRLIMIT_Pos)
2127 #define USBHSDEV_DEV_CTL_INTR_MASK_URESUME      (1U << USBHSDEV_DEV_CTL_INTR_MASK_URESUME_Pos)
2128 #define USBHSDEV_DEV_CTL_INTR_MASK_STATUS_STAGE (1U << USBHSDEV_DEV_CTL_INTR_MASK_STATUS_STAGE_Pos)
2129 #define USBHSDEV_DEV_CTL_INTR_MASK_L1_SLEEP_REQ (1U << USBHSDEV_DEV_CTL_INTR_MASK_L1_SLEEP_REQ_Pos)
2130 #define USBHSDEV_DEV_CTL_INTR_MASK_L1_URESUME   (1U << USBHSDEV_DEV_CTL_INTR_MASK_L1_URESUME_Pos)
2131 #define USBHSDEV_DEV_CTL_INTR_MASK_RESETDONE    (1U << USBHSDEV_DEV_CTL_INTR_MASK_RESETDONE_Pos)
2132 #define USBHSDEV_DEV_CTL_INTR_MASK_HOST_URSUME_ARRIVED (1U << USBHSDEV_DEV_CTL_INTR_MASK_HOST_URSUME_ARRIVED_Pos)
2133 #define USBHSDEV_DEV_CTL_INTR_MASK_DPSLP        (1U << USBHSDEV_DEV_CTL_INTR_MASK_DPSLP_Pos)
2134 #define USBHSDEV_DEV_CTL_INTR_MASK_PID_MISMATCH_ON_NAK (1U << USBHSDEV_DEV_CTL_INTR_MASK_PID_MISMATCH_ON_NAK_Pos)
2135 #define USBHSDEV_DEV_CTL_INTR_SETADDR           (1U << USBHSDEV_DEV_CTL_INTR_SETADDR_Pos)
2136 #define USBHSDEV_DEV_CTL_INTR_SOF               (1U << USBHSDEV_DEV_CTL_INTR_SOF_Pos)
2137 #define USBHSDEV_DEV_CTL_INTR_SUSP              (1U << USBHSDEV_DEV_CTL_INTR_SUSP_Pos)
2138 #define USBHSDEV_DEV_CTL_INTR_URESET            (1U << USBHSDEV_DEV_CTL_INTR_URESET_Pos)
2139 #define USBHSDEV_DEV_CTL_INTR_HSGRANT           (1U << USBHSDEV_DEV_CTL_INTR_HSGRANT_Pos)
2140 #define USBHSDEV_DEV_CTL_INTR_SUTOK             (1U << USBHSDEV_DEV_CTL_INTR_SUTOK_Pos)
2141 #define USBHSDEV_DEV_CTL_INTR_SUDAV             (1U << USBHSDEV_DEV_CTL_INTR_SUDAV_Pos)
2142 #define USBHSDEV_DEV_CTL_INTR_ERRLIMIT          (1U << USBHSDEV_DEV_CTL_INTR_ERRLIMIT_Pos)
2143 #define USBHSDEV_DEV_CTL_INTR_URESUME           (1U << USBHSDEV_DEV_CTL_INTR_URESUME_Pos)
2144 #define USBHSDEV_DEV_CTL_INTR_STATUS_STAGE      (1U << USBHSDEV_DEV_CTL_INTR_STATUS_STAGE_Pos)
2145 #define USBHSDEV_DEV_CTL_INTR_L1_SLEEP_REQ      (1U << USBHSDEV_DEV_CTL_INTR_L1_SLEEP_REQ_Pos)
2146 #define USBHSDEV_DEV_CTL_INTR_L1_URESUME        (1U << USBHSDEV_DEV_CTL_INTR_L1_URESUME_Pos)
2147 #define USBHSDEV_DEV_CTL_INTR_RESETDONE         (1U << USBHSDEV_DEV_CTL_INTR_RESETDONE_Pos)
2148 #define USBHSDEV_DEV_CTL_INTR_HOST_URSUME_ARRIVED (1U << USBHSDEV_DEV_CTL_INTR_HOST_URSUME_ARRIVED_Pos)
2149 #define USBHSDEV_DEV_CTL_INTR_DPSLP             (1U << USBHSDEV_DEV_CTL_INTR_DPSLP_Pos)
2150 #define USBHSDEV_DEV_CTL_INTR_PID_MISMATCH_ON_NAK (1U << USBHSDEV_DEV_CTL_INTR_PID_MISMATCH_ON_NAK_Pos)
2151 #define USBHSDEV_DEV_EPI_CS_ZERO                (1U << USBHSDEV_DEV_EPI_CS_ZERO_Pos)
2152 #define USBHSDEV_DEV_EPI_CS_COMMIT              (1U << USBHSDEV_DEV_EPI_CS_COMMIT_Pos)
2153 #define USBHSPHY_PLL_CONTROL_1_SUPPLY_EN        (1U << USBHSPHY_PLL_CONTROL_1_SUPPLY_EN_Pos)
2154 #define USBHSPHY_PLL_CONTROL_1_PLL_EN           (1U << USBHSPHY_PLL_CONTROL_1_PLL_EN_Pos)
2155 #define USBHSPHY_CDR_CONTROL_CDR_ENABLE         (1U << USBHSPHY_CDR_CONTROL_CDR_ENABLE_Pos)
2156 #define USBHSPHY_AFE_CONTROL_1_CPU_DELAY_ENABLE_HS_VCCD (1U << USBHSPHY_AFE_CONTROL_1_CPU_DELAY_ENABLE_HS_VCCD_Pos)
2157 #define USBHSPHY_REG_1P1_CONTROL_ENABLE_LV      (1U << USBHSPHY_REG_1P1_CONTROL_ENABLE_LV_Pos)
2158 #define USBHSPHY_REG_2P5_CONTROL_BYPASS_MODE    (1U << USBHSPHY_REG_2P5_CONTROL_BYPASS_MODE_Pos)
2159 #define USBHSPHY_VREFGEN_CONTROL_ENABLE_LV      (1U << USBHSPHY_VREFGEN_CONTROL_ENABLE_LV_Pos)
2160 #define USBHSPHY_IREFGEN_CONTROL_ENABLE_LV      (1U << USBHSPHY_IREFGEN_CONTROL_ENABLE_LV_Pos)
2161 #define USBHSPHY_REG_1P1_CONTROL_SWITCH_EN      (1U << USBHSPHY_REG_1P1_CONTROL_SWITCH_EN_Pos)
2162 #define USBHSPHY_INTR0_ENABLE_HS_VCCD           (1U << USBHSPHY_INTR0_ENABLE_HS_VCCD_Pos)
2163 #define USBHSPHY_INTR0_PLL_LOCK                 (1U << USBHSPHY_INTR0_PLL_LOCK_Pos)
2164 #define USBHSPHY_REG_2P5_CONTROL_ENABLE_LV      (1U << USBHSPHY_REG_2P5_CONTROL_ENABLE_LV_Pos)
2165 #define USBHSPHY_INTR0_ENABLE_VCCD              (1U << USBHSPHY_INTR0_ENABLE_VCCD_Pos)
2166 #define USBHSPHY_AFE_CONTROL_1_CPU_DELAY_ENABLE_VCCD    (1U << USBHSPHY_AFE_CONTROL_1_CPU_DELAY_ENABLE_VCCD_Pos)
2167 #define USBHSDEV_POWER_RESETN                   (1U << USBHSDEV_POWER_RESETN_Pos)
2168 #define USBHSDEV_POWER_VBUS_VALID               (1U << USBHSDEV_POWER_VBUS_VALID_Pos)
2169 #define USBHSDEV_POWER_EPM_DCG_ENABLE           (1U << USBHSDEV_POWER_EPM_DCG_ENABLE_Pos)
2170 #define USBHSDEV_DEV_LPM_ATTR_NYET              (1U << USBHSDEV_DEV_LPM_ATTR_NYET_Pos)
2171 #endif /* CY_IP_MXS40USBHSDEV */
2172 
2173 
2174 #endif /* CY_DEVICE_H_ */
2175 
2176 /* [] END OF FILE */
2177