AM64x MCU+ SDK  08.02.00
ospi/v0/ospi.h File Reference

Introduction

OSPI Driver API/interface file.

Go to the source code of this file.

Data Structures

struct  OSPI_Transaction
 Data structure used with OSPI_Transfers - OSPI_readDirect, OSPI_writeDirect, OSPI_readIndirect, OSPI_writeIndirect. More...
 
struct  OSPI_WriteCmdParams
 
struct  OSPI_ReadCmdParams
 
struct  OSPI_AddrRegion
 OSPI Address Region. More...
 
struct  OSPI_Params
 OSPI Parameters. More...
 
struct  OSPI_Attrs
 OSPI instance attributes - used during init time. More...
 
struct  OSPI_Object
 OSPI driver object. More...
 
struct  OSPI_Config
 
struct  OSPI_GenericXspiDevDefines
 

Macros

Transfer Status Code

Status codes that are set by the OSPI driver

#define OSPI_TRANSFER_COMPLETED   (0U)
 
#define OSPI_TRANSFER_STARTED   (1U)
 
#define OSPI_TRANSFER_CANCELLED   (2U)
 
#define OSPI_TRANSFER_FAILED   (3U)
 
#define OSPI_TRANSFER_CSN_DEASSERT   (4U)
 
#define OSPI_TRANSFER_TIMEOUT   (5U)
 
Transfer Mode

This determines whether the driver operates synchronously or asynchronously

In OSPI_TRANSFER_MODE_BLOCKING OSPI_Transfers block code execution until the transaction has completed

In OSPI_TRANSFER_MODE_CALLBACK OSPI_Transfers does not block code execution and instead calls a callback function when the transaction has completed

#define OSPI_TRANSFER_MODE_BLOCKING   (0U)
 OSPI_Transfers blocks execution. This mode can only be used when called within a Task context and is interrupt based More...
 
#define OSPI_TRANSFER_MODE_CALLBACK   (1U)
 OSPI_Transfers does not block code execution and will call a callback function. This mode can be used in a Task, Swi, or Hwi context More...
 
#define OSPI_TRANSFER_MODE_POLLING   (2U)
 OSPI_Transfers blocks execution. This mode can only be used when called within a Task context and is polling based. More...
 
Frame Format

Definitions for various SPI data frame formats

POL0 = OSPICLK is held low during the INACTIVE state POL1 = OSPICLK is held high during the INACTIVE state

PHA0 = Data launch is on the falling edge of OSPICLK PHA1 = Data launch is on the rising edge of OSPICLK

#define OSPI_FF_POL0_PHA0   (0U)
 
#define OSPI_FF_POL0_PHA1   (CSL_OSPI_FLASH_CFG_CONFIG_REG_SEL_CLK_PHASE_FLD_MASK | 0U)
 
#define OSPI_FF_POL1_PHA0   (0U | CSL_OSPI_FLASH_CFG_CONFIG_REG_SEL_CLK_POL_FLD_MASK)
 
#define OSPI_FF_POL1_PHA1
 
Transfer Lines Number

Number of lines used for OSPI read/write transaction

#define OSPI_XFER_LINES_SINGLE   (0U)
 
#define OSPI_XFER_LINES_DUAL   (1U)
 
#define OSPI_XFER_LINES_QUAD   (2U)
 
#define OSPI_XFER_LINES_OCTAL   (3U)
 
Macros for invalid commands

Macros for invalid commands

#define OSPI_CMD_INVALID_OPCODE   (0xFFU)
 
#define OSPI_CMD_INVALID_ADDR   (0xFFFFFFFFU)
 
Macros for command extension types

Macros for command extension types

#define OSPI_CMD_EXT_TYPE_REPEAT   (0x00U)
 
#define OSPI_CMD_EXT_TYPE_INVERSE   (0x01U)
 
#define OSPI_CMD_EXT_TYPE_NONE   (0x02U)
 
Macros for protocol types

Macros for protocol types

#define OSPI_NOR_PROTOCOL_1_1_1   (0x00)
 
#define OSPI_NOR_PROTOCOL_1_1_2   (0x01)
 
#define OSPI_NOR_PROTOCOL_1_2_2   (0x02)
 
