Skip to content

Commit 5e2a4c6

Browse files
Fix QSPIFBlockDevice for Arduino Portenta
1 parent f45b010 commit 5e2a4c6

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

storage/blockdevice/COMPONENT_QSPIF/source/QSPIFBlockDevice.cpp

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1113,12 +1113,16 @@ int QSPIFBlockDevice::_handle_vendor_quirks()
11131113
case 0xc2:
11141114
// Macronix devices have several quirks:
11151115
// 1. Have one status register and several config registers, with a nonstandard instruction for reading the config registers
1116-
// 2. Require setting a "fast mode" bit in config register 2 to operate at higher clock rates
1117-
// 3. Should never attempt to enable 4-byte addressing (it causes reads and writes to fail)
1116+
// 2. Require setting a "fast mode" bit in config register 2 to operate at higher clock rates (if config register 2 exists)
1117+
// 3. Should never attempt to enable 4-byte addressing (it causes reads and writes to fail). On MX25L12833F at least, the
1118+
// SFDP table claims to have 4-byte support but it actually does not!
11181119
tr_debug("Applying quirks for macronix");
1119-
_needs_fast_mode = true;
11201120
_num_status_registers = MBED_CONF_QSPI_MACRONIX_NUM_STATUS_REGISTER;
11211121
_read_status_reg_2_inst = QSPIF_INST_RDCR;
1122+
if(MBED_CONF_QSPI_MACRONIX_NUM_STATUS_REGISTER >= 3) {
1123+
_needs_fast_mode = true;
1124+
}
1125+
_attempt_4_byte_addressing = false;
11221126
break;
11231127
case 0x9d:
11241128
// ISSI devices have only one status register

0 commit comments

Comments
 (0)