/****************************************************************************** * Filename: rom.h * Revised: 2018-11-02 13:54:49 +0100 (Fri, 02 Nov 2018) * Revision: 53196 * * Description: Prototypes for the ROM utility functions. * * Copyright (c) 2015 - 2017, Texas Instruments Incorporated * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1) Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2) Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * 3) Neither the name of the ORGANIZATION nor the names of its contributors may * be used to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * ******************************************************************************/ #ifndef __ROM_H__ #define __ROM_H__ //***************************************************************************** // // If building with a C++ compiler, make all of the definitions in this header // have a C binding. // //***************************************************************************** #ifdef __cplusplus extern "C" { #endif #include "../inc/hw_types.h" #ifndef __HAPI_H__ #define __HAPI_H__ // Start address of the ROM hard API access table (located after the ROM FW rev field) #define ROM_HAPI_TABLE_ADDR 0x10000048 // ROM Hard-API function interface types typedef uint32_t (* FPTR_CRC32_T) ( uint8_t* /* pui8Data */,\ uint32_t /* ui32ByteCount */,\ uint32_t /* ui32RepeatCount */); typedef uint32_t (* FPTR_GETFLSIZE_T) ( void ); typedef uint32_t (* FPTR_GETCHIPID_T) ( void ); typedef uint32_t (* FPTR_RESERVED1_T) ( uint32_t ); typedef uint32_t (* FPTR_RESERVED2_T) ( void ); typedef uint32_t (* FPTR_RESERVED3_T) ( uint8_t* ,\ uint32_t ,\ uint32_t ); typedef void (* FPTR_RESETDEV_T) ( void ); typedef uint32_t (* FPTR_FLETCHER32_T) ( uint16_t* /* pui16Data */,\ uint16_t /* ui16WordCount */,\ uint16_t /* ui16RepeatCount */); typedef uint32_t (* FPTR_MINVAL_T) ( uint32_t* /* ulpDataBuffer */,\ uint32_t /* ui32DataCount */); typedef uint32_t (* FPTR_MAXVAL_T) ( uint32_t* /* pui32DataBuffer */,\ uint32_t /* ui32DataCount */); typedef uint32_t (* FPTR_MEANVAL_T) ( uint32_t* /* pui32DataBuffer */,\ uint32_t /* ui32DataCount */); typedef uint32_t (* FPTR_STDDVAL_T) ( uint32_t* /* pui32DataBuffer */,\ uint32_t /* ui32DataCount */); typedef void (* FPTR_HFSOURCESAFESWITCH_T) ( void ); typedef void (* FPTR_RESERVED4_T) ( uint32_t ); typedef void (* FPTR_RESERVED5_T) ( uint32_t ); typedef void (* FPTR_COMPAIN_T) ( uint8_t /* ut8Signal */); typedef void (* FPTR_COMPAREF_T) ( uint8_t /* ut8Signal */); typedef void (* FPTR_ADCCOMPBIN_T) ( uint8_t /* ut8Signal */); typedef void (* FPTR_COMPBREF_T) ( uint8_t /* ut8Signal */); extern uint32_t MemBusWrkAroundHapiProgramFlash(uint8_t *pui8DataBuffer, uint32_t ui32Address, uint32_t ui32Count); extern uint32_t MemBusWrkAroundHapiEraseSector(uint32_t ui32Address); // ROM Hard-API access table type typedef struct { FPTR_CRC32_T Crc32; FPTR_GETFLSIZE_T FlashGetSize; FPTR_GETCHIPID_T GetChipId; FPTR_RESERVED1_T ReservedLocation1; FPTR_RESERVED2_T ReservedLocation2; FPTR_RESERVED3_T ReservedLocation3; FPTR_RESETDEV_T ResetDevice; FPTR_FLETCHER32_T Fletcher32; FPTR_MINVAL_T MinValue; FPTR_MAXVAL_T MaxValue; FPTR_MEANVAL_T MeanValue; FPTR_STDDVAL_T StandDeviationValue; FPTR_RESERVED4_T ReservedLocation4; FPTR_RESERVED5_T ReservedLocation5; FPTR_HFSOURCESAFESWITCH_T HFSourceSafeSwitch; FPTR_COMPAIN_T SelectCompAInput; FPTR_COMPAREF_T SelectCompARef; FPTR_ADCCOMPBIN_T SelectADCCompBInput; FPTR_COMPBREF_T SelectCompBRef; } HARD_API_T; // Pointer to the ROM HAPI table #define P_HARD_API ((HARD_API_T*) ROM_HAPI_TABLE_ADDR) // Add wrapper around the Hapi functions needing the "bus arbitration issue" workaround extern void SafeHapiVoid( FPTR_VOID_VOID_T fPtr ); extern void SafeHapiAuxAdiSelect( FPTR_VOID_UINT8_T fPtr, uint8_t ut8Signal ); #define HapiCrc32(a,b,c) P_HARD_API->Crc32(a,b,c) #define HapiGetFlashSize() P_HARD_API->FlashGetSize() #define HapiGetChipId() P_HARD_API->GetChipId() #define HapiSectorErase(a) MemBusWrkAroundHapiEraseSector(a) #define HapiProgramFlash(a,b,c) MemBusWrkAroundHapiProgramFlash(a,b,c) #define HapiResetDevice() P_HARD_API->ResetDevice() #define HapiFletcher32(a,b,c) P_HARD_API->Fletcher32(a,b,c) #define HapiMinValue(a,b) P_HARD_API->MinValue(a,b) #define HapiMaxValue(a,b) P_HARD_API->MaxValue(a,b) #define HapiMeanValue(a,b) P_HARD_API->MeanValue(a,b) #define HapiStandDeviationValue(a,b) P_HARD_API->StandDeviationValue(a,b) #define HapiHFSourceSafeSwitch() SafeHapiVoid( P_HARD_API->HFSourceSafeSwitch ) #define HapiSelectCompAInput(a) SafeHapiAuxAdiSelect( P_HARD_API->SelectCompAInput , a ) #define HapiSelectCompARef(a) SafeHapiAuxAdiSelect( P_HARD_API->SelectCompARef , a ) #define HapiSelectADCCompBInput(a) SafeHapiAuxAdiSelect( P_HARD_API->SelectADCCompBInput, a ) #define HapiSelectCompBRef(a) SafeHapiAuxAdiSelect( P_HARD_API->SelectCompBRef , a ) // Defines for input parameter to the HapiSelectCompAInput function. #define COMPA_IN_NC 0x00 // Defines used in CC13x0/CC26x0 devices #define COMPA_IN_AUXIO7 0x09 #define COMPA_IN_AUXIO6 0x0A #define COMPA_IN_AUXIO5 0x0B #define COMPA_IN_AUXIO4 0x0C #define COMPA_IN_AUXIO3 0x0D #define COMPA_IN_AUXIO2 0x0E #define COMPA_IN_AUXIO1 0x0F #define COMPA_IN_AUXIO0 0x10 // Defines used in CC13x2/CC26x2 devices #define COMPA_IN_AUXIO26 COMPA_IN_AUXIO7 #define COMPA_IN_AUXIO25 COMPA_IN_AUXIO6 #define COMPA_IN_AUXIO24 COMPA_IN_AUXIO5 #define COMPA_IN_AUXIO23 COMPA_IN_AUXIO4 #define COMPA_IN_AUXIO22 COMPA_IN_AUXIO3 #define COMPA_IN_AUXIO21 COMPA_IN_AUXIO2 #define COMPA_IN_AUXIO20 COMPA_IN_AUXIO1 #define COMPA_IN_AUXIO19 COMPA_IN_AUXIO0 // Defines for input parameter to the HapiSelectCompARef function. #define COMPA_REF_NC 0x00 #define COMPA_REF_DCOUPL 0x01 #define COMPA_REF_VSS 0x02 #define COMPA_REF_VDDS 0x03 #define COMPA_REF_ADCVREFP 0x04 // Defines used in CC13x0/CC26x0 devices #define COMPA_REF_AUXIO7 0x09 #define COMPA_REF_AUXIO6 0x0A #define COMPA_REF_AUXIO5 0x0B #define COMPA_REF_AUXIO4 0x0C #define COMPA_REF_AUXIO3 0x0D #define COMPA_REF_AUXIO2 0x0E #define COMPA_REF_AUXIO1 0x0F #define COMPA_REF_AUXIO0 0x10 // Defines used in CC13x2/CC26x2 devices #define COMPA_REF_AUXIO26 COMPA_REF_AUXIO7 #define COMPA_REF_AUXIO25 COMPA_REF_AUXIO6 #define COMPA_REF_AUXIO24 COMPA_REF_AUXIO5 #define COMPA_REF_AUXIO23 COMPA_REF_AUXIO4 #define COMPA_REF_AUXIO22 COMPA_REF_AUXIO3 #define COMPA_REF_AUXIO21 COMPA_REF_AUXIO2 #define COMPA_REF_AUXIO20 COMPA_REF_AUXIO1 #define COMPA_REF_AUXIO19 COMPA_REF_AUXIO0 // Defines for input parameter to the HapiSelectADCCompBInput function. #define ADC_COMPB_IN_NC 0x00 #define ADC_COMPB_IN_DCOUPL 0x03 #define ADC_COMPB_IN_VSS 0x04 #define ADC_COMPB_IN_VDDS 0x05 // Defines used in CC13x0/CC26x0 devices #define ADC_COMPB_IN_AUXIO7 0x09 #define ADC_COMPB_IN_AUXIO6 0x0A #define ADC_COMPB_IN_AUXIO5 0x0B #define ADC_COMPB_IN_AUXIO4 0x0C #define ADC_COMPB_IN_AUXIO3 0x0D #define ADC_COMPB_IN_AUXIO2 0x0E #define ADC_COMPB_IN_AUXIO1 0x0F #define ADC_COMPB_IN_AUXIO0 0x10 // Defines used in CC13x2/CC26x2 devices #define ADC_COMPB_IN_AUXIO26 ADC_COMPB_IN_AUXIO7 #define ADC_COMPB_IN_AUXIO25 ADC_COMPB_IN_AUXIO6 #define ADC_COMPB_IN_AUXIO24 ADC_COMPB_IN_AUXIO5 #define ADC_COMPB_IN_AUXIO23 ADC_COMPB_IN_AUXIO4 #define ADC_COMPB_IN_AUXIO22 ADC_COMPB_IN_AUXIO3 #define ADC_COMPB_IN_AUXIO21 ADC_COMPB_IN_AUXIO2 #define ADC_COMPB_IN_AUXIO20 ADC_COMPB_IN_AUXIO1 #define ADC_COMPB_IN_AUXIO19 ADC_COMPB_IN_AUXIO0 // Defines for input parameter to the HapiSelectCompBRef function. // The define values can not be changed! #define COMPB_REF_NC 0x00 #define COMPB_REF_DCOUPL 0x01 #define COMPB_REF_VSS 0x02 #define COMPB_REF_VDDS 0x03 #endif // __HAPI_H__ //***************************************************************************** // // Pointers to the main API tables. // //***************************************************************************** #define ROM_API_TABLE ((uint32_t *) 0x10000180) #define ROM_VERSION (ROM_API_TABLE[0]) #define ROM_API_AON_EVENT_TABLE ((uint32_t*) (ROM_API_TABLE[1])) #define ROM_API_AON_IOC_TABLE ((uint32_t*) (ROM_API_TABLE[2])) #define ROM_API_AON_RTC_TABLE ((uint32_t*) (ROM_API_TABLE[3])) #define ROM_API_AON_WUC_TABLE ((uint32_t*) (ROM_API_TABLE[4])) #define ROM_API_AUX_CTRL_TABLE ((uint32_t*) (ROM_API_TABLE[5])) #define ROM_API_AUX_TDC_TABLE ((uint32_t*) (ROM_API_TABLE[6])) #define ROM_API_AUX_TIMER_TABLE ((uint32_t*) (ROM_API_TABLE[7])) #define ROM_API_AUX_WUC_TABLE ((uint32_t*) (ROM_API_TABLE[8])) #define ROM_API_DDI_TABLE ((uint32_t*) (ROM_API_TABLE[9])) #define ROM_API_FLASH_TABLE ((uint32_t*) (ROM_API_TABLE[10])) #define ROM_API_I2C_TABLE ((uint32_t*) (ROM_API_TABLE[11])) #define ROM_API_INTERRUPT_TABLE ((uint32_t*) (ROM_API_TABLE[12])) #define ROM_API_IOC_TABLE ((uint32_t*) (ROM_API_TABLE[13])) #define ROM_API_PRCM_TABLE ((uint32_t*) (ROM_API_TABLE[14])) #define ROM_API_SMPH_TABLE ((uint32_t*) (ROM_API_TABLE[15])) #define ROM_API_SSI_TABLE ((uint32_t*) (ROM_API_TABLE[17])) #define ROM_API_TIMER_TABLE ((uint32_t*) (ROM_API_TABLE[18])) #define ROM_API_TRNG_TABLE ((uint32_t*) (ROM_API_TABLE[19])) #define ROM_API_UART_TABLE ((uint32_t*) (ROM_API_TABLE[20])) #define ROM_API_UDMA_TABLE ((uint32_t*) (ROM_API_TABLE[21])) #define ROM_API_VIMS_TABLE ((uint32_t*) (ROM_API_TABLE[22])) // AON_EVENT FUNCTIONS #define ROM_AONEventMcuWakeUpSet \ ((void (*)(uint32_t ui32MCUWUEvent, uint32_t ui32EventSrc)) \ ROM_API_AON_EVENT_TABLE[0]) #define ROM_AONEventMcuWakeUpGet \ ((uint32_t (*)(uint32_t ui32MCUWUEvent)) \ ROM_API_AON_EVENT_TABLE[1]) #define ROM_AONEventAuxWakeUpSet \ ((void (*)(uint32_t ui32AUXWUEvent, uint32_t ui32EventSrc)) \ ROM_API_AON_EVENT_TABLE[2]) #define ROM_AONEventAuxWakeUpGet \ ((uint32_t (*)(uint32_t ui32AUXWUEvent)) \ ROM_API_AON_EVENT_TABLE[3]) #define ROM_AONEventMcuSet \ ((void (*)(uint32_t ui32MCUEvent, uint32_t ui32EventSrc)) \ ROM_API_AON_EVENT_TABLE[4]) #define ROM_AONEventMcuGet \ ((uint32_t (*)(uint32_t ui32MCUEvent)) \ ROM_API_AON_EVENT_TABLE[5]) // AON_WUC FUNCTIONS #define ROM_AONWUCAuxReset \ ((void (*)(void)) \ ROM_API_AON_WUC_TABLE[3]) #define ROM_AONWUCRechargeCtrlConfigSet \ ((void (*)(bool bAdaptEnable, uint32_t ui32AdaptRate, uint32_t ui32Period, uint32_t ui32MaxPeriod)) \ ROM_API_AON_WUC_TABLE[4]) #define ROM_AONWUCOscConfig \ ((void (*)(uint32_t ui32Period)) \ ROM_API_AON_WUC_TABLE[5]) // AUX_TDC FUNCTIONS #define ROM_AUXTDCConfigSet \ ((void (*)(uint32_t ui32Base, uint32_t ui32StartCondition, uint32_t ui32StopCondition)) \ ROM_API_AUX_TDC_TABLE[0]) #define ROM_AUXTDCMeasurementDone \ ((uint32_t (*)(uint32_t ui32Base)) \ ROM_API_AUX_TDC_TABLE[1]) // AUX_WUC FUNCTIONS #define ROM_AUXWUCClockEnable \ ((void (*)(uint32_t ui32Clocks)) \ ROM_API_AUX_WUC_TABLE[0]) #define ROM_AUXWUCClockDisable \ ((void (*)(uint32_t ui32Clocks)) \ ROM_API_AUX_WUC_TABLE[1]) #define ROM_AUXWUCClockStatus \ ((uint32_t (*)(uint32_t ui32Clocks)) \ ROM_API_AUX_WUC_TABLE[2]) #define ROM_AUXWUCPowerCtrl \ ((void (*)(uint32_t ui32PowerMode)) \ ROM_API_AUX_WUC_TABLE[3]) // FLASH FUNCTIONS #define ROM_FlashPowerModeGet \ ((uint32_t (*)(void)) \ ROM_API_FLASH_TABLE[1]) #define ROM_FlashProtectionSet \ ((void (*)(uint32_t ui32SectorAddress, uint32_t ui32ProtectMode)) \ ROM_API_FLASH_TABLE[2]) #define ROM_FlashProtectionGet \ ((uint32_t (*)(uint32_t ui32SectorAddress)) \ ROM_API_FLASH_TABLE[3]) #define ROM_FlashProtectionSave \ ((uint32_t (*)(uint32_t ui32SectorAddress)) \ ROM_API_FLASH_TABLE[4]) #define ROM_FlashEfuseReadRow \ ((bool (*)(uint32_t *pui32EfuseData, uint32_t ui32RowAddress)) \ ROM_API_FLASH_TABLE[8]) #define ROM_FlashDisableSectorsForWrite \ ((void (*)(void)) \ ROM_API_FLASH_TABLE[9]) // I2C FUNCTIONS #define ROM_I2CMasterInitExpClk \ ((void (*)(uint32_t ui32Base, uint32_t ui32I2CClk, bool bFast)) \ ROM_API_I2C_TABLE[0]) #define ROM_I2CMasterErr \ ((uint32_t (*)(uint32_t ui32Base)) \ ROM_API_I2C_TABLE[1]) // INTERRUPT FUNCTIONS #define ROM_IntPriorityGroupingSet \ ((void (*)(uint32_t ui32Bits)) \ ROM_API_INTERRUPT_TABLE[0]) #define ROM_IntPriorityGroupingGet \ ((uint32_t (*)(void)) \ ROM_API_INTERRUPT_TABLE[1]) #define ROM_IntPrioritySet \ ((void (*)(uint32_t ui32Interrupt, uint8_t ui8Priority)) \ ROM_API_INTERRUPT_TABLE[2]) #define ROM_IntPriorityGet \ ((int32_t (*)(uint32_t ui32Interrupt)) \ ROM_API_INTERRUPT_TABLE[3]) #define ROM_IntEnable \ ((void (*)(uint32_t ui32Interrupt)) \ ROM_API_INTERRUPT_TABLE[4]) #define ROM_IntDisable \ ((void (*)(uint32_t ui32Interrupt)) \ ROM_API_INTERRUPT_TABLE[5]) #define ROM_IntPendSet \ ((void (*)(uint32_t ui32Interrupt)) \ ROM_API_INTERRUPT_TABLE[6]) #define ROM_IntPendGet \ ((bool (*)(uint32_t ui32Interrupt)) \ ROM_API_INTERRUPT_TABLE[7]) #define ROM_IntPendClear \ ((void (*)(uint32_t ui32Interrupt)) \ ROM_API_INTERRUPT_TABLE[8]) // IOC FUNCTIONS #define ROM_IOCPortConfigureSet \ ((void (*)(uint32_t ui32IOId, uint32_t ui32PortId, uint32_t ui32IOConfig)) \ ROM_API_IOC_TABLE[0]) #define ROM_IOCPortConfigureGet \ ((uint32_t (*)(uint32_t ui32IOId)) \ ROM_API_IOC_TABLE[1]) #define ROM_IOCIOShutdownSet \ ((void (*)(uint32_t ui32IOId, uint32_t ui32IOShutdown)) \ ROM_API_IOC_TABLE[2]) #define ROM_IOCIOModeSet \ ((void (*)(uint32_t ui32IOId, uint32_t ui32IOMode)) \ ROM_API_IOC_TABLE[4]) #define ROM_IOCIOIntSet \ ((void (*)(uint32_t ui32IOId, uint32_t ui32Int, uint32_t ui32EdgeDet)) \ ROM_API_IOC_TABLE[5]) #define ROM_IOCIOPortPullSet \ ((void (*)(uint32_t ui32IOId, uint32_t ui32Pull)) \ ROM_API_IOC_TABLE[6]) #define ROM_IOCIOHystSet \ ((void (*)(uint32_t ui32IOId, uint32_t ui32Hysteresis)) \ ROM_API_IOC_TABLE[7]) #define ROM_IOCIOInputSet \ ((void (*)(uint32_t ui32IOId, uint32_t ui32Input)) \ ROM_API_IOC_TABLE[8]) #define ROM_IOCIOSlewCtrlSet \ ((void (*)(uint32_t ui32IOId, uint32_t ui32SlewEnable)) \ ROM_API_IOC_TABLE[9]) #define ROM_IOCIODrvStrengthSet \ ((void (*)(uint32_t ui32IOId, uint32_t ui32IOCurrent, uint32_t ui32DrvStrength)) \ ROM_API_IOC_TABLE[10]) #define ROM_IOCIOPortIdSet \ ((void (*)(uint32_t ui32IOId, uint32_t ui32PortId)) \ ROM_API_IOC_TABLE[11]) #define ROM_IOCIntEnable \ ((void (*)(uint32_t ui32IOId)) \ ROM_API_IOC_TABLE[12]) #define ROM_IOCIntDisable \ ((void (*)(uint32_t ui32IOId)) \ ROM_API_IOC_TABLE[13]) #define ROM_IOCPinTypeGpioInput \ ((void (*)(uint32_t ui32IOId)) \ ROM_API_IOC_TABLE[14]) #define ROM_IOCPinTypeGpioOutput \ ((void (*)(uint32_t ui32IOId)) \ ROM_API_IOC_TABLE[15]) #define ROM_IOCPinTypeUart \ ((void (*)(uint32_t ui32Base, uint32_t ui32Rx, uint32_t ui32Tx, uint32_t ui32Cts, uint32_t ui32Rts)) \ ROM_API_IOC_TABLE[16]) #define ROM_IOCPinTypeSsiMaster \ ((void (*)(uint32_t ui32Base, uint32_t ui32Rx, uint32_t ui32Tx, uint32_t ui32Fss, uint32_t ui32Clk)) \ ROM_API_IOC_TABLE[17]) #define ROM_IOCPinTypeSsiSlave \ ((void (*)(uint32_t ui32Base, uint32_t ui32Rx, uint32_t ui32Tx, uint32_t ui32Fss, uint32_t ui32Clk)) \ ROM_API_IOC_TABLE[18]) #define ROM_IOCPinTypeI2c \ ((void (*)(uint32_t ui32Base, uint32_t ui32Data, uint32_t ui32Clk)) \ ROM_API_IOC_TABLE[19]) #define ROM_IOCPinTypeAux \ ((void (*)(uint32_t ui32IOId)) \ ROM_API_IOC_TABLE[21]) // PRCM FUNCTIONS #define ROM_PRCMInfClockConfigureSet \ ((void (*)(uint32_t ui32ClkDiv, uint32_t ui32PowerMode)) \ ROM_API_PRCM_TABLE[0]) #define ROM_PRCMInfClockConfigureGet \ ((uint32_t (*)(uint32_t ui32PowerMode)) \ ROM_API_PRCM_TABLE[1]) #define ROM_PRCMAudioClockConfigSet \ ((void (*)(uint32_t ui32ClkConfig, uint32_t ui32SampleRate)) \ ROM_API_PRCM_TABLE[4]) #define ROM_PRCMPowerDomainOn \ ((void (*)(uint32_t ui32Domains)) \ ROM_API_PRCM_TABLE[5]) #define ROM_PRCMPowerDomainOff \ ((void (*)(uint32_t ui32Domains)) \ ROM_API_PRCM_TABLE[6]) #define ROM_PRCMPeripheralRunEnable \ ((void (*)(uint32_t ui32Peripheral)) \ ROM_API_PRCM_TABLE[7]) #define ROM_PRCMPeripheralRunDisable \ ((void (*)(uint32_t ui32Peripheral)) \ ROM_API_PRCM_TABLE[8]) #define ROM_PRCMPeripheralSleepEnable \ ((void (*)(uint32_t ui32Peripheral)) \ ROM_API_PRCM_TABLE[9]) #define ROM_PRCMPeripheralSleepDisable \ ((void (*)(uint32_t ui32Peripheral)) \ ROM_API_PRCM_TABLE[10]) #define ROM_PRCMPeripheralDeepSleepEnable \ ((void (*)(uint32_t ui32Peripheral)) \ ROM_API_PRCM_TABLE[11]) #define ROM_PRCMPeripheralDeepSleepDisable \ ((void (*)(uint32_t ui32Peripheral)) \ ROM_API_PRCM_TABLE[12]) #define ROM_PRCMPowerDomainStatus \ ((uint32_t (*)(uint32_t ui32Domains)) \ ROM_API_PRCM_TABLE[13]) #define ROM_PRCMDeepSleep \ ((void (*)(void)) \ ROM_API_PRCM_TABLE[14]) // SMPH FUNCTIONS #define ROM_SMPHAcquire \ ((void (*)(uint32_t ui32Semaphore)) \ ROM_API_SMPH_TABLE[0]) // SSI FUNCTIONS #define ROM_SSIConfigSetExpClk \ ((void (*)(uint32_t ui32Base, uint32_t ui32SSIClk, uint32_t ui32Protocol, uint32_t ui32Mode, uint32_t ui32BitRate, uint32_t ui32DataWidth)) \ ROM_API_SSI_TABLE[0]) #define ROM_SSIDataPut \ ((void (*)(uint32_t ui32Base, uint32_t ui32Data)) \ ROM_API_SSI_TABLE[1]) #define ROM_SSIDataPutNonBlocking \ ((int32_t (*)(uint32_t ui32Base, uint32_t ui32Data)) \ ROM_API_SSI_TABLE[2]) #define ROM_SSIDataGet \ ((void (*)(uint32_t ui32Base, uint32_t *pui32Data)) \ ROM_API_SSI_TABLE[3]) #define ROM_SSIDataGetNonBlocking \ ((int32_t (*)(uint32_t ui32Base, uint32_t *pui32Data)) \ ROM_API_SSI_TABLE[4]) // TIMER FUNCTIONS #define ROM_TimerConfigure \ ((void (*)(uint32_t ui32Base, uint32_t ui32Config)) \ ROM_API_TIMER_TABLE[0]) #define ROM_TimerLevelControl \ ((void (*)(uint32_t ui32Base, uint32_t ui32Timer, bool bInvert)) \ ROM_API_TIMER_TABLE[1]) #define ROM_TimerStallControl \ ((void (*)(uint32_t ui32Base, uint32_t ui32Timer, bool bStall)) \ ROM_API_TIMER_TABLE[3]) #define ROM_TimerWaitOnTriggerControl \ ((void (*)(uint32_t ui32Base, uint32_t ui32Timer, bool bWait)) \ ROM_API_TIMER_TABLE[4]) // TRNG FUNCTIONS #define ROM_TRNGNumberGet \ ((uint32_t (*)(uint32_t ui32Word)) \ ROM_API_TRNG_TABLE[1]) // UART FUNCTIONS #define ROM_UARTFIFOLevelGet \ ((void (*)(uint32_t ui32Base, uint32_t *pui32TxLevel, uint32_t *pui32RxLevel)) \ ROM_API_UART_TABLE[0]) #define ROM_UARTConfigSetExpClk \ ((void (*)(uint32_t ui32Base, uint32_t ui32UARTClk, uint32_t ui32Baud, uint32_t ui32Config)) \ ROM_API_UART_TABLE[1]) #define ROM_UARTConfigGetExpClk \ ((void (*)(uint32_t ui32Base, uint32_t ui32UARTClk, uint32_t *pui32Baud, uint32_t *pui32Config)) \ ROM_API_UART_TABLE[2]) #define ROM_UARTDisable \ ((void (*)(uint32_t ui32Base)) \ ROM_API_UART_TABLE[3]) #define ROM_UARTCharGetNonBlocking \ ((int32_t (*)(uint32_t ui32Base)) \ ROM_API_UART_TABLE[4]) #define ROM_UARTCharGet \ ((int32_t (*)(uint32_t ui32Base)) \ ROM_API_UART_TABLE[5]) #define ROM_UARTCharPutNonBlocking \ ((bool (*)(uint32_t ui32Base, uint8_t ui8Data)) \ ROM_API_UART_TABLE[6]) #define ROM_UARTCharPut \ ((void (*)(uint32_t ui32Base, uint8_t ui8Data)) \ ROM_API_UART_TABLE[7]) // UDMA FUNCTIONS #define ROM_uDMAChannelAttributeEnable \ ((void (*)(uint32_t ui32Base, uint32_t ui32ChannelNum, uint32_t ui32Attr)) \ ROM_API_UDMA_TABLE[0]) #define ROM_uDMAChannelAttributeDisable \ ((void (*)(uint32_t ui32Base, uint32_t ui32ChannelNum, uint32_t ui32Attr)) \ ROM_API_UDMA_TABLE[1]) #define ROM_uDMAChannelAttributeGet \ ((uint32_t (*)(uint32_t ui32Base, uint32_t ui32ChannelNum)) \ ROM_API_UDMA_TABLE[2]) #define ROM_uDMAChannelControlSet \ ((void (*)(uint32_t ui32Base, uint32_t ui32ChannelStructIndex, uint32_t ui32Control)) \ ROM_API_UDMA_TABLE[3]) #define ROM_uDMAChannelScatterGatherSet \ ((void (*)(uint32_t ui32Base, uint32_t ui32ChannelNum, uint32_t ui32TaskCount, void *pvTaskList, uint32_t ui32IsPeriphSG)) \ ROM_API_UDMA_TABLE[5]) #define ROM_uDMAChannelSizeGet \ ((uint32_t (*)(uint32_t ui32Base, uint32_t ui32ChannelStructIndex)) \ ROM_API_UDMA_TABLE[6]) #define ROM_uDMAChannelModeGet \ ((uint32_t (*)(uint32_t ui32Base, uint32_t ui32ChannelStructIndex)) \ ROM_API_UDMA_TABLE[7]) // VIMS FUNCTIONS #define ROM_VIMSConfigure \ ((void (*)(uint32_t ui32Base, bool bRoundRobin, bool bPrefetch)) \ ROM_API_VIMS_TABLE[0]) #define ROM_VIMSModeSet \ ((void (*)(uint32_t ui32Base, uint32_t ui32Mode)) \ ROM_API_VIMS_TABLE[1]) //***************************************************************************** // // Mark the end of the C bindings section for C++ compilers. // //***************************************************************************** #ifdef __cplusplus } #endif #endif // __ROM_H__