Comments
Patch
===================================================================
@@ -1272,6 +1272,7 @@
}
msg_pdbg("Erasing %d bytes starting at 0x%06x.\n", len, addr);
+ ich_hwseq_set_addr(addr);
/* make sure FDONE, FCERR, AEL are cleared by writing 1 to them */
REGWRITE16(ICH9_REG_HSFS, REGREAD16(ICH9_REG_HSFS));
@@ -1308,6 +1309,9 @@
while (len > 0) {
block_len = min(len, flash->pgm->opaque.max_data_read);
+ if (block_len > (~addr & 0xff))
+ block_len = (~addr & 0xff) + 1;
+
ich_hwseq_set_addr(addr);
hsfc = REGREAD16(ICH9_REG_HSFC);
hsfc &= ~HSFC_FCYCLE; /* set read operation */
@@ -1347,6 +1351,8 @@
while (len > 0) {
ich_hwseq_set_addr(addr);
block_len = min(len, flash->pgm->opaque.max_data_write);
+ if (block_len > (~addr & 0xff))
+ block_len = (~addr & 0xff) + 1;
ich_fill_data(buf, block_len, ICH9_REG_FDATA0);
hsfc = REGREAD16(ICH9_REG_HSFC);
hsfc &= ~HSFC_FCYCLE; /* clear operation */