#define OSPI_NOR_PROTOCOL_1_1_4   (0x03)
 
#define OSPI_NOR_PROTOCOL_1_4_4   (0x04)
 
#define OSPI_NOR_PROTOCOL_1_1_8   (0x05)
 
#define OSPI_NOR_PROTOCOL_1_8_8   (0x06)
 
#define OSPI_NOR_PROTOCOL_2_2_2_S   (0x07)
 
#define OSPI_NOR_PROTOCOL_2_2_2_D   (0x08)
 
#define OSPI_NOR_PROTOCOL_4_4_4_S   (0x09)
 
#define OSPI_NOR_PROTOCOL_4_4_4_D   (0x0A)
 
#define OSPI_NOR_PROTOCOL_8_8_8_S   (0x0B)
 
#define OSPI_NOR_PROTOCOL_8_8_8_D   (0x0C)
 
Chip Selects

Chip selects

#define OSPI_CS0   (0U)
 
#define OSPI_CS1   (1U)
 
#define OSPI_CS2   (2U)
 
#define OSPI_CS3   (3U)
 
#define OSPI_CHIP_SELECT(x)   ((~((1U) << (x))) & 0xFU)
 
Decoder Chip Selects

Decoder Chip selects

#define OSPI_DECODER_SELECT4   ((uint32_t) 0U)
 
#define OSPI_DECODER_SELECT16   ((uint32_t) 1U)
 

Typedefs

typedef void * OSPI_Handle
 A handle that is returned from a OSPI_open() call. More...
 

Functions

void OSPI_init (void)
 This function initializes the OSPI module. More...
 
void OSPI_deinit (void)
 This function de-initializes the OSPI module. More...
 
void OSPI_Params_init (OSPI_Params *ospiParams)
 Initialize data structure with defaults. More...
 
OSPI_Handle OSPI_open (uint32_t index, const OSPI_Params *openParams)
 This function opens a given OSPI peripheral. More...
 
void OSPI_close (OSPI_Handle handle)
 Function to close a OSPI peripheral specified by the OSPI handle. More...
 
OSPI_Handle OSPI_getHandle (uint32_t index)
 This function returns the handle of an open OSPI Instance from the instance index. More...
 
int32_t OSPI_readCmd (OSPI_Handle handle, OSPI_ReadCmdParams *rdParams)
 Function to send specific commands and receive related data from flash. More...
 
int32_t OSPI_writeCmd (OSPI_Handle handle, OSPI_WriteCmdParams *wrParams)
 Function to send specific commands and related data to flash. More...
 
void OSPI_Transaction_init (OSPI_Transaction *trans)
 Function to initialize the OSPI_Transaction structure. More...
 
void OSPI_ReadCmdParams_init (OSPI_ReadCmdParams *rdParams)
 Function to initialize the OSPI_ReadCmdParams structure. More...
 
void OSPI_WriteCmdParams_init (OSPI_WriteCmdParams *wrParams)
 Function to initialize the OSPI_WriteCmdParams structure. More...
 
uint32_t OSPI_isDacEnable (OSPI_Handle handle)
 This function checks if the Direct Access Controller is enabled. More...
 
uint32_t OSPI_isDmaEnable (OSPI_Handle handle)
 This function checks if DMA is enabled for reads. More...
 
uint32_t OSPI_isIntrEnable (OSPI_Handle handle)
 This function checks if interrupts are enabled. More...
 
uint32_t OSPI_isPhyEnable (OSPI_Handle handle)
 This function checks if the OSPI PHY controller is enabled. More...
 
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) is enabled. More...
 
int32_t OSPI_enableDDR (OSPI_Handle handle)
 This function enables the Dual Data Rate (DDR) More...
 
int32_t OSPI_enableSDR (OSPI_Handle handle)
 This function enables the Single Data Rate (SDR) More...
 
int32_t OSPI_enableDdrRdCmds (OSPI_Handle handle)
 This function sets DDR bit in INSTR_RD register for RD commands. More...
 
int32_t OSPI_setRdDataCaptureDelay (OSPI_Handle handle, uint32_t rdDataCapDelay)
 This function sets read data capture cycles in the OSPI controller. More...
 
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. More...
 
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. More...
 
