Skip to content

Commit bf11bbd

Browse files
QSPIF: Enable QPI mode as a second option, if available
1 parent ee1d998 commit bf11bbd

File tree

1 file changed

+16
-16
lines changed

1 file changed

+16
-16
lines changed

components/storage/blockdevice/COMPONENT_QSPIF/QSPIFBlockDevice.cpp

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -961,10 +961,22 @@ int QSPIFBlockDevice::_sfdp_detect_best_bus_read_mode(uint8_t *basic_param_table
961961
uint8_t examined_byte;
962962

963963
do { // compound statement is the loop body
964-
964+
examined_byte = basic_param_table_ptr[QSPIF_BASIC_PARAM_TABLE_FAST_READ_SUPPORT_BYTE];
965+
if (examined_byte & 0x20) {
966+
// Fast Read 1-4-4 Supported
967+
_read_instruction = basic_param_table_ptr[QSPIF_BASIC_PARAM_TABLE_144_READ_INST_BYTE];
968+
set_quad_enable = true;
969+
_dummy_cycles = basic_param_table_ptr[QSPIF_BASIC_PARAM_TABLE_144_READ_INST_BYTE - 1] & 0x1F;
970+
uint8_t mode_cycles = basic_param_table_ptr[QSPIF_BASIC_PARAM_TABLE_144_READ_INST_BYTE - 1] >> 5;
971+
_alt_size = mode_cycles * 4;
972+
_address_width = QSPI_CFG_BUS_QUAD;
973+
_data_width = QSPI_CFG_BUS_QUAD;
974+
tr_debug("Read Bus Mode set to 1-4-4, Instruction: 0x%xh", _read_instruction);
975+
break;
976+
}
977+
// QPI is checked as second option.
965978
if (basic_param_table_size > QSPIF_BASIC_PARAM_TABLE_QPI_READ_SUPPORT_BYTE) {
966979
examined_byte = basic_param_table_ptr[QSPIF_BASIC_PARAM_TABLE_QPI_READ_SUPPORT_BYTE];
967-
968980
if (examined_byte & 0x10) {
969981
// QPI 4-4-4 Supported
970982
_read_instruction = basic_param_table_ptr[QSPIF_BASIC_PARAM_TABLE_444_READ_INST_BYTE];
@@ -976,23 +988,11 @@ int QSPIFBlockDevice::_sfdp_detect_best_bus_read_mode(uint8_t *basic_param_table
976988
tr_debug("Read Bus Mode set to 4-4-4, Instruction: 0x%xh", _read_instruction);
977989
_address_width = QSPI_CFG_BUS_QUAD;
978990
_data_width = QSPI_CFG_BUS_QUAD;
991+
break;
979992
}
980993
}
981-
is_qpi_mode = false;
982-
examined_byte = basic_param_table_ptr[QSPIF_BASIC_PARAM_TABLE_FAST_READ_SUPPORT_BYTE];
983-
if (examined_byte & 0x20) {
984-
// Fast Read 1-4-4 Supported
985-
_read_instruction = basic_param_table_ptr[QSPIF_BASIC_PARAM_TABLE_144_READ_INST_BYTE];
986-
set_quad_enable = true;
987-
_dummy_cycles = basic_param_table_ptr[QSPIF_BASIC_PARAM_TABLE_144_READ_INST_BYTE - 1] & 0x1F;
988-
uint8_t mode_cycles = basic_param_table_ptr[QSPIF_BASIC_PARAM_TABLE_144_READ_INST_BYTE - 1] >> 5;
989-
_alt_size = mode_cycles * 4;
990-
_address_width = QSPI_CFG_BUS_QUAD;
991-
_data_width = QSPI_CFG_BUS_QUAD;
992-
tr_debug("Read Bus Mode set to 1-4-4, Instruction: 0x%xh", _read_instruction);
993-
break;
994-
}
995994

995+
examined_byte = basic_param_table_ptr[QSPIF_BASIC_PARAM_TABLE_FAST_READ_SUPPORT_BYTE];
996996
if (examined_byte & 0x40) {
997997
// Fast Read 1-1-4 Supported
998998
_read_instruction = basic_param_table_ptr[QSPIF_BASIC_PARAM_TABLE_114_READ_INST_BYTE];

0 commit comments

Comments
 (0)