8#ifndef __EVKMIMXRT1060_FLEXSPI_NOR_CONFIG__
9#define __EVKMIMXRT1060_FLEXSPI_NOR_CONFIG__
18#define FSL_XIP_BOARD_DRIVER_VERSION (MAKE_VERSION(2, 0, 0))
22#define FLEXSPI_CFG_BLK_TAG (0x42464346UL)
23#define FLEXSPI_CFG_BLK_VERSION (0x56010400UL)
24#define FLEXSPI_CFG_BLK_SIZE (512)
27#define FLEXSPI_FEATURE_HAS_PARALLEL_MODE 1
30#define CMD_INDEX_READ 0
31#define CMD_INDEX_READSTATUS 1
32#define CMD_INDEX_WRITEENABLE 2
33#define CMD_INDEX_WRITE 4
35#define CMD_LUT_SEQ_IDX_READ 0
36#define CMD_LUT_SEQ_IDX_READSTATUS 1
37#define CMD_LUT_SEQ_IDX_WRITEENABLE 3
38#define CMD_LUT_SEQ_IDX_WRITE 9
64#define DUMMY_RWDS_SDR 0x0D
65#define DUMMY_RWDS_DDR 0x2D
74#define FLEXSPI_LUT_SEQ(cmd0, pad0, op0, cmd1, pad1, op1) \
75 (FLEXSPI_LUT_OPERAND0(op0) | FLEXSPI_LUT_NUM_PADS0(pad0) | FLEXSPI_LUT_OPCODE0(cmd0) | FLEXSPI_LUT_OPERAND1(op1) | \
76 FLEXSPI_LUT_NUM_PADS1(pad1) | FLEXSPI_LUT_OPCODE1(cmd1))
79typedef enum _FlexSpiSerialClockFreq
81 kFlexSpiSerialClk_30MHz = 1,
82 kFlexSpiSerialClk_50MHz = 2,
83 kFlexSpiSerialClk_60MHz = 3,
84 kFlexSpiSerialClk_75MHz = 4,
85 kFlexSpiSerialClk_80MHz = 5,
86 kFlexSpiSerialClk_100MHz = 6,
87 kFlexSpiSerialClk_120MHz = 7,
88 kFlexSpiSerialClk_133MHz = 8,
89 kFlexSpiSerialClk_166MHz = 9,
90} flexspi_serial_clk_freq_t;
100typedef enum _FlashReadSampleClkSource
102 kFlexSPIReadSampleClk_LoopbackInternally = 0,
103 kFlexSPIReadSampleClk_LoopbackFromDqsPad = 1,
104 kFlexSPIReadSampleClk_LoopbackFromSckPad = 2,
105 kFlexSPIReadSampleClk_ExternalInputFromDqsPad = 3,
106} flexspi_read_sample_clk_t;
111 kFlexSpiMiscOffset_DiffClkEnable = 0,
112 kFlexSpiMiscOffset_Ck2Enable = 1,
113 kFlexSpiMiscOffset_ParallelEnable = 2,
114 kFlexSpiMiscOffset_WordAddressableEnable = 3,
115 kFlexSpiMiscOffset_SafeConfigFreqEnable = 4,
116 kFlexSpiMiscOffset_PadSettingOverrideEnable = 5,
117 kFlexSpiMiscOffset_DdrModeEnable = 6,
123 kFlexSpiDeviceType_SerialNOR = 1,
124 kFlexSpiDeviceType_SerialNAND = 2,
125 kFlexSpiDeviceType_SerialRAM = 3,
126 kFlexSpiDeviceType_MCP_NOR_NAND = 0x12,
127 kFlexSpiDeviceType_MCP_NOR_RAM = 0x13,
133 kSerialFlash_1Pad = 1,
134 kSerialFlash_2Pads = 2,
135 kSerialFlash_4Pads = 4,
136 kSerialFlash_8Pads = 8,
150 kDeviceConfigCmdType_Generic,
151 kDeviceConfigCmdType_QuadEnable,
152 kDeviceConfigCmdType_Spi2Xpi,
153 kDeviceConfigCmdType_Xpi2Spi,
154 kDeviceConfigCmdType_Spi2NoCmd,
155 kDeviceConfigCmdType_Reset,
213#define NOR_CMD_INDEX_READ CMD_INDEX_READ
214#define NOR_CMD_INDEX_READSTATUS CMD_INDEX_READSTATUS
215#define NOR_CMD_INDEX_WRITEENABLE CMD_INDEX_WRITEENABLE
216#define NOR_CMD_INDEX_ERASESECTOR 3
217#define NOR_CMD_INDEX_PAGEPROGRAM CMD_INDEX_WRITE
218#define NOR_CMD_INDEX_CHIPERASE 5
219#define NOR_CMD_INDEX_DUMMY 6
220#define NOR_CMD_INDEX_ERASEBLOCK 7
222#define NOR_CMD_LUT_SEQ_IDX_READ CMD_LUT_SEQ_IDX_READ
223#define NOR_CMD_LUT_SEQ_IDX_READSTATUS \
224 CMD_LUT_SEQ_IDX_READSTATUS
225#define NOR_CMD_LUT_SEQ_IDX_READSTATUS_XPI \
227#define NOR_CMD_LUT_SEQ_IDX_WRITEENABLE \
228 CMD_LUT_SEQ_IDX_WRITEENABLE
229#define NOR_CMD_LUT_SEQ_IDX_WRITEENABLE_XPI \
231#define NOR_CMD_LUT_SEQ_IDX_ERASESECTOR 5
232#define NOR_CMD_LUT_SEQ_IDX_ERASEBLOCK 8
233#define NOR_CMD_LUT_SEQ_IDX_PAGEPROGRAM \
234 CMD_LUT_SEQ_IDX_WRITE
235#define NOR_CMD_LUT_SEQ_IDX_CHIPERASE 11
236#define NOR_CMD_LUT_SEQ_IDX_READ_SFDP 13
237#define NOR_CMD_LUT_SEQ_IDX_RESTORE_NOCMD \
239#define NOR_CMD_LUT_SEQ_IDX_EXIT_NOCMD \
245typedef struct _flexspi_nor_config
250 uint8_t ipcmdSerialClkFreq;
251 uint8_t isUniformBlockSize;
252 uint8_t reserved0[2];
253 uint8_t serialNorType;
254 uint8_t needExitNoCmdMode;
255 uint8_t halfClkForNonReadCmd;
256 uint8_t needRestoreNoCmdMode;
258 uint32_t reserve2[11];
259} flexspi_nor_config_t;
FlexSPI Memory Configuration Block.
Definition evkmimxrt1060_flexspi_nor_config.h:160
uint32_t version
[0x004-0x007] Version,[31:24] -'V', [23:16] - Major, [15:8] - Minor, [7:0] - bugfix
Definition evkmimxrt1060_flexspi_nor_config.h:162
uint8_t columnAddressWidth
Definition evkmimxrt1060_flexspi_nor_config.h:167
uint32_t configCmdArgs[3]
[0x030-0x03b] Arguments/Parameters for device Configuration commands
Definition evkmimxrt1060_flexspi_nor_config.h:182
uint32_t commandInterval
[0x074-0x077] CS deselect interval between two commands
Definition evkmimxrt1060_flexspi_nor_config.h:202
flexspi_lut_seq_t lutCustomSeq[12]
[0x180-0x1af] Customizable LUT Sequences
Definition evkmimxrt1060_flexspi_nor_config.h:208
uint8_t csSetupTime
[0x00e-0x00e] CS setup time, default value: 3
Definition evkmimxrt1060_flexspi_nor_config.h:166
uint8_t sflashPadType
[0x045-0x045] Serial Flash Pad Type: 1 - Single, 2 - Dual, 4 - Quad, 8 - Octal
Definition evkmimxrt1060_flexspi_nor_config.h:187
uint32_t sflashA2Size
[0x054-0x057] Size of Flash connected to A2
Definition evkmimxrt1060_flexspi_nor_config.h:194
uint8_t lutCustomSeqEnable
Chapter for more details.
Definition evkmimxrt1060_flexspi_nor_config.h:190
uint32_t sflashA1Size
[0x050-0x053] Size of Flash connected to A1
Definition evkmimxrt1060_flexspi_nor_config.h:193
uint32_t csPadSettingOverride
[0x060-0x063] CS pad setting override value
Definition evkmimxrt1060_flexspi_nor_config.h:197
uint32_t timeoutInMs
[0x070-0x073] Timeout threshold for read status command
Definition evkmimxrt1060_flexspi_nor_config.h:201
uint8_t csHoldTime
[0x00d-0x00d] CS hold time, default value: 3
Definition evkmimxrt1060_flexspi_nor_config.h:165
uint32_t reserved4[4]
[0x1b0-0x1bf] Reserved for future use
Definition evkmimxrt1060_flexspi_nor_config.h:209
uint32_t reserved1
[0x02c-0x02f] Reserved for future use
Definition evkmimxrt1060_flexspi_nor_config.h:181
uint32_t reserved2
[0x03c-0x03f] Reserved for future use
Definition evkmimxrt1060_flexspi_nor_config.h:183
uint32_t tag
[0x000-0x003] Tag, fixed value 0x42464346UL
Definition evkmimxrt1060_flexspi_nor_config.h:161
uint32_t deviceModeArg
sequence number, [31:16] Reserved
Definition evkmimxrt1060_flexspi_nor_config.h:176
uint16_t dataValidTime[2]
[0x078-0x07b] CLK edge to data valid time for PORT A and PORT B, in terms of 0.1ns
Definition evkmimxrt1060_flexspi_nor_config.h:203
uint16_t busyOffset
[0x07c-0x07d] Busy offset, valid value: 0-31
Definition evkmimxrt1060_flexspi_nor_config.h:204
uint8_t deviceModeCfgEnable
Serial NAND, need to refer to datasheet.
Definition evkmimxrt1060_flexspi_nor_config.h:169
uint32_t sflashB1Size
[0x058-0x05b] Size of Flash connected to B1
Definition evkmimxrt1060_flexspi_nor_config.h:195
uint32_t controllerMiscOption
Definition evkmimxrt1060_flexspi_nor_config.h:184
uint8_t configCmdEnable
[0x01c-0x01c] Configure command Enable Flag, 1 - Enable, 0 - Disable
Definition evkmimxrt1060_flexspi_nor_config.h:177
uint32_t lookupTable[64]
busy flag is 0 when flash device is busy
Definition evkmimxrt1060_flexspi_nor_config.h:207
uint32_t sflashB2Size
[0x05c-0x05f] Size of Flash connected to B2
Definition evkmimxrt1060_flexspi_nor_config.h:196
uint16_t busyBitPolarity
Definition evkmimxrt1060_flexspi_nor_config.h:205
uint32_t reserved3[2]
be done using 1 LUT sequence, currently, only applicable to HyperFLASH
Definition evkmimxrt1060_flexspi_nor_config.h:192
uint8_t deviceModeType
Definition evkmimxrt1060_flexspi_nor_config.h:170
uint8_t readSampleClkSrc
[0x00c-0x00c] Read Sample Clock Source, valid value: 0/1/3
Definition evkmimxrt1060_flexspi_nor_config.h:164
uint8_t deviceType
details
Definition evkmimxrt1060_flexspi_nor_config.h:186
uint32_t dqsPadSettingOverride
[0x06c-0x06f] DQS pad setting override value
Definition evkmimxrt1060_flexspi_nor_config.h:200
uint32_t reserved0
[0x008-0x00b] Reserved for future use
Definition evkmimxrt1060_flexspi_nor_config.h:163
uint32_t sclkPadSettingOverride
[0x064-0x067] SCK pad setting override value
Definition evkmimxrt1060_flexspi_nor_config.h:198
flexspi_lut_seq_t deviceModeSeq
DPI/QPI/OPI switch or reset command.
Definition evkmimxrt1060_flexspi_nor_config.h:174
uint16_t waitTimeCfgCommands
Generic configuration, etc.
Definition evkmimxrt1060_flexspi_nor_config.h:172
uint32_t dataPadSettingOverride
[0x068-0x06b] data pad setting override value
Definition evkmimxrt1060_flexspi_nor_config.h:199
uint8_t configModeType[3]
[0x01d-0x01f] Configure Mode Type, similar as deviceModeTpe
Definition evkmimxrt1060_flexspi_nor_config.h:178
flexspi_lut_seq_t configCmdSeqs[3]
[0x020-0x02b] Sequence info for Device Configuration command, similar as deviceModeSeq
Definition evkmimxrt1060_flexspi_nor_config.h:180
uint8_t serialClkFreq
Definition evkmimxrt1060_flexspi_nor_config.h:188
FlexSPI LUT Sequence structure.
Definition evkmimxrt1060_flexspi_nor_config.h:141
uint8_t seqId
Sequence Index, valid number: 0-15.
Definition evkmimxrt1060_flexspi_nor_config.h:143
uint8_t seqNum
Sequence Number, valid number: 1-16.
Definition evkmimxrt1060_flexspi_nor_config.h:142