AM263Px MCU+ SDK  10.01.00
ospi_lld.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2024 Texas Instruments Incorporated
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  *
8  * Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  *
11  * Redistributions in binary form must reproduce the above copyright
12  * notice, this list of conditions and the following disclaimer in the
13  * documentation and/or other materials provided with the
14  * distribution.
15  *
16  * Neither the name of Texas Instruments Incorporated nor the names of
17  * its contributors may be used to endorse or promote products derived
18  * from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32 
50 #ifndef OSPI_LLD_H_
51 #define OSPI_LLD_H_
52 
53 /* ========================================================================== */
54 /* Include Files */
55 /* ========================================================================== */
56 
57 #include <stdint.h>
58 #include <stdbool.h>
59 #include <drivers/hw_include/csl_types.h>
60 #include <drivers/hw_include/cslr_ospi.h>
61 #include <drivers/ospi/v0/cslr_ospi.h>
62 
63 #ifdef __cplusplus
64 extern "C" {
65 #endif
66 
67 /* ========================================================================== */
68 /* Macros & Typedefs */
69 /* ========================================================================== */
70 
72 typedef void *OSPI_DmaHandle;
73 
75 typedef void *OSPI_DmaChConfig;
76 
77 typedef void *OSPI_DrvHandle;
78 
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)
93 
114 #define OSPI_TRANSFER_MODE_BLOCKING (0U)
115 
119 #define OSPI_TRANSFER_MODE_CALLBACK (1U)
120 
124 #define OSPI_TRANSFER_MODE_POLLING (2U)
125 
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)
146 
156 #define OSPI_CMD_INVALID_OPCODE (0xFFU)
157 #define OSPI_CMD_INVALID_DUMMY (0xFFU)
158 #define OSPI_CMD_INVALID_ADDR (0xFFFFFFFFU)
159 
169 #define OSPI_CMD_EXT_TYPE_REPEAT (0x00U)
170 #define OSPI_CMD_EXT_TYPE_INVERSE (0x01U)
171 #define OSPI_CMD_EXT_TYPE_NONE (0x02U)
172 
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)
187 
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)
197 
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)
203 
213 #define OSPI_CS0 (0U)
214 #define OSPI_CS1 (1U)
215 #define OSPI_CS2 (2U)
216 #define OSPI_CS3 (3U)
217 
219 #define OSPI_CHIP_SELECT(x) ((~((1U) << (x))) & 0xFU)
220 
222 #define OSPI_RESETPIN_DQ3 (0U)
223 #define OSPI_RESETPIN_DEDICATED (1U)
224 
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))
237 
246 #define OSPI_DECODER_SELECT4 ((uint32_t) 0U)
247 #define OSPI_DECODER_SELECT16 ((uint32_t) 1U)
248 
258 #define OSPI_STATE_RESET ((uint32_t) 0U)
259 
261 #define OSPI_STATE_IDLE ((uint32_t) 1U)
262 
264 #define OSPI_STATE_BUSY ((uint32_t) 2U)
265 
267 #define OSPI_STATE_ERROR ((uint32_t) 3U)
268 
277 #define OSPI_SYSTEM_SUCCESS ((int32_t )0)
278 
281 #define OSPI_SYSTEM_FAILURE ((int32_t)-1)
282 
285 #define OSPI_TIMEOUT ((int32_t)-2)
286 
289 #define OSPI_LLD_INVALID_PARAM ((int32_t)-3)
290 
293 #define OSPI_BUSY ((int32_t)-4)
294 
297 #define OSPI_INVALID_STATE ((int32_t)-5)
298 
308 #define OSPI_NO_WAIT ((uint32_t)0)
309 
312 #define OSPI_WAIT_FOREVER ((uint32_t)-1)
313 
322 #define OSPI_TRANS_IDLE ((uint32_t)0)
323 
326 #define OSPI_TRANS_READ ((uint32_t)1)
327 
330 #define OSPI_TRANS_WRITE ((uint32_t)2)
331 
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)
354 
366 #define OSPI_PHY_DLL_FULL_CYCLE_LOCK ((uint16_t) 0U)
367 #define OSPI_PHY_DLL_HALF_CYCLE_LOCK ((uint16_t) 1U)
368 
378 #define OSPI_FLASH_ATTACK_VECTOR_SIZE (128U)
379 
381 /* ========================================================================== */
382 /* Function pointers Declarations */
383 /* ========================================================================== */
384 
392 typedef uint32_t (*OSPI_Clock_getTicks)(void);
393 
403 typedef uint32_t (*OSPI_Clock_usecToTicks)(uint64_t usecs);
404 
411 typedef void (*OSPI_Clock_usec)(uint32_t usecs);
412 
419 /* Type definition for the callback function*/
420 typedef void (*OSPI_lld_InterruptCallback)(void* args);
421 
429 
430 /* ========================================================================== */
431 /* Structure Declarations */
432 /* ========================================================================== */
440 typedef struct
441 {
442  uint32_t count;
444  void *buf;
446  uint32_t addrOffset;
448  uint32_t status;
450  uint32_t dataLen;
452  uint32_t transferOffset;
454  uint32_t transferTimeout;
456  uint32_t state;
459 
462 typedef struct
463 {
464  uint8_t cmd;
466  uint32_t cmdAddr;
469  uint8_t numAddrBytes;
471  void *txDataBuf;
473  uint32_t txDataLen;
475  uint32_t writeTimeout;
478 
481 typedef struct
482 {
483  uint8_t cmd;
485  uint32_t cmdAddr;
488  uint8_t numAddrBytes;
490  uint8_t dummyBits;
492  void *rxDataBuf;
494  uint16_t rxDataLen;
496  uint32_t readTimeout;
499 
508 typedef struct
509 {
510  uint32_t regionStartAddr;
512  uint32_t regionSize;
516 
527 typedef struct
528 {
529  int32_t ospiDmaChIndex;
530  /* Index of Channel used by OSPI DMA Driver. This index will be set by SysCfg according to the DMA driver chosen.
531  * The OSPI driver uses this index to do an \ref OSPI_dmaOpen inside the \ref OSPI_open if the DMA mode is enabled
532  */
533 } OSPI_Params;
534 
535 
543 typedef struct
544 {
550  int32_t rxLowSearchEnd;
554  int32_t txLowSearchEnd;
559  uint32_t rdDelayMin;
560  uint32_t rdDelayMax;
562 
571 typedef struct
572 {
574  uint32_t phyControlMode;
575  uint32_t dllLockMode;
578 
582 typedef struct
583 {
584  uint32_t dataBaseAddr;
586  uint32_t inputClkFreq;
589  /*
590  * Driver configuration
591  */
592  uint32_t intrNum;
594  uint32_t intrEnable;
596  uint8_t intrPriority;
598  uint32_t dmaEnable;
600  uint32_t phyEnable;
602  uint32_t dacEnable;
604  uint32_t frmFmt;
606  uint32_t devDelays[4];
608  uint32_t chipSelect;
610  uint32_t decChipSelect;
612  uint32_t baudRateDiv;
627 
631 typedef struct
632 {
633  /*
634  * SOC configuration
635  */
636  uint32_t baseAddr;
639  /*
640  * User params
641  */
643  uint32_t transferMode;
645  uint32_t protocol;
652  uint32_t rdDummyCycles;
654  uint32_t cmdDummyCycles;
656  uint32_t rdDataCapDelay;
660  uint32_t numAddrBytes;
665  uint32_t cmdExtType;
680  /*
681  * State variables
682  */
683  uint32_t state;
684 
685  void* args;
693 
695  /* Interrupt Callback to be registered by the application*/
697  /* DMA Readcallback function*/
698 
700 
701 /* ========================================================================== */
702 /* Internal/Private Structure Declarations */
703 /* ========================================================================== */
704 
705 /* ========================================================================== */
706 /* Function Declarations */
707 /* ========================================================================== */
708 
723 
738 
749 
760 
788 
801 
814 
827 
854 
867 
885 void OSPI_lld_isr(void* args);
886 
893 
913 
922 
933 
953 
964 
975 
986 
997 
1008 
1019 
1030 
1041 int32_t OSPI_lld_setRdDataCaptureDelay(OSPILLD_Handle handle, uint32_t rdDataCapDelay);
1042 
1052 void OSPI_lld_setNumAddrBytes(OSPILLD_Handle handle, uint32_t numAddrBytes);
1053 
1064 void OSPI_lld_setDeviceSize(OSPILLD_Handle handle, uint32_t pageSize, uint32_t blkSize);
1065 
1075 void OSPI_lld_setCmdDummyCycles(OSPILLD_Handle handle, uint32_t cmdDummyCycles);
1076 
1086 void OSPI_lld_setReadDummyCycles(OSPILLD_Handle handle, uint32_t dummyCycles);
1087 
1097 void OSPI_lld_setPhyEnableSuccess(OSPILLD_Handle handle, uint32_t success);
1098 
1108 void OSPI_lld_setModeBits(OSPILLD_Handle handle, uint32_t modeBits);
1109 
1119 
1129 
1140 
1153 
1164 void OSPI_lld_setProtocol(OSPILLD_Handle handle, uint32_t protocol);
1165 
1175 
1185 
1196 void OSPI_lld_setXferOpCodes(OSPILLD_Handle handle, uint8_t readCmd, uint8_t pageProgCmd);
1197 
1207 void OSPI_lld_setCmdExtType(OSPILLD_Handle handle, uint32_t cmdExtType);
1208 
1219 
1230 
1241 
1264 int32_t OSPI_lld_phyTuneDDR(OSPILLD_Handle handle, uint32_t flashOffset);
1265 
1277 int32_t OSPI_lld_phyTuneSDR(OSPILLD_Handle handle, uint32_t flashOffset);
1278 
1292 int32_t OSPI_lld_phyTuneGrapher(OSPILLD_Handle handle, uint32_t flashOffset, uint8_t arrays[4][128][128]);
1293 
1301 void OSPI_lld_phyGetTuningData(uint32_t *tuningData, uint32_t *tuningDataSize);
1302 
1312 int32_t OSPI_lld_phyReadAttackVector(OSPILLD_Handle handle, uint32_t offset);
1313 
1324 
1335 
1346 
1357 
1380 
1393 void OSPI_lld_norFlashSetCmds(uint8_t rdCmd, uint8_t wrCmd, uint8_t eraseCmd);
1394 
1395 
1407 int32_t OSPI_lld_norFlashReadId(OSPILLD_Handle handle, uint32_t *manufacturerId, uint32_t *deviceId);
1408 
1421 int32_t OSPI_lld_norFlashWrite(OSPILLD_Handle handle, uint32_t offset, uint8_t *buf, uint32_t len);
1422 
1435 int32_t OSPI_lld_norFlashRead(OSPILLD_Handle handle, uint32_t offset, uint8_t *buf, uint32_t len);
1436 
1449 int32_t OSPI_lld_norFlashReadIndirect(OSPILLD_Handle handle, uint32_t offset, uint8_t *buf, uint32_t len);
1450 
1463 int32_t OSPI_lld_norFlashReadSfdp(OSPILLD_Handle handle, uint32_t offset, uint8_t *buf, uint32_t len);
1464 
1475 int32_t OSPI_lld_norFlashErase(OSPILLD_Handle handle, uint32_t address);
1476 
1487 int32_t OSPI_lld_configResetPin(OSPILLD_Handle handle, uint32_t config);
1488 
1499 int32_t OSPI_lld_configBaudrate(OSPILLD_Handle handle, uint32_t baud);
1500 
1511 int32_t OSPI_lld_readBaudRateDivFromReg(OSPILLD_Handle handle, uint32_t *baudDiv);
1512 
1523 int32_t OSPI_lld_getBaudRateDivFromObj(OSPILLD_Handle handle, uint32_t *baudDiv);
1524 
1527 #ifdef __cplusplus
1528 }
1529 #endif
1530 
1531 #endif /* #ifndef OSPI_LLD_H_ */
1532 
OSPI_lld_disableDacMode
int32_t OSPI_lld_disableDacMode(OSPILLD_Handle handle)
This function disables the Direct Access Mode.
OSPI_lld_setNumAddrBytes
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.
OSPI_WriteCmdParams::writeTimeout
uint32_t writeTimeout
Definition: ospi_lld.h:475
OSPI_lld_disablePhyPipeline
int32_t OSPI_lld_disablePhyPipeline(OSPILLD_Handle handle)
This function disables the PHY Pipeline.
OSPI_AddrRegion::regionSize
uint32_t regionSize
Definition: ospi_lld.h:512
args
void * args
Definition: hsmclient_msg.h:4
OSPI_lld_enablePhyPipeline
int32_t OSPI_lld_enablePhyPipeline(OSPILLD_Handle handle)
This function enables the PHY Pipeline.
OSPI_ReadCmdParams::rxDataLen
uint16_t rxDataLen
Definition: ospi_lld.h:494
OSPI_lld_norFlashReadId
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.
OSPI_PhyWindowParams::txDllLowWindowEnd
int32_t txDllLowWindowEnd
Definition: ospi_lld.h:546
OSPI_Transaction::status
uint32_t status
Definition: ospi_lld.h:448
OSPI_lld_setCmdExtType
void OSPI_lld_setCmdExtType(OSPILLD_Handle handle, uint32_t cmdExtType)
This function sets the type of command extension used in dual byte opcode mode.
OSPI_lld_isIntrEnable
uint32_t OSPI_lld_isIntrEnable(OSPILLD_Handle handle)
This function checks if interrupts are enabled.
OSPI_Clock_usecToTicks
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
OSPILLD_InitHandle
struct OSPILLD_InitObject * OSPILLD_InitHandle
OSPILLD_Object::phyEnableSuccess
uint32_t phyEnableSuccess
Definition: ospi_lld.h:668
OSPI_lld_norFlashInit1s1s1s
int32_t OSPI_lld_norFlashInit1s1s1s(OSPILLD_Handle handle)
This function initializes the NOR flash to work in 1-1-1 mode.
OSPI_ReadCmdParams::numAddrBytes
uint8_t numAddrBytes
Definition: ospi_lld.h:488
OSPI_PhyWindowParams::txDllLowWindowStart
int32_t txDllLowWindowStart
Definition: ospi_lld.h:545
OSPI_ReadCmdParams
OSPI Instance Read Command Structure.
Definition: ospi_lld.h:482
OSPI_lld_configResetPin
int32_t OSPI_lld_configResetPin(OSPILLD_Handle handle, uint32_t config)
This function configures reset functionality.
OSPILLD_InitObject::intrNum
uint32_t intrNum
Definition: ospi_lld.h:592
OSPI_PhyConfiguration::tuningWindowParams
OSPI_PhyWindowParams tuningWindowParams
Definition: ospi_lld.h:576
OSPI_WriteCmdParams
OSPI Instance Write Command Structure.
Definition: ospi_lld.h:463
OSPI_lld_deInitDma
int32_t OSPI_lld_deInitDma(OSPILLD_Handle hOspi)
Function to close a OSPI peripheral specified by the OSPI handle in DMA mode.
OSPI_lld_isr
void OSPI_lld_isr(void *args)
QSPI ISR for Read and Write Functionality.
OSPI_Transaction::transferTimeout
uint32_t transferTimeout
Definition: ospi_lld.h:454
OSPILLD_Object::currTrans
OSPI_Transaction * currTrans
Definition: ospi_lld.h:671
OSPI_Transaction
Data structure used with OSPI_Transfers - OSPI_lld_readDirect, OSPI_lld_writeDirect,...
Definition: ospi_lld.h:441
OSPILLD_Object::transferMode
uint32_t transferMode
Definition: ospi_lld.h:643
OSPILLD_Object::cmdDummyCycles
uint32_t cmdDummyCycles
Definition: ospi_lld.h:654
OSPILLD_InitObject::inputClkFreq
uint32_t inputClkFreq
Definition: ospi_lld.h:586
OSPI_WriteCmdParams::cmdAddr
uint32_t cmdAddr
Definition: ospi_lld.h:466
OSPI_lld_isPhyEnable
uint32_t OSPI_lld_isPhyEnable(OSPILLD_Handle handle)
This function checks if the OSPI PHY controller is enabled.
OSPILLD_Object::interruptCallback
OSPI_lld_InterruptCallback interruptCallback
Definition: ospi_lld.h:694
OSPI_lld_norFlashWrite
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.
OSPI_lld_norFlashSetCmds
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....
OSPI_lld_readCmd
int32_t OSPI_lld_readCmd(OSPILLD_Handle handle, OSPI_ReadCmdParams *rdParams)
Function to send specific commands and receive related data from flash.
OSPILLD_Object::hOspiInit
OSPILLD_InitHandle hOspiInit
Definition: ospi_lld.h:677
OSPI_PhyConfiguration
OSPI PHY Configuration.
Definition: ospi_lld.h:572
OSPI_lld_dma_readCompleteCallback
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
OSPILLD_InitObject::phyConfiguration
OSPI_PhyConfiguration phyConfiguration
Definition: ospi_lld.h:624
OSPI_PhyWindowParams::rxLowSearchEnd
int32_t rxLowSearchEnd
Definition: ospi_lld.h:550
OSPILLD_Object::numAddrBytes
uint32_t numAddrBytes
Definition: ospi_lld.h:660
OSPI_PhyWindowParams::rxHighSearchStart
int32_t rxHighSearchStart
Definition: ospi_lld.h:551
OSPI_lld_setCmdDummyCycles
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.
OSPI_ReadCmdParams::cmdAddr
uint32_t cmdAddr
Definition: ospi_lld.h:485
OSPI_lld_Transaction_init
void OSPI_lld_Transaction_init(OSPI_Transaction *trans)
Function to initialize the OSPI_Transaction structure.
OSPILLD_Object::Clock_usecToTicks
OSPI_Clock_usecToTicks Clock_usecToTicks
Definition: ospi_lld.h:690
OSPI_lld_init
int32_t OSPI_lld_init(OSPILLD_Handle hOspi)
This function opens a given OSPI peripheral.
OSPI_Transaction::count
uint32_t count
Definition: ospi_lld.h:442
OSPILLD_Object::cmdExtType
uint32_t cmdExtType
Definition: ospi_lld.h:665
OSPI_lld_phyTuneDDR
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.
OSPI_lld_initDma
int32_t OSPI_lld_initDma(OSPILLD_Handle hOspi)
This function opens a given OSPI peripheral in DMA mode.
OSPI_lld_isDacEnable
uint32_t OSPI_lld_isDacEnable(OSPILLD_Handle handle)
This function checks if the Direct Access Controller is enabled.
OSPI_DmaChConfig
void * OSPI_DmaChConfig
A handle that holds DMA configuration parameters for OSPI.
Definition: ospi_lld.h:75
OSPI_lld_writeCmd
int32_t OSPI_lld_writeCmd(OSPILLD_Handle handle, OSPI_WriteCmdParams *wrParams)
Function to send specific commands and related data to flash.
OSPILLD_InitObject::dmaEnable
uint32_t dmaEnable
Definition: ospi_lld.h:598
OSPI_PhyConfiguration::dllLockMode
uint32_t dllLockMode
Definition: ospi_lld.h:575
OSPI_Params
OSPI Parameters.
Definition: ospi_lld.h:528
OSPILLD_InitObject::dacEnable
uint32_t dacEnable
Definition: ospi_lld.h:602
OSPI_PhyWindowParams::txDLLSearchOffset
int32_t txDLLSearchOffset
Definition: ospi_lld.h:557
OSPI_PhyWindowParams::txHighSearchStart
int32_t txHighSearchStart
Definition: ospi_lld.h:555
OSPI_lld_writeIndirect
int32_t OSPI_lld_writeIndirect(OSPILLD_Handle handle, OSPI_Transaction *trans)
Function to perform indirect writes to the flash using INDAC controller.
OSPI_Clock_getTicks
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
OSPI_PhyWindowParams::txDllHighWindowStart
int32_t txDllHighWindowStart
Definition: ospi_lld.h:547
OSPI_WriteCmdParams::txDataLen
uint32_t txDataLen
Definition: ospi_lld.h:473
OSPI_WriteCmdParams::txDataBuf
void * txDataBuf
Definition: ospi_lld.h:471
OSPI_lld_getFlashDataBaseAddr
uint32_t OSPI_lld_getFlashDataBaseAddr(OSPILLD_Handle handle)
This function gets the SOC mapped data base address of the flash.
OSPI_lld_setProtocol
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.
OSPI_lld_writeDirect
int32_t OSPI_lld_writeDirect(OSPILLD_Handle handle, OSPI_Transaction *trans)
Function to perform direct writes to the flash using DAC controller.
OSPI_lld_enableDDR
int32_t OSPI_lld_enableDDR(OSPILLD_Handle handle)
This function enables the Dual Data Rate (DDR)
OSPI_lld_setXferOpCodes
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.
OSPI_lld_clearDualOpCodeMode
void OSPI_lld_clearDualOpCodeMode(OSPILLD_Handle handle)
This function sets OSPI controller to not use dual byte opcodes.
OSPI_PhyWindowParams::rxHighSearchEnd
int32_t rxHighSearchEnd
Definition: ospi_lld.h:552
OSPI_lld_readCompleteCallback
void OSPI_lld_readCompleteCallback(void *args)
QSPI Read complete callback for DMA mode.
OSPI_lld_enableDdrRdCmds
int32_t OSPI_lld_enableDdrRdCmds(OSPILLD_Handle handle)
This function sets DDR bit in INSTR_RD register for RD commands.
OSPILLD_Object::rdDataCapDelay
uint32_t rdDataCapDelay
Definition: ospi_lld.h:656
OSPI_PhyWindowParams::txDllHighWindowEnd
int32_t txDllHighWindowEnd
Definition: ospi_lld.h:548
OSPILLD_Object
OSPI driver object.
Definition: ospi_lld.h:632
OSPI_lld_norFlashErase
int32_t OSPI_lld_norFlashErase(OSPILLD_Handle handle, uint32_t address)
This function erases 1 block of data starting from a provided address.
OSPILLD_Object::protocol
uint32_t protocol
Definition: ospi_lld.h:645
OSPI_lld_readIndirect
int32_t OSPI_lld_readIndirect(OSPILLD_Handle handle, OSPI_Transaction *trans)
Function to perform indirect reads from the flash using INDAC controller.
OSPI_PhyWindowParams
OSPI PHY Tuning Window Parameters.
Definition: ospi_lld.h:544
OSPI_ReadCmdParams::rxDataBuf
void * rxDataBuf
Definition: ospi_lld.h:492
OSPILLD_InitObject::phyEnable
uint32_t phyEnable
Definition: ospi_lld.h:600
OSPI_WriteCmdParams::cmd
uint8_t cmd
Definition: ospi_lld.h:464
OSPI_PhyWindowParams::rxLowSearchStart
int32_t rxLowSearchStart
Definition: ospi_lld.h:549
OSPILLD_InitObject::ospiDmaHandle
OSPI_DmaHandle ospiDmaHandle
Definition: ospi_lld.h:620
OSPI_lld_configBaudrate
int32_t OSPI_lld_configBaudrate(OSPILLD_Handle handle, uint32_t baud)
Configures baud divider.
OSPI_lld_getInputClk
uint32_t OSPI_lld_getInputClk(OSPILLD_Handle handle)
This function returns the input clk frequency OSPI was programmed at.
OSPI_lld_enablePhy
int32_t OSPI_lld_enablePhy(OSPILLD_Handle handle)
This function enables the PHY.
OSPILLD_Object::Clock_getTicks
OSPI_Clock_getTicks Clock_getTicks
Definition: ospi_lld.h:688
OSPI_Params::ospiDmaChIndex
int32_t ospiDmaChIndex
Definition: ospi_lld.h:529
OSPI_lld_enableSDR
int32_t OSPI_lld_enableSDR(OSPILLD_Handle handle)
This function enables the Single Data Rate (SDR)
OSPI_Transaction::buf
void * buf
Definition: ospi_lld.h:444
OSPI_lld_phyReadAttackVector
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...
OSPILLD_InitObject::chipSelect
uint32_t chipSelect
Definition: ospi_lld.h:608
OSPI_DrvHandle
void * OSPI_DrvHandle
Definition: ospi_lld.h:77
OSPILLD_Object::openParams
const OSPI_Params * openParams
Definition: ospi_lld.h:642
OSPILLD_InitObject::dmaRestrictedRegions
const OSPI_AddrRegion * dmaRestrictedRegions
Definition: ospi_lld.h:614
OSPILLD_Object::state
uint32_t state
Definition: ospi_lld.h:683
OSPI_PhyWindowParams::rdDelayMax
uint32_t rdDelayMax
Definition: ospi_lld.h:560
OSPI_AddrRegion
OSPI Address Region.
Definition: ospi_lld.h:509
OSPI_PhyWindowParams::txHighSearchEnd
int32_t txHighSearchEnd
Definition: ospi_lld.h:556
OSPILLD_InitObject::decChipSelect
uint32_t decChipSelect
Definition: ospi_lld.h:610
OSPI_lld_disablePhy
int32_t OSPI_lld_disablePhy(OSPILLD_Handle handle)
This function disables the PHY.
OSPI_lld_norFlashReadIndirect
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.
OSPI_PhyWindowParams::txLowSearchStart
int32_t txLowSearchStart
Definition: ospi_lld.h:553
OSPILLD_Object::baseAddr
uint32_t baseAddr
Definition: ospi_lld.h:636
OSPI_lld_getPhyEnableSuccess
uint32_t OSPI_lld_getPhyEnableSuccess(OSPILLD_Handle handle)
This function fetches the phyEnableSuccess field in OSPILLD_Object.
OSPI_WriteCmdParams::numAddrBytes
uint8_t numAddrBytes
Definition: ospi_lld.h:469
OSPILLD_Object::rdDummyCycles
uint32_t rdDummyCycles
Definition: ospi_lld.h:652
OSPILLD_Object::readCompleteCallback
OSPI_lld_dma_readCompleteCallback readCompleteCallback
Definition: ospi_lld.h:696
OSPI_lld_setReadDummyCycles
void OSPI_lld_setReadDummyCycles(OSPILLD_Handle handle, uint32_t dummyCycles)
This function sets appropriate dummy cycles for flash read.
OSPI_lld_norFlashRead
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.
OSPI_lld_readBaudRateDivFromReg
int32_t OSPI_lld_readBaudRateDivFromReg(OSPILLD_Handle handle, uint32_t *baudDiv)
Return value of baudrate that is programmed in IP register.
OSPI_PhyConfiguration::phyControlMode
uint32_t phyControlMode
Definition: ospi_lld.h:574
OSPI_lld_phyGetTuningData
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.
OSPI_lld_deInit
int32_t OSPI_lld_deInit(OSPILLD_Handle hOspi)
Function to close a OSPI peripheral specified by the OSPI handle.
OSPI_lld_isDmaEnable
uint32_t OSPI_lld_isDmaEnable(OSPILLD_Handle handle)
This function checks if DMA is enabled for reads.
OSPILLD_InitObject::baudRateDiv
uint32_t baudRateDiv
Definition: ospi_lld.h:612
OSPI_lld_getBaudRateDivFromObj
int32_t OSPI_lld_getBaudRateDivFromObj(OSPILLD_Handle handle, uint32_t *baudDiv)
Return value of baudrate that is saved in OSPI Object.
OSPILLD_Object::args
void * args
Definition: ospi_lld.h:685
OSPI_lld_setDeviceSize
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.
OSPI_lld_setModeBits
void OSPI_lld_setModeBits(OSPILLD_Handle handle, uint32_t modeBits)
This function sets mode bits in the mode bit field of OSPI config register.
OSPI_PhyWindowParams::txLowSearchEnd
int32_t txLowSearchEnd
Definition: ospi_lld.h:554
OSPI_lld_readCmdParams_init
void OSPI_lld_readCmdParams_init(OSPI_ReadCmdParams *rdParams)
Function to initialize the OSPI_ReadCmdParams structure.
OSPI_ReadCmdParams::dummyBits
uint8_t dummyBits
Definition: ospi_lld.h:490
OSPI_Clock_usec
void(* OSPI_Clock_usec)(uint32_t usecs)
Sleep for user specified usecs.
Definition: ospi_lld.h:411
OSPILLD_Object::trans
OSPI_Transaction trans
Definition: ospi_lld.h:674
OSPI_lld_enableDacMode
int32_t OSPI_lld_enableDacMode(OSPILLD_Handle handle)
This function enables the Direct Access Mode.
OSPI_lld_phyTuneGrapher
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.
OSPI_Transaction::addrOffset
uint32_t addrOffset
Definition: ospi_lld.h:446
OSPI_Transaction::state
uint32_t state
Definition: ospi_lld.h:456
OSPI_lld_getProtocol
uint32_t OSPI_lld_getProtocol(OSPILLD_Handle handle)
This function returns the current protocol for which the transfer lines in OSPI driver is configured ...
OSPILLD_Object::phyRdDataCapDelay
uint32_t phyRdDataCapDelay
Definition: ospi_lld.h:658
OSPI_AddrRegion::regionStartAddr
uint32_t regionStartAddr
Definition: ospi_lld.h:510
OSPI_lld_enableModeBitsCmd
void OSPI_lld_enableModeBitsCmd(OSPILLD_Handle handle)
This function enables mode bits transmission while sending CMDs.
OSPI_Transaction::dataLen
uint32_t dataLen
Definition: ospi_lld.h:450
OSPILLD_InitObject::frmFmt
uint32_t frmFmt
Definition: ospi_lld.h:604
OSPI_PhyWindowParams::rdDelayMin
uint32_t rdDelayMin
Definition: ospi_lld.h:559
OSPILLD_InitObject::intrPriority
uint8_t intrPriority
Definition: ospi_lld.h:596
OSPI_DmaHandle
void * OSPI_DmaHandle
The handle for DMA instance used with OSPI.
Definition: ospi_lld.h:72
OSPI_lld_setPhyEnableSuccess
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.
OSPILLD_InitObject
OSPI driver initialization object.
Definition: ospi_lld.h:583
OSPI_lld_readDirectDma
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.
OSPILLD_Handle
struct OSPILLD_Object * OSPILLD_Handle
OSPI_PhyWindowParams::rxTxDLLSearchStep
uint32_t rxTxDLLSearchStep
Definition: ospi_lld.h:558
OSPI_lld_enableModeBitsRead
void OSPI_lld_enableModeBitsRead(OSPILLD_Handle handle)
This function enables mode bits transmission while reading.
OSPI_ReadCmdParams::cmd
uint8_t cmd
Definition: ospi_lld.h:483
OSPILLD_InitObject::dataBaseAddr
uint32_t dataBaseAddr
Definition: ospi_lld.h:584
OSPI_lld_InterruptCallback
void(* OSPI_lld_InterruptCallback)(void *args)
The definition of a interrupt completion callback function used by the QSPI driver.
Definition: ospi_lld.h:420
OSPI_lld_readDirect
int32_t OSPI_lld_readDirect(OSPILLD_Handle handle, OSPI_Transaction *trans)
Function to perform direct reads from the flash using DAC controller.
OSPI_lld_setRdDataCaptureDelay
int32_t OSPI_lld_setRdDataCaptureDelay(OSPILLD_Handle handle, uint32_t rdDataCapDelay)
This function sets read data capture cycles in the OSPI controller.
OSPI_PhyConfiguration::phaseDelayElement
uint32_t phaseDelayElement
Definition: ospi_lld.h:573
OSPI_lld_norFlashReadSfdp
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.
OSPILLD_Object::Clock_usleep
OSPI_Clock_usec Clock_usleep
Definition: ospi_lld.h:692
OSPI_ReadCmdParams::readTimeout
uint32_t readTimeout
Definition: ospi_lld.h:496
OSPI_lld_setDualOpCodeMode
void OSPI_lld_setDualOpCodeMode(OSPILLD_Handle handle)
This function sets OSPI controller to use dual byte opcodes.
OSPI_Transaction::transferOffset
uint32_t transferOffset
Definition: ospi_lld.h:452
OSPILLD_InitObject::intrEnable
uint32_t intrEnable
Definition: ospi_lld.h:594
OSPI_lld_phyTuneSDR
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.
OSPI_lld_writeCmdParams_init
void OSPI_lld_writeCmdParams_init(OSPI_WriteCmdParams *wrParams)
Function to initialize the OSPI_WriteCmdParams structure.
OSPILLD_InitObject::ospiDmaChConfig
OSPI_DmaChConfig ospiDmaChConfig
Definition: ospi_lld.h:622