Skip to content
Snippets Groups Projects
Commit c3cb0920 authored by Marc-André Hébert's avatar Marc-André Hébert Committed by Mike Frysinger
Browse files

sf: spansion: fixing erasing when sector size >64KiB


The spansion_erase currently only works when the sector size is 64KB.
cmd[1] should contain the higher 8 bit of the 24 bit address of the
sector to be erased. Currently it is holding the sector index to be
erased which happens to be the same thing when the sector size is
64KB.

Signed-off-by: default avatarMarc-Andre Hebert <marc-andre.hebert@humanware.com>
Signed-off-by: default avatarMike Frysinger <vapier@gentoo.org>
parent 74f9e0d8
No related branches found
No related tags found
No related merge requests found
...@@ -262,7 +262,6 @@ int spansion_erase(struct spi_flash *flash, u32 offset, size_t len) ...@@ -262,7 +262,6 @@ int spansion_erase(struct spi_flash *flash, u32 offset, size_t len)
return -1; return -1;
} }
len /= sector_size;
cmd[0] = CMD_S25FLXX_SE; cmd[0] = CMD_S25FLXX_SE;
cmd[2] = 0x00; cmd[2] = 0x00;
cmd[3] = 0x00; cmd[3] = 0x00;
...@@ -274,8 +273,8 @@ int spansion_erase(struct spi_flash *flash, u32 offset, size_t len) ...@@ -274,8 +273,8 @@ int spansion_erase(struct spi_flash *flash, u32 offset, size_t len)
} }
ret = 0; ret = 0;
for (actual = 0; actual < len; actual++) { for (actual = 0; actual < len; actual += sector_size) {
cmd[1] = (offset / sector_size) + actual; cmd[1] = (offset + actual) >> 16;
ret = spi_flash_cmd(flash->spi, CMD_S25FLXX_WREN, NULL, 0); ret = spi_flash_cmd(flash->spi, CMD_S25FLXX_WREN, NULL, 0);
if (ret < 0) { if (ret < 0) {
...@@ -298,7 +297,7 @@ int spansion_erase(struct spi_flash *flash, u32 offset, size_t len) ...@@ -298,7 +297,7 @@ int spansion_erase(struct spi_flash *flash, u32 offset, size_t len)
} }
debug("SF: SPANSION: Successfully erased %u bytes @ 0x%x\n", debug("SF: SPANSION: Successfully erased %u bytes @ 0x%x\n",
len * sector_size, offset); len, offset);
spi_release_bus(flash->spi); spi_release_bus(flash->spi);
return ret; return ret;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment