|
AM243x MCU+ SDK
09.01.00
|
|
Go to the documentation of this file.
61 #include <drivers/hw_include/csl_types.h>
62 #include <drivers/hw_include/cslr_ospi.h>
83 #define OSPI_TRANSFER_COMPLETED (0U)
84 #define OSPI_TRANSFER_STARTED (1U)
85 #define OSPI_TRANSFER_CANCELLED (2U)
86 #define OSPI_TRANSFER_FAILED (3U)
87 #define OSPI_TRANSFER_CSN_DEASSERT (4U)
88 #define OSPI_TRANSFER_TIMEOUT (5U)
110 #define OSPI_TRANSFER_MODE_BLOCKING (0U)
115 #define OSPI_TRANSFER_MODE_CALLBACK (1U)
120 #define OSPI_TRANSFER_MODE_POLLING (2U)
137 #define OSPI_FF_POL0_PHA0 (0U)
138 #define OSPI_FF_POL0_PHA1 (CSL_OSPI_FLASH_CFG_CONFIG_REG_SEL_CLK_PHASE_FLD_MASK | 0U)
139 #define OSPI_FF_POL1_PHA0 (0U | CSL_OSPI_FLASH_CFG_CONFIG_REG_SEL_CLK_POL_FLD_MASK)
140 #define OSPI_FF_POL1_PHA1 (CSL_OSPI_FLASH_CFG_CONFIG_REG_SEL_CLK_PHASE_FLD_MASK | \
141 CSL_OSPI_FLASH_CFG_CONFIG_REG_SEL_CLK_POL_FLD_MASK)
152 #define OSPI_CMD_INVALID_OPCODE (0xFFU)
153 #define OSPI_CMD_INVALID_DUMMY (0xFFU)
154 #define OSPI_CMD_INVALID_ADDR (0xFFFFFFFFU)
165 #define OSPI_CMD_EXT_TYPE_REPEAT (0x00U)
166 #define OSPI_CMD_EXT_TYPE_INVERSE (0x01U)
167 #define OSPI_CMD_EXT_TYPE_NONE (0x02U)
178 #define OSPI_NOR_PROTOCOL(cmd, addr, data, dtr) (uint32_t)(((uint32_t)(dtr) << 24) | \
179 ((uint32_t)(cmd) << 16) | \
180 ((uint32_t)(addr) << 8) | \
181 ((uint32_t)(data) << 0))
182 #define OSPI_NOR_PROTOCOL_INVALID (uint32_t)(0xFFFFFFFF)
184 #define OSPI_NAND_PROTOCOL(cmd, addr, data, dtr) (uint32_t)(((uint32_t)(dtr) << 24) | \
185 ((uint32_t)(cmd) << 16) | \
186 ((uint32_t)(addr) << 8) | \
187 ((uint32_t)(data) << 0))
188 #define OSPI_NAND_PROTOCOL_INVALID (uint32_t)(0xFFFFFFFF)
199 #define OSPI_CS0 (0U)
200 #define OSPI_CS1 (1U)
201 #define OSPI_CS2 (2U)
202 #define OSPI_CS3 (3U)
204 #define OSPI_CHIP_SELECT(x) ((~((1U) << (x))) & 0xFU)
207 #define OSPI_RESETPIN_DQ3 (0U)
208 #define OSPI_RESETPIN_DEDICATED (1U)
219 #define CSL_OSPI_BAUD_RATE_DIVISOR(x) (((x) - 2U) >> 1U)
220 #define MAX_BAUDRATE_DIVIDER (32U)
221 #define CSL_OSPI_BAUD_RATE_DIVISOR_DEFAULT (CSL_OSPI_BAUD_RATE_DIVISOR(MAX_BAUDRATE_DIVIDER))
230 #define OSPI_DECODER_SELECT4 ((uint32_t) 0U)
231 #define OSPI_DECODER_SELECT16 ((uint32_t) 1U)
355 uint32_t devDelays[4];
int32_t OSPI_norFlashWrite(OSPI_Handle handle, uint32_t offset, uint8_t *buf, uint32_t len)
This function writes data to the flash at a specified offset.
void OSPI_setProtocol(OSPI_Handle handle, uint32_t protocol)
This function sets the number of transfer lines in the OSPI driver to set the requested protocol.
uint32_t OSPI_isDacEnable(OSPI_Handle handle)
This function checks if the Direct Access Controller mode is enabled.
uint32_t regionSize
Definition: ospi/v0/ospi.h:302
void OSPI_setCmdDummyCycles(OSPI_Handle handle, uint32_t cmdDummyCycles)
This function sets appropriate dummy cycles to be used while sending STIG commands to flash.
uint16_t rxDataLen
Definition: ospi/v0/ospi.h:286
uint32_t status
Definition: ospi/v0/ospi.h:252
uint8_t numAddrBytes
Definition: ospi/v0/ospi.h:280
Definition: ospi/v0/ospi.h:274
void OSPI_Transaction_init(OSPI_Transaction *trans)
Function to initialize the OSPI_Transaction structure.
int32_t OSPI_setRdDataCaptureDelay(OSPI_Handle handle, uint32_t rdDataCapDelay)
This function sets read data capture cycles in the OSPI controller.
Definition: ospi/v0/ospi.h:259
uint32_t rdDataCapDelay
Definition: ospi/v0/ospi.h:395
int32_t OSPI_disablePhyPipeline(OSPI_Handle handle)
This function disables the PHY Pipeline.
void OSPI_ReadCmdParams_init(OSPI_ReadCmdParams *rdParams)
Function to initialize the OSPI_ReadCmdParams structure.
int32_t OSPI_configBaudrate(OSPI_Handle handle, uint32_t baud)
Configures baud divider.
int32_t OSPI_enableSDR(OSPI_Handle handle)
This function enables the Single Data Rate (SDR)
uint32_t transferTimeout
Definition: ospi/v0/ospi.h:254
uint32_t dacEnable
Definition: ospi/v0/ospi.h:351
int32_t OSPI_readBaudRateDivFromReg(OSPI_Handle handle, uint32_t *baudDiv)
Return value of baudrate that is programmed in IP register.
int32_t OSPI_norFlashReadSfdp(OSPI_Handle handle, uint32_t offset, uint8_t *buf, uint32_t len)
This function reads SFDP table from the flash from a specified offset.
uint32_t cmdExtType
Definition: ospi/v0/ospi.h:404
Data structure used with OSPI_Transfers - OSPI_readDirect, OSPI_writeDirect, OSPI_readIndirect,...
Definition: ospi/v0/ospi.h:245
uint32_t cmdAddr
Definition: ospi/v0/ospi.h:262
int32_t OSPI_phyReadAttackVector(OSPI_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...
int32_t OSPI_norFlashRead(OSPI_Handle handle, uint32_t offset, uint8_t *buf, uint32_t len)
This function reads data from the flash from a specified offset.
uint8_t intrPriority
Definition: ospi/v0/ospi.h:345
uint16_t index
Definition: tisci_rm_proxy.h:3
uint32_t OSPI_getInputClk(OSPI_Handle handle)
This function returns the input clk frequency OSPI was programmed at.
int32_t OSPI_phyTuneSDR(OSPI_Handle handle, uint32_t flashOffset)
void OSPI_init(void)
This function initializes the OSPI module.
int32_t OSPI_enableDdrRdCmds(OSPI_Handle handle)
This function sets DDR bit in INSTR_RD register for RD commands.
int32_t OSPI_norFlashErase(OSPI_Handle handle, uint32_t address)
This function erases 1 block of data starting from a provided address.
void OSPI_deinit(void)
This function de-initializes the OSPI module.
void OSPI_setDualOpCodeMode(OSPI_Handle handle)
This function sets OSPI controller to use dual byte opcodes.
void OSPI_setDeviceSize(OSPI_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_Params_init(OSPI_Params *ospiParams)
Initialize data structure with defaults.
uint32_t OSPI_isDtrEnable(OSPI_Handle handle)
This function checks if the Dual Transfer Rate (Sampling on both rising and falling edge of the clock...
OSPI_Handle handle
Definition: ospi/v0/ospi.h:380
uint32_t cmdAddr
Definition: ospi/v0/ospi.h:277
uint32_t dataBaseAddr
Definition: ospi/v0/ospi.h:333
uint32_t count
Definition: ospi/v0/ospi.h:246
uint32_t baudRateDiv
Definition: ospi/v0/ospi.h:361
OSPI Parameters.
Definition: ospi/v0/ospi.h:318
int32_t OSPI_norFlashReadId(OSPI_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.
void OSPI_setXferOpCodes(OSPI_Handle handle, uint8_t readCmd, uint8_t pageProgCmd)
This function sets the opcodes for reading and page programming the flash.
OSPI_Handle OSPI_getHandle(uint32_t index)
This function returns the handle of an open OSPI Instance from the instance index.
uint32_t transferMode
Definition: ospi/v0/ospi.h:382
uint32_t txDataLen
Definition: ospi/v0/ospi.h:269
void * txDataBuf
Definition: ospi/v0/ospi.h:267
int32_t OSPI_disableDacMode(OSPI_Handle handle)
This function disables the Direct Access Mode.
int32_t OSPI_phyTuneGrapher(OSPI_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 inputClkFreq
Definition: ospi/v0/ospi.h:335
uint32_t OSPI_getProtocol(OSPI_Handle handle)
This function returns the current protocol for which the transfer lines in OSPI driver is configured ...
void OSPI_setNumAddrBytes(OSPI_Handle handle, uint32_t numAddrBytes)
This function set the number of bytes used to send address while reading or writing to flash memory.
const OSPI_AddrRegion * dmaRestrictedRegions
Definition: ospi/v0/ospi.h:363
uint32_t cmdDummyCycles
Definition: ospi/v0/ospi.h:393
OSPI instance attributes - used during init time.
Definition: ospi/v0/ospi.h:327
uint32_t OSPI_getFlashDataBaseAddr(OSPI_Handle handle)
This function gets the SOC mapped data base address of the flash.
OSPI driver object.
Definition: ospi/v0/ospi.h:376
int32_t OSPI_readDirect(OSPI_Handle handle, OSPI_Transaction *trans)
Function to perform direct reads from the flash using DAC controller.
void OSPI_phyGetTuningData(uint32_t *tuningData, uint32_t *tuningDataSize)
This function returns the address to the attack vector buf required for tuning the PHY.
void OSPI_clearDualOpCodeMode(OSPI_Handle handle)
This function sets OSPI controller to not use dual byte opcodes.
uint32_t rdDummyCycles
Definition: ospi/v0/ospi.h:391
uint32_t chipSelect
Definition: ospi/v0/ospi.h:357
uint32_t isOpen
Definition: ospi/v0/ospi.h:410
void * rxDataBuf
Definition: ospi/v0/ospi.h:284
int32_t OSPI_writeIndirect(OSPI_Handle handle, OSPI_Transaction *trans)
Function to perform indirect writes to the flash using INDAC controller.
uint8_t cmd
Definition: ospi/v0/ospi.h:260
uint32_t protocol
Definition: ospi/v0/ospi.h:384
int32_t OSPI_enablePhyPipeline(OSPI_Handle handle)
This function enables the PHY Pipeline.
int32_t OSPI_norFlashInit1s1s1s(OSPI_Handle handle)
This function initializes the NOR flash to work in 1-1-1 mode.
uint32_t OSPI_isPhyEnable(OSPI_Handle handle)
This function checks if the OSPI PHY controller is enabled.
uint32_t isDacEnable
Definition: ospi/v0/ospi.h:412
int32_t OSPI_writeCmd(OSPI_Handle handle, OSPI_WriteCmdParams *wrParams)
Function to send specific commands and related data to flash.
void OSPI_setPhyEnableSuccess(OSPI_Handle handle, uint32_t success)
This function sets the phyEnableSuccess field in OSPI_Object. Has to be called from flash driver.
int32_t ospiDmaChIndex
Definition: ospi/v0/ospi.h:319
int32_t OSPI_enablePhy(OSPI_Handle handle)
This function enables the PHY.
void * buf
Definition: ospi/v0/ospi.h:248
uint32_t phyEnableSuccess
Definition: ospi/v0/ospi.h:420
int32_t OSPI_disablePhy(OSPI_Handle handle)
This function disables the PHY.
int32_t OSPI_enableDDR(OSPI_Handle handle)
This function enables the Dual Data Rate (DDR)
Definition: ospi/v0/ospi.h:429
OSPI Address Region.
Definition: ospi/v0/ospi.h:299
uint32_t intrNum
Definition: ospi/v0/ospi.h:341
int32_t OSPI_configResetPin(OSPI_Handle handle, uint32_t config)
This function configures reset functionality.
void OSPI_close(OSPI_Handle handle)
Function to close a OSPI peripheral specified by the OSPI handle.
void OSPI_enableModeBitsRead(OSPI_Handle handle)
This function enables mode bits transmission while reading.
SemaphoreP_Object lockObj
Definition: ospi/v0/ospi.h:414
uint8_t numAddrBytes
Definition: ospi/v0/ospi.h:265
uint32_t OSPI_isDmaEnable(OSPI_Handle handle)
This function checks if DMA is enabled for reads.
void OSPI_enableModeBitsCmd(OSPI_Handle handle)
This function enables mode bits transmission while sending CMDs.
Opaque Hwi object used with the Hwi APIs.
Definition: HwiP.h:93
HwiP_Object hwiObj
Definition: ospi/v0/ospi.h:418
uint8_t dummyBits
Definition: ospi/v0/ospi.h:282
uint32_t numAddrBytes
Definition: ospi/v0/ospi.h:399
uint32_t phyRdDataCapDelay
Definition: ospi/v0/ospi.h:397
void OSPI_norFlashSetCmds(uint8_t rdCmd, uint8_t wrCmd, uint8_t eraseCmd)
This function sets up internal bookkeeping variables for read, write and erase commands....
void OSPI_setReadDummyCycles(OSPI_Handle handle, uint32_t dummyCycles)
This function sets appropriate dummy cycles for flash read.
void * ospiDmaHandle
Definition: ospi/v0/ospi.h:425
OSPI_Config gOspiConfig[]
Externally defined driver configuration array.
uint32_t OSPI_isIntrEnable(OSPI_Handle handle)
This function checks if interrupts are enabled.
uint32_t addrOffset
Definition: ospi/v0/ospi.h:250
uint32_t dmaEnable
Definition: ospi/v0/ospi.h:347
uint32_t phyEnable
Definition: ospi/v0/ospi.h:349
Opaque semaphore object used with the semaphore APIs.
Definition: SemaphoreP.h:59
uint32_t regionStartAddr
Definition: ospi/v0/ospi.h:300
int32_t OSPI_getBaudRateDivFromObj(OSPI_Handle handle, uint32_t *baudDiv)
Return value of baudrate that is saved in OSPI Object.
void OSPI_WriteCmdParams_init(OSPI_WriteCmdParams *wrParams)
Function to initialize the OSPI_WriteCmdParams structure.
void OSPI_setCmdExtType(OSPI_Handle handle, uint32_t cmdExtType)
This function sets the type of command extension used in dual byte opcode mode.
OSPI_Handle OSPI_open(uint32_t index, const OSPI_Params *openParams)
This function opens a given OSPI peripheral.
OSPI_Transaction * currTrans
Definition: ospi/v0/ospi.h:423
uint32_t intrEnable
Definition: ospi/v0/ospi.h:343
int32_t OSPI_enableDacMode(OSPI_Handle handle)
This function enables the Direct Access Mode.
void * OSPI_Handle
A handle that is returned from a OSPI_open() call.
Definition: ospi/v0/ospi.h:73
uint32_t baseAddr
Definition: ospi/v0/ospi.h:331
uint32_t frmFmt
Definition: ospi/v0/ospi.h:353
uint32_t gOspiConfigNum
Externally defined driver configuration array size.
uint8_t cmd
Definition: ospi/v0/ospi.h:275
int32_t OSPI_writeDirect(OSPI_Handle handle, OSPI_Transaction *trans)
Function to perform direct writes to the flash using DAC controller.
void OSPI_setModeBits(OSPI_Handle handle, uint32_t modeBits)
This function sets mode bits in the mode bit field of OSPI config register.
const OSPI_Attrs * attrs
Definition: ospi/v0/ospi.h:430
uint32_t OSPI_getPhyEnableSuccess(OSPI_Handle handle)
This function fetches the phyEnableSuccess field in OSPI_Object.
int32_t OSPI_phyTuneDDR(OSPI_Handle handle, uint32_t flashOffset)
This function tunes the OSPI PHY for DDR mode to set optimal PHY parameters.
int32_t OSPI_readCmd(OSPI_Handle handle, OSPI_ReadCmdParams *rdParams)
Function to send specific commands and receive related data from flash.
OSPI_Object * object
Definition: ospi/v0/ospi.h:432
int32_t OSPI_readIndirect(OSPI_Handle handle, OSPI_Transaction *trans)
Function to perform indirect reads from the flash using INDAC controller.
void OSPI_cmdModeBitSet(OSPI_Handle handle, uint32_t enable)
This function sets command mode bit.
uint32_t decChipSelect
Definition: ospi/v0/ospi.h:359
void OSPI_rdModeBitSet(OSPI_Handle handle, uint32_t enable)
This function sets Read mode bit.
SemaphoreP_Object transferSemObj
Definition: ospi/v0/ospi.h:416