AM64x MCU+ SDK  11.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, 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 
231 #define OSPI_READ_MODE_DAC (0U)
232 #define OSPI_READ_MODE_INDAC (1U)
233 
235 #define OSPI_RESETPIN_DQ3 (0U)
236 #define OSPI_RESETPIN_DEDICATED (1U)
237 
247 #define CSL_OSPI_BAUD_RATE_DIVISOR(x) (((x) - 2U) >> 1U)
248 #define MAX_BAUDRATE_DIVIDER (32U)
249 #define CSL_OSPI_BAUD_RATE_DIVISOR_DEFAULT (CSL_OSPI_BAUD_RATE_DIVISOR(MAX_BAUDRATE_DIVIDER))
250 
259 #define OSPI_DECODER_SELECT4 ((uint32_t) 0U)
260 #define OSPI_DECODER_SELECT16 ((uint32_t) 1U)
261 
271 #define OSPI_STATE_RESET ((uint32_t) 0U)
272 
274 #define OSPI_STATE_IDLE ((uint32_t) 1U)
275 
277 #define OSPI_STATE_BUSY ((uint32_t) 2U)
278 
280 #define OSPI_STATE_ERROR ((uint32_t) 3U)
281 
290 #define OSPI_SYSTEM_SUCCESS ((int32_t )0)
291 
294 #define OSPI_SYSTEM_FAILURE ((int32_t)-1)
295 
298 #define OSPI_TIMEOUT ((int32_t)-2)
299 
302 #define OSPI_LLD_INVALID_PARAM ((int32_t)-3)
303 
306 #define OSPI_BUSY ((int32_t)-4)
307 
310 #define OSPI_INVALID_STATE ((int32_t)-5)
311 
321 #define OSPI_NO_WAIT ((uint32_t)0)
322 
325 #define OSPI_WAIT_FOREVER ((uint32_t)-1)
326 
335 #define OSPI_TRANS_IDLE ((uint32_t)0)
336 
339 #define OSPI_TRANS_READ ((uint32_t)1)
340 
343 #define OSPI_TRANS_WRITE ((uint32_t)2)
344 
365 #define OSPI_FLASH_CFG_PHY_MASTER_CONTROL_REG_PHY_MASTER_MODE (0U)
366 #define OSPI_FLASH_CFG_PHY_MASTER_CONTROL_REG_PHY_BYPASS_MODE (1U)
367 
379 #define OSPI_PHY_DLL_FULL_CYCLE_LOCK ((uint16_t) 0U)
380 #define OSPI_PHY_DLL_HALF_CYCLE_LOCK ((uint16_t) 1U)
381 
391 #define OSPI_FLASH_ATTACK_VECTOR_SIZE (128U)
392 
394 /* ========================================================================== */
395 /* Function pointers Declarations */
396 /* ========================================================================== */
397 
405 typedef uint32_t (*OSPI_Clock_getTicks)(void);
406 
416 typedef uint32_t (*OSPI_Clock_usecToTicks)(uint64_t usecs);
417 
424 typedef void (*OSPI_Clock_usec)(uint32_t usecs);
425 
432 /* Type definition for the callback function*/
433 typedef void (*OSPI_lld_InterruptCallback)(void* args);
434 
441 typedef void (*OSPI_lld_dma_readCompleteCallback)(void* args);
442 
443 /* ========================================================================== */
444 /* Structure Declarations */
445 /* ========================================================================== */
453 typedef struct
454 {
455  uint32_t count;
457  void *buf;
459  uint32_t addrOffset;
461  uint32_t status;
463  uint32_t dataLen;
465  uint32_t transferOffset;
467  uint32_t transferTimeout;
469  uint32_t state;
472 
475 typedef struct
476 {
477  uint8_t cmd;
479  uint32_t cmdAddr;
482  uint8_t numAddrBytes;
484  void *txDataBuf;
486  uint32_t txDataLen;
488  uint32_t writeTimeout;
491 
494 typedef struct
495 {
496  uint8_t cmd;
498  uint32_t cmdAddr;
501  uint8_t numAddrBytes;
503  uint8_t dummyBits;
505  void *rxDataBuf;
507  uint16_t rxDataLen;
509  uint32_t readTimeout;
512 
521 typedef struct
522 {
523  uint32_t regionStartAddr;
525  uint32_t regionSize;
529 
540 typedef struct
541 {
542  int32_t ospiDmaChIndex;
543  /* Index of Channel used by OSPI DMA Driver. This index will be set by SysCfg according to the DMA driver chosen.
544  * The OSPI driver uses this index to do an \ref OSPI_dmaOpen inside the \ref OSPI_open if the DMA mode is enabled
545  */
546 } OSPI_Params;
547 
548 
556 typedef struct
557 {
563  int32_t rxLowSearchEnd;
567  int32_t txLowSearchEnd;
572  uint32_t rdDelayMin;
573  uint32_t rdDelayMax;
575 
584 typedef struct
585 {
587  uint32_t phyControlMode;
588  uint32_t dllLockMode;
591 
595 typedef struct
596 {
597  uint32_t dataBaseAddr;
599  uint32_t inputClkFreq;
602  /*
603  * Driver configuration
604  */
605  uint32_t intrNum;
607  uint32_t intrEnable;
609  uint8_t intrPriority;
611  uint32_t dmaEnable;
613  uint32_t phyEnable;
615  uint32_t dacEnable;
617  uint32_t frmFmt;
619  uint32_t devDelays[4];
621  uint32_t chipSelect;
623  uint32_t decChipSelect;
625  uint32_t baudRateDiv;
640 
644 typedef struct
645 {
646  /*
647  * SOC configuration
648  */
649  uint32_t baseAddr;
652  /*
653  * User params
654  */
656  uint32_t transferMode;
658  uint32_t protocol;
665  uint32_t rdDummyCycles;
667  uint32_t cmdDummyCycles;
669  uint32_t rdDataCapDelay;
673  uint32_t numAddrBytes;
678  uint32_t cmdExtType;
693  /*
694  * State variables
695  */
696  uint32_t state;
697 
698  void* args;
706 
708  /* Interrupt Callback to be registered by the application*/
710  /* DMA Readcallback function*/
711 
713 
714 /* ========================================================================== */
715 /* Internal/Private Structure Declarations */
716 /* ========================================================================== */
717 
718 /* ========================================================================== */
719 /* Function Declarations */
720 /* ========================================================================== */
721 
736 
751 
762 
773 
801 
814 
827 
840 
867 
880 
898 void OSPI_lld_isr(void* args);
899 
906 
926 
935 
946 
966 
977 
988 
999 
1010 
1021 
1032 
1043 
1054 int32_t OSPI_lld_setRdDataCaptureDelay(OSPILLD_Handle handle, uint32_t rdDataCapDelay);
1055 
1065 void OSPI_lld_setNumAddrBytes(OSPILLD_Handle handle, uint32_t numAddrBytes);
1066 
1077 void OSPI_lld_setDeviceSize(OSPILLD_Handle handle, uint32_t pageSize, uint32_t blkSize);
1078 
1088 void OSPI_lld_setCmdDummyCycles(OSPILLD_Handle handle, uint32_t cmdDummyCycles);
1089 
1099 void OSPI_lld_setReadDummyCycles(OSPILLD_Handle handle, uint32_t dummyCycles);
1100 
1110 void OSPI_lld_setWriteDummyCycles(OSPILLD_Handle handle, uint32_t dummyCycles);
1111 
1121 void OSPI_lld_setPhyEnableSuccess(OSPILLD_Handle handle, uint32_t success);
1122 
1132 void OSPI_lld_setModeBits(OSPILLD_Handle handle, uint32_t modeBits);
1133 
1143 
1153 
1164 
1177 
1188 void OSPI_lld_setProtocol(OSPILLD_Handle handle, uint32_t protocol);
1189 
1199 
1209 
1220 void OSPI_lld_setXferOpCodes(OSPILLD_Handle handle, uint8_t readCmd, uint8_t pageProgCmd);
1221 
1231 void OSPI_lld_setCmdExtType(OSPILLD_Handle handle, uint32_t cmdExtType);
1232 
1243 
1254 
1265 
1288 int32_t OSPI_lld_phyTuneDDR(OSPILLD_Handle handle, uint32_t flashOffset);
1289 
1301 int32_t OSPI_lld_phyTuneSDR(OSPILLD_Handle handle, uint32_t flashOffset);
1302 
1316 int32_t OSPI_lld_phyTuneGrapher(OSPILLD_Handle handle, uint32_t flashOffset, uint8_t arrays[4][128][128]);
1317 
1325 void OSPI_lld_phyGetTuningData(uint32_t *tuningData, uint32_t *tuningDataSize);
1326 
1336 int32_t OSPI_lld_phyReadAttackVector(OSPILLD_Handle handle, uint32_t offset);
1337 
1348 
1359 
1370 
1381 
1404 
1417 void OSPI_lld_norFlashSetCmds(uint8_t rdCmd, uint8_t wrCmd, uint8_t eraseCmd);
1418 
1419 
1431 int32_t OSPI_lld_norFlashReadId(OSPILLD_Handle handle, uint32_t *manufacturerId, uint32_t *deviceId);
1432 
1445 int32_t OSPI_lld_norFlashWrite(OSPILLD_Handle handle, uint32_t offset, uint8_t *buf, uint32_t len);
1446 
1459 int32_t OSPI_lld_norFlashRead(OSPILLD_Handle handle, uint32_t offset, uint8_t *buf, uint32_t len);
1460 
1473 int32_t OSPI_lld_norFlashReadIndirect(OSPILLD_Handle handle, uint32_t offset, uint8_t *buf, uint32_t len);
1474 
1487 int32_t OSPI_lld_norFlashReadSfdp(OSPILLD_Handle handle, uint32_t offset, uint8_t *buf, uint32_t len);
1488 
1499 int32_t OSPI_lld_norFlashErase(OSPILLD_Handle handle, uint32_t address);
1500 
1511 int32_t OSPI_lld_configResetPin(OSPILLD_Handle handle, uint32_t config);
1512 
1523 int32_t OSPI_lld_configBaudrate(OSPILLD_Handle handle, uint32_t baud);
1524 
1535 int32_t OSPI_lld_readBaudRateDivFromReg(OSPILLD_Handle handle, uint32_t *baudDiv);
1536 
1547 int32_t OSPI_lld_getBaudRateDivFromObj(OSPILLD_Handle handle, uint32_t *baudDiv);
1548 
1559 int32_t OSPI_lld_setResetPinStatus(OSPILLD_Handle hOspi, uint32_t pinStatus);
1560 
1563 #ifdef __cplusplus
1564 }
1565 #endif
1566 
1567 #endif /* #ifndef OSPI_LLD_H_ */
1568 
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:488
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:525
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:507
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:559
OSPI_Transaction::status
uint32_t status
Definition: ospi_lld.h:461
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:416
OSPILLD_InitHandle
struct OSPILLD_InitObject * OSPILLD_InitHandle
OSPILLD_Object::phyEnableSuccess
uint32_t phyEnableSuccess
Definition: ospi_lld.h:681
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:501
OSPI_PhyWindowParams::txDllLowWindowStart
int32_t txDllLowWindowStart
Definition: ospi_lld.h:558
OSPI_ReadCmdParams
OSPI Instance Read Command Structure.
Definition: ospi_lld.h:495
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:605
OSPI_PhyConfiguration::tuningWindowParams
OSPI_PhyWindowParams tuningWindowParams
Definition: ospi_lld.h:589
OSPI_WriteCmdParams
OSPI Instance Write Command Structure.
Definition: ospi_lld.h:476
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:467
OSPILLD_Object::currTrans
OSPI_Transaction * currTrans
Definition: ospi_lld.h:684
OSPI_Transaction
Data structure used with OSPI_Transfers - OSPI_lld_readDirect, OSPI_lld_writeDirect,...
Definition: ospi_lld.h:454
OSPILLD_Object::transferMode
uint32_t transferMode
Definition: ospi_lld.h:656
OSPILLD_Object::cmdDummyCycles
uint32_t cmdDummyCycles
Definition: ospi_lld.h:667
OSPILLD_InitObject::inputClkFreq
uint32_t inputClkFreq
Definition: ospi_lld.h:599
OSPI_WriteCmdParams::cmdAddr
uint32_t cmdAddr
Definition: ospi_lld.h:479
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:707
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:690
OSPI_PhyConfiguration
OSPI PHY Configuration.
Definition: ospi_lld.h:585
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:441
OSPILLD_InitObject::phyConfiguration
OSPI_PhyConfiguration phyConfiguration
Definition: ospi_lld.h:637
OSPI_PhyWindowParams::rxLowSearchEnd
int32_t rxLowSearchEnd
Definition: ospi_lld.h:563
OSPILLD_Object::numAddrBytes
uint32_t numAddrBytes
Definition: ospi_lld.h:673
OSPI_PhyWindowParams::rxHighSearchStart
int32_t rxHighSearchStart
Definition: ospi_lld.h:564
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:498
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:703
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:455
OSPILLD_Object::cmdExtType
uint32_t cmdExtType
Definition: ospi_lld.h:678
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:611
OSPI_PhyConfiguration::dllLockMode
uint32_t dllLockMode
Definition: ospi_lld.h:588
OSPI_Params
OSPI Parameters.
Definition: ospi_lld.h:541
OSPILLD_InitObject::dacEnable
uint32_t dacEnable
Definition: ospi_lld.h:615
OSPI_PhyWindowParams::txDLLSearchOffset
int32_t txDLLSearchOffset
Definition: ospi_lld.h:570
OSPI_PhyWindowParams::txHighSearchStart
int32_t txHighSearchStart
Definition: ospi_lld.h:568
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:405
OSPI_PhyWindowParams::txDllHighWindowStart
int32_t txDllHighWindowStart
Definition: ospi_lld.h:560
OSPI_WriteCmdParams::txDataLen
uint32_t txDataLen
Definition: ospi_lld.h:486
OSPI_WriteCmdParams::txDataBuf
void * txDataBuf
Definition: ospi_lld.h:484
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:565
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:669
OSPI_PhyWindowParams::txDllHighWindowEnd
int32_t txDllHighWindowEnd
Definition: ospi_lld.h:561
OSPILLD_Object
OSPI driver object.
Definition: ospi_lld.h:645
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:658
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:557
OSPI_ReadCmdParams::rxDataBuf
void * rxDataBuf
Definition: ospi_lld.h:505
OSPILLD_InitObject::phyEnable
uint32_t phyEnable
Definition: ospi_lld.h:613
OSPI_WriteCmdParams::cmd
uint8_t cmd
Definition: ospi_lld.h:477
OSPI_PhyWindowParams::rxLowSearchStart
int32_t rxLowSearchStart
Definition: ospi_lld.h:562
OSPILLD_InitObject::ospiDmaHandle
OSPI_DmaHandle ospiDmaHandle
Definition: ospi_lld.h:633
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:701
OSPI_Params::ospiDmaChIndex
int32_t ospiDmaChIndex
Definition: ospi_lld.h:542
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:457
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:621
OSPI_DrvHandle
void * OSPI_DrvHandle
Definition: ospi_lld.h:77
OSPILLD_Object::openParams
const OSPI_Params * openParams
Definition: ospi_lld.h:655
OSPILLD_InitObject::dmaRestrictedRegions
const OSPI_AddrRegion * dmaRestrictedRegions
Definition: ospi_lld.h:627
OSPILLD_Object::state
uint32_t state
Definition: ospi_lld.h:696
OSPI_PhyWindowParams::rdDelayMax
uint32_t rdDelayMax
Definition: ospi_lld.h:573
OSPI_AddrRegion
OSPI Address Region.
Definition: ospi_lld.h:522
OSPI_PhyWindowParams::txHighSearchEnd
int32_t txHighSearchEnd
Definition: ospi_lld.h:569
OSPILLD_InitObject::decChipSelect
uint32_t decChipSelect
Definition: ospi_lld.h:623
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:566
OSPILLD_Object::baseAddr
uint32_t baseAddr
Definition: ospi_lld.h:649
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:482
OSPILLD_Object::rdDummyCycles
uint32_t rdDummyCycles
Definition: ospi_lld.h:665
OSPILLD_Object::readCompleteCallback
OSPI_lld_dma_readCompleteCallback readCompleteCallback
Definition: ospi_lld.h:709
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:587
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:625
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:698
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:567
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:503
OSPI_Clock_usec
void(* OSPI_Clock_usec)(uint32_t usecs)
Sleep for user specified usecs.
Definition: ospi_lld.h:424
OSPILLD_Object::trans
OSPI_Transaction trans
Definition: ospi_lld.h:687
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:459
OSPI_Transaction::state
uint32_t state
Definition: ospi_lld.h:469
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:671
OSPI_AddrRegion::regionStartAddr
uint32_t regionStartAddr
Definition: ospi_lld.h:523
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:463
OSPILLD_InitObject::frmFmt
uint32_t frmFmt
Definition: ospi_lld.h:617
OSPI_PhyWindowParams::rdDelayMin
uint32_t rdDelayMin
Definition: ospi_lld.h:572
OSPILLD_InitObject::intrPriority
uint8_t intrPriority
Definition: ospi_lld.h:609
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:596
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:571
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:496
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:597
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:433
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:586
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:705
OSPI_ReadCmdParams::readTimeout
uint32_t readTimeout
Definition: ospi_lld.h:509
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:465
OSPILLD_InitObject::intrEnable
uint32_t intrEnable
Definition: ospi_lld.h:607
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:635