diff options
Diffstat (limited to 'it87spi.c')
-rw-r--r-- | it87spi.c | 11 |
1 files changed, 6 insertions, 5 deletions
@@ -339,7 +339,10 @@ int it8716f_spi_chip_write_256(struct flashchip *flash, uint8_t *buf, int start, { /* * IT8716F only allows maximum of 512 kb SPI chip size for memory - * mapped access. It also can't write more than 1+3+256 bytes at once. + * mapped access. It also can't write more than 1+3+256 bytes at once, + * so page_size > 256 bytes needs a fallback. + * FIXME: Split too big page writes into chunks IT87* can handle instead + * of degrading to single-byte program. */ if ((programmer == PROGRAMMER_IT87SPI) || (flash->total_size * 1024 > 512 * 1024) || @@ -349,9 +352,8 @@ int it8716f_spi_chip_write_256(struct flashchip *flash, uint8_t *buf, int start, int lenhere; if (start % flash->page_size) { - /* start to the end of the page or start + len, - * whichever is smaller. Page length is hardcoded to - * 256 bytes (IT87 SPI hardware limitation). + /* start to the end of the page or to start + len, + * whichever is smaller. */ lenhere = min(len, flash->page_size - start % flash->page_size); spi_chip_write_1(flash, buf, start, lenhere); @@ -360,7 +362,6 @@ int it8716f_spi_chip_write_256(struct flashchip *flash, uint8_t *buf, int start, buf += lenhere; } - /* FIXME: Handle chips which have max writechunk size >1 and <256. */ while (len >= flash->page_size) { it8716f_spi_page_program(flash, buf, start); start += flash->page_size; |