|
AM263Px MCU+ SDK
10.01.00
|
|
Go to the documentation of this file.
59 #include <drivers/hw_include/csl_types.h>
60 #include <drivers/hw_include/cslr_ospi.h>
61 #include <drivers/ospi/v0/cslr_ospi.h>
87 #define OSPI_TRANSFER_COMPLETED (0U)
88 #define OSPI_TRANSFER_STARTED (1U)
89 #define OSPI_TRANSFER_CANCELLED (2U)
90 #define OSPI_TRANSFER_FAILED (3U)
91 #define OSPI_TRANSFER_CSN_DEASSERT (4U)
92 #define OSPI_TRANSFER_TIMEOUT (5U)
114 #define OSPI_TRANSFER_MODE_BLOCKING (0U)
119 #define OSPI_TRANSFER_MODE_CALLBACK (1U)
124 #define OSPI_TRANSFER_MODE_POLLING (2U)
141 #define OSPI_FF_POL0_PHA0 (0U)
142 #define OSPI_FF_POL0_PHA1 (CSL_OSPI_FLASH_CFG_CONFIG_REG_SEL_CLK_PHASE_FLD_MASK | 0U)
143 #define OSPI_FF_POL1_PHA0 (0U | CSL_OSPI_FLASH_CFG_CONFIG_REG_SEL_CLK_POL_FLD_MASK)
144 #define OSPI_FF_POL1_PHA1 (CSL_OSPI_FLASH_CFG_CONFIG_REG_SEL_CLK_PHASE_FLD_MASK | \
145 CSL_OSPI_FLASH_CFG_CONFIG_REG_SEL_CLK_POL_FLD_MASK)
156 #define OSPI_CMD_INVALID_OPCODE (0xFFU)
157 #define OSPI_CMD_INVALID_DUMMY (0xFFU)
158 #define OSPI_CMD_INVALID_ADDR (0xFFFFFFFFU)
169 #define OSPI_CMD_EXT_TYPE_REPEAT (0x00U)
170 #define OSPI_CMD_EXT_TYPE_INVERSE (0x01U)
171 #define OSPI_CMD_EXT_TYPE_NONE (0x02U)
182 #define OSPI_NOR_PROTOCOL(cmd, data, addr, dtr) (uint32_t)(((uint32_t)(dtr) << 24) | \
183 ((uint32_t)(cmd) << 16) | \
184 ((uint32_t)(addr) << 8) | \
185 ((uint32_t)(data) << 0))
186 #define OSPI_NOR_PROTOCOL_INVALID (uint32_t)(0xFFFFFFFF)
188 #define OSPI_PROTO_1S_1S_1S (0x0001)
189 #define OSPI_PROTO_1S_1S_2S (0x0002)
190 #define OSPI_PROTO_1S_1S_4S (0x0003)
191 #define OSPI_PROTO_1S_1S_8S (0x0004)
192 #define OSPI_PROTO_4S_4S_4S (0x0005)
193 #define OSPI_PROTO_4S_4D_4D (0x0006)
194 #define OSPI_PROTO_8S_8S_8S (0x0007)
195 #define OSPI_PROTO_8D_8D_8D (0x0008)
196 #define OSPI_PROTO_CUSTOM (0x0009)
198 #define OSPI_NAND_PROTOCOL(cmd, addr, data, dtr) (uint32_t)(((uint32_t)(dtr) << 24) | \
199 ((uint32_t)(cmd) << 16) | \
200 ((uint32_t)(addr) << 8) | \
201 ((uint32_t)(data) << 0))
202 #define OSPI_NAND_PROTOCOL_INVALID (uint32_t)(0xFFFFFFFF)
213 #define OSPI_CS0 (0U)
214 #define OSPI_CS1 (1U)
215 #define OSPI_CS2 (2U)
216 #define OSPI_CS3 (3U)
219 #define OSPI_CHIP_SELECT(x) ((~((1U) << (x))) & 0xFU)
222 #define OSPI_RESETPIN_DQ3 (0U)
223 #define OSPI_RESETPIN_DEDICATED (1U)
234 #define CSL_OSPI_BAUD_RATE_DIVISOR(x) (((x) - 2U) >> 1U)
235 #define MAX_BAUDRATE_DIVIDER (32U)
236 #define CSL_OSPI_BAUD_RATE_DIVISOR_DEFAULT (CSL_OSPI_BAUD_RATE_DIVISOR(MAX_BAUDRATE_DIVIDER))
246 #define OSPI_DECODER_SELECT4 ((uint32_t) 0U)
247 #define OSPI_DECODER_SELECT16 ((uint32_t) 1U)
258 #define OSPI_STATE_RESET ((uint32_t) 0U)
261 #define OSPI_STATE_IDLE ((uint32_t) 1U)
264 #define OSPI_STATE_BUSY ((uint32_t) 2U)
267 #define OSPI_STATE_ERROR ((uint32_t) 3U)
277 #define OSPI_SYSTEM_SUCCESS ((int32_t )0)
281 #define OSPI_SYSTEM_FAILURE ((int32_t)-1)
285 #define OSPI_TIMEOUT ((int32_t)-2)
289 #define OSPI_LLD_INVALID_PARAM ((int32_t)-3)
293 #define OSPI_BUSY ((int32_t)-4)
297 #define OSPI_INVALID_STATE ((int32_t)-5)
308 #define OSPI_NO_WAIT ((uint32_t)0)
312 #define OSPI_WAIT_FOREVER ((uint32_t)-1)
322 #define OSPI_TRANS_IDLE ((uint32_t)0)
326 #define OSPI_TRANS_READ ((uint32_t)1)
330 #define OSPI_TRANS_WRITE ((uint32_t)2)
352 #define OSPI_FLASH_CFG_PHY_MASTER_CONTROL_REG_PHY_MASTER_MODE (0U)
353 #define OSPI_FLASH_CFG_PHY_MASTER_CONTROL_REG_PHY_BYPASS_MODE (1U)
366 #define OSPI_PHY_DLL_FULL_CYCLE_LOCK ((uint16_t) 0U)
367 #define OSPI_PHY_DLL_HALF_CYCLE_LOCK ((uint16_t) 1U)
378 #define OSPI_FLASH_ATTACK_VECTOR_SIZE (128U)
606 uint32_t devDelays[4];
int32_t OSPI_lld_disableDacMode(OSPILLD_Handle handle)
This function disables the Direct Access Mode.
void OSPI_lld_setNumAddrBytes(OSPILLD_Handle handle, uint32_t numAddrBytes)
This function set the number of bytes used to send address while reading or writing to flash memory.
uint32_t writeTimeout
Definition: ospi_lld.h:475
int32_t OSPI_lld_disablePhyPipeline(OSPILLD_Handle handle)
This function disables the PHY Pipeline.
uint32_t regionSize
Definition: ospi_lld.h:512
void * args
Definition: hsmclient_msg.h:4
int32_t OSPI_lld_enablePhyPipeline(OSPILLD_Handle handle)
This function enables the PHY Pipeline.
uint16_t rxDataLen
Definition: ospi_lld.h:494
int32_t OSPI_lld_norFlashReadId(OSPILLD_Handle handle, uint32_t *manufacturerId, uint32_t *deviceId)
This function tries to read the JEDEC ID from the NOR flash connected to the OSPI peripheral.
int32_t txDllLowWindowEnd
Definition: ospi_lld.h:546
uint32_t status
Definition: ospi_lld.h:448
void OSPI_lld_setCmdExtType(OSPILLD_Handle handle, uint32_t cmdExtType)
This function sets the type of command extension used in dual byte opcode mode.
uint32_t OSPI_lld_isIntrEnable(OSPILLD_Handle handle)
This function checks if interrupts are enabled.
uint32_t(* OSPI_Clock_usecToTicks)(uint64_t usecs)
The definition of a micro seconds to ticks function used by the QSPI driver to get ticks from microse...
Definition: ospi_lld.h:403
struct OSPILLD_InitObject * OSPILLD_InitHandle
uint32_t phyEnableSuccess
Definition: ospi_lld.h:668
int32_t OSPI_lld_norFlashInit1s1s1s(OSPILLD_Handle handle)
This function initializes the NOR flash to work in 1-1-1 mode.
uint8_t numAddrBytes
Definition: ospi_lld.h:488
int32_t txDllLowWindowStart
Definition: ospi_lld.h:545
OSPI Instance Read Command Structure.
Definition: ospi_lld.h:482
int32_t OSPI_lld_configResetPin(OSPILLD_Handle handle, uint32_t config)
This function configures reset functionality.
uint32_t intrNum
Definition: ospi_lld.h:592
OSPI_PhyWindowParams tuningWindowParams
Definition: ospi_lld.h:576
OSPI Instance Write Command Structure.
Definition: ospi_lld.h:463
int32_t OSPI_lld_deInitDma(OSPILLD_Handle hOspi)
Function to close a OSPI peripheral specified by the OSPI handle in DMA mode.
void OSPI_lld_isr(void *args)
QSPI ISR for Read and Write Functionality.
uint32_t transferTimeout
Definition: ospi_lld.h:454
OSPI_Transaction * currTrans
Definition: ospi_lld.h:671
Data structure used with OSPI_Transfers - OSPI_lld_readDirect, OSPI_lld_writeDirect,...
Definition: ospi_lld.h:441
uint32_t transferMode
Definition: ospi_lld.h:643
uint32_t cmdDummyCycles
Definition: ospi_lld.h:654
uint32_t inputClkFreq
Definition: ospi_lld.h:586
uint32_t cmdAddr
Definition: ospi_lld.h:466
uint32_t OSPI_lld_isPhyEnable(OSPILLD_Handle handle)
This function checks if the OSPI PHY controller is enabled.
OSPI_lld_InterruptCallback interruptCallback
Definition: ospi_lld.h:694
int32_t OSPI_lld_norFlashWrite(OSPILLD_Handle handle, uint32_t offset, uint8_t *buf, uint32_t len)
This function writes data to the flash at a specified offset.
void OSPI_lld_norFlashSetCmds(uint8_t rdCmd, uint8_t wrCmd, uint8_t eraseCmd)
This function sets up internal bookkeeping variables for read, write and erase commands....
int32_t OSPI_lld_readCmd(OSPILLD_Handle handle, OSPI_ReadCmdParams *rdParams)
Function to send specific commands and receive related data from flash.
OSPILLD_InitHandle hOspiInit
Definition: ospi_lld.h:677
OSPI PHY Configuration.
Definition: ospi_lld.h:572
void(* OSPI_lld_dma_readCompleteCallback)(void *args)
The definition of a dma read completion callback function used by the QSPI driver.
Definition: ospi_lld.h:428
OSPI_PhyConfiguration phyConfiguration
Definition: ospi_lld.h:624
int32_t rxLowSearchEnd
Definition: ospi_lld.h:550
uint32_t numAddrBytes
Definition: ospi_lld.h:660
int32_t rxHighSearchStart
Definition: ospi_lld.h:551
void OSPI_lld_setCmdDummyCycles(OSPILLD_Handle handle, uint32_t cmdDummyCycles)
This function sets appropriate dummy cycles to be used while sending STIG commands to flash.
uint32_t cmdAddr
Definition: ospi_lld.h:485
void OSPI_lld_Transaction_init(OSPI_Transaction *trans)
Function to initialize the OSPI_Transaction structure.
OSPI_Clock_usecToTicks Clock_usecToTicks
Definition: ospi_lld.h:690
int32_t OSPI_lld_init(OSPILLD_Handle hOspi)
This function opens a given OSPI peripheral.
uint32_t count
Definition: ospi_lld.h:442
uint32_t cmdExtType
Definition: ospi_lld.h:665
int32_t OSPI_lld_phyTuneDDR(OSPILLD_Handle handle, uint32_t flashOffset)
This function tunes the OSPI PHY for DDR mode to set optimal PHY parameters.
int32_t OSPI_lld_initDma(OSPILLD_Handle hOspi)
This function opens a given OSPI peripheral in DMA mode.
uint32_t OSPI_lld_isDacEnable(OSPILLD_Handle handle)
This function checks if the Direct Access Controller is enabled.
void * OSPI_DmaChConfig
A handle that holds DMA configuration parameters for OSPI.
Definition: ospi_lld.h:75
int32_t OSPI_lld_writeCmd(OSPILLD_Handle handle, OSPI_WriteCmdParams *wrParams)
Function to send specific commands and related data to flash.
uint32_t dmaEnable
Definition: ospi_lld.h:598
uint32_t dllLockMode
Definition: ospi_lld.h:575
OSPI Parameters.
Definition: ospi_lld.h:528
uint32_t dacEnable
Definition: ospi_lld.h:602
int32_t txDLLSearchOffset
Definition: ospi_lld.h:557
int32_t txHighSearchStart
Definition: ospi_lld.h:555
int32_t OSPI_lld_writeIndirect(OSPILLD_Handle handle, OSPI_Transaction *trans)
Function to perform indirect writes to the flash using INDAC controller.
uint32_t(* OSPI_Clock_getTicks)(void)
The definition of a get System Tick function used by the QSPI driver to keep track of time.
Definition: ospi_lld.h:392
int32_t txDllHighWindowStart
Definition: ospi_lld.h:547
uint32_t txDataLen
Definition: ospi_lld.h:473
void * txDataBuf
Definition: ospi_lld.h:471
uint32_t OSPI_lld_getFlashDataBaseAddr(OSPILLD_Handle handle)
This function gets the SOC mapped data base address of the flash.
void OSPI_lld_setProtocol(OSPILLD_Handle handle, uint32_t protocol)
This function sets the number of transfer lines in the OSPI driver to set the requested protocol.
int32_t OSPI_lld_writeDirect(OSPILLD_Handle handle, OSPI_Transaction *trans)
Function to perform direct writes to the flash using DAC controller.
int32_t OSPI_lld_enableDDR(OSPILLD_Handle handle)
This function enables the Dual Data Rate (DDR)
void OSPI_lld_setXferOpCodes(OSPILLD_Handle handle, uint8_t readCmd, uint8_t pageProgCmd)
This function sets the opcodes for reading and page programming the flash.
void OSPI_lld_clearDualOpCodeMode(OSPILLD_Handle handle)
This function sets OSPI controller to not use dual byte opcodes.
int32_t rxHighSearchEnd
Definition: ospi_lld.h:552
void OSPI_lld_readCompleteCallback(void *args)
QSPI Read complete callback for DMA mode.
int32_t OSPI_lld_enableDdrRdCmds(OSPILLD_Handle handle)
This function sets DDR bit in INSTR_RD register for RD commands.
uint32_t rdDataCapDelay
Definition: ospi_lld.h:656
int32_t txDllHighWindowEnd
Definition: ospi_lld.h:548
OSPI driver object.
Definition: ospi_lld.h:632
int32_t OSPI_lld_norFlashErase(OSPILLD_Handle handle, uint32_t address)
This function erases 1 block of data starting from a provided address.
uint32_t protocol
Definition: ospi_lld.h:645
int32_t OSPI_lld_readIndirect(OSPILLD_Handle handle, OSPI_Transaction *trans)
Function to perform indirect reads from the flash using INDAC controller.
OSPI PHY Tuning Window Parameters.
Definition: ospi_lld.h:544
void * rxDataBuf
Definition: ospi_lld.h:492
uint32_t phyEnable
Definition: ospi_lld.h:600
uint8_t cmd
Definition: ospi_lld.h:464
int32_t rxLowSearchStart
Definition: ospi_lld.h:549
OSPI_DmaHandle ospiDmaHandle
Definition: ospi_lld.h:620
int32_t OSPI_lld_configBaudrate(OSPILLD_Handle handle, uint32_t baud)
Configures baud divider.
uint32_t OSPI_lld_getInputClk(OSPILLD_Handle handle)
This function returns the input clk frequency OSPI was programmed at.
int32_t OSPI_lld_enablePhy(OSPILLD_Handle handle)
This function enables the PHY.
OSPI_Clock_getTicks Clock_getTicks
Definition: ospi_lld.h:688
int32_t ospiDmaChIndex
Definition: ospi_lld.h:529
int32_t OSPI_lld_enableSDR(OSPILLD_Handle handle)
This function enables the Single Data Rate (SDR)
void * buf
Definition: ospi_lld.h:444
int32_t OSPI_lld_phyReadAttackVector(OSPILLD_Handle handle, uint32_t offset)
This function checks if the attack vector, or the data used for tuning the PHY is present at an offse...
uint32_t chipSelect
Definition: ospi_lld.h:608
void * OSPI_DrvHandle
Definition: ospi_lld.h:77
const OSPI_Params * openParams
Definition: ospi_lld.h:642
const OSPI_AddrRegion * dmaRestrictedRegions
Definition: ospi_lld.h:614
uint32_t state
Definition: ospi_lld.h:683
uint32_t rdDelayMax
Definition: ospi_lld.h:560
OSPI Address Region.
Definition: ospi_lld.h:509
int32_t txHighSearchEnd
Definition: ospi_lld.h:556
uint32_t decChipSelect
Definition: ospi_lld.h:610
int32_t OSPI_lld_disablePhy(OSPILLD_Handle handle)
This function disables the PHY.
int32_t OSPI_lld_norFlashReadIndirect(OSPILLD_Handle handle, uint32_t offset, uint8_t *buf, uint32_t len)
This function reads data from the flash from a specified offset in INDAC mode.
int32_t txLowSearchStart
Definition: ospi_lld.h:553
uint32_t baseAddr
Definition: ospi_lld.h:636
uint32_t OSPI_lld_getPhyEnableSuccess(OSPILLD_Handle handle)
This function fetches the phyEnableSuccess field in OSPILLD_Object.
uint8_t numAddrBytes
Definition: ospi_lld.h:469
uint32_t rdDummyCycles
Definition: ospi_lld.h:652
OSPI_lld_dma_readCompleteCallback readCompleteCallback
Definition: ospi_lld.h:696
void OSPI_lld_setReadDummyCycles(OSPILLD_Handle handle, uint32_t dummyCycles)
This function sets appropriate dummy cycles for flash read.
int32_t OSPI_lld_norFlashRead(OSPILLD_Handle handle, uint32_t offset, uint8_t *buf, uint32_t len)
This function reads data from the flash from a specified offset in DAC mode.
int32_t OSPI_lld_readBaudRateDivFromReg(OSPILLD_Handle handle, uint32_t *baudDiv)
Return value of baudrate that is programmed in IP register.
uint32_t phyControlMode
Definition: ospi_lld.h:574
void OSPI_lld_phyGetTuningData(uint32_t *tuningData, uint32_t *tuningDataSize)
This function returns the address to the attack vector buf required for tuning the PHY.
int32_t OSPI_lld_deInit(OSPILLD_Handle hOspi)
Function to close a OSPI peripheral specified by the OSPI handle.
uint32_t OSPI_lld_isDmaEnable(OSPILLD_Handle handle)
This function checks if DMA is enabled for reads.
uint32_t baudRateDiv
Definition: ospi_lld.h:612
int32_t OSPI_lld_getBaudRateDivFromObj(OSPILLD_Handle handle, uint32_t *baudDiv)
Return value of baudrate that is saved in OSPI Object.
void * args
Definition: ospi_lld.h:685
void OSPI_lld_setDeviceSize(OSPILLD_Handle handle, uint32_t pageSize, uint32_t blkSize)
This function sets the block size and page size of the flash to the device size register in OSPI.
void OSPI_lld_setModeBits(OSPILLD_Handle handle, uint32_t modeBits)
This function sets mode bits in the mode bit field of OSPI config register.
int32_t txLowSearchEnd
Definition: ospi_lld.h:554
void OSPI_lld_readCmdParams_init(OSPI_ReadCmdParams *rdParams)
Function to initialize the OSPI_ReadCmdParams structure.
uint8_t dummyBits
Definition: ospi_lld.h:490
void(* OSPI_Clock_usec)(uint32_t usecs)
Sleep for user specified usecs.
Definition: ospi_lld.h:411
OSPI_Transaction trans
Definition: ospi_lld.h:674
int32_t OSPI_lld_enableDacMode(OSPILLD_Handle handle)
This function enables the Direct Access Mode.
int32_t OSPI_lld_phyTuneGrapher(OSPILLD_Handle handle, uint32_t flashOffset, uint8_t arrays[4][128][128])
This function takes a 4x128x128 array and fills it with TX RX DLL data for graphing purpose.
uint32_t addrOffset
Definition: ospi_lld.h:446
uint32_t state
Definition: ospi_lld.h:456
uint32_t OSPI_lld_getProtocol(OSPILLD_Handle handle)
This function returns the current protocol for which the transfer lines in OSPI driver is configured ...
uint32_t phyRdDataCapDelay
Definition: ospi_lld.h:658
uint32_t regionStartAddr
Definition: ospi_lld.h:510
void OSPI_lld_enableModeBitsCmd(OSPILLD_Handle handle)
This function enables mode bits transmission while sending CMDs.
uint32_t dataLen
Definition: ospi_lld.h:450
uint32_t frmFmt
Definition: ospi_lld.h:604
uint32_t rdDelayMin
Definition: ospi_lld.h:559
uint8_t intrPriority
Definition: ospi_lld.h:596
void * OSPI_DmaHandle
The handle for DMA instance used with OSPI.
Definition: ospi_lld.h:72
void OSPI_lld_setPhyEnableSuccess(OSPILLD_Handle handle, uint32_t success)
This function sets the phyEnableSuccess field in OSPILLD_Object. Has to be called from flash driver.
OSPI driver initialization object.
Definition: ospi_lld.h:583
int32_t OSPI_lld_readDirectDma(OSPILLD_Handle handle, OSPI_Transaction *trans)
Function to perform direct reads from the flash using DAC controller in DMA mode.
struct OSPILLD_Object * OSPILLD_Handle
uint32_t rxTxDLLSearchStep
Definition: ospi_lld.h:558
void OSPI_lld_enableModeBitsRead(OSPILLD_Handle handle)
This function enables mode bits transmission while reading.
uint8_t cmd
Definition: ospi_lld.h:483
uint32_t dataBaseAddr
Definition: ospi_lld.h:584
void(* OSPI_lld_InterruptCallback)(void *args)
The definition of a interrupt completion callback function used by the QSPI driver.
Definition: ospi_lld.h:420
int32_t OSPI_lld_readDirect(OSPILLD_Handle handle, OSPI_Transaction *trans)
Function to perform direct reads from the flash using DAC controller.
int32_t OSPI_lld_setRdDataCaptureDelay(OSPILLD_Handle handle, uint32_t rdDataCapDelay)
This function sets read data capture cycles in the OSPI controller.
uint32_t phaseDelayElement
Definition: ospi_lld.h:573
int32_t OSPI_lld_norFlashReadSfdp(OSPILLD_Handle handle, uint32_t offset, uint8_t *buf, uint32_t len)
This function reads SFDP table from the flash from a specified offset.
OSPI_Clock_usec Clock_usleep
Definition: ospi_lld.h:692
uint32_t readTimeout
Definition: ospi_lld.h:496
void OSPI_lld_setDualOpCodeMode(OSPILLD_Handle handle)
This function sets OSPI controller to use dual byte opcodes.
uint32_t transferOffset
Definition: ospi_lld.h:452
uint32_t intrEnable
Definition: ospi_lld.h:594
int32_t OSPI_lld_phyTuneSDR(OSPILLD_Handle handle, uint32_t flashOffset)
This function tunes the OSPI PHY for SDR mode to set optimal PHY parameters.
void OSPI_lld_writeCmdParams_init(OSPI_WriteCmdParams *wrParams)
Function to initialize the OSPI_WriteCmdParams structure.
OSPI_DmaChConfig ospiDmaChConfig
Definition: ospi_lld.h:622