CC13xx Driver Library
rom.h
Go to the documentation of this file.
1 /******************************************************************************
2 * Filename: rom.h
3 * Revised: 2015-08-03 14:46:38 +0200 (Mon, 03 Aug 2015)
4 * Revision: 44311
5 *
6 * Description: Prototypes for the ROM utility functions.
7 *
8 * Copyright (c) 2015, Texas Instruments Incorporated
9 * All rights reserved.
10 *
11 * Redistribution and use in source and binary forms, with or without
12 * modification, are permitted provided that the following conditions are met:
13 *
14 * 1) Redistributions of source code must retain the above copyright notice,
15 * this list of conditions and the following disclaimer.
16 *
17 * 2) Redistributions in binary form must reproduce the above copyright notice,
18 * this list of conditions and the following disclaimer in the documentation
19 * and/or other materials provided with the distribution.
20 *
21 * 3) Neither the name of the ORGANIZATION nor the names of its contributors may
22 * be used to endorse or promote products derived from this software without
23 * specific prior written permission.
24 *
25 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
26 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
28 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
29 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
30 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
31 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
32 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
33 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
34 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
35 * POSSIBILITY OF SUCH DAMAGE.
36 *
37 ******************************************************************************/
38 
39 #ifndef __ROM_H__
40 #define __ROM_H__
41 
42 //*****************************************************************************
43 //
44 // If building with a C++ compiler, make all of the definitions in this header
45 // have a C binding.
46 //
47 //*****************************************************************************
48 #ifdef __cplusplus
49 extern "C"
50 {
51 #endif
52 
53 #include <inc/hw_types.h>
54 
55 #ifndef __HAPI_H__
56 #define __HAPI_H__
57 
58 //
59 // Start address of the ROM hard API access table (located after the ROM FW rev field)
60 //
61 #define ROM_HAPI_TABLE_ADDR 0x10000048
62 
63 //
64 // ROM Hard-API function interface types
65 //
66 typedef uint32_t (* FPTR_CRC32_T) ( uint8_t* /* pui8Data */,\
67  uint32_t /* ui32ByteCount */,\
68  uint32_t /* ui32RepeatCount */);
69 
70 typedef uint32_t (* FPTR_GETFLSIZE_T) ( void );
71 
72 typedef uint32_t (* FPTR_GETCHIPID_T) ( void );
73 
74 typedef uint32_t (* FPTR_RESERVED1_T) ( uint32_t );
75 
76 typedef uint32_t (* FPTR_RESERVED2_T) ( void );
77 
78 typedef uint32_t (* FPTR_RESERVED3_T) ( uint8_t* ,\
79  uint32_t ,\
80  uint32_t );
81 typedef void (* FPTR_RESETDEV_T) ( void );
82 
83 typedef uint32_t (* FPTR_FLETCHER32_T) ( uint16_t* /* pui16Data */,\
84  uint16_t /* ui16WordCount */,\
85  uint16_t /* ui16RepeatCount */);
86 
87 typedef uint32_t (* FPTR_MINVAL_T) ( uint32_t* /* ulpDataBuffer */,\
88  uint32_t /* ui32DataCount */);
89 
90 typedef uint32_t (* FPTR_MAXVAL_T) ( uint32_t* /* pui32DataBuffer */,\
91  uint32_t /* ui32DataCount */);
92 
93 typedef uint32_t (* FPTR_MEANVAL_T) ( uint32_t* /* pui32DataBuffer */,\
94  uint32_t /* ui32DataCount */);
95 
96 typedef uint32_t (* FPTR_STDDVAL_T) ( uint32_t* /* pui32DataBuffer */,\
97  uint32_t /* ui32DataCount */);
98 
99 typedef void (* FPTR_HFSOURCESAFESWITCH_T) ( void );
100 
101 typedef void (* FPTR_RESERVED4_T) ( uint32_t );
102 
103 typedef void (* FPTR_RESERVED5_T) ( uint32_t );
104 
105 typedef void (* FPTR_COMPAIN_T) ( uint8_t /* ut8Signal */);
106 
107 typedef void (* FPTR_COMPAREF_T) ( uint8_t /* ut8Signal */);
108 
109 typedef void (* FPTR_ADCCOMPBIN_T) ( uint8_t /* ut8Signal */);
110 
111 typedef void (* FPTR_COMPBREF_T) ( uint8_t /* ut8Signal */);
112 
113 extern uint32_t MemBusWrkAroundHapiProgramFlash(uint8_t *pui8DataBuffer,
114  uint32_t ui32Address,
115  uint32_t ui32Count);
116 
117 extern uint32_t MemBusWrkAroundHapiEraseSector(uint32_t ui32Address);
118 
119 //
120 // ROM Hard-API access table type
121 //
122 typedef struct
123 {
143 } HARD_API_T;
144 
145 //
146 // Pointer to the ROM HAPI table
147 //
148 #define P_HARD_API ((HARD_API_T*) ROM_HAPI_TABLE_ADDR)
149 
150 //
151 // Add wrapper around the Hapi functions needing the "bus arbitration issue" workaround
152 //
153 extern void SafeHapiAuxAdiSelect( FPTR_VOID_UINT8_T fPtr, uint8_t ut8Signal );
154 
155 #define HapiCrc32(a,b,c) P_HARD_API->Crc32(a,b,c)
156 #define HapiGetFlashSize() P_HARD_API->FlashGetSize()
157 #define HapiGetChipId() P_HARD_API->GetChipId()
158 #define HapiSectorErase(a) MemBusWrkAroundHapiEraseSector(a)
159 #define HapiProgramFlash(a,b,c) MemBusWrkAroundHapiProgramFlash(a,b,c)
160 #define HapiResetDevice() P_HARD_API->ResetDevice()
161 #define HapiFletcher32(a,b,c) P_HARD_API->Fletcher32(a,b,c)
162 #define HapiMinValue(a,b) P_HARD_API->MinValue(a,b)
163 #define HapiMaxValue(a,b) P_HARD_API->MaxValue(a,b)
164 #define HapiMeanValue(a,b) P_HARD_API->MeanValue(a,b)
165 #define HapiStandDeviationValue(a,b) P_HARD_API->StandDeviationValue(a,b)
166 #define HapiHFSourceSafeSwitch() P_HARD_API->HFSourceSafeSwitch()
167 #define HapiSelectCompAInput(a) SafeHapiAuxAdiSelect( P_HARD_API->SelectCompAInput , a )
168 #define HapiSelectCompARef(a) SafeHapiAuxAdiSelect( P_HARD_API->SelectCompARef , a )
169 #define HapiSelectADCCompBInput(a) SafeHapiAuxAdiSelect( P_HARD_API->SelectADCCompBInput, a )
170 #define HapiSelectCompBRef(a) SafeHapiAuxAdiSelect( P_HARD_API->SelectCompBRef , a )
171 
172 //
173 // Defines for input parameter to the HapiSelectCompAInput function.
174 // The define values can not be changed!
175 //
176 #define COMPA_IN_NC 0x00
177 #define COMPA_IN_AUXIO7 0x09
178 #define COMPA_IN_AUXIO6 0x0A
179 #define COMPA_IN_AUXIO5 0x0B
180 #define COMPA_IN_AUXIO4 0x0C
181 #define COMPA_IN_AUXIO3 0x0D
182 #define COMPA_IN_AUXIO2 0x0E
183 #define COMPA_IN_AUXIO1 0x0F
184 #define COMPA_IN_AUXIO0 0x10
185 
186 //
187 // Defines for input parameter to the HapiSelectCompARef function.
188 // The define values can not be changed!
189 //
190 #define COMPA_REF_NC 0x00
191 #define COMPA_REF_DCOUPL 0x01
192 #define COMPA_REF_VSS 0x02
193 #define COMPA_REF_VDDS 0x03
194 #define COMPA_REF_ADCVREFP 0x04
195 #define COMPA_REF_AUXIO7 0x09
196 #define COMPA_REF_AUXIO6 0x0A
197 #define COMPA_REF_AUXIO5 0x0B
198 #define COMPA_REF_AUXIO4 0x0C
199 #define COMPA_REF_AUXIO3 0x0D
200 #define COMPA_REF_AUXIO2 0x0E
201 #define COMPA_REF_AUXIO1 0x0F
202 #define COMPA_REF_AUXIO0 0x10
203 
204 //
205 // Defines for input parameter to the HapiSelectADCCompBInput function.
206 // The define values can not be changed!
207 //
208 #define ADC_COMPB_IN_NC 0x00
209 #define ADC_COMPB_IN_DCOUPL 0x03
210 #define ADC_COMPB_IN_VSS 0x04
211 #define ADC_COMPB_IN_VDDS 0x05
212 #define ADC_COMPB_IN_AUXIO7 0x09
213 #define ADC_COMPB_IN_AUXIO6 0x0A
214 #define ADC_COMPB_IN_AUXIO5 0x0B
215 #define ADC_COMPB_IN_AUXIO4 0x0C
216 #define ADC_COMPB_IN_AUXIO3 0x0D
217 #define ADC_COMPB_IN_AUXIO2 0x0E
218 #define ADC_COMPB_IN_AUXIO1 0x0F
219 #define ADC_COMPB_IN_AUXIO0 0x10
220 
221 //
222 // Defines for input parameter to the HapiSelectCompBRef function.
223 // The define values can not be changed!
224 //
225 #define COMPB_REF_NC 0x00
226 #define COMPB_REF_DCOUPL 0x01
227 #define COMPB_REF_VSS 0x02
228 #define COMPB_REF_VDDS 0x03
229 
230 #endif // __HAPI_H_
231 
232 //*****************************************************************************
233 //
234 // Pointers to the main API tables.
235 //
236 //*****************************************************************************
237 #define ROM_APITABLE ((uint32_t *)0x10000180)
238 #define ROM_VERSION (ROM_APITABLE[0])
239 #define ROM_AON_EVENTTABLE ((uint32_t *)(ROM_APITABLE[1]))
240 #define ROM_AON_IOCTABLE ((uint32_t *)(ROM_APITABLE[2]))
241 #define ROM_AON_RTCTABLE ((uint32_t *)(ROM_APITABLE[3]))
242 #define ROM_AON_WUCTABLE ((uint32_t *)(ROM_APITABLE[4]))
243 #define ROM_AUX_CTRLTABLE ((uint32_t *)(ROM_APITABLE[5]))
244 #define ROM_AUX_TDCTABLE ((uint32_t *)(ROM_APITABLE[6]))
245 #define ROM_AUX_TIMERTABLE ((uint32_t *)(ROM_APITABLE[7]))
246 #define ROM_AUX_WUCTABLE ((uint32_t *)(ROM_APITABLE[8]))
247 #define ROM_DDITABLE ((uint32_t *)(ROM_APITABLE[9]))
248 #define ROM_FLASHTABLE ((uint32_t *)(ROM_APITABLE[10]))
249 #define ROM_I2CTABLE ((uint32_t *)(ROM_APITABLE[11]))
250 #define ROM_INTERRUPTTABLE ((uint32_t *)(ROM_APITABLE[12]))
251 #define ROM_IOCTABLE ((uint32_t *)(ROM_APITABLE[13]))
252 #define ROM_PRCMTABLE ((uint32_t *)(ROM_APITABLE[14]))
253 #define ROM_SMPHTABLE ((uint32_t *)(ROM_APITABLE[15]))
254 #define ROM_SPISTABLE ((uint32_t *)(ROM_APITABLE[16]))
255 #define ROM_SSITABLE ((uint32_t *)(ROM_APITABLE[17]))
256 #define ROM_TIMERTABLE ((uint32_t *)(ROM_APITABLE[18]))
257 #define ROM_TRNGTABLE ((uint32_t *)(ROM_APITABLE[19]))
258 #define ROM_UARTTABLE ((uint32_t *)(ROM_APITABLE[20]))
259 #define ROM_UDMATABLE ((uint32_t *)(ROM_APITABLE[21]))
260 #define ROM_VIMSTABLE ((uint32_t *)(ROM_APITABLE[22]))
261 
262 //*****************************************************************************
263 //
264 // Macros for calling ROM functions in the AON_EVENT API.
265 //
266 //*****************************************************************************
267 #define ROM_AONEventMcuWakeUpSet \
268  ((void (*)(uint32_t ui32MCUWUEvent, \
269  uint32_t ui32EventSrc))ROM_AON_EVENTTABLE[0])
270 
271 #define ROM_AONEventMcuWakeUpGet \
272  ((uint32_t (*)(uint32_t ui32MCUWUEvent))ROM_AON_EVENTTABLE[1])
273 
274 #define ROM_AONEventAuxWakeUpSet \
275  ((void (*)(uint32_t ui32AUXWUEvent, \
276  uint32_t ui32EventSrc))ROM_AON_EVENTTABLE[2])
277 
278 #define ROM_AONEventAuxWakeUpGet \
279  ((uint32_t (*)(uint32_t ui32AUXWUEvent))ROM_AON_EVENTTABLE[3])
280 
281 #define ROM_AONEventMcuSet \
282  ((void (*)(uint32_t ui32MCUEvent, \
283  uint32_t ui32EventSrc))ROM_AON_EVENTTABLE[4])
284 
285 #define ROM_AONEventMcuGet \
286  ((uint32_t (*)(uint32_t ui32MCUEvent))ROM_AON_EVENTTABLE[5])
287 
288 //*****************************************************************************
289 //
290 // Macros for calling ROM functions in the AON_IOC API.
291 //
292 //*****************************************************************************
293 #define ROM_AONIOCDriveStrengthSet \
294  ((void (*)(uint32_t ui32LowDrvStr, \
295  uint32_t ui32MedDrvStr, \
296  uint32_t ui32MaxDrvStr))ROM_AON_IOCTABLE[0])
297 
298 #define ROM_AONIOCDriveStrengthGet \
299  ((uint32_t (*)(uint32_t ui32DriveLevel))ROM_AON_IOCTABLE[1])
300 
301 //*****************************************************************************
302 //
303 // Macros for calling ROM functions in the AON_RTC API.
304 //
305 //*****************************************************************************
306 
307 //*****************************************************************************
308 //
309 // Macros for calling ROM functions in the AON_WUC API.
310 //
311 //*****************************************************************************
312 
313 #define ROM_AONWUCAuxReset \
314  ((void (*)(void))ROM_AON_WUCTABLE[3])
315 
316 #define ROM_AONWUCRechargeCtrlConfigSet \
317  ((void (*)(bool bAdaptEnable, \
318  uint32_t ui32AdaptRate, \
319  uint32_t ui32Period, \
320  uint32_t ui32MaxPeriod))ROM_AON_WUCTABLE[4])
321 
322 #define ROM_AONWUCOscConfig \
323  ((void (*)(uint32_t ui32Period))ROM_AON_WUCTABLE[5])
324 
325 
326 //*****************************************************************************
327 //
328 // Macros for calling ROM functions in the AUX_TDC API.
329 //
330 //*****************************************************************************
331 #define ROM_AUXTDCConfigSet \
332  ((void (*)(uint32_t ui32Base, \
333  uint32_t ui32StartCondition, \
334  uint32_t ui32StopCondition))ROM_AUX_TDCTABLE[0])
335 
336 #define ROM_AUXTDCMeasurementDone \
337  ((uint32_t (*)(uint32_t ui32Base))ROM_AUX_TDCTABLE[1])
338 
339 //*****************************************************************************
340 //
341 // Macros for calling ROM functions in the AUX_TIMER API.
342 //
343 //*****************************************************************************
344 #define ROM_AUXTimerConfigure \
345  ((void (*)(uint32_t ui32Timer, \
346  uint32_t ui32Config))ROM_AUX_TIMERTABLE[0])
347 
348 #define ROM_AUXTimerStart \
349  ((void (*)(uint32_t ui32Timer))ROM_AUX_TIMERTABLE[1])
350 
351 #define ROM_AUXTimerStop \
352  ((void (*)(uint32_t ui32Timer))ROM_AUX_TIMERTABLE[2])
353 
354 #define ROM_AUXTimerPrescaleSet \
355  ((void (*)(uint32_t ui32Timer, \
356  uint32_t ui32PrescaleDiv))ROM_AUX_TIMERTABLE[3])
357 
358 #define ROM_AUXTimerPrescaleGet \
359  ((uint32_t (*)(uint32_t ui32Timer))ROM_AUX_TIMERTABLE[4])
360 
361 //*****************************************************************************
362 //
363 // Macros for calling ROM functions in the AUX_WUC API.
364 //
365 //*****************************************************************************
366 #define ROM_AUXWUCClockEnable \
367  ((void (*)(uint32_t ui32Clocks))ROM_AUX_WUCTABLE[0])
368 
369 #define ROM_AUXWUCClockDisable \
370  ((void (*)(uint32_t ui32Clocks))ROM_AUX_WUCTABLE[1])
371 
372 #define ROM_AUXWUCClockStatus \
373  ((uint32_t (*)(uint32_t ui32Clocks))ROM_AUX_WUCTABLE[2])
374 
375 #define ROM_AUXWUCPowerCtrl \
376  ((void (*)(uint32_t ui32PowerMode))ROM_AUX_WUCTABLE[3])
377 
378 //*****************************************************************************
379 //
380 // Macros for calling ROM functions in the DDI API.
381 //
382 //*****************************************************************************
383 #define ROM_DDI16BitWrite \
384  ((void (*)(uint32_t ui32Base, \
385  uint32_t ui32Reg, \
386  uint32_t ui32Mask, \
387  uint32_t ui32WrData))ROM_DDITABLE[0])
388 
389 #define ROM_DDI16BitfieldWrite \
390  ((void (*)(uint32_t ui32Base, \
391  uint32_t ui32Reg, \
392  uint32_t ui32Mask, \
393  uint32_t ui32Shift, \
394  uint16_t ui32Data))ROM_DDITABLE[1])
395 
396 #define ROM_DDI16BitRead \
397  ((uint16_t (*)(uint32_t ui32Base, \
398  uint32_t ui32Reg, \
399  uint32_t ui32Mask))ROM_DDITABLE[2])
400 
401 #define ROM_DDI16BitfieldRead \
402  ((uint16_t (*)(uint32_t ui32Base, \
403  uint32_t ui32Reg, \
404  uint32_t ui32Mask, \
405  uint32_t ui32Shift))ROM_DDITABLE[3])
406 
407 //*****************************************************************************
408 //
409 // Macros for calling ROM functions in the FLASH API.
410 //
411 //*****************************************************************************
412 
413 #define ROM_FlashPowerModeGet \
414  ((uint32_t (*)(void))ROM_FLASHTABLE[1])
415 
416 #define ROM_FlashProtectionSet \
417  ((void (*)(uint32_t ui32SectorAddress, \
418  uint32_t ui32ProtectMode))ROM_FLASHTABLE[2])
419 
420 #define ROM_FlashProtectionGet \
421  ((uint32_t (*)(uint32_t ui32SectorAddress))ROM_FLASHTABLE[3])
422 
423 #define ROM_FlashProtectionSave \
424  ((uint32_t (*)(uint32_t ui32SectorAddress))ROM_FLASHTABLE[4])
425 
426 #define ROM_FlashEfuseReadRow \
427  ((bool (*)(uint32_t *pui32EfuseData, \
428  uint32_t ui32RowAddress))ROM_FLASHTABLE[8])
429 
430 #define ROM_FlashDisableSectorsForWrite \
431  ((void (*)(void))ROM_FLASHTABLE[9])
432 
433 //*****************************************************************************
434 //
435 // Macros for calling ROM functions in the I2C API.
436 //
437 //*****************************************************************************
438 #define ROM_I2CMasterInitExpClk \
439  ((void (*)(uint32_t ui32Base, \
440  uint32_t ui32I2CClk, \
441  bool bFast))ROM_I2CTABLE[0])
442 
443 #define ROM_I2CMasterErr \
444  ((uint32_t (*)(uint32_t ui32Base))ROM_I2CTABLE[1])
445 
446 //*****************************************************************************
447 //
448 // Macros for calling ROM functions in the INTERRUPT API.
449 //
450 //*****************************************************************************
451 #define ROM_IntPriorityGroupingSet \
452  ((void (*)(uint32_t ui32Bits))ROM_INTERRUPTTABLE[0])
453 
454 #define ROM_IntPriorityGroupingGet \
455  ((uint32_t (*)(void))ROM_INTERRUPTTABLE[1])
456 
457 #define ROM_IntPrioritySet \
458  ((void (*)(uint32_t ui32Interrupt, \
459  uint8_t ui8Priority))ROM_INTERRUPTTABLE[2])
460 
461 #define ROM_IntPriorityGet \
462  ((int32_t (*)(uint32_t ui32Interrupt))ROM_INTERRUPTTABLE[3])
463 
464 #define ROM_IntEnable \
465  ((void (*)(uint32_t ui32Interrupt))ROM_INTERRUPTTABLE[4])
466 
467 #define ROM_IntDisable \
468  ((void (*)(uint32_t ui32Interrupt))ROM_INTERRUPTTABLE[5])
469 
470 #define ROM_IntPendSet \
471  ((void (*)(uint32_t ui32Interrupt))ROM_INTERRUPTTABLE[6])
472 
473 #define ROM_IntPendGet \
474  ((bool (*)(uint32_t ui32Interrupt))ROM_INTERRUPTTABLE[7])
475 
476 #define ROM_IntPendClear \
477  ((void (*)(uint32_t ui32Interrupt))ROM_INTERRUPTTABLE[8])
478 
479 //*****************************************************************************
480 //
481 // Macros for calling ROM functions in the IOC API.
482 //
483 //*****************************************************************************
484 #define ROM_IOCPortConfigureSet \
485  ((void (*)(uint32_t ui32IOId, \
486  uint32_t ui32PortId, \
487  uint32_t ui32IOConfig))ROM_IOCTABLE[0])
488 
489 #define ROM_IOCPortConfigureGet \
490  ((uint32_t (*)(uint32_t ui32IOId))ROM_IOCTABLE[1])
491 
492 #define ROM_IOCIOShutdownSet \
493  ((void (*)(uint32_t ui32IOId, \
494  uint32_t ui32IOShutdown))ROM_IOCTABLE[2])
495 
496 
497 #define ROM_IOCIOModeSet \
498  ((void (*)(uint32_t ui32IOId, \
499  uint32_t ui32IOMode))ROM_IOCTABLE[4])
500 
501 #define ROM_IOCIOIntSet \
502  ((void (*)(uint32_t ui32IOId, \
503  uint32_t ui32Int, \
504  uint32_t ui32EdgeDet))ROM_IOCTABLE[5])
505 
506 #define ROM_IOCIOPortPullSet \
507  ((void (*)(uint32_t ui32IOId, \
508  uint32_t ui32Pull))ROM_IOCTABLE[6])
509 
510 #define ROM_IOCIOHystSet \
511  ((void (*)(uint32_t ui32IOId, \
512  uint32_t ui32Hysteresis))ROM_IOCTABLE[7])
513 
514 #define ROM_IOCIOInputSet \
515  ((void (*)(uint32_t ui32IOId, \
516  uint32_t ui32Input))ROM_IOCTABLE[8])
517 
518 #define ROM_IOCIOSlewCtrlSet \
519  ((void (*)(uint32_t ui32IOId, \
520  uint32_t ui32SlewEnable))ROM_IOCTABLE[9])
521 
522 #define ROM_IOCIODrvStrengthSet \
523  ((void (*)(uint32_t ui32IOId, \
524  uint32_t ui32IOCurrent, \
525  uint32_t ui32DrvStrength))ROM_IOCTABLE[10])
526 
527 #define ROM_IOCIOPortIdSet \
528  ((void (*)(uint32_t ui32IOId, \
529  uint32_t ui32PortId))ROM_IOCTABLE[11])
530 
531 #define ROM_IOCIntEnable \
532  ((void (*)(uint32_t ui32IOId))ROM_IOCTABLE[12])
533 
534 #define ROM_IOCIntDisable \
535  ((void (*)(uint32_t ui32IOId))ROM_IOCTABLE[13])
536 
537 #define ROM_IOCPinTypeGpioInput \
538  ((void (*)(uint32_t ui32IOId))ROM_IOCTABLE[14])
539 
540 #define ROM_IOCPinTypeGpioOutput \
541  ((void (*)(uint32_t ui32IOId))ROM_IOCTABLE[15])
542 
543 #define ROM_IOCPinTypeUart \
544  ((void (*)(uint32_t ui32Base, \
545  uint32_t ui32Rx, \
546  uint32_t ui32Tx, \
547  uint32_t ui32Cts, \
548  uint32_t ui32Rts))ROM_IOCTABLE[16])
549 
550 #define ROM_IOCPinTypeSsiMaster \
551  ((void (*)(uint32_t ui32Base, \
552  uint32_t ui32Rx, \
553  uint32_t ui32Tx, \
554  uint32_t ui32Fss, \
555  uint32_t ui32Clk))ROM_IOCTABLE[17])
556 
557 #define ROM_IOCPinTypeSsiSlave \
558  ((void (*)(uint32_t ui32Base, \
559  uint32_t ui32Rx, \
560  uint32_t ui32Tx, \
561  uint32_t ui32Fss, \
562  uint32_t ui32Clk))ROM_IOCTABLE[18])
563 
564 #define ROM_IOCPinTypeI2c \
565  ((void (*)(uint32_t ui32Base, \
566  uint32_t ui32Data, \
567  uint32_t ui32Clk))ROM_IOCTABLE[19])
568 
569 #define ROM_IOCPinTypeSpis \
570  ((void (*)(uint32_t ui32Rx, \
571  uint32_t ui32Tx, \
572  uint32_t ui32Fss, \
573  uint32_t ui32Clk))ROM_IOCTABLE[20])
574 
575 #define ROM_IOCPinTypeAux \
576  ((void (*)(uint32_t ui32IOId))ROM_IOCTABLE[21])
577 
578 //*****************************************************************************
579 //
580 // Macros for calling ROM functions in the PRCM API.
581 //
582 //*****************************************************************************
583 #define ROM_PRCMInfClockConfigureSet \
584  ((void (*)(uint32_t ui32ClkDiv, \
585  uint32_t ui32PowerMode))ROM_PRCMTABLE[0])
586 
587 #define ROM_PRCMInfClockConfigureGet \
588  ((uint32_t (*)(uint32_t ui32PowerMode))ROM_PRCMTABLE[1])
589 
590 
591 #define ROM_PRCMAudioClockConfigSet \
592  ((void (*)(uint32_t ui32ClkConfig, \
593  uint32_t ui32SampleRate))ROM_PRCMTABLE[4])
594 
595 #define ROM_PRCMPowerDomainOn \
596  ((void (*)(uint32_t ui32Domains))ROM_PRCMTABLE[5])
597 
598 #define ROM_PRCMPowerDomainOff \
599  ((void (*)(uint32_t ui32Domains))ROM_PRCMTABLE[6])
600 
601 #define ROM_PRCMPeripheralRunEnable \
602  ((void (*)(uint32_t ui32Peripheral))ROM_PRCMTABLE[7])
603 
604 #define ROM_PRCMPeripheralRunDisable \
605  ((void (*)(uint32_t ui32Peripheral))ROM_PRCMTABLE[8])
606 
607 #define ROM_PRCMPeripheralSleepEnable \
608  ((void (*)(uint32_t ui32Peripheral))ROM_PRCMTABLE[9])
609 
610 #define ROM_PRCMPeripheralSleepDisable \
611  ((void (*)(uint32_t ui32Peripheral))ROM_PRCMTABLE[10])
612 
613 #define ROM_PRCMPeripheralDeepSleepEnable \
614  ((void (*)(uint32_t ui32Peripheral))ROM_PRCMTABLE[11])
615 
616 #define ROM_PRCMPeripheralDeepSleepDisable \
617  ((void (*)(uint32_t ui32Peripheral))ROM_PRCMTABLE[12])
618 
619 #define ROM_PRCMPowerDomainStatus \
620  ((uint32_t (*)(uint32_t ui32Domains))ROM_PRCMTABLE[13])
621 
622 #define ROM_PRCMDeepSleep \
623  ((void (*)(void))ROM_PRCMTABLE[14])
624 
625 
626 //*****************************************************************************
627 //
628 // Macros for calling ROM functions in the SMPH API.
629 //
630 //*****************************************************************************
631 #define ROM_SMPHAcquire \
632  ((void (*)(uint32_t ui32Semaphore))ROM_SMPHTABLE[0])
633 
634 
635 //*****************************************************************************
636 //
637 // Macros for calling ROM functions in the SSI API.
638 //
639 //*****************************************************************************
640 #define ROM_SSIConfigSetExpClk \
641  ((void (*)(uint32_t ui32Base, \
642  uint32_t ui32SSIClk, \
643  uint32_t ui32Protocol, \
644  uint32_t ui32Mode, \
645  uint32_t ui32BitRate, \
646  uint32_t ui32DataWidth))ROM_SSITABLE[0])
647 
648 #define ROM_SSIDataPut \
649  ((void (*)(uint32_t ui32Base, \
650  uint32_t ui32Data))ROM_SSITABLE[1])
651 
652 #define ROM_SSIDataPutNonBlocking \
653  ((int32_t (*)(uint32_t ui32Base, \
654  uint32_t ui32Data))ROM_SSITABLE[2])
655 
656 #define ROM_SSIDataGet \
657  ((void (*)(uint32_t ui32Base, \
658  uint32_t *pui32Data))ROM_SSITABLE[3])
659 
660 #define ROM_SSIDataGetNonBlocking \
661  ((int32_t (*)(uint32_t ui32Base, \
662  uint32_t *pui32Data))ROM_SSITABLE[4])
663 
664 //*****************************************************************************
665 //
666 // Macros for calling ROM functions in the TIMER API.
667 //
668 //*****************************************************************************
669 #define ROM_TimerConfigure \
670  ((void (*)(uint32_t ui32Base, \
671  uint32_t ui32Config))ROM_TIMERTABLE[0])
672 
673 #define ROM_TimerLevelControl \
674  ((void (*)(uint32_t ui32Base, \
675  uint32_t ui32Timer, \
676  bool bInvert))ROM_TIMERTABLE[1])
677 
678 #define ROM_TimerStallControl \
679  ((void (*)(uint32_t ui32Base, \
680  uint32_t ui32Timer, \
681  bool bStall))ROM_TIMERTABLE[3])
682 
683 #define ROM_TimerWaitOnTriggerControl \
684  ((void (*)(uint32_t ui32Base, \
685  uint32_t ui32Timer, \
686  bool bWait))ROM_TIMERTABLE[4])
687 
688 //*****************************************************************************
689 //
690 // Macros for calling ROM functions in the TRNG API.
691 //
692 //*****************************************************************************
693 
694 #define ROM_TRNGNumberGet \
695  ((uint32_t (*)(uint32_t ui32Word))ROM_TRNGTABLE[1])
696 
697 //*****************************************************************************
698 //
699 // Macros for calling ROM functions in the UART API.
700 //
701 //*****************************************************************************
702 #define ROM_UARTFIFOLevelGet \
703  ((void (*)(uint32_t ui32Base, \
704  uint32_t *pui32TxLevel, \
705  uint32_t *pui32RxLevel))ROM_UARTTABLE[0])
706 
707 #define ROM_UARTConfigSetExpClk \
708  ((void (*)(uint32_t ui32Base, \
709  uint32_t ui32UARTClk, \
710  uint32_t ui32Baud, \
711  uint32_t ui32Config))ROM_UARTTABLE[1])
712 
713 #define ROM_UARTConfigGetExpClk \
714  ((void (*)(uint32_t ui32Base, \
715  uint32_t ui32UARTClk, \
716  uint32_t *pui32Baud, \
717  uint32_t *pui32Config))ROM_UARTTABLE[2])
718 
719 #define ROM_UARTDisable \
720  ((void (*)(uint32_t ui32Base))ROM_UARTTABLE[3])
721 
722 #define ROM_UARTCharGetNonBlocking \
723  ((int32_t (*)(uint32_t ui32Base))ROM_UARTTABLE[4])
724 
725 #define ROM_UARTCharGet \
726  ((int32_t (*)(uint32_t ui32Base))ROM_UARTTABLE[5])
727 
728 #define ROM_UARTCharPutNonBlocking \
729  ((bool (*)(uint32_t ui32Base, \
730  uint8_t ui8Data))ROM_UARTTABLE[6])
731 
732 #define ROM_UARTCharPut \
733  ((void (*)(uint32_t ui32Base, \
734  uint8_t ui8Data))ROM_UARTTABLE[7])
735 
736 //*****************************************************************************
737 //
738 // Macros for calling ROM functions in the UDMA API.
739 //
740 //*****************************************************************************
741 #define ROM_uDMAChannelAttributeEnable \
742  ((void (*)(uint32_t ui32Base, \
743  uint32_t ui32ChannelNum, \
744  uint32_t ui32Attr))ROM_UDMATABLE[0])
745 
746 #define ROM_uDMAChannelAttributeDisable \
747  ((void (*)(uint32_t ui32Base, \
748  uint32_t ui32ChannelNum, \
749  uint32_t ui32Attr))ROM_UDMATABLE[1])
750 
751 #define ROM_uDMAChannelAttributeGet \
752  ((uint32_t (*)(uint32_t ui32Base, \
753  uint32_t ui32ChannelNum))ROM_UDMATABLE[2])
754 
755 #define ROM_uDMAChannelControlSet \
756  ((void (*)(uint32_t ui32Base, \
757  uint32_t ui32ChannelStructIndex, \
758  uint32_t ui32Control))ROM_UDMATABLE[3])
759 
760 #define ROM_uDMAChannelScatterGatherSet \
761  ((void (*)(uint32_t ui32Base, \
762  uint32_t ui32ChannelNum, \
763  uint32_t ui32TaskCount, \
764  void *pvTaskList, \
765  uint32_t ui32IsPeriphSG))ROM_UDMATABLE[5])
766 
767 #define ROM_uDMAChannelSizeGet \
768  ((uint32_t (*)(uint32_t ui32Base, \
769  uint32_t ui32ChannelStructIndex))ROM_UDMATABLE[6])
770 
771 #define ROM_uDMAChannelModeGet \
772  ((uint32_t (*)(uint32_t ui32Base, \
773  uint32_t ui32ChannelStructIndex))ROM_UDMATABLE[7])
774 
775 //*****************************************************************************
776 //
777 // Macros for calling ROM functions in the VIMS API.
778 //
779 //*****************************************************************************
780 #define ROM_VIMSConfigure \
781  ((void (*)(uint32_t ui32Base, \
782  bool bRoundRobin, \
783  bool bPrefetch))ROM_VIMSTABLE[0])
784 
785 #define ROM_VIMSModeSet \
786  ((void (*)(uint32_t ui32Base, \
787  uint32_t ui32Mode))ROM_VIMSTABLE[1])
788 
789 //*****************************************************************************
790 //
791 // Mark the end of the C bindings section for C++ compilers.
792 //
793 //*****************************************************************************
794 #ifdef __cplusplus
795 }
796 #endif
797 
798 #endif // __ROM_H__
FPTR_RESERVED2_T ReservedLocation2
Definition: rom.h:128
FPTR_RESERVED5_T ReservedLocation5
Definition: rom.h:137
FPTR_GETCHIPID_T GetChipId
Definition: rom.h:126
FPTR_STDDVAL_T StandDeviationValue
Definition: rom.h:135
uint32_t(* FPTR_MEANVAL_T)(uint32_t *, uint32_t)
Definition: rom.h:93
uint32_t MemBusWrkAroundHapiProgramFlash(uint8_t *pui8DataBuffer, uint32_t ui32Address, uint32_t ui32Count)
Definition: flash.c:715
void(* FPTR_RESERVED5_T)(uint32_t)
Definition: rom.h:103
void(* FPTR_ADCCOMPBIN_T)(uint8_t)
Definition: rom.h:109
FPTR_CRC32_T Crc32
Definition: rom.h:124
FPTR_RESETDEV_T ResetDevice
Definition: rom.h:130
void(* FPTR_COMPAIN_T)(uint8_t)
Definition: rom.h:105
void SafeHapiAuxAdiSelect(FPTR_VOID_UINT8_T fPtr, uint8_t ut8Signal)
Definition: adi.c:53
FPTR_MINVAL_T MinValue
Definition: rom.h:132
FPTR_FLETCHER32_T Fletcher32
Definition: rom.h:131
uint32_t(* FPTR_STDDVAL_T)(uint32_t *, uint32_t)
Definition: rom.h:96
uint32_t(* FPTR_GETFLSIZE_T)(void)
Definition: rom.h:70
FPTR_GETFLSIZE_T FlashGetSize
Definition: rom.h:125
FPTR_HFSOURCESAFESWITCH_T HFSourceSafeSwitch
Definition: rom.h:138
FPTR_COMPBREF_T SelectCompBRef
Definition: rom.h:142
uint32_t(* FPTR_RESERVED3_T)(uint8_t *, uint32_t, uint32_t)
Definition: rom.h:78
uint32_t MemBusWrkAroundHapiEraseSector(uint32_t ui32Address)
Definition: flash.c:745
uint32_t(* FPTR_RESERVED2_T)(void)
Definition: rom.h:76
uint32_t(* FPTR_FLETCHER32_T)(uint16_t *, uint16_t, uint16_t)
Definition: rom.h:83
uint32_t(* FPTR_MINVAL_T)(uint32_t *, uint32_t)
Definition: rom.h:87
uint32_t(* FPTR_GETCHIPID_T)(void)
Definition: rom.h:72
void(* FPTR_RESETDEV_T)(void)
Definition: rom.h:81
void(* FPTR_COMPBREF_T)(uint8_t)
Definition: rom.h:111
FPTR_COMPAREF_T SelectCompARef
Definition: rom.h:140
uint32_t(* FPTR_RESERVED1_T)(uint32_t)
Definition: rom.h:74
FPTR_COMPAIN_T SelectCompAInput
Definition: rom.h:139
uint32_t(* FPTR_CRC32_T)(uint8_t *, uint32_t, uint32_t)
Definition: rom.h:66
void(* FPTR_COMPAREF_T)(uint8_t)
Definition: rom.h:107
FPTR_ADCCOMPBIN_T SelectADCCompBInput
Definition: rom.h:141
uint32_t(* FPTR_MAXVAL_T)(uint32_t *, uint32_t)
Definition: rom.h:90
void(* FPTR_HFSOURCESAFESWITCH_T)(void)
Definition: rom.h:99
FPTR_MEANVAL_T MeanValue
Definition: rom.h:134
FPTR_RESERVED1_T ReservedLocation1
Definition: rom.h:127
void(* FPTR_RESERVED4_T)(uint32_t)
Definition: rom.h:101
FPTR_RESERVED3_T ReservedLocation3
Definition: rom.h:129
FPTR_MAXVAL_T MaxValue
Definition: rom.h:133
FPTR_RESERVED4_T ReservedLocation4
Definition: rom.h:136