See patch!
--
coresystems GmbH • Brahmsstr. 16 • D-79104 Freiburg i. Br.
Tel.: +49 761 7668825 • Fax: +49 761 7664613
Email: [EMAIL PROTECTED] • http://www.coresystems.de/
Registergericht: Amtsgericht Freiburg • HRB 7656
Geschäftsführer: Stefan Reinauer • Ust-IdNr.: DE245674866Add support for Numonyx M25PE80. This chip requires to be erased blockwise, as
the c7 method is unreliable, either for ICH7 or for this chip.
Signed-off-by: Stefan Reinauer <[EMAIL PROTECTED]>
Index: util/flashrom/flash.h
===================================================================
--- util/flashrom/flash.h (revision 3462)
+++ util/flashrom/flash.h (working copy)
@@ -418,6 +418,7 @@
void spi_write_enable();
void spi_write_disable();
int spi_chip_erase_c7(struct flashchip *flash);
+int spi_chip_erase(struct flashchip *flash);
int spi_chip_write(struct flashchip *flash, uint8_t *buf);
int spi_chip_read(struct flashchip *flash, uint8_t *buf);
uint8_t spi_read_status_register();
@@ -439,6 +440,7 @@
int ich_spi_command(unsigned int writecnt, unsigned int readcnt, const unsigned char *writearr, unsigned char *readarr);
int ich_spi_read(struct flashchip *flash, uint8_t * buf);
int ich_spi_write(struct flashchip *flash, uint8_t * buf);
+int ich_spi_chip_erase(struct flashchip *flash);
/* it87spi.c */
extern uint16_t it8716f_flashport;
Index: util/flashrom/flashchips.c
===================================================================
--- util/flashrom/flashchips.c (revision 3462)
+++ util/flashrom/flashchips.c (working copy)
@@ -57,6 +57,7 @@
{"Macronix", "MX25L1605", MX_ID, MX_25L1605, 2048, 256, TEST_UNTESTED, probe_spi_rdid, spi_chip_erase_c7, spi_chip_write, spi_chip_read},
{"Macronix", "MX25L3205", MX_ID, MX_25L3205, 4096, 256, TEST_OK_PREW, probe_spi_rdid, spi_chip_erase_c7, spi_chip_write, spi_chip_read},
{"Macronix", "MX29F002", MX_ID, MX_29F002, 256, 64 * 1024, TEST_UNTESTED, probe_29f002, erase_29f002, write_29f002},
+ {"Numonyx", "M25PE80", ST_ID, 0x8014, 1024, 256, TEST_OK_PREW, probe_spi_rdid, spi_chip_erase, spi_chip_write, spi_chip_read},
{"PMC", "Pm25LV010", PMC_ID, PMC_25LV010, 128, 256, TEST_UNTESTED, probe_spi_rdid, spi_chip_erase_c7, spi_chip_write, spi_chip_read},
{"PMC", "Pm25LV016B", PMC_ID, PMC_25LV016B, 2048, 256, TEST_UNTESTED, probe_spi_rdid, spi_chip_erase_c7, spi_chip_write, spi_chip_read},
{"PMC", "Pm25LV020", PMC_ID, PMC_25LV020, 256, 256, TEST_UNTESTED, probe_spi_rdid, spi_chip_erase_c7, spi_chip_write, spi_chip_read},
Index: util/flashrom/spi.c
===================================================================
--- util/flashrom/spi.c (revision 3462)
+++ util/flashrom/spi.c (working copy)
@@ -407,3 +407,19 @@
return 1;
}
+int spi_chip_erase(struct flashchip *flash)
+{
+ switch (flashbus) {
+ case BUS_TYPE_IT87XX_SPI:
+ case BUS_TYPE_ICH9_SPI:
+ case BUS_TYPE_VIA_SPI:
+ return spi_chip_erase_c7(flash);
+ case BUS_TYPE_ICH7_SPI:
+ return ich_spi_chip_erase(flash);
+ default:
+ printf_debug("%s called, but no SPI chipset/strapping detected\n", __FUNCTION__);
+ }
+
+ return 1;
+}
+
Index: util/flashrom/ichspi.c
===================================================================
--- util/flashrom/ichspi.c (revision 3462)
+++ util/flashrom/ichspi.c (working copy)
@@ -587,6 +587,29 @@
return rc;
}
+int ich_spi_chip_erase(struct flashchip *flash)
+{
+ int i, rc = 0;
+ int total_size = flash->total_size * 1024;
+ int erase_size = 64 * 1024;
+
+ spi_disable_blockprotect();
+
+ printf("Erasing chip: \n");
+
+ for (i = 0; i < total_size / erase_size; i++) {
+ rc = ich_spi_erase_block(flash, i * erase_size);
+ if (rc) {
+ printf("Error erasing block at 0x%x\n", i);
+ break;
+ }
+ }
+
+ printf("\n");
+
+ return rc;
+}
+
int ich_spi_command(unsigned int writecnt, unsigned int readcnt,
const unsigned char *writearr, unsigned char *readarr)
{
signature.asc
Description: OpenPGP digital signature
-- coreboot mailing list [email protected] http://www.coreboot.org/mailman/listinfo/coreboot

