Author: hailfinger
Date: 2009-11-25 03:07:30 +0100 (Wed, 25 Nov 2009)
New Revision: 777

Modified:
   trunk/ichspi.c
Log:
Kill hardcoded block erase on ICH SPI.
The existing code does not work for all SPI chips, and it just was a
band-aid to cope with locked down chipsets back in a time when there was
no eraseblock infrastructure.
Basically, this unbreaks a few SPI chips on ICH.

Signed-off-by: Carl-Daniel Hailfinger <[email protected]>
Acked-by: Maciej Pijanka <[email protected]>


Modified: trunk/ichspi.c
===================================================================
--- trunk/ichspi.c      2009-11-24 18:27:10 UTC (rev 776)
+++ trunk/ichspi.c      2009-11-25 02:07:30 UTC (rev 777)
@@ -658,20 +658,16 @@
        int maxdata = 64;
 
        spi_disable_blockprotect();
+       /* Erase first */
+       printf("Erasing flash before programming... ");
+       if (erase_flash(flash)) {
+               fprintf(stderr, "ERASE FAILED!\n");
+               return -1;
+       }
+       printf("done.\n");
 
        printf("Programming page: \n");
-
        for (i = 0; i < total_size / erase_size; i++) {
-               /* FIMXE: call the chip-specific spi_block_erase_XX instead.
-                * For this, we need to add a block erase function to
-                * struct flashchip.
-                */
-               rc = spi_block_erase_d8(flash, i * erase_size, erase_size);
-               if (rc) {
-                       printf("Error erasing block at 0x%x\n", i);
-                       break;
-               }
-
                if (spi_controller == SPI_CONTROLLER_VIA)
                        maxdata = 16;
 


_______________________________________________
flashrom mailing list
[email protected]
http://www.flashrom.org/mailman/listinfo/flashrom

Reply via email to