]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_M4_SimpleLink_CC3220SF_CCS/ti/devices/cc32xx/driverlib/prcm.h
Add SimpleLink CC3220SF demo.
[freertos] / FreeRTOS / Demo / CORTEX_M4_SimpleLink_CC3220SF_CCS / ti / devices / cc32xx / driverlib / prcm.h
1 /*
2  * -------------------------------------------
3  *    CC3220 SDK - v0.10.00.00 
4  * -------------------------------------------
5  *
6  *  Copyright (C) 2015 Texas Instruments Incorporated - http://www.ti.com/ 
7  *  
8  *  Redistribution and use in source and binary forms, with or without 
9  *  modification, are permitted provided that the following conditions 
10  *  are met:
11  *
12  *    Redistributions of source code must retain the above copyright 
13  *    notice, this list of conditions and the following disclaimer.
14  *
15  *    Redistributions in binary form must reproduce the above copyright
16  *    notice, this list of conditions and the following disclaimer in the 
17  *    documentation and/or other materials provided with the   
18  *    distribution.
19  *
20  *    Neither the name of Texas Instruments Incorporated nor the names of
21  *    its contributors may be used to endorse or promote products derived
22  *    from this software without specific prior written permission.
23  *
24  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
25  *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
26  *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
27  *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
28  *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
29  *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
30  *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
31  *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
32  *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
33  *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
34  *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35  *  
36  */
37 //*****************************************************************************
38 //
39 //  prcm.h
40 //
41 //  Prototypes for the PRCM control driver.
42 //
43 //*****************************************************************************
44
45 #ifndef __PRCM_H__
46 #define __PRCM_H__
47
48 //*****************************************************************************
49 //
50 // If building with a C++ compiler, make all of the definitions in this header
51 // have a C binding.
52 //
53 //*****************************************************************************
54 #ifdef __cplusplus
55 extern "C"
56 {
57 #endif
58
59 //*****************************************************************************
60 //
61 // Peripheral clock and reset control registers
62 //
63 //*****************************************************************************
64 typedef struct _PRCM_PeripheralRegs_
65 {
66
67 unsigned long ulClkReg;
68 unsigned long ulRstReg;
69
70 }PRCM_PeriphRegs_t;
71
72 //*****************************************************************************
73 // Values that can be passed to PRCMPeripheralEnable() and
74 // PRCMPeripheralDisable()
75 //*****************************************************************************
76 #define PRCM_RUN_MODE_CLK         0x00000001
77 #define PRCM_SLP_MODE_CLK         0x00000100
78
79 //*****************************************************************************
80 // Values that can be passed to PRCMSRAMRetentionEnable() and
81 // PRCMSRAMRetentionDisable() as ulSramColSel.
82 //*****************************************************************************
83 #define PRCM_SRAM_COL_1           0x00000001
84 #define PRCM_SRAM_COL_2           0x00000002
85 #define PRCM_SRAM_COL_3           0x00000004
86 #define PRCM_SRAM_COL_4           0x00000008
87
88 //*****************************************************************************
89 // Values that can be passed to PRCMSRAMRetentionEnable() and
90 // PRCMSRAMRetentionDisable() as ulModeFlags.
91 //*****************************************************************************
92 #define PRCM_SRAM_LPDS_RET        0x00000002
93
94 //*****************************************************************************
95 // Values that can be passed to PRCMLPDSWakeupSourceEnable(),
96 // PRCMLPDSWakeupCauseGet() and PRCMLPDSWakeupSourceDisable().
97 //*****************************************************************************
98 #define PRCM_LPDS_HOST_IRQ        0x00000080
99 #define PRCM_LPDS_GPIO            0x00000010
100 #define PRCM_LPDS_TIMER           0x00000001
101
102 //*****************************************************************************
103 // Values that can be passed to PRCMLPDSWakeUpGPIOSelect() as Type
104 //*****************************************************************************
105 #define PRCM_LPDS_LOW_LEVEL       0x00000002
106 #define PRCM_LPDS_HIGH_LEVEL      0x00000000
107 #define PRCM_LPDS_FALL_EDGE       0x00000001
108 #define PRCM_LPDS_RISE_EDGE       0x00000003
109
110 //*****************************************************************************
111 // Values that can be passed to PRCMLPDSWakeUpGPIOSelect()
112 //*****************************************************************************
113 #define PRCM_LPDS_GPIO2           0x00000000
114 #define PRCM_LPDS_GPIO4           0x00000001
115 #define PRCM_LPDS_GPIO13          0x00000002
116 #define PRCM_LPDS_GPIO17          0x00000003
117 #define PRCM_LPDS_GPIO11          0x00000004
118 #define PRCM_LPDS_GPIO24          0x00000005
119 #define PRCM_LPDS_GPIO26          0x00000006
120
121 //*****************************************************************************
122 // Values that can be passed to PRCMHibernateWakeupSourceEnable(),
123 // PRCMHibernateWakeupSourceDisable().
124 //*****************************************************************************
125 #define PRCM_HIB_SLOW_CLK_CTR     0x00000001
126
127 //*****************************************************************************
128 // Values that can be passed to PRCMHibernateWakeUpGPIOSelect() as ulType
129 //*****************************************************************************
130 #define PRCM_HIB_LOW_LEVEL        0x00000000
131 #define PRCM_HIB_HIGH_LEVEL       0x00000001
132 #define PRCM_HIB_FALL_EDGE        0x00000002
133 #define PRCM_HIB_RISE_EDGE        0x00000003
134
135 //*****************************************************************************
136 // Values that can be passed to PRCMHibernateWakeupSourceEnable(),
137 // PRCMHibernateWakeupSourceDisable(), PRCMHibernateWakeUpGPIOSelect()
138 //*****************************************************************************
139 #define PRCM_HIB_GPIO2            0x00010000
140 #define PRCM_HIB_GPIO4            0x00020000
141 #define PRCM_HIB_GPIO13           0x00040000
142 #define PRCM_HIB_GPIO17           0x00080000
143 #define PRCM_HIB_GPIO11           0x00100000
144 #define PRCM_HIB_GPIO24           0x00200000
145 #define PRCM_HIB_GPIO26           0x00400000
146
147 //*****************************************************************************
148 // Values that will be returned from PRCMSysResetCauseGet().
149 //*****************************************************************************
150 #define PRCM_POWER_ON             0x00000000
151 #define PRCM_LPDS_EXIT            0x00000001
152 #define PRCM_CORE_RESET           0x00000003
153 #define PRCM_MCU_RESET            0x00000004
154 #define PRCM_WDT_RESET            0x00000005
155 #define PRCM_SOC_RESET            0x00000006
156 #define PRCM_HIB_EXIT             0x00000007
157
158 //*****************************************************************************
159 // Values that can be passed to PRCMHibernateWakeupCauseGet().
160 //*****************************************************************************
161 #define PRCM_HIB_WAKEUP_CAUSE_SLOW_CLOCK  0x00000002
162 #define PRCM_HIB_WAKEUP_CAUSE_GPIO        0x00000004
163
164 //*****************************************************************************
165 // Values that can be passed to PRCMSEnableInterrupt
166 //*****************************************************************************
167 #define PRCM_INT_SLOW_CLK_CTR     0x00004000
168
169 //*****************************************************************************
170 // Values that can be passed to PRCMPeripheralClkEnable(),
171 // PRCMPeripheralClkDisable(), PRCMPeripheralReset()
172 //*****************************************************************************
173 #define PRCM_CAMERA               0x00000000
174 #define PRCM_I2S                  0x00000001
175 #define PRCM_SDHOST               0x00000002
176 #define PRCM_GSPI                 0x00000003
177 #define PRCM_LSPI                 0x00000004
178 #define PRCM_UDMA                 0x00000005
179 #define PRCM_GPIOA0               0x00000006
180 #define PRCM_GPIOA1               0x00000007
181 #define PRCM_GPIOA2               0x00000008
182 #define PRCM_GPIOA3               0x00000009
183 #define PRCM_GPIOA4               0x0000000A
184 #define PRCM_WDT                  0x0000000B
185 #define PRCM_UARTA0               0x0000000C
186 #define PRCM_UARTA1               0x0000000D
187 #define PRCM_TIMERA0              0x0000000E
188 #define PRCM_TIMERA1              0x0000000F
189 #define PRCM_TIMERA2              0x00000010
190 #define PRCM_TIMERA3              0x00000011
191 #define PRCM_DTHE                 0x00000012
192 #define PRCM_SSPI                 0x00000013
193 #define PRCM_I2CA0                0x00000014
194 // Note : PRCM_ADC is a dummy define for pinmux utility code generation
195 // PRCM_ADC should never be used in any user code.
196 #define PRCM_ADC                  0x000000FF
197
198
199 //*****************************************************************************
200 // Values that can be passed to PRCMIORetEnable() and PRCMIORetDisable()
201 //*****************************************************************************
202 #define PRCM_IO_RET_GRP_0       0x00000001
203 #define PRCM_IO_RET_GRP_1       0x00000002
204 #define PRCM_IO_RET_GRP_2       0x00000004
205 #define PRCM_IO_RET_GRP_3       0x00000008
206
207 //*****************************************************************************
208 // Macros definig the device type
209 //*****************************************************************************
210 #define PRCM_DEV_TYPE_FLAG_R         0x00000001
211 #define PRCM_DEV_TYPE_FLAG_F         0x00000002
212 #define PRCM_DEV_TYPE_FLAG_Z         0x00000004
213 #define PRCM_DEV_TYPE_FLAG_SECURE    0x00000008
214 #define PRCM_DEV_TYPE_FLAG_PRE_PROD  0x00000010
215 #define PRCM_DEV_TYPE_FLAG_3200      0x00000020
216 #define PRCM_DEV_TYPE_FLAG_3220      0x00000040
217 #define PRCM_DEV_TYPE_FLAG_REV1      0x00010000
218 #define PRCM_DEV_TYPE_FLAG_REV2      0x00020000
219
220 //*****************************************************************************
221 // Pre-defined helper macros
222 //*****************************************************************************
223 #define PRCM_DEV_TYPE_PRE_CC3200R    (PRCM_DEV_TYPE_FLAG_PRE_PROD| \
224                                       PRCM_DEV_TYPE_FLAG_3200|     \
225                                       PRCM_DEV_TYPE_FLAG_R)
226
227 #define PRCM_DEV_TYPE_PRE_CC3200F    (PRCM_DEV_TYPE_FLAG_PRE_PROD| \
228                                       PRCM_DEV_TYPE_FLAG_3200|     \
229                                       PRCM_DEV_TYPE_FLAG_F)
230
231 #define PRCM_DEV_TYPE_PRE_CC3200Z    (PRCM_DEV_TYPE_FLAG_PRE_PROD| \
232                                       PRCM_DEV_TYPE_FLAG_3200|     \
233                                       PRCM_DEV_TYPE_FLAG_Z)
234
235 #define PRCM_DEV_TYPE_CC3200R        (PRCM_DEV_TYPE_FLAG_PRE_PROD| \
236                                       PRCM_DEV_TYPE_FLAG_3200|     \
237                                       PRCM_DEV_TYPE_FLAG_R)
238
239 #define PRCM_DEV_TYPE_PRE_CC3220R    (PRCM_DEV_TYPE_FLAG_PRE_PROD| \
240                                       PRCM_DEV_TYPE_FLAG_3220|     \
241                                       PRCM_DEV_TYPE_FLAG_R)
242
243 #define PRCM_DEV_TYPE_PRE_CC3220F    (PRCM_DEV_TYPE_FLAG_PRE_PROD| \
244                                       PRCM_DEV_TYPE_FLAG_3220|     \
245                                       PRCM_DEV_TYPE_FLAG_F)
246
247 #define PRCM_DEV_TYPE_PRE_CC3220Z    (PRCM_DEV_TYPE_FLAG_PRE_PROD| \
248                                       PRCM_DEV_TYPE_FLAG_3220|     \
249                                       PRCM_DEV_TYPE_FLAG_Z)
250
251 #define PRCM_DEV_TYPE_CC3220R        (PRCM_DEV_TYPE_FLAG_3220|     \
252                                       PRCM_DEV_TYPE_FLAG_R)
253
254
255 #define PRCM_DEV_TYPE_PRE_CC3220RS   (PRCM_DEV_TYPE_FLAG_PRE_PROD| \
256                                       PRCM_DEV_TYPE_FLAG_3220|     \
257                                       PRCM_DEV_TYPE_FLAG_R|        \
258                                       PRCM_DEV_TYPE_FLAG_SECURE)
259
260 #define PRCM_DEV_TYPE_PRE_CC3220FS   (PRCM_DEV_TYPE_FLAG_PRE_PROD| \
261                                       PRCM_DEV_TYPE_FLAG_3220|     \
262                                       PRCM_DEV_TYPE_FLAG_F|        \
263                                       PRCM_DEV_TYPE_FLAG_SECURE)
264
265 #define PRCM_DEV_TYPE_PRE_CC3220ZS   (PRCM_DEV_TYPE_FLAG_PRE_PROD| \
266                                       PRCM_DEV_TYPE_FLAG_3220|     \
267                                       PRCM_DEV_TYPE_FLAG_Z|        \
268                                       PRCM_DEV_TYPE_FLAG_SECURE)
269
270 #define PRCM_DEV_TYPE_CC3220RS       (PRCM_DEV_TYPE_FLAG_3220|     \
271                                       PRCM_DEV_TYPE_FLAG_R|        \
272                                       PRCM_DEV_TYPE_FLAG_SECURE)
273
274 #define PRCM_DEV_TYPE_CC3220FS       (PRCM_DEV_TYPE_FLAG_3220|     \
275                                       PRCM_DEV_TYPE_FLAG_F|        \
276                                       PRCM_DEV_TYPE_FLAG_SECURE)
277
278
279 #define PRCM_DEV_TYPE_PRE_CC3220Z1   (PRCM_DEV_TYPE_FLAG_PRE_PROD| \
280                                       PRCM_DEV_TYPE_FLAG_3220|     \
281                                       PRCM_DEV_TYPE_FLAG_Z|        \
282                                       PRCM_DEV_TYPE_FLAG_REV1)
283
284 #define PRCM_DEV_TYPE_PRE_CC3220Z2   (PRCM_DEV_TYPE_FLAG_PRE_PROD| \
285                                       PRCM_DEV_TYPE_FLAG_3220|     \
286                                       PRCM_DEV_TYPE_FLAG_Z|        \
287                                       PRCM_DEV_TYPE_FLAG_REV2)
288
289 //*****************************************************************************
290 //
291 // API Function prototypes
292 //
293 //*****************************************************************************
294 extern void PRCMMCUReset(tBoolean bIncludeSubsystem);
295 extern unsigned long PRCMSysResetCauseGet(void);
296
297 extern void PRCMPeripheralClkEnable(unsigned long ulPeripheral,
298                                     unsigned long ulClkFlags);
299 extern void PRCMPeripheralClkDisable(unsigned long ulPeripheral,
300                                      unsigned long ulClkFlags);
301 extern void PRCMPeripheralReset(unsigned long ulPeripheral);
302 extern tBoolean PRCMPeripheralStatusGet(unsigned long ulPeripheral);
303
304 extern void PRCMI2SClockFreqSet(unsigned long ulI2CClkFreq);
305 extern unsigned long PRCMPeripheralClockGet(unsigned long ulPeripheral);
306
307 extern void PRCMSleepEnter(void);
308
309 extern void PRCMSRAMRetentionEnable(unsigned long ulSramColSel,
310                                     unsigned long ulFlags);
311 extern void PRCMSRAMRetentionDisable(unsigned long ulSramColSel,
312                                      unsigned long ulFlags);
313 extern void PRCMLPDSRestoreInfoSet(unsigned long ulRestoreSP,
314                                    unsigned long ulRestorePC);
315 extern void PRCMLPDSEnter(void);
316 extern void PRCMLPDSIntervalSet(unsigned long ulTicks);
317 extern void PRCMLPDSWakeupSourceEnable(unsigned long ulLpdsWakeupSrc);
318 extern unsigned long PRCMLPDSWakeupCauseGet(void);
319 extern void PRCMLPDSWakeUpGPIOSelect(unsigned long ulGPIOPin,
320                                      unsigned long ulType);
321 extern void PRCMLPDSWakeupSourceDisable(unsigned long ulLpdsWakeupSrc);
322
323 extern void PRCMHibernateEnter(void);
324 extern void PRCMHibernateWakeupSourceEnable(unsigned long ulHIBWakupSrc);
325 extern unsigned long PRCMHibernateWakeupCauseGet(void);
326 extern void PRCMHibernateWakeUpGPIOSelect(unsigned long ulMultiGPIOBitMap,
327                                           unsigned long ulType);
328 extern void PRCMHibernateWakeupSourceDisable(unsigned long ulHIBWakupSrc);
329 extern void PRCMHibernateIntervalSet(unsigned long long ullTicks);
330
331 extern unsigned long long PRCMSlowClkCtrGet(void);
332 extern unsigned long long PRCMSlowClkCtrFastGet(void);
333 extern void PRCMSlowClkCtrMatchSet(unsigned long long ullTicks);
334 extern unsigned long long PRCMSlowClkCtrMatchGet(void);
335
336 extern void PRCMOCRRegisterWrite(unsigned char ucIndex,
337                                  unsigned long ulRegValue);
338 extern unsigned long PRCMOCRRegisterRead(unsigned char ucIndex);
339
340 extern void PRCMIntRegister(void (*pfnHandler)(void));
341 extern void PRCMIntUnregister(void);
342 extern void PRCMIntEnable(unsigned long ulIntFlags);
343 extern void PRCMIntDisable(unsigned long ulIntFlags);
344 extern unsigned long PRCMIntStatus(void);
345 extern void PRCMRTCInUseSet(void);
346 extern tBoolean PRCMRTCInUseGet(void);
347 extern void PRCMRTCSet(unsigned long ulSecs, unsigned short usMsec);
348 extern void PRCMRTCGet(unsigned long *ulSecs, unsigned short *usMsec);
349 extern void PRCMRTCMatchSet(unsigned long ulSecs, unsigned short usMsec);
350 extern void PRCMRTCMatchGet(unsigned long *ulSecs, unsigned short *usMsec);
351 extern void PRCMCC3200MCUInit(void);
352 extern unsigned long PRCMHIBRegRead(unsigned long ulRegAddr);
353 extern void PRCMHIBRegWrite(unsigned long ulRegAddr, unsigned long ulValue);
354 extern unsigned long PRCMCameraFreqSet(unsigned char ulDivider,
355                                                 unsigned char ulWidth);
356 extern void PRCMIORetentionEnable(unsigned long ulIORetGrpFlags);
357 extern void PRCMIORetentionDisable(unsigned long ulIORetGrpFlags);
358 extern unsigned long PRCMDeviceTypeGet(void);
359 extern void PRCMLPDSEnterKeepDebugIf(void);
360 extern void PRCMHibernateCycleTrigger(void);
361
362
363 //*****************************************************************************
364 //
365 // Mark the end of the C bindings section for C++ compilers.
366 //
367 //*****************************************************************************
368 #ifdef __cplusplus
369 }
370 #endif
371
372 #endif //  __PRCM_H__