34 #include "memory/memory.h" 35 #include "bootloader_common.h" 45 #define QSPI_LUT_MAX_ENTRIES 64 46 #define QSPI_PRE_CMD_CNT 4 47 #define QSPI_FEATURE_ENABLE 1 49 #define QSPI_VERSION_NAME 'Q' 57 kQspiVersionTag = FOUR_CHAR_CODE(0, 2, 1,
'Q'),
61 typedef enum _qspiflash_mode_option
68 typedef enum _qspiflash_pad
77 typedef enum _qspi_serial_clock_freq
85 typedef enum _qspiflash_property
87 kQspiFlashProperty_InitStatus = 0,
98 typedef enum _qspi_endianness
107 typedef enum _qspi_port_enable
114 typedef enum _qspi_ahb_data_transfer_size
122 typedef enum _qspiflash_status
151 typedef struct __sflash_configuration_parameter
155 uint32_t lengthInBytes;
160 uint32_t reserved0[2];
185 look_up_table[QSPI_LUT_MAX_ENTRIES];
188 uint32_t config_cmds[QSPI_PRE_CMD_CNT];
189 uint32_t config_cmds_args[QSPI_PRE_CMD_CNT];
198 uint32_t reserved1[2];
203 uint32_t ips_command_second_divider;
213 uint32_t reserved2[3];
221 #if defined(__cplusplus) 302 #if defined(__cplusplus) 307 #endif // #ifndef __QSPI_H__ uint32_t pagesize
page Size of Serial Flash
Definition: qspi.h:199
Octal-pad spi flash.
Definition: qspi.h:73
Error code which represents that the address is invalid.
Definition: qspi.h:129
uint32_t pre_erase_cmd_address_offset
Address for PreErase command.
Definition: qspi.h:211
status_t quadspi_get_property(uint32_t whichProperty, uint32_t *value)
Get Property from QSPI driver.
Definition: qspi.c:346
QuadSPI module works at mid frequency.
Definition: qspi.h:80
Enable Both PoartA and PortB.
Definition: qspi.h:110
Single-pad spi flash.
Definition: qspi.h:70
Dual-pad spi flash.
Definition: qspi.h:71
uint32_t cs_setup_time
CS setup time in terms of serial clock.(for example 1 serial clock cyle)
Definition: qspi.h:167
status_t quadspi_erase_all(void)
Erase the entire spi flash devices.
Definition: qspi.c:772
AHB data transfer size is 256bytes.
Definition: qspi.h:117
uint32_t config_cmd_en
Enable config commands.
Definition: qspi.h:187
uint32_t differential_clock_pin_enable
Differential flash clock pins enable.
Definition: qspi.h:190
uint32_t dqs_loopback_internal
0: dqs loopback from pad, 1: dqs loopback internally
Definition: qspi.h:194
uint32_t sflash_port
0–Only Port-A, 1–Both PortA and PortB
Definition: qspi.h:175
uint32_t is_spansion_hyperflash
Determine if connected spi flash device belongs to Hyperflash family.
Definition: qspi.h:206
uint32_t fsphs
Full speed delay selection for SDR instructions.
Definition: qspi.h:181
Tag used to retrieve total flash size in terms of KByte.
Definition: qspi.h:89
QuadSPI Config block structure.
Definition: qspi.h:151
qspi_serial_clock_freq_t
QSPI Serial Clock Frequency options.
Definition: qspi.h:77
uint32_t cs_hold_time
CS hold time in terms of serial clock.(for example 1 serial clock cyle)
Definition: qspi.h:166
status_t quadspi_erase_sector(uint32_t address)
Erase one sector from the provided address.
Definition: qspi.c:844
uint32_t dqs_inverse_sel
Select clock source for internal DQS generation.
Definition: qspi.h:192
status_t quadspi_cache_clear(void)
Flush QSPI cache.
Definition: qspi.c:1376
uint32_t write_cmd_ipcr
IPCR value of Write command.
Definition: qspi.h:163
uint32_t ddr_mode_enable
Enable DDR mode if set to TRUE.
Definition: qspi.h:176
status_t quadspi_init(qspi_config_t *config_base)
Intialize QSPI module according to parameters passed in.
Definition: qspi.c:1340
uint32_t busy_bit_offset
Flash device busy bit offset in status register.
Definition: qspi.h:173
Tag value used to validate the qspi config block.
Definition: qspi.h:54
Serial mode.
Definition: qspi.h:63
uint32_t erase_all_cmd_address_offset
Address for EraseAll command.
Definition: qspi.h:212
uint32_t sflash_A1_size
Size of flash connected on QSPI0A Ports and QSPI0A_SS0, in terms of Bytes.
Definition: qspi.h:168
qspi_endianess_t
Endianess supported by QSPI module.
Definition: qspi.h:98
bool is_quadspi_configured(void)
Get the status of quadspi configuration.
Definition: qspi.c:1370
Error code which represents that QSPI cannot perform write operation at expected frequency.
Definition: qspi.h:143
uint32_t sclk_freq
In 00 - 24MHz, 01 - 48MHz, 10 - 96MHz,(only for SDR Mode)
Definition: qspi.h:172
uint32_t sectorsize
sector Size of Serial Flash
Definition: qspi.h:200
uint32_t pre_unlock_cmd_address_offset
Address for PreWriteEnable command.
Definition: qspi.h:208
uint32_t sflash_B2_size
Size of flash connected on QSPI0B Ports and QSPI0B_SS1, in terms of Bytes.
Definition: qspi.h:171
Error code which represents that operation is timeout.
Definition: qspi.h:140
uint32_t portA_cs1
Enable PORTA CS1.
Definition: qspi.h:179
QSPI driver status group number.
Definition: bootloader_common.h:157
qspiflash_pad_t
External spi flash pad definition.
Definition: qspi.h:68
uint32_t dqs_loopback
Sets DQS LoopBack Mode to enable Dummy Pad MCR[24].
Definition: qspi.h:158
uint32_t data_hold_time
Serial flash data In Hold time, valid value: 0/1/2.
Definition: qspi.h:159
64-bit Big Endian
Definition: qspi.h:100
uint32_t device_cmd
Command to be tranferred to device.
Definition: qspi.h:162
uint32_t dqs_phase_sel
dqs phase sel
Definition: qspi.h:195
Error code which represents that start address for programming is not page aligned.
Definition: qspi.h:127
Error code which represents that the operation is not successfully executed.
Definition: qspi.h:131
uint32_t word_addressable
Determine if the serial flash is word addressable.
Definition: qspi.h:164
Error code which represents that a command is not supported under certain mode.
Definition: qspi.h:138
Only PORTA is enabled.
Definition: qspi.h:109
qspiflash_property_t
QSPI flash property tag values.
Definition: qspi.h:85
Error code which represents that the property is not supported.
Definition: qspi.h:133
Tag used to retrieve sector size in term of byte.
Definition: qspi.h:91
32-bit Little Endian
Definition: qspi.h:101
uint32_t need_multi_phases
Determine if multiple hases command are needed.
Definition: qspi.h:205
uint32_t dqs_fb_delay_chain_sel
dqs fb delay chain selection
Definition: qspi.h:197
AHB data transfer size is 64bytes.
Definition: qspi.h:116
qspiflash_status_t
Error codes of QuadSPI driver.
Definition: qspi.h:122
Structure of version property.
Definition: bootloader_common.h:168
Tag used to retrieve start address.
Definition: qspi.h:88
uint32_t sflash_type
SPI flash type: 0-Single,1–Dual 2–Quad, 3– Octal.
Definition: qspi.h:174
uint32_t flash_CK2_clock_pin_enable
Flash CK2 clock pin enable.
Definition: qspi.h:191
uint32_t pre_program_cmd_address_offset
Address for PreProgram command.
Definition: qspi.h:210
AHB data transfer size is 512bytes.
Definition: qspi.h:118
qspi_port_enable_t
Port Enablement Option.
Definition: qspi.h:107
Parallel mode.
Definition: qspi.h:64
uint32_t dqs_enable
Enable DQS mode if set to TRUE.
Definition: qspi.h:177
void quadspi_serial_clock_configure(qspi_serial_clock_freq_t freq)
Configure QSPI serial clock frquency.
Tag used to retrieve total flash size in terms of byte.
Definition: qspi.h:94
uint32_t timeout_milliseconds
Definition: qspi.h:202
Quad-pad spi flash.
Definition: qspi.h:72
uint32_t pre_read_status_cmd_address_offset
Address for PreReadStatus command.
Definition: qspi.h:207
uint32_t fsdly
Full speed phase selection for SDR instructions.
Definition: qspi.h:182
uint32_t sflash_B1_size
Size of flash connected on QSPI0B Ports and QSPI0B_SS0, in terms of Bytes.
Definition: qspi.h:170
Error code which represents that flash size is error.
Definition: qspi.h:125
uint32_t ddrsmp
Select the sampling point for incomming data when serial flash is in DDR mdoe.
Definition: qspi.h:183
uint32_t parallel_mode_enable
Enable Individual or parrallel mode.
Definition: qspi.h:178
QuadSPI module works at low frequency.
Definition: qspi.h:79
uint32_t portB_cs1
Enable PORTB CS1.
Definition: qspi.h:180
status_t quadspi_iomux_configuration(qspi_config_t *config_base)
Configure pinmux of QSPI module according to parameters passed in.
qspiflash_mode_option_t
QSPI Flash mode options.
Definition: qspi.h:61
__qspi_config_block_tags
Definition: qspi.h:51
Tag used to retrieve block size in terms of byte.
Definition: qspi.h:92
uint32_t dqs_fa_delay_chain_sel
dqs fa delay chain selection
Definition: qspi.h:196
Error code which represents that the QSPI module is busy, which may be caused by incorrect.
Definition: qspi.h:147
uint32_t unlock_cmd_address_offset
Address for WriteEnable command.
Definition: qspi.h:209
32-bit Big Endian
Definition: qspi.h:102
64-bit Little Endian
Definition: qspi.h:103
uint32_t column_address_space
The width of the column address.
Definition: qspi.h:186
standard_version_t version
Definition: qspi.h:154
uint32_t tag
Set to magic number of 'kqcf'.
Definition: qspi.h:153
Error code which represents that qspi module is not configured yet.
Definition: qspi.h:135
int32_t status_t
Type used for all status and error return values.
Definition: fsl_common.h:121
qspi_ahb_data_transfer_size_t
Definition for AHB data tranfer size.
Definition: qspi.h:114
uint32_t device_mode_config_en
Determine if it is required to config working mode of external spi flash.
Definition: qspi.h:161
status_t quadspi_page_program(uint32_t dst_addr, const uint32_t *src, uint32_t lengthInBytes)
Page program to external spi flash.
QuadSPI module works at high frequency.
Definition: qspi.h:81
uint32_t dqs_latency_enable
DQS Latency Enable.
Definition: qspi.h:193
uint32_t sflash_A2_size
Size of flash connected on QSPI0A Ports and QSPI0A_SS1, in terms of Bytes.
Definition: qspi.h:169
Tag used to retreive page size in terms of byte.
Definition: qspi.h:90