AM64x MCU+ SDK  11.00.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, addr, data, 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_1S_8S_8S (0x000A)
193 #define OSPI_PROTO_4S_4S_4S (0x0005)
194 #define OSPI_PROTO_4S_4D_4D (0x0006)
195 #define OSPI_PROTO_8S_8S_8S (0x0007)
196 #define OSPI_PROTO_8D_8D_8D (0x0008)
197 #define OSPI_PROTO_CUSTOM (0x0009)
198 
199 #define OSPI_NAND_PROTOCOL(cmd, addr, data, dtr) (uint32_t)(((uint32_t)(dtr) << 24) | \
200  ((uint32_t)(cmd) << 16) | \
201  ((uint32_t)(addr) << 8) | \
202  ((uint32_t)(data) << 0))
203 #define OSPI_NAND_PROTOCOL_INVALID (uint32_t)(0xFFFFFFFF)
204 
214 #define OSPI_CS0 (0U)
215 #define OSPI_CS1 (1U)
216 #define OSPI_CS2 (2U)
217 #define OSPI_CS3 (3U)
218 
220 #define OSPI_CHIP_SELECT(x) ((~((1U) << (x))) & 0xFU)
221 
223 #define OSPI_RESETPIN_DQ3 (0U)
224 #define OSPI_RESETPIN_DEDICATED (1U)
225 
235 #define CSL_OSPI_BAUD_RATE_DIVISOR(x) (((x) - 2U) >> 1U)
236 #define MAX_BAUDRATE_DIVIDER (32U)
237 #define CSL_OSPI_BAUD_RATE_DIVISOR_DEFAULT (CSL_OSPI_BAUD_RATE_DIVISOR(MAX_BAUDRATE_DIVIDER))
238 
247 #define OSPI_DECODER_SELECT4 ((uint32_t) 0U)
248 #define OSPI_DECODER_SELECT16 ((uint32_t) 1U)
249 
259 #define OSPI_STATE_RESET ((uint32_t) 0U)
260 
262 #define OSPI_STATE_IDLE ((uint32_t) 1U)
263 
265 #define OSPI_STATE_BUSY ((uint32_t) 2U)
266 
268 #define OSPI_STATE_ERROR ((uint32_t) 3U)
269 
278 #define OSPI_SYSTEM_SUCCESS ((int32_t )0)
279 
282 #define OSPI_SYSTEM_FAILURE ((int32_t)-1)
283 
286 #define OSPI_TIMEOUT ((int32_t)-2)
287 
290 #define OSPI_LLD_INVALID_PARAM ((int32_t)-3)
291 
294 #define OSPI_BUSY ((int32_t)-4)
295 
298 #define OSPI_INVALID_STATE ((int32_t)-5)
299 
309 #define OSPI_NO_WAIT ((uint32_t)0)
310 
313 #define OSPI_WAIT_FOREVER ((uint32_t)-1)
314 
323 #define OSPI_TRANS_IDLE ((uint32_t)0)
324 
327 #define OSPI_TRANS_READ ((uint32_t)1)
328 
331 #define OSPI_TRANS_WRITE ((uint32_t)2)
332 
353 #define OSPI_FLASH_CFG_PHY_MASTER_CONTROL_REG_PHY_MASTER_MODE (0U)
354 #define OSPI_FLASH_CFG_PHY_MASTER_CONTROL_REG_PHY_BYPASS_MODE (1U)
355 
367 #define OSPI_PHY_DLL_FULL_CYCLE_LOCK ((uint16_t) 0U)
368 #define OSPI_PHY_DLL_HALF_CYCLE_LOCK ((uint16_t) 1U)
369 
379 #define OSPI_FLASH_ATTACK_VECTOR_SIZE (128U)
380 
382 /* ========================================================================== */
383 /* Function pointers Declarations */
384 /* ========================================================================== */
385 
393 typedef uint32_t (*OSPI_Clock_getTicks)(void);
394 
404 typedef uint32_t (*OSPI_Clock_usecToTicks)(uint64_t usecs);
405 
412 typedef void (*OSPI_Clock_usec)(uint32_t usecs);
413 
420 /* Type definition for the callback function*/
421 typedef void (*OSPI_lld_InterruptCallback)(void* args);
422 
429 typedef void (*OSPI_lld_dma_readCompleteCallback)(void* args);
430 
431 /* ========================================================================== */
432 /* Structure Declarations */
433 /* ========================================================================== */
441 typedef struct
442 {
443  uint32_t count;
445  void *buf;
447  uint32_t addrOffset;
449  uint32_t status;
451  uint32_t dataLen;
453  uint32_t transferOffset;
455  uint32_t transferTimeout;
457  uint32_t state;
460 
463 typedef struct
464 {
465  uint8_t cmd;
467  uint32_t cmdAddr;
470  uint8_t numAddrBytes;
472  void *txDataBuf;
474  uint32_t txDataLen;
476  uint32_t writeTimeout;
479 
482 typedef struct
483 {
484  uint8_t cmd;
486  uint32_t cmdAddr;
489  uint8_t numAddrBytes;
491  uint8_t dummyBits;
493  void *rxDataBuf;
495  uint16_t rxDataLen;
497  uint32_t readTimeout;
500 
509 typedef struct
510 {
511  uint32_t regionStartAddr;
513  uint32_t regionSize;
517 
528 typedef struct
529 {
530  int32_t ospiDmaChIndex;
531  /* Index of Channel used by OSPI DMA Driver. This index will be set by SysCfg according to the DMA driver chosen.
532  * The OSPI driver uses this index to do an \ref OSPI_dmaOpen inside the \ref OSPI_open if the DMA mode is enabled
533  */
534 } OSPI_Params;
535 
536 
544 typedef struct
545 {
551  int32_t rxLowSearchEnd;
555  int32_t txLowSearchEnd;
560  uint32_t rdDelayMin;
561  uint32_t rdDelayMax;
563 
572 typedef struct
573 {
575  uint32_t phyControlMode;
576  uint32_t dllLockMode;
579 
583 typedef struct
584 {
585  uint32_t dataBaseAddr;
587  uint32_t inputClkFreq;
590  /*
591  * Driver configuration
592  */
593  uint32_t intrNum;
595  uint32_t intrEnable;
597  uint8_t intrPriority;
599  uint32_t dmaEnable;
601  uint32_t phyEnable;
603  uint32_t dacEnable;
605  uint32_t frmFmt;
607  uint32_t devDelays[4];
609  uint32_t chipSelect;
611  uint32_t decChipSelect;
613  uint32_t baudRateDiv;
628 
632 typedef struct
633 {
634  /*
635  * SOC configuration
636  */
637  uint32_t baseAddr;
640  /*
641  * User params
642  */
644  uint32_t transferMode;
646  uint32_t protocol;
653  uint32_t rdDummyCycles;
655  uint32_t cmdDummyCycles;
657  uint32_t rdDataCapDelay;
661  uint32_t numAddrBytes;
666  uint32_t cmdExtType;
681  /*
682  * State variables
683  */
684  uint32_t state;
685 
686  void* args;
694 
696  /* Interrupt Callback to be registered by the application*/
698  /* DMA Readcallback function*/
699 
701 
702 /* ========================================================================== */
703 /* Internal/Private Structure Declarations */
704 /* ========================================================================== */
705 
706 /* ========================================================================== */
707 /* Function Declarations */
708 /* ========================================================================== */
709 
724 
739 
750 
761 
789 
802 
815 
828 
855 
868 
886 void OSPI_lld_isr(void* args);
887 
894 
914 
923 
934 
954 
965 
976 
987 
998 
1009 
1020 
1031 
1042 int32_t OSPI_lld_setRdDataCaptureDelay(OSPILLD_Handle handle, uint32_t rdDataCapDelay);
1043 
1053 void OSPI_lld_setNumAddrBytes(OSPILLD_Handle handle, uint32_t numAddrBytes);
1054 
1065 void OSPI_lld_setDeviceSize(OSPILLD_Handle handle, uint32_t pageSize, uint32_t blkSize);
1066 
1076 void OSPI_lld_setCmdDummyCycles(OSPILLD_Handle handle, uint32_t cmdDummyCycles);
1077 
1087 void OSPI_lld_setReadDummyCycles(OSPILLD_Handle handle, uint32_t dummyCycles);
1088 
1098 void OSPI_lld_setWriteDummyCycles(OSPILLD_Handle handle, uint32_t dummyCycles);
1099 
1109 void OSPI_lld_setPhyEnableSuccess(OSPILLD_Handle handle, uint32_t success);
1110 
1120 void OSPI_lld_setModeBits(OSPILLD_Handle handle, uint32_t modeBits);
1121 
1131 
1141 
1152 
1165 
1176 void OSPI_lld_setProtocol(OSPILLD_Handle handle, uint32_t protocol);
1177 
1187 
1197 
1208 void OSPI_lld_setXferOpCodes(OSPILLD_Handle handle, uint8_t readCmd, uint8_t pageProgCmd);
1209 
1219 void OSPI_lld_setCmdExtType(OSPILLD_Handle handle, uint32_t cmdExtType);
1220 
1231 
1242 
1253 
1276 int32_t OSPI_lld_phyTuneDDR(OSPILLD_Handle handle, uint32_t flashOffset);
1277 
1289 int32_t OSPI_lld_phyTuneSDR(OSPILLD_Handle handle, uint32_t flashOffset);
1290 
1304 int32_t OSPI_lld_phyTuneGrapher(OSPILLD_Handle handle, uint32_t flashOffset, uint8_t arrays[4][128][128]);
1305 
1313 void OSPI_lld_phyGetTuningData(uint32_t *tuningData, uint32_t *tuningDataSize);
1314 
1324 int32_t OSPI_lld_phyReadAttackVector(OSPILLD_Handle handle, uint32_t offset);
1325 
1336 
1347 
1358 
1369 
1392 
1405 void OSPI_lld_norFlashSetCmds(uint8_t rdCmd, uint8_t wrCmd, uint8_t eraseCmd);
1406 
1407 
1419 int32_t OSPI_lld_norFlashReadId(OSPILLD_Handle handle, uint32_t *manufacturerId, uint32_t *deviceId);
1420 
1433 int32_t OSPI_lld_norFlashWrite(OSPILLD_Handle handle, uint32_t offset, uint8_t *buf, uint32_t len);
1434 
1447 int32_t OSPI_lld_norFlashRead(OSPILLD_Handle handle, uint32_t offset, uint8_t *buf, uint32_t len);
1448 
1461 int32_t OSPI_lld_norFlashReadIndirect(OSPILLD_Handle handle, uint32_t offset, uint8_t *buf, uint32_t len);
1462 
1475 int32_t OSPI_lld_norFlashReadSfdp(OSPILLD_Handle handle, uint32_t offset, uint8_t *buf, uint32_t len);
1476 
1487 int32_t OSPI_lld_norFlashErase(OSPILLD_Handle handle, uint32_t address);
1488 
1499 int32_t OSPI_lld_configResetPin(OSPILLD_Handle handle, uint32_t config);
1500 
1511 int32_t OSPI_lld_configBaudrate(OSPILLD_Handle handle, uint32_t baud);
1512 
1523 int32_t OSPI_lld_readBaudRateDivFromReg(OSPILLD_Handle handle, uint32_t *baudDiv);
1524 
1535 int32_t OSPI_lld_getBaudRateDivFromObj(OSPILLD_Handle handle, uint32_t *baudDiv);
1536 
1547 int32_t OSPI_lld_setResetPinStatus(OSPILLD_Handle hOspi, uint32_t pinStatus);
1548 
1551 #ifdef __cplusplus
1552 }
1553 #endif
1554 
1555 #endif /* #ifndef OSPI_LLD_H_ */
1556 
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:476
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:513
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:495
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:547
OSPI_Transaction::status
uint32_t status
Definition: ospi_lld.h:449
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:404
OSPILLD_InitHandle
struct OSPILLD_InitObject * OSPILLD_InitHandle
OSPILLD_Object::phyEnableSuccess
uint32_t phyEnableSuccess
Definition: ospi_lld.h:669
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:489
OSPI_PhyWindowParams::txDllLowWindowStart
int32_t txDllLowWindowStart
Definition: ospi_lld.h:546
OSPI_ReadCmdParams
OSPI Instance Read Command Structure.
Definition: ospi_lld.h:483
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:593
OSPI_PhyConfiguration::tuningWindowParams
OSPI_PhyWindowParams tuningWindowParams
Definition: ospi_lld.h:577
OSPI_WriteCmdParams
OSPI Instance Write Command Structure.
Definition: ospi_lld.h:464
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:455
OSPILLD_Object::currTrans
OSPI_Transaction * currTrans
Definition: ospi_lld.h:672
OSPI_Transaction
Data structure used with OSPI_Transfers - OSPI_lld_readDirect, OSPI_lld_writeDirect,...
Definition: ospi_lld.h:442
OSPILLD_Object::transferMode
uint32_t transferMode
Definition: ospi_lld.h:644
OSPILLD_Object::cmdDummyCycles
uint32_t cmdDummyCycles
Definition: ospi_lld.h:655
OSPILLD_InitObject::inputClkFreq
uint32_t inputClkFreq
Definition: ospi_lld.h:587
OSPI_WriteCmdParams::cmdAddr
uint32_t cmdAddr
Definition: ospi_lld.h:467
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:695
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:678
OSPI_PhyConfiguration
OSPI PHY Configuration.
Definition: ospi_lld.h:573
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:429
OSPILLD_InitObject::phyConfiguration
OSPI_PhyConfiguration phyConfiguration
Definition: ospi_lld.h:625
OSPI_PhyWindowParams::rxLowSearchEnd
int32_t rxLowSearchEnd
Definition: ospi_lld.h:551
OSPILLD_Object::numAddrBytes
uint32_t numAddrBytes
Definition: ospi_lld.h:661
OSPI_PhyWindowParams::rxHighSearchStart
int32_t rxHighSearchStart
Definition: ospi_lld.h:552
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:486
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:691
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:443
OSPILLD_Object::cmdExtType
uint32_t cmdExtType
Definition: ospi_lld.h:666
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:599
OSPI_PhyConfiguration::dllLockMode
uint32_t dllLockMode
Definition: ospi_lld.h:576
OSPI_Params
OSPI Parameters.
Definition: ospi_lld.h:529
OSPILLD_InitObject::dacEnable
uint32_t dacEnable
Definition: ospi_lld.h:603
OSPI_PhyWindowParams::txDLLSearchOffset
int32_t txDLLSearchOffset
Definition: ospi_lld.h:558
OSPI_PhyWindowParams::txHighSearchStart
int32_t txHighSearchStart
Definition: ospi_lld.h:556
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:393
OSPI_PhyWindowParams::txDllHighWindowStart
int32_t txDllHighWindowStart
Definition: ospi_lld.h:548
OSPI_WriteCmdParams::txDataLen
uint32_t txDataLen
Definition: ospi_lld.h:474
OSPI_WriteCmdParams::txDataBuf
void * txDataBuf
Definition: ospi_lld.h:472
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:553
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:657
OSPI_PhyWindowParams::txDllHighWindowEnd
int32_t txDllHighWindowEnd
Definition: ospi_lld.h:549
OSPILLD_Object
OSPI driver object.
Definition: ospi_lld.h:633
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:646
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:545
OSPI_ReadCmdParams::rxDataBuf
void * rxDataBuf
Definition: ospi_lld.h:493
OSPILLD_InitObject::phyEnable
uint32_t phyEnable
Definition: ospi_lld.h:601
OSPI_WriteCmdParams::cmd
uint8_t cmd
Definition: ospi_lld.h:465
OSPI_PhyWindowParams::rxLowSearchStart
int32_t rxLowSearchStart
Definition: ospi_lld.h:550
OSPILLD_InitObject::ospiDmaHandle
OSPI_DmaHandle ospiDmaHandle
Definition: ospi_lld.h:621
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:689
OSPI_Params::ospiDmaChIndex
int32_t ospiDmaChIndex
Definition: ospi_lld.h:530
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:445
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:609
OSPI_DrvHandle
void * OSPI_DrvHandle
Definition: ospi_lld.h:77
OSPILLD_Object::openParams
const OSPI_Params * openParams
Definition: ospi_lld.h:643
OSPILLD_InitObject::dmaRestrictedRegions
const OSPI_AddrRegion * dmaRestrictedRegions
Definition: ospi_lld.h:615
OSPILLD_Object::state
uint32_t state
Definition: ospi_lld.h:684
OSPI_PhyWindowParams::rdDelayMax
uint32_t rdDelayMax
Definition: ospi_lld.h:561
OSPI_AddrRegion
OSPI Address Region.
Definition: ospi_lld.h:510
OSPI_PhyWindowParams::txHighSearchEnd
int32_t txHighSearchEnd
Definition: ospi_lld.h:557
OSPILLD_InitObject::decChipSelect
uint32_t decChipSelect
Definition: ospi_lld.h:611
OSPI_lld_setWriteDummyCycles
void OSPI_lld_setWriteDummyCycles(OSPILLD_Handle handle, uint32_t dummyCycles)
This function sets appropriate dummy cycles for flash write.
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:554
OSPILLD_Object::baseAddr
uint32_t baseAddr
Definition: ospi_lld.h:637
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:470
OSPILLD_Object::rdDummyCycles
uint32_t rdDummyCycles
Definition: ospi_lld.h:653
OSPILLD_Object::readCompleteCallback
OSPI_lld_dma_readCompleteCallback readCompleteCallback
Definition: ospi_lld.h:697
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:575
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:613
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:686
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:555
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:491
OSPI_Clock_usec
void(* OSPI_Clock_usec)(uint32_t usecs)
Sleep for user specified usecs.
Definition: ospi_lld.h:412
OSPILLD_Object::trans
OSPI_Transaction trans
Definition: ospi_lld.h:675
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:447
OSPI_Transaction::state
uint32_t state
Definition: ospi_lld.h:457
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:659
OSPI_AddrRegion::regionStartAddr
uint32_t regionStartAddr
Definition: ospi_lld.h:511
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:451
OSPILLD_InitObject::frmFmt
uint32_t frmFmt
Definition: ospi_lld.h:605
OSPI_PhyWindowParams::rdDelayMin
uint32_t rdDelayMin
Definition: ospi_lld.h:560
OSPILLD_InitObject::intrPriority
uint8_t intrPriority
Definition: ospi_lld.h:597
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:584
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:559
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:484
OSPI_lld_setResetPinStatus
int32_t OSPI_lld_setResetPinStatus(OSPILLD_Handle hOspi, uint32_t pinStatus)
This function activates the RESET pin feature.
OSPILLD_InitObject::dataBaseAddr
uint32_t dataBaseAddr
Definition: ospi_lld.h:585
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:421
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:574
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:693
OSPI_ReadCmdParams::readTimeout
uint32_t readTimeout
Definition: ospi_lld.h:497
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:453
OSPILLD_InitObject::intrEnable
uint32_t intrEnable
Definition: ospi_lld.h:595
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:623