diff options
Diffstat (limited to 'flashrom.c')
-rw-r--r-- | flashrom.c | 10 |
1 files changed, 10 insertions, 0 deletions
@@ -2333,6 +2333,16 @@ int prepare_flash_access(struct flashctx *const flash, flash->address_high_byte = -1; flash->in_4ba_mode = false; + /* Be careful about 4BA chips and broken masters */ + if (flash->chip->total_size > 16 * 1024 && spi_master_no_4ba_modes(flash)) { + /* If we can't use native instructions, bail out */ + if ((flash->chip->feature_bits & FEATURE_4BA_NATIVE) != FEATURE_4BA_NATIVE + || !spi_master_4ba(flash)) { + msg_cerr("Programmer doesn't support this chip. Aborting.\n"); + return 1; + } + } + /* Enable/disable 4-byte addressing mode if flash chip supports it */ if (flash->chip->feature_bits & (FEATURE_4BA_ENTER | FEATURE_4BA_ENTER_WREN | FEATURE_4BA_ENTER_EAR7)) { int ret; |