11#include "fsl_common.h"
19#define FSL_ROM_ROMAPI_VERSION (MAKE_VERSION(1U, 1U, 1U))
21#define FSL_ROM_FLEXSPINOR_DRIVER_VERSION (MAKE_VERSION(1U, 4U, 0U))
28#define FSL_ROM_HAS_FLEXSPINOR_API (1)
30#define FSL_ROM_HAS_RUNBOOTLOADER_API (0)
32#define FSL_ROM_FLEXSPINOR_API_HAS_FEATURE_GET_CONFIG (0)
34#define FSL_ROM_FLEXSPINOR_API_HAS_FEATURE_FLASH_INIT (1)
36#define FSL_ROM_FLEXSPINOR_API_HAS_FEATURE_ERASE (1)
38#define FSL_ROM_FLEXSPINOR_API_HAS_FEATURE_ERASE_SECTOR (1)
40#define FSL_ROM_FLEXSPINOR_API_HAS_FEATURE_ERASE_BLOCK (0)
42#define FSL_ROM_FLEXSPINOR_API_HAS_FEATURE_ERASE_ALL (1)
44#define FSL_ROM_FLEXSPINOR_API_HAS_FEATURE_PAGE_PROGRAM (1)
46#define FSL_ROM_FLEXSPINOR_API_HAS_FEATURE_UPDATE_LUT (1)
48#define FSL_ROM_FLEXSPINOR_API_HAS_FEATURE_CMD_XFER (1)
52#define kROM_StatusGroup_FLEXSPI 60U
53#define kROM_StatusGroup_FLEXSPINOR 200U
55#define FSL_ROM_FLEXSPI_LUT_SEQ(cmd0, pad0, op0, cmd1, pad1, op1) \
56 (FLEXSPI_LUT_OPERAND0(op0) | FLEXSPI_LUT_NUM_PADS0(pad0) | FLEXSPI_LUT_OPCODE0(cmd0) | FLEXSPI_LUT_OPERAND1(op1) | \
57 FLEXSPI_LUT_NUM_PADS1(pad1) | FLEXSPI_LUT_OPCODE1(cmd1))
60#define FSL_ROM_FLEXSPI_BITMASK(bit_offset) (1U << (bit_offset))
63#define FLEXSPI_CFG_BLK_TAG (0x42464346UL)
64#define FLEXSPI_CFG_BLK_VERSION (0x56010400UL)
68#define RADDR_SDR 0x02U
69#define RADDR_DDR 0x22U
70#define CADDR_SDR 0x03U
71#define CADDR_DDR 0x23U
72#define MODE1_SDR 0x04U
73#define MODE1_DDR 0x24U
74#define MODE2_SDR 0x05U
75#define MODE2_DDR 0x25U
76#define MODE4_SDR 0x06U
77#define MODE4_DDR 0x26U
78#define MODE8_SDR 0x07U
79#define MODE8_DDR 0x27U
80#define WRITE_SDR 0x08U
81#define WRITE_DDR 0x28U
84#define LEARN_SDR 0x0AU
85#define LEARN_DDR 0x2AU
86#define DATSZ_SDR 0x0BU
87#define DATSZ_DDR 0x2BU
88#define DUMMY_SDR 0x0CU
89#define DUMMY_DDR 0x2CU
90#define DUMMY_RWDS_SDR 0x0DU
91#define DUMMY_RWDS_DDR 0x2DU
92#define JMP_ON_CS 0x1FU
95#define FLEXSPI_1PAD 0U
96#define FLEXSPI_2PAD 1U
97#define FLEXSPI_4PAD 2U
98#define FLEXSPI_8PAD 3U
101#define NOR_CMD_INDEX_READ 0U
102#define NOR_CMD_INDEX_READSTATUS 1U
103#define NOR_CMD_INDEX_WRITEENABLE 2U
104#define NOR_CMD_INDEX_ERASESECTOR 3U
105#define NOR_CMD_INDEX_PAGEPROGRAM 4U
106#define NOR_CMD_INDEX_CHIPERASE 5U
107#define NOR_CMD_INDEX_DUMMY 6U
108#define NOR_CMD_INDEX_ERASEBLOCK 7U
115#define NOR_CMD_LUT_SEQ_IDX_READ 0U
116#define NOR_CMD_LUT_SEQ_IDX_READSTATUS 1U
117#define NOR_CMD_LUT_SEQ_IDX_READSTATUS_XPI \
119#define NOR_CMD_LUT_SEQ_IDX_WRITEENABLE 3U
120#define NOR_CMD_LUT_SEQ_IDX_WRITEENABLE_XPI \
122#define NOR_CMD_LUT_SEQ_IDX_ERASESECTOR 5U
123#define NOR_CMD_LUT_SEQ_IDX_ERASEBLOCK 8U
124#define NOR_CMD_LUT_SEQ_IDX_PAGEPROGRAM 9U
125#define NOR_CMD_LUT_SEQ_IDX_CHIPERASE 11U
126#define NOR_CMD_LUT_SEQ_IDX_READ_SFDP 13U
127#define NOR_CMD_LUT_SEQ_IDX_RESTORE_NOCMD \
129#define NOR_CMD_LUT_SEQ_IDX_EXIT_NOCMD \
139 kSerialFlash_1Pad = 1U,
140 kSerialFlash_2Pads = 2U,
141 kSerialFlash_4Pads = 4U,
142 kSerialFlash_8Pads = 8U,
155 kFLEXSPIReadSampleClk_LoopbackInternally = 0U,
156 kFLEXSPIReadSampleClk_LoopbackFromDqsPad = 1U,
157 kFLEXSPIReadSampleClk_LoopbackFromSckPad = 2U,
158 kFLEXSPIReadSampleClk_ExternalInputFromDqsPad = 3U,
181 kFLEXSPISerialClk_NoChange = 0U,
182 kFLEXSPISerialClk_30MHz = 1U,
183 kFLEXSPISerialClk_50MHz = 2U,
184 kFLEXSPISerialClk_60MHz = 3U,
185 kFLEXSPISerialClk_75MHz = 4U,
186 kFLEXSPISerialClk_80MHz = 5U,
187 kFLEXSPISerialClk_100MHz = 6U,
188 kFLEXSPISerialClk_133MHz = 7U,
189 kFLEXSPISerialClk_166MHz = 8U,
190 kFLEXSPISerialClk_200MHz = 9U,
342} flexspi_operation_t;
362#if defined(FSL_FEATURE_BOOT_ROM_HAS_ROMAPI) && FSL_FEATURE_BOOT_ROM_HAS_ROMAPI
413status_t ROM_FLEXSPI_NorFlash_ProgramPage(uint32_t instance,
416 const uint32_t *src);
424#if defined(FSL_ROM_FLEXSPINOR_API_HAS_FEATURE_ERASE_SECTOR) && FSL_ROM_FLEXSPINOR_API_HAS_FEATURE_ERASE_SECTOR
447#if defined(FSL_ROM_FLEXSPINOR_API_HAS_FEATURE_ERASE_ALL) && FSL_ROM_FLEXSPINOR_API_HAS_FEATURE_ERASE_ALL
496#if defined(FSL_ROM_FLEXSPINOR_API_HAS_FEATURE_CMD_XFER) && FSL_ROM_FLEXSPINOR_API_HAS_FEATURE_CMD_XFER
518#if defined(FSL_ROM_FLEXSPINOR_API_HAS_FEATURE_UPDATE_LUT) && FSL_ROM_FLEXSPINOR_API_HAS_FEATURE_UPDATE_LUT
532status_t ROM_FLEXSPI_NorFlash_UpdateLut(uint32_t instance,
534 const uint32_t *lutBase,
553void ROM_FLEXSPI_NorFlash_ClearCache(uint32_t instance);
int32_t status_t
Type used for all status and error return values.
Definition: fsl_common.h:225
#define MAKE_STATUS(group, code)
Construct a status code value from a group and code number.
Definition: fsl_common.h:47
flexspi_mem_config_t memConfig
Common memory configuration info via FlexSPI.
Definition: fsl_flexspi_nor_config.h:276
_flexspi_nor_status
ROM FLEXSPI NOR flash status.
Definition: fsl_romapi.h:322
uint32_t commandInterval
Definition: fsl_romapi.h:281
uint8_t readSampleClkSrc
Definition: fsl_romapi.h:242
uint16_t waitTimeCfgCommands
Definition: fsl_romapi.h:250
uint32_t reserved0
Definition: fsl_romapi.h:241
uint32_t seqNum
Definition: fsl_romapi.h:350
bool isParallelModeEnable
Definition: fsl_romapi.h:351
uint32_t rxSize
Definition: fsl_romapi.h:355
uint8_t configModeType[3]
Definition: fsl_romapi.h:256
uint32_t sflashB1Size
Definition: fsl_romapi.h:274
uint8_t seqNum
Definition: fsl_romapi.h:225
uint8_t ipcmdSerialClkFreq
Clock frequency for IP command.
Definition: fsl_flexspi_nor_config.h:279
uint32_t dqsPadSettingOverride
Definition: fsl_romapi.h:279
uint32_t blockSize
Block size.
Definition: fsl_flexspi_nor_config.h:287
uint32_t reserved3[2]
Definition: fsl_romapi.h:271
uint8_t halfClkForNonReadCmd
Half the Serial Clock for non-read command: true/false.
Definition: fsl_flexspi_nor_config.h:285
uint16_t busyBitPolarity
Definition: fsl_romapi.h:284
#define kROM_StatusGroup_FLEXSPINOR
Definition: fsl_romapi.h:53
uint8_t deviceModeType
Definition: fsl_romapi.h:248
flexspi_dll_time_t dataValidTime[2]
Definition: fsl_romapi.h:282
uint32_t configCmdArgs[3]
Definition: fsl_romapi.h:260
uint32_t * txBuffer
Definition: fsl_romapi.h:352
uint8_t seqId
Definition: fsl_romapi.h:226
uint32_t deviceModeArg
Definition: fsl_romapi.h:254
uint8_t serialNorType
Serial NOR Flash type: 0/1/2/3.
Definition: fsl_flexspi_nor_config.h:283
uint32_t version
Definition: fsl_romapi.h:240
uint32_t reserve2[10]
Reserved for future use.
Definition: fsl_flexspi_nor_config.h:289
uint8_t lutCustomSeqEnable
Definition: fsl_romapi.h:269
uint32_t sflashA2Size
Definition: fsl_romapi.h:273
#define kROM_StatusGroup_FLEXSPI
Definition: fsl_romapi.h:52
struct _flexspi_nor_config flexspi_nor_config_t
Serial NOR configuration block.
uint32_t * rxBuffer
Definition: fsl_romapi.h:354
uint8_t serialClkFreq
Definition: fsl_romapi.h:266
_flexspi_serial_clk_freq
Defintions for FLEXSPI Serial Clock Frequency.
Definition: fsl_romapi.h:180
uint32_t sflashB2Size
Definition: fsl_romapi.h:275
uint8_t reserved0
Reserved for future use.
Definition: fsl_flexspi_nor_config.h:282
uint8_t columnAddressWidth
Definition: fsl_romapi.h:245
flexspi_operation_t operation
Definition: fsl_romapi.h:347
uint16_t busyOffset
Definition: fsl_romapi.h:283
_flexspi_operation
Definition: fsl_romapi.h:336
enum _flexspi_operation flexspi_operation_t
FLEXSPI Operation Context.
uint32_t sflashA1Size
Definition: fsl_romapi.h:272
uint8_t isUniformBlockSize
Sector/Block size is the same.
Definition: fsl_flexspi_nor_config.h:280
uint32_t dataPadSettingOverride
Definition: fsl_romapi.h:278
uint8_t time_100ps
Definition: fsl_romapi.h:232
uint8_t configCmdEnable
Definition: fsl_romapi.h:255
flexspi_lut_seq_t lutCustomSeq[12]
Definition: fsl_romapi.h:287
uint8_t csHoldTime
Definition: fsl_romapi.h:243
flexspi_lut_seq_t deviceModeSeq
Definition: fsl_romapi.h:252
uint32_t lookupTable[64]
Definition: fsl_romapi.h:286
uint32_t seqId
Definition: fsl_romapi.h:349
uint32_t baseAddress
Definition: fsl_romapi.h:348
uint32_t timeoutInMs
Definition: fsl_romapi.h:280
uint8_t deviceType
Definition: fsl_romapi.h:264
struct _flexspi_xfer flexspi_xfer_t
FLEXSPI Transfer Context.
uint8_t sflashPadType
Definition: fsl_romapi.h:265
struct _flexspi_lut_seq flexspi_lut_seq_t
FLEXSPI LUT Sequence structure.
struct _flexspi_mem_config flexspi_mem_config_t
FLEXSPI Memory Configuration Block.
uint32_t sclkPadSettingOverride
Definition: fsl_romapi.h:277
uint32_t reserved2
Definition: fsl_romapi.h:261
uint32_t pageSize
Page size of Serial NOR.
Definition: fsl_flexspi_nor_config.h:277
uint32_t tag
Definition: fsl_romapi.h:239
flexspi_lut_seq_t configCmdSeqs[3]
Definition: fsl_romapi.h:258
uint8_t deviceModeCfgEnable
Definition: fsl_romapi.h:247
uint8_t needExitNoCmdMode
Need to exit NoCmd mode before other IP command.
Definition: fsl_flexspi_nor_config.h:284
uint32_t csPadSettingOverride
Definition: fsl_romapi.h:276
uint32_t sectorSize
Sector size of Serial NOR.
Definition: fsl_flexspi_nor_config.h:278
uint32_t controllerMiscOption
Definition: fsl_romapi.h:262
uint32_t reserved1
Definition: fsl_romapi.h:259
uint32_t txSize
Definition: fsl_romapi.h:353
uint8_t isDataOrderSwapped
The data order is swapped in OPI DDR mode (only i.MXRT11*)
Definition: fsl_flexspi_nor_config.h:281
uint8_t delay_cells
Definition: fsl_romapi.h:233
uint8_t needRestoreNoCmdMode
Need to Restore NoCmd mode after IP commmand execution.
Definition: fsl_flexspi_nor_config.h:286
uint8_t csSetupTime
Definition: fsl_romapi.h:244
uint32_t reserved4[4]
Definition: fsl_romapi.h:288
_flexspi_read_sample_clk
FLEXSPI Read Sample Clock Source definition.
Definition: fsl_romapi.h:154
@ kStatus_ROM_FLEXSPI_InvalidSequence
Definition: fsl_romapi.h:325
@ kStatus_FLEXSPINOR_DTRRead_DummyProbeFailed
Definition: fsl_romapi.h:327
@ kStatus_ROM_FLEXSPINOR_SFDP_NotFound
Definition: fsl_romapi.h:329
@ kStatus_ROM_FLEXSPI_SequenceExecutionTimeout
Definition: fsl_romapi.h:323
@ kStatus_ROM_FLEXSPI_DeviceTimeout
Definition: fsl_romapi.h:326
@ kStatus_ROM_FLEXSPINOR_Flash_NotFound
Definition: fsl_romapi.h:331
@ kSerialNorType_StandardSPI
Definition: fsl_romapi.h:208
@ kSerialNorType_HyperBus
Definition: fsl_romapi.h:209
@ kSerialNorType_XPI
Definition: fsl_romapi.h:210
@ kSerialNorType_NoCmd
Definition: fsl_romapi.h:211
@ kFLEXSPIClk_DDR
Definition: fsl_romapi.h:149
@ kFLEXSPIClk_SDR
Definition: fsl_romapi.h:148
@ kFLEXSPIOperation_Write
Definition: fsl_romapi.h:339
@ kFLEXSPIOperation_Command
Definition: fsl_romapi.h:337
@ kFLEXSPIOperation_Read
Definition: fsl_romapi.h:340
@ kFLEXSPIOperation_Config
Definition: fsl_romapi.h:338
@ kFLEXSPIMiscOffset_WordAddressableEnable
Definition: fsl_romapi.h:199
@ kFLEXSPIMiscOffset_DiffClkEnable
Definition: fsl_romapi.h:196
@ kFLEXSPIMiscOffset_ParallelEnable
Definition: fsl_romapi.h:198
@ kFLEXSPIMiscOffset_DdrModeEnable
Definition: fsl_romapi.h:202
@ kFLEXSPIMiscOffset_PadSettingOverrideEnable
Definition: fsl_romapi.h:201
@ kFLEXSPIMiscOffset_SafeConfigFreqEnable
Definition: fsl_romapi.h:200
@ kFLEXSPIMiscOffset_Ck2Enable
Definition: fsl_romapi.h:197
@ kFLEXSPIMiscOffset_UseValidTimeForAllFreq
Definition: fsl_romapi.h:203
@ kSerialFlash_Cypress_ManufacturerID
Definition: fsl_romapi.h:317
@ kSerialFlash_Adesto_ManufacturerID
Definition: fsl_romapi.h:315
@ kSerialFlash_Winbond_ManufacturerID
Definition: fsl_romapi.h:316
@ kSerialFlash_ISSI_ManufacturerID
Definition: fsl_romapi.h:314
@ kDeviceConfigCmdType_Generic
Definition: fsl_romapi.h:170
@ kDeviceConfigCmdType_QuadEnable
Definition: fsl_romapi.h:171
@ kDeviceConfigCmdType_Reset
Definition: fsl_romapi.h:175
@ kDeviceConfigCmdType_Spi2Xpi
Definition: fsl_romapi.h:172
@ kDeviceConfigCmdType_Spi2NoCmd
Definition: fsl_romapi.h:174
@ kDeviceConfigCmdType_Xpi2Spi
Definition: fsl_romapi.h:173
@ kFLEXSPIDeviceType_SerialNOR
Definition: fsl_romapi.h:164
FlexSPI Memory Configuration Block.
Definition: fsl_flexspi_nor_config.h:189
FLEXSPI LUT Sequence structure.
Definition: fsl_romapi.h:224
FLEXSPI Memory Configuration Block.
Definition: fsl_romapi.h:238
Serial NOR configuration block.
Definition: fsl_flexspi_nor_config.h:275
FLEXSPI Transfer Context.
Definition: fsl_romapi.h:346
Definition: deflate.c:114
FLEXSPI DLL time.
Definition: fsl_romapi.h:231