void OSPI_setCmdDummyCycles (OSPI_Handle handle, uint32_t cmdDummyCycles)
 This function sets appropriate dummy cycles to be used while sending STIG commands to flash. More...
 
void OSPI_setReadDummyCycles (OSPI_Handle handle, uint32_t dummyCycles)
 This function sets appropriate dummy cycles for flash read. More...
 
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. More...
 
uint32_t OSPI_getPhyEnableSuccess (OSPI_Handle handle)
 This function fetches the phyEnableSuccess field in OSPI_Object. More...
 
void OSPI_cmdModeBitSet (OSPI_Handle handle, uint32_t enable)
 This function sets command mode bit. More...
 
void OSPI_rdModeBitSet (OSPI_Handle handle, uint32_t enable)
 This function sets Read mode bit. More...
 
void OSPI_setXferLines (OSPI_Handle handle, uint32_t xferLines)
 This function sets the number of transfer lines to the OSPI controller. More...
 
uint32_t OSPI_getXferLines (OSPI_Handle handle)
 This function returns the current number of transfer lines set in the OSPI controller. More...
 
void OSPI_setDualOpCodeMode (OSPI_Handle handle)
 This function sets OSPI controller to use dual byte opcodes. More...
 
void OSPI_setXferOpCodes (OSPI_Handle handle, uint8_t readCmd, uint8_t pageProgCmd)
 This function sets the opcodes for reading and page programming the flash. More...
 
void OSPI_setCmdExtType (OSPI_Handle handle, uint32_t cmdExtType)
 This function sets the type of command extension used in dual byte opcode mode. More...
 
int32_t OSPI_enableDacMode (OSPI_Handle handle)
 This function enables the Direct Access Mode. More...
 
int32_t OSPI_disableDacMode (OSPI_Handle handle)
 This function disables the Direct Access Mode. More...
 
uint32_t OSPI_getFlashDataBaseAddr (OSPI_Handle handle)
 This function gets the SOC mapped data base address of the flash. More...
 
int32_t OSPI_phyTuneDDR (OSPI_Handle handle, uint32_t flashOffset)
 This function tunes the OSPI PHY for DDR mode to set optimal PHY parameters. More...
 
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. More...
 
void OSPI_phyGetTuningData (uint32_t *tuningData, uint32_t *tuningDataSize)
 This function returns the address to the attack vector buf required for tuning the PHY. More...
 
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 offset in the flash. More...
 
int32_t OSPI_enablePhy (OSPI_Handle handle)
 This function enables the PHY. More...
 
int32_t OSPI_disablePhy (OSPI_Handle handle)
 This function disables the PHY. More...
 
int32_t OSPI_enablePhyPipeline (OSPI_Handle handle)
 This function enables the PHY Pipeline. More...
 
int32_t OSPI_disablePhyPipeline (OSPI_Handle handle)
 This function disables the PHY Pipeline. More...
 
int32_t OSPI_norFlashInit1s1s1s (OSPI_Handle handle)
 This function initializes the NOR flash to work in 1-1-1 mode. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
int32_t OSPI_norFlashErase (OSPI_Handle handle, uint32_t address)
 This function erases 1 block of data starting from a provided address. More...
 
Different OSPI Transfer functions

int32_t OSPI_readDirect (OSPI_Handle handle, OSPI_Transaction *trans)
 Function to perform direct reads from the flash using DAC controller. More...
 
int32_t OSPI_readIndirect (OSPI_Handle handle, OSPI_Transaction *trans)
 Function to perform indirect reads from the flash using INDAC controller. More...
 
int32_t OSPI_writeDirect (OSPI_Handle handle, OSPI_Transaction *trans)
 Function to perform direct writes to the flash using DAC controller. More...
 
int32_t OSPI_writeIndirect (OSPI_Handle handle, OSPI_Transaction *trans)
 Function to perform indirect writes to the flash using INDAC controller. More...
 

Variables

OSPI_Config gOspiConfig []
 Externally defined driver configuration array. More...
 
uint32_t gOspiConfigNum
 Externally defined driver configuration array size. More...