Added support for v4.2 boards
[SCSI2SD.git] / software / SCSI2SD / v4 / SCSI2SD.cydsn / Generated_Source / PSoC5 / cyPm.h
1 /*******************************************************************************
2 * File Name: cyPm.h
3 * Version 4.0
4 *
5 * Description:
6 *  Provides the function definitions for the power management API.
7 *
8 * Note:
9 *  Documentation of the API's in this file is located in the
10 *  System Reference Guide provided with PSoC Creator.
11 *
12 ********************************************************************************
13 * Copyright 2008-2013, Cypress Semiconductor Corporation.  All rights reserved.
14 * You may use this file only in accordance with the license, terms, conditions,
15 * disclaimers, and limitations in the end user license agreement accompanying
16 * the software package with which this file was provided.
17 *******************************************************************************/
18
19 #if !defined(CY_BOOT_CYPM_H)
20 #define CY_BOOT_CYPM_H
21
22 #include "cytypes.h"        /* Register access API      */
23 #include "cydevice_trm.h"   /* Registers addresses      */
24 #include "cyfitter.h"       /* Comparators placement    */
25 #include "CyLib.h"          /* Clock API                */
26 #include "CyFlash.h"        /* Flash API - CyFlash_SetWaitCycles()  */
27
28
29 /***************************************
30 *    Function Prototypes
31 ***************************************/
32 void CyPmSaveClocks(void) ;
33 void CyPmRestoreClocks(void) ;
34 void CyPmAltAct(uint16 wakeupTime, uint16 wakeupSource) ;
35 void CyPmSleep(uint8 wakeupTime, uint16 wakeupSource) ;
36 void CyPmHibernate(void) ;
37
38 uint8 CyPmReadStatus(uint8 mask) ;
39
40 /* Internal APIs and are not meant to be called directly by the user */
41 void CyPmCtwSetInterval(uint8 ctwInterval) ;
42 void CyPmFtwSetInterval(uint8 ftwInterval) ;
43 void CyPmOppsSet(void) ;
44
45
46 /***************************************
47 *    API Constants
48 ***************************************/
49
50 #define PM_SLEEP_SRC_NONE               (0x0000u)
51 #define PM_SLEEP_TIME_NONE              (0x00u)
52 #define PM_ALT_ACT_SRC_NONE             (0x0000u)
53 #define PM_ALT_ACT_TIME_NONE            (0x0000u)
54
55 #if(CY_PSOC3)
56
57     /* Wake up time for the Sleep mode */
58     #define PM_SLEEP_TIME_ONE_PPS           (0x01u)
59     #define PM_SLEEP_TIME_CTW_2MS           (0x02u)
60     #define PM_SLEEP_TIME_CTW_4MS           (0x03u)
61     #define PM_SLEEP_TIME_CTW_8MS           (0x04u)
62     #define PM_SLEEP_TIME_CTW_16MS          (0x05u)
63     #define PM_SLEEP_TIME_CTW_32MS          (0x06u)
64     #define PM_SLEEP_TIME_CTW_64MS          (0x07u)
65     #define PM_SLEEP_TIME_CTW_128MS         (0x08u)
66     #define PM_SLEEP_TIME_CTW_256MS         (0x09u)
67     #define PM_SLEEP_TIME_CTW_512MS         (0x0Au)
68     #define PM_SLEEP_TIME_CTW_1024MS        (0x0Bu)
69     #define PM_SLEEP_TIME_CTW_2048MS        (0x0Cu)
70     #define PM_SLEEP_TIME_CTW_4096MS        (0x0Du)
71
72     /* Difference between parameter's value and register's one */
73     #define CY_PM_FTW_INTERVAL_SHIFT        (0x000Eu)
74
75     /* Wake up time for the Alternate Active mode */
76     #define PM_ALT_ACT_TIME_ONE_PPS         (0x0001u)
77     #define PM_ALT_ACT_TIME_CTW_2MS         (0x0002u)
78     #define PM_ALT_ACT_TIME_CTW_4MS         (0x0003u)
79     #define PM_ALT_ACT_TIME_CTW_8MS         (0x0004u)
80     #define PM_ALT_ACT_TIME_CTW_16MS        (0x0005u)
81     #define PM_ALT_ACT_TIME_CTW_32MS        (0x0006u)
82     #define PM_ALT_ACT_TIME_CTW_64MS        (0x0007u)
83     #define PM_ALT_ACT_TIME_CTW_128MS       (0x0008u)
84     #define PM_ALT_ACT_TIME_CTW_256MS       (0x0009u)
85     #define PM_ALT_ACT_TIME_CTW_512MS       (0x000Au)
86     #define PM_ALT_ACT_TIME_CTW_1024MS      (0x000Bu)
87     #define PM_ALT_ACT_TIME_CTW_2048MS      (0x000Cu)
88     #define PM_ALT_ACT_TIME_CTW_4096MS      (0x000Du)
89     #define PM_ALT_ACT_TIME_FTW(x)          ((x) + CY_PM_FTW_INTERVAL_SHIFT)
90
91 #endif  /* (CY_PSOC3) */
92
93
94 /* Wake up sources for the Sleep mode */
95 #define PM_SLEEP_SRC_COMPARATOR0        (0x0001u)
96 #define PM_SLEEP_SRC_COMPARATOR1        (0x0002u)
97 #define PM_SLEEP_SRC_COMPARATOR2        (0x0004u)
98 #define PM_SLEEP_SRC_COMPARATOR3        (0x0008u)
99 #define PM_SLEEP_SRC_PICU               (0x0040u)
100 #define PM_SLEEP_SRC_I2C                (0x0080u)
101 #define PM_SLEEP_SRC_BOOSTCONVERTER     (0x0200u)
102 #define PM_SLEEP_SRC_VD                 (0x0400u)
103 #define PM_SLEEP_SRC_CTW                (0x0800u)
104 #define PM_SLEEP_SRC_ONE_PPS            (0x0800u)
105 #define PM_SLEEP_SRC_LCD                (0x1000u)
106
107 /* Wake up sources for the Alternate Active mode */
108 #define PM_ALT_ACT_SRC_COMPARATOR0      (0x0001u)
109 #define PM_ALT_ACT_SRC_COMPARATOR1      (0x0002u)
110 #define PM_ALT_ACT_SRC_COMPARATOR2      (0x0004u)
111 #define PM_ALT_ACT_SRC_COMPARATOR3      (0x0008u)
112 #define PM_ALT_ACT_SRC_INTERRUPT        (0x0010u)
113 #define PM_ALT_ACT_SRC_PICU             (0x0040u)
114 #define PM_ALT_ACT_SRC_I2C              (0x0080u)
115 #define PM_ALT_ACT_SRC_BOOSTCONVERTER   (0x0200u)
116 #define PM_ALT_ACT_SRC_FTW              (0x0400u)
117 #define PM_ALT_ACT_SRC_VD               (0x0400u)
118 #define PM_ALT_ACT_SRC_CTW              (0x0800u)
119 #define PM_ALT_ACT_SRC_ONE_PPS          (0x0800u)
120 #define PM_ALT_ACT_SRC_LCD              (0x1000u)
121
122
123 #define CY_PM_WAKEUP_PICU               (0x04u)
124 #define CY_PM_IMO_NO_WAIT_TO_SETTLE     (0x00u)
125 #define CY_PM_POWERDOWN_MODE            (0x01u)
126 #define CY_PM_HIGHPOWER_MODE            (0x00u)     /* Deprecated */
127 #define CY_PM_ENABLED                   (0x01u)
128 #define CY_PM_DISABLED                  (0x00u)
129
130 /* No wait for PLL to stabilize, used in CyPLL_OUT_Start() */
131 #define CY_PM_PLL_OUT_NO_WAIT           (0u)
132
133 /* No wait for MHZ XTAL to stabilize, used in CyXTAL_Start() */
134 #define CY_PM_XTAL_MHZ_NO_WAIT          (0u)
135
136 #define CY_PM_WAIT_200_US               (200u)
137 #define CY_PM_WAIT_250_US               (250u)
138 #define CY_PM_WAIT_20_US                (20u)
139
140 #define CY_PM_FREQ_3MHZ                 (3u)
141 #define CY_PM_FREQ_12MHZ                (12u)
142 #define CY_PM_FREQ_48MHZ                (48u)
143
144
145 #define     CY_PM_MHZ_XTAL_WAIT_NUM_OF_200_US   (5u)
146
147
148 /* Delay line bandgap current settling time starting from a wakeup event */
149 #define     CY_PM_CLK_DELAY_BANDGAP_SETTLE_US       (50u)
150
151 /* Delay line internal bias settling */
152 #define     CY_PM_CLK_DELAY_BIAS_SETTLE_US          (25u)
153
154
155 /* Max flash wait cycles for each device */
156 #if(CY_PSOC3)
157     #define     CY_PM_MAX_FLASH_WAIT_CYCLES        (45u)
158 #endif  /* (CY_PSOC3) */
159
160 #if(CY_PSOC5)
161     #define     CY_PM_MAX_FLASH_WAIT_CYCLES        (55u)
162 #endif  /* (CY_PSOC5) */
163
164
165 /*******************************************************************************
166 * This marco is used to obtain the CPU frequency in MHz. It should be only used
167 * when the clock distribution system is prepared for the low power mode entry.
168 * This macro is silicon dependent as PSoC 5 devices have no CPU clock divider
169 * and PSoC 3 devices have different placement of the CPU clock divider register
170 * bitfield.
171 *******************************************************************************/
172 #if(CY_PSOC3)
173     #define CY_PM_GET_CPU_FREQ_MHZ \
174                             ((uint32)(cyPmImoFreqReg2Mhz[CY_PM_FASTCLK_IMO_CR_REG & CY_PM_FASTCLK_IMO_CR_FREQ_MASK]) / \
175                             ((uint8)(((CY_PM_CLKDIST_MSTR1_REG & CY_PM_CLKDIST_CPU_DIV_MASK) >> 4u) + 1u)))
176 #endif  /* (CY_PSOC3) */
177
178 #if(CY_PSOC5)
179
180     /* The CPU clock is directly derived from bus clock */
181     #define     CY_PM_GET_CPU_FREQ_MHZ (cyPmImoFreqReg2Mhz[CY_PM_FASTCLK_IMO_CR_REG & CY_PM_FASTCLK_IMO_CR_FREQ_MASK])
182
183 #endif  /* (CY_PSOC5) */
184
185
186 /*******************************************************************************
187 * The low power mode entry is different for PSoC 3 and PSoC 5 devices. The low
188 * power modes in PSoC 5 devices are invoked by Wait-For-Interrupt (WFI)
189 * instruction. The ARM compilers has __wfi() instristic that inserts a WFI
190 * instruction into the instruction stream generated by the compiler. The GCC
191 * compiler has to execute assembly language instruction.
192 *******************************************************************************/
193 #if(CY_PSOC5)
194
195     #if defined(__ARMCC_VERSION)    /* Instristic for Keil compilers */
196         #define CY_PM_WFI       __wfi()
197     #else   /* ASM for GCC & IAR */
198         #define CY_PM_WFI       asm volatile ("WFI \n")
199     #endif /* (__ARMCC_VERSION) */
200
201 #else
202
203     #define CY_PM_WFI           CY_NOP
204
205 #endif /* (CY_PSOC5) */
206
207
208 /*******************************************************************************
209 * Macro for the wakeupTime argument of the CyPmAltAct() function. The FTW should
210 * be programmed manually for non PSoC 3 devices.
211 *******************************************************************************/
212 #if(CY_PSOC3)
213
214     #define PM_ALT_ACT_FTW_INTERVAL(x)  ((uint8)((x) - CY_PM_FTW_INTERVAL_SHIFT))
215
216 #endif  /* (CY_PSOC3) */
217
218
219 /*******************************************************************************
220 * This macro defines the IMO frequency that will be set by CyPmSaveClocks()
221 * function based on Enable Fast IMO during Startup option from the DWR file.
222 * The CyPmSleep()/CyPmHibernate() will set IMO 12 MHz just before entering
223 * low power mode and restore IMO back to the value set by CyPmSaveClocks()
224 * immediately on wakeup.
225 *******************************************************************************/
226
227 /* Enable Fast IMO during Startup - enabled */
228 #if(1u == CYDEV_CONFIGURATION_IMOENABLED)
229
230     /* IMO will be configured to 48 MHz */
231     #define CY_PM_IMO_FREQ_LPM      (CY_IMO_FREQ_48MHZ)
232
233 #else
234
235     /* IMO will be configured to 12 MHz */
236     #define CY_PM_IMO_FREQ_LPM      (CY_IMO_FREQ_12MHZ)
237
238 #endif  /* (1u == CYDEV_CONFIGURATION_IMOENABLED) */
239
240
241 typedef struct cyPmClockBackupStruct
242 {
243     /* CyPmSaveClocks()/CyPmRestoreClocks() */
244     uint8  enClkA;              /* Analog clocks enable         */
245     uint8  enClkD;              /* Digital clocks enable        */
246     uint8  masterClkSrc;        /* The Master clock source      */
247     uint8  imoFreq;             /* IMO frequency (reg's value)  */
248     uint8  imoUsbClk;           /* IMO USB CLK (reg's value)    */
249     uint8  flashWaitCycles;     /* Flash wait cycles            */
250     uint8  imoEnable;           /* IMO enable in Active mode    */
251     uint8  imoClkSrc;           /* The IMO output               */
252     uint8  clkImoSrc;
253     uint8  imo2x;               /* IMO doubler enable state     */
254     uint8  clkSyncDiv;          /* Master clk divider           */
255     uint16 clkBusDiv;           /* The clk_bus divider          */
256     uint8  pllEnableState;      /* PLL enable state             */
257     uint8  xmhzEnableState;     /* XM HZ enable state           */
258     uint8  clkDistDelay;        /* Delay for clk_bus and ACLKs  */
259
260 } CY_PM_CLOCK_BACKUP_STRUCT;
261
262
263 typedef struct cyPmBackupStruct
264 {
265     uint8 iloPowerMode;         /* ILO power mode           */
266     uint8 ilo1kEnable;          /* ILO 1K enable state      */
267     uint8 ilo100kEnable;        /* ILO 100K enable state    */
268
269     uint8 slpTrBypass;          /* Sleep Trim Bypass        */
270
271     #if(CY_PSOC3)
272
273         uint8 swvClkEnabled;    /* SWV clock enable state   */
274         uint8 prt1Dm;           /* Ports drive mode configuration */
275         uint8 hardwareBuzz;
276
277     #endif  /* (CY_PSOC3)  */
278
279     uint8 wakeupCfg0;       /* Wake up configuration 0  */
280     uint8 wakeupCfg1;       /* Wake up configuration 1  */
281     uint8 wakeupCfg2;       /* Wake up configuration 2  */
282
283     uint8 wakeupTrim0;
284     uint8 wakeupTrim1;
285
286     uint8 scctData[28u];   /* SC/CT routing registers  */
287
288     /* CyPmHviLviSaveDisable()/CyPmHviLviRestore() */
289     uint8 lvidEn;
290     uint8 lvidTrip;
291     uint8 lviaEn;
292     uint8 lviaTrip;
293     uint8 hviaEn;
294     uint8 lvidRst;
295     uint8 lviaRst;
296
297     uint8 imoActFreq;       /* Last moment IMO change   */
298     uint8 imoActFreq12Mhz;  /* 12 MHz or not            */
299
300     uint8 boostRefExt;      /* Boost reference selection */
301
302 } CY_PM_BACKUP_STRUCT;
303
304
305 /***************************************
306 * Registers
307 ***************************************/
308
309 /* Power Mode Wakeup Trim Register 1 */
310 #define CY_PM_PWRSYS_WAKE_TR1_REG           (* (reg8 *) CYREG_PWRSYS_WAKE_TR1 )
311 #define CY_PM_PWRSYS_WAKE_TR1_PTR           (  (reg8 *) CYREG_PWRSYS_WAKE_TR1 )
312
313 /* Master clock Divider Value Register */
314 #define CY_PM_CLKDIST_MSTR0_REG             (* (reg8 *) CYREG_CLKDIST_MSTR0 )
315 #define CY_PM_CLKDIST_MSTR0_PTR             (  (reg8 *) CYREG_CLKDIST_MSTR0 )
316
317 /* Master Clock Configuration Register/CPU Divider Value */
318 #define CY_PM_CLKDIST_MSTR1_REG             (* (reg8 *) CYREG_CLKDIST_MSTR1 )
319 #define CY_PM_CLKDIST_MSTR1_PTR             (  (reg8 *) CYREG_CLKDIST_MSTR1 )
320
321 /* Clock distribution configuration Register */
322 #define CY_PM_CLKDIST_CR_REG                (* (reg8 *) CYREG_CLKDIST_CR )
323 #define CY_PM_CLKDIST_CR_PTR                (  (reg8 *) CYREG_CLKDIST_CR )
324
325 /* CLK_BUS LSB Divider Value Register */
326 #define CY_PM_CLK_BUS_LSB_DIV_REG           (* (reg8 *) CYREG_CLKDIST_BCFG0 )
327 #define CY_PM_CLK_BUS_LSB_DIV_PTR           (  (reg8 *) CYREG_CLKDIST_BCFG0 )
328
329 /* CLK_BUS MSB Divider Value Register */
330 #define CY_PM_CLK_BUS_MSB_DIV_REG           (* (reg8 *) CYREG_CLKDIST_BCFG1 )
331 #define CY_PM_CLK_BUS_MSB_DIV_PTR           (  (reg8 *) CYREG_CLKDIST_BCFG1 )
332
333 /* CLK_BUS Configuration Register */
334 #define CLK_BUS_CFG_REG                     (* (reg8 *) CYREG_CLKDIST_BCFG2 )
335 #define CLK_BUS_CFG_PTR                     (  (reg8 *) CYREG_CLKDIST_BCFG2 )
336
337 /* Power Mode Control/Status Register */
338 #define CY_PM_MODE_CSR_REG                  (* (reg8 *) CYREG_PM_MODE_CSR )
339 #define CY_PM_MODE_CSR_PTR                  (  (reg8 *) CYREG_PM_MODE_CSR )
340
341 /* Power System Control Register 1 */
342 #define CY_PM_PWRSYS_CR1_REG                (* (reg8 *) CYREG_PWRSYS_CR1 )
343 #define CY_PM_PWRSYS_CR1_PTR                (  (reg8 *) CYREG_PWRSYS_CR1 )
344
345 /* Power System Control Register 0 */
346 #define CY_PM_PWRSYS_CR0_REG                (* (reg8 *) CYREG_PWRSYS_CR0 )
347 #define CY_PM_PWRSYS_CR0_PTR                (  (reg8 *) CYREG_PWRSYS_CR0 )
348
349 /* Internal Low-speed Oscillator Control Register 0 */
350 #define CY_PM_SLOWCLK_ILO_CR0_REG           (* (reg8 *) CYREG_SLOWCLK_ILO_CR0 )
351 #define CY_PM_SLOWCLK_ILO_CR0_PTR           (  (reg8 *) CYREG_SLOWCLK_ILO_CR0 )
352
353 /* External 32kHz Crystal Oscillator Control Register */
354 #define CY_PM_SLOWCLK_X32_CR_REG            (* (reg8 *) CYREG_SLOWCLK_X32_CR )
355 #define CY_PM_SLOWCLK_X32_CR_PTR            (  (reg8 *) CYREG_SLOWCLK_X32_CR )
356
357 #if(CY_PSOC3)
358
359     /* MLOGIC Debug Register */
360     #define CY_PM_MLOGIC_DBG_REG            (* (reg8 *) CYREG_MLOGIC_DEBUG )
361     #define CY_PM_MLOGIC_DBG_PTR            (  (reg8 *) CYREG_MLOGIC_DEBUG )
362
363     /* Port Pin Configuration Register */
364     #define CY_PM_PRT1_PC3_REG              (* (reg8 *) CYREG_PRT1_PC3 )
365     #define CY_PM_PRT1_PC3_PTR              (  (reg8 *) CYREG_PRT1_PC3 )
366
367 #endif /* (CY_PSOC3) */
368
369
370 /* Sleep Regulator Trim Register */
371 #define CY_PM_PWRSYS_SLP_TR_REG         (* (reg8 *) CYREG_PWRSYS_SLP_TR )
372 #define CY_PM_PWRSYS_SLP_TR_PTR         (  (reg8 *) CYREG_PWRSYS_SLP_TR )
373
374
375 /* Reset System Control Register */
376 #define CY_PM_RESET_CR1_REG                 (* (reg8 *) CYREG_RESET_CR1 )
377 #define CY_PM_RESET_CR1_PTR                 (  (reg8 *) CYREG_RESET_CR1 )
378
379 /* Power Mode Wakeup Trim Register 0 */
380 #define CY_PM_PWRSYS_WAKE_TR0_REG           (* (reg8 *) CYREG_PWRSYS_WAKE_TR0 )
381 #define CY_PM_PWRSYS_WAKE_TR0_PTR           (  (reg8 *) CYREG_PWRSYS_WAKE_TR0 )
382
383 #if(CY_PSOC3)
384
385     /* Power Mode Wakeup Trim Register 2 */
386     #define CY_PM_PWRSYS_WAKE_TR2_REG           (* (reg8 *) CYREG_PWRSYS_WAKE_TR2 )
387     #define CY_PM_PWRSYS_WAKE_TR2_PTR           (  (reg8 *) CYREG_PWRSYS_WAKE_TR2 )
388
389 #endif  /* (CY_PSOC3) */
390
391 /* Power Manager Interrupt Status Register */
392 #define CY_PM_INT_SR_REG                    (* (reg8 *) CYREG_PM_INT_SR )
393 #define CY_PM_INT_SR_PTR                    (  (reg8 *) CYREG_PM_INT_SR )
394
395 /* Active Power Mode Configuration Register 0 */
396 #define CY_PM_ACT_CFG0_REG                  (* (reg8 *) CYREG_PM_ACT_CFG0 )
397 #define CY_PM_ACT_CFG0_PTR                  (  (reg8 *) CYREG_PM_ACT_CFG0 )
398
399 /* Active Power Mode Configuration Register 1 */
400 #define CY_PM_ACT_CFG1_REG                  (* (reg8 *) CYREG_PM_ACT_CFG1 )
401 #define CY_PM_ACT_CFG1_PTR                  (  (reg8 *) CYREG_PM_ACT_CFG1 )
402
403 /* Active Power Mode Configuration Register 2 */
404 #define CY_PM_ACT_CFG2_REG                  (* (reg8 *) CYREG_PM_ACT_CFG2 )
405 #define CY_PM_ACT_CFG2_PTR                  (  (reg8 *) CYREG_PM_ACT_CFG2 )
406
407 /* Boost Control 1 */
408 #define CY_PM_BOOST_CR1_REG                 (* (reg8 *) CYREG_BOOST_CR1 )
409 #define CY_PM_BOOST_CR1_PTR                 (  (reg8 *) CYREG_BOOST_CR1 )
410
411 /* Timewheel Configuration Register 0 */
412 #define CY_PM_TW_CFG0_REG                   (* (reg8 *) CYREG_PM_TW_CFG0 )
413 #define CY_PM_TW_CFG0_PTR                   (  (reg8 *) CYREG_PM_TW_CFG0 )
414
415 /* Timewheel Configuration Register 1 */
416 #define CY_PM_TW_CFG1_REG                   (* (reg8 *) CYREG_PM_TW_CFG1 )
417 #define CY_PM_TW_CFG1_PTR                   (  (reg8 *) CYREG_PM_TW_CFG1 )
418
419 /* Timewheel Configuration Register 2 */
420 #define CY_PM_TW_CFG2_REG                   (* (reg8 *) CYREG_PM_TW_CFG2 )
421 #define CY_PM_TW_CFG2_PTR                   (  (reg8 *) CYREG_PM_TW_CFG2 )
422
423 /* PLL Status Register */
424 #define CY_PM_FASTCLK_PLL_SR_REG            (*(reg8 *) CYREG_FASTCLK_PLL_SR )
425 #define CY_PM_FASTCLK_PLL_SR_PTR            ( (reg8 *) CYREG_FASTCLK_PLL_SR )
426
427 /* Internal Main Oscillator Control Register */
428 #define CY_PM_FASTCLK_IMO_CR_REG            (* (reg8 *) CYREG_FASTCLK_IMO_CR )
429 #define CY_PM_FASTCLK_IMO_CR_PTR            (  (reg8 *) CYREG_FASTCLK_IMO_CR )
430
431 /* PLL Configuration Register */
432 #define CY_PM_FASTCLK_PLL_CFG0_REG          (* (reg8 *) CYREG_FASTCLK_PLL_CFG0 )
433 #define CY_PM_FASTCLK_PLL_CFG0_PTR          (  (reg8 *) CYREG_FASTCLK_PLL_CFG0 )
434
435 /* External 4-33 MHz Crystal Oscillator Status and Control Register */
436 #define CY_PM_FASTCLK_XMHZ_CSR_REG          (* (reg8 *) CYREG_FASTCLK_XMHZ_CSR )
437 #define CY_PM_FASTCLK_XMHZ_CSR_PTR          (  (reg8 *) CYREG_FASTCLK_XMHZ_CSR )
438
439 /* Delay block Configuration Register */
440 #define CY_PM_CLKDIST_DELAY_REG             (* (reg8 *) CYREG_CLKDIST_DLY1 )
441 #define CY_PM_CLKDIST_DELAY_PTR             (  (reg8 *) CYREG_CLKDIST_DLY1 )
442
443
444 #if(CY_PSOC3)
445
446     /* Cache Control Register */
447     #define CY_PM_CACHE_CR_REG              (* (reg8 *) CYREG_CACHE_CR )
448     #define CY_PM_CACHE_CR_PTR              (  (reg8 *) CYREG_CACHE_CR )
449
450 #else   /* Device is PSoC 5 */
451
452     /* Cache Control Register */
453     #define CY_PM_CACHE_CR_REG              (* (reg8 *) CYREG_CACHE_CC_CTL )
454     #define CY_PM_CACHE_CR_PTR              (  (reg8 *) CYREG_CACHE_CC_CTL )
455
456 #endif  /* (CY_PSOC3) */
457
458
459 /* Power Mode Wakeup Mask Configuration Register 0 */
460 #define CY_PM_WAKEUP_CFG0_REG           (* (reg8 *) CYREG_PM_WAKEUP_CFG0 )
461 #define CY_PM_WAKEUP_CFG0_PTR           (  (reg8 *) CYREG_PM_WAKEUP_CFG0 )
462
463 /* Power Mode Wakeup Mask Configuration Register 1 */
464 #define CY_PM_WAKEUP_CFG1_REG           (* (reg8 *) CYREG_PM_WAKEUP_CFG1 )
465 #define CY_PM_WAKEUP_CFG1_PTR           (  (reg8 *) CYREG_PM_WAKEUP_CFG1 )
466
467 /* Power Mode Wakeup Mask Configuration Register 2 */
468 #define CY_PM_WAKEUP_CFG2_REG           (* (reg8 *) CYREG_PM_WAKEUP_CFG2 )
469 #define CY_PM_WAKEUP_CFG2_PTR           (  (reg8 *) CYREG_PM_WAKEUP_CFG2 )
470
471 /* Boost Control 2 */
472 #define CY_PM_BOOST_CR2_REG           (* (reg8 *) CYREG_BOOST_CR2 )
473 #define CY_PM_BOOST_CR2_PTR           (  (reg8 *) CYREG_BOOST_CR2 )
474
475
476 /***************************************
477 * Register Constants
478 ***************************************/
479
480 /* Internal Main Oscillator Control Register */
481
482 #define CY_PM_FASTCLK_IMO_CR_FREQ_MASK  (0x07u)    /* IMO frequency mask    */
483 #define CY_PM_FASTCLK_IMO_CR_FREQ_12MHZ (0x00u)    /* IMO frequency 12 MHz  */
484 #define CY_PM_FASTCLK_IMO_CR_F2XON      (0x10u)    /* IMO doubler enable    */
485 #define CY_PM_FASTCLK_IMO_CR_USB        (0x40u)    /* IMO is in USB mode    */
486
487 #define CY_PM_MASTER_CLK_SRC_IMO        (0u)
488 #define CY_PM_MASTER_CLK_SRC_PLL        (1u)
489 #define CY_PM_MASTER_CLK_SRC_XTAL       (2u)
490 #define CY_PM_MASTER_CLK_SRC_DSI        (3u)
491 #define CY_PM_MASTER_CLK_SRC_MASK       (3u)
492
493 #define CY_PM_PLL_CFG0_ENABLE           (0x01u)     /* PLL enable             */
494 #define CY_PM_PLL_STATUS_LOCK           (0x01u)     /* PLL Lock Status        */
495 #define CY_PM_XMHZ_CSR_ENABLE           (0x01u)     /* Enable X MHz OSC       */
496 #define CY_PM_XMHZ_CSR_XERR             (0x80u)     /* High indicates failure */
497 #define CY_PM_BOOST_ENABLE              (0x08u)     /* Boost enable           */
498 #define CY_PM_ILO_CR0_EN_1K             (0x02u)     /* Enable 1kHz ILO        */
499 #define CY_PM_ILO_CR0_EN_100K           (0x04u)     /* Enable 100kHz ILO      */
500 #define CY_PM_ILO_CR0_PD_MODE           (0x10u)     /* Power down mode for ILO*/
501 #define CY_PM_X32_CR_X32EN              (0x01u)     /* Enable 32kHz OSC       */
502
503 #define CY_PM_CTW_IE                    (0x08u)     /* CTW interrupt enable   */
504 #define CY_PM_CTW_EN                    (0x04u)     /* CTW enable             */
505 #define CY_PM_FTW_IE                    (0x02u)     /* FTW interrupt enable   */
506 #define CY_PM_FTW_EN                    (0x01u)     /* FTW enable             */
507 #define CY_PM_1PPS_EN                   (0x10u)     /* 1PPS enable            */
508 #define CY_PM_1PPS_IE                   (0x20u)     /* 1PPS interrupt enable  */
509
510
511 #define CY_PM_ACT_EN_CLK_A_MASK         (0x0Fu)
512 #define CY_PM_ACT_EN_CLK_D_MASK         (0xFFu)
513
514 #define CY_PM_DIV_BY_ONE                (0x00u)
515
516 /* Internal Main Oscillator Control Register */
517 #define CY_PM_FASTCLK_IMO_CR_XCLKEN     (0x20u)
518
519 /* Clock distribution configuration Register */
520 #define CY_PM_CLKDIST_IMO_OUT_MASK      (0x30u)
521 #define CY_PM_CLKDIST_IMO_OUT_IMO       (0x00u)
522 #define CY_PM_CLKDIST_IMO2X_SRC         (0x40u)
523
524 /* Waiting for the hibernate/sleep regulator to stabilize */
525 #define CY_PM_MODE_CSR_PWRUP_PULSE_Q    (0x08u)
526
527 #define CY_PM_MODE_CSR_ACTIVE           (0x00u)     /* Active power mode      */
528 #define CY_PM_MODE_CSR_ALT_ACT          (0x01u)     /* Alternate Active power */
529 #define CY_PM_MODE_CSR_SLEEP            (0x03u)     /* Sleep power mode       */
530 #define CY_PM_MODE_CSR_HIBERNATE        (0x04u)     /* Hibernate power mode   */
531 #define CY_PM_MODE_CSR_MASK             (0x07u)
532
533 /* I2C regulator backup enable */
534 #define CY_PM_PWRSYS_CR1_I2CREG_BACKUP  (0x04u)
535
536 /* When set, prepares the system to disable the LDO-A */
537 #define CY_PM_PWRSYS_CR1_LDOA_ISO       (0x01u)
538
539 /* When set, disables the analog LDO regulator */
540 #define CY_PM_PWRSYS_CR1_LDOA_DIS       (0x02u)
541
542 #define CY_PM_PWRSYS_WAKE_TR2_VCCD_CLK_DET  (0x04u)
543
544 #define CY_PM_FTW_INT                   (0x01u)     /* FTW event has occured  */
545 #define CY_PM_CTW_INT                   (0x02u)     /* CTW event has occured  */
546 #define CY_PM_ONEPPS_INT                (0x04u)     /* 1PPS event has occured */
547
548 /* Active Power Mode Configuration Register 0 */
549 #define CY_PM_ACT_CFG0_IMO              (0x10u)     /* IMO enable in Active */
550
551 /* Cache Control Register (same mask for all device revisions) */
552 #define CY_PM_CACHE_CR_CYCLES_MASK      (0xC0u)
553
554 /* Bus Clock divider to divide-by-one */
555 #define CY_PM_BUS_CLK_DIV_BY_ONE        (0x00u)
556
557 /* HVI/LVI feature on the external analog and digital supply mask */
558 #define CY_PM_RESET_CR1_HVI_LVI_EN_MASK (0x07u)
559
560 /* The high-voltage-interrupt feature on the external analog supply */
561 #define CY_PM_RESET_CR1_HVIA_EN         (0x04u)
562
563 /* The low-voltage-interrupt feature on the external analog supply */
564 #define CY_PM_RESET_CR1_LVIA_EN         (0x02u)
565
566 /* The low-voltage-interrupt feature on the external digital supply */
567 #define CY_PM_RESET_CR1_LVID_EN         (0x01u)
568
569 /* Allows the system to program delays on clk_sync_d */
570 #define CY_PM_CLKDIST_DELAY_EN          (0x04u)
571
572
573 #define CY_PM_WAKEUP_SRC_CMPS_MASK      (0x000Fu)
574
575 /* Holdoff mask sleep trim */
576 #define CY_PM_PWRSYS_SLP_TR_HIBSLP_HOLDOFF_MASK     (0x1Fu)
577
578 #if(CY_PSOC3)
579
580     /* CPU clock divider mask */
581     #define CY_PM_CLKDIST_CPU_DIV_MASK          (0xF0u)
582
583     /* Serial Wire View (SWV) clock enable */
584     #define CY_PM_MLOGIC_DBG_SWV_CLK_EN         (0x04u)
585
586     /* Port drive mode */
587     #define CY_PM_PRT1_PC3_DM_MASK              (0xf1u)
588
589     /* Mode 6, stong pull-up, strong pull-down */
590     #define CY_PM_PRT1_PC3_DM_STRONG            (0x0Cu)
591
592     /* When set, enables buzz wakeups */
593     #define CY_PM_PWRSYS_WAKE_TR2_EN_BUZZ       (0x01u)
594
595 #endif  /* (CY_PSOC3) */
596
597
598 /* Disable the sleep regulator and shorts vccd to vpwrsleep */
599 #define CY_PM_PWRSYS_SLP_TR_BYPASS          (0x10u)
600
601 /* Boost Control 2: Select external precision reference */
602 #define CY_PM_BOOST_CR2_EREFSEL_EXT     (0x08u)
603
604 #if(CY_PSOC3)
605
606     #define CY_PM_PWRSYS_WAKE_TR0       (0xFFu)
607     #define CY_PM_PWRSYS_WAKE_TR1       (0x90u)
608
609 #endif  /* (CY_PSOC3) */
610
611 #if(CY_PSOC5)
612
613     #define CY_PM_PWRSYS_WAKE_TR0       (0xFFu)
614     #define CY_PM_PWRSYS_WAKE_TR1       (0xB0u)
615
616 #endif  /* (CY_PSOC5) */
617
618
619 /*******************************************************************************
620 * Following code are OBSOLETE and must not be used starting from cy_boot 3.30
621 *******************************************************************************/
622 #if(CY_PSOC3)
623
624     /* Was removed as redundant */
625     #define CY_PM_FTW_INTERVAL_MASK    (0xFFu)
626
627 #endif  /* (CY_PSOC3) */
628
629 /* Was removed as redundant */
630 #define CY_PM_CTW_INTERVAL_MASK         (0x0Fu)
631
632 #endif  /* (CY_BOOT_CYPM_H) */
633
634
635 /* [] END OF FILE */