Merge pull request #9408 from evva-sfw/feature/SPIF_ULBPR

SPIF - Fix command to unlock Global Block-Protection register
pull/9483/head
Cruz Monrreal 2019-01-22 23:59:21 -06:00 committed by GitHub
commit 0c85d441d2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 9 additions and 6 deletions

View File

@ -95,6 +95,7 @@ enum qspif_default_instructions {
QSPIF_RSTEN = 0x66, // Reset Enable
QSPIF_RST = 0x99, // Reset
QSPIF_RDID = 0x9f, // Read Manufacturer and JDEC Device ID
QSPIF_ULBPR = 0x98, // Clears all write-protection bits in the Block-Protection register
};
// Local Function
@ -204,9 +205,9 @@ int QSPIFBlockDevice::init()
switch (vendor_device_ids[0]) {
case 0xbf:
// SST devices come preset with block protection
// enabled for some regions, issue write disable instruction to clear
// enabled for some regions, issue global protection unlock to clear
_set_write_enable();
_qspi_send_general_command(QSPIF_WRDI, QSPI_NO_ADDRESS_COMMAND, NULL, 0, NULL, 0);
_qspi_send_general_command(QSPIF_ULBPR, QSPI_NO_ADDRESS_COMMAND, NULL, 0, NULL, 0);
break;
}

View File

@ -40,6 +40,7 @@ enum ops {
SPIF_WRDI = 0x04, // Write Disable
SPIF_RDSR = 0x05, // Read Status Register
SPIF_RDID = 0x9f, // Read Manufacturer and JDEC Device ID
SPIF_ULBPR = 0x98, // Clears all write-protection bits in the Block-Protection register
};
// Status register from RDSR
@ -66,9 +67,9 @@ int SPIFReducedBlockDevice::init()
switch (id[0]) {
case 0xbf:
// SST devices come preset with block protection
// enabled for some regions, issue gbpu instruction to clear
// enabled for some regions, issue global protection unlock to clear
_wren();
_cmdwrite(0x98, 0, 0, 0x0, NULL);
_cmdwrite(SPIF_ULBPR, 0, 0, 0x0, NULL);
break;
}

View File

@ -88,6 +88,7 @@ enum spif_default_instructions {
SPIF_RSTEN = 0x66, // Reset Enable
SPIF_RST = 0x99, // Reset
SPIF_RDID = 0x9f, // Read Manufacturer and JDEC Device ID
SPIF_ULBPR = 0x98, // Clears all write-protection bits in the Block-Protection register
};
// Mutex is used for some SPI Driver commands that must be done sequentially with no other commands in between
@ -167,9 +168,9 @@ int SPIFBlockDevice::init()
switch (vendor_device_ids[0]) {
case 0xbf:
// SST devices come preset with block protection
// enabled for some regions, issue write disable instruction to clear
// enabled for some regions, issue global protection unlock to clear
_set_write_enable();
_spi_send_general_command(SPIF_WRDI, SPI_NO_ADDRESS_COMMAND, NULL, 0, NULL, 0);
_spi_send_general_command(SPIF_ULBPR, SPI_NO_ADDRESS_COMMAND, NULL, 0, NULL, 0);
break;
}