On 28.04.2008 18:19, Carl-Daniel Hailfinger wrote:
Hi,
On 28.04.2008 10:10, Peter Stuge wrote:
Hi Nathan,
On Sun, Apr 27, 2008 at 09:56:21PM -0600, Nathan Coulson wrote:
I just wanted to report my tests with flashrom.
Thank you for the report!
Running on a EeePC 701 4G.
Calibrating delay loop... OK. No coreboot table found. Found chipset "Intel ICH6-M", enabling flash write... OK. No EEPROM/flash device found.
(Not my site, but it has the specs on the EeePC) http://beta.ivancover.com/wiki/index.php/Eee_PC_Research
ICH6-M southbridge, and one user reported having a WinBond W25x40
That wiki page mentions it has a Intel 915 chipset, I would have guessed that it's an ICH-8M rather than 6, but never mind. It's an SPI flash chip and flashrom does not have completely generic SPI support yet, so I am not surprised that flashrom does not work on the machine yet.
Sorry about these bad news. :\
The good news is that I think I understand what's happening here: The ICH6-M LPC cycles go to the Embedded Controller, which translates them to SPI cycles. That means we can't support flashing/identifying your chip until flashrom support for the Embedded Controller has been implemented. The good news is that we have programming info for a similar EC (the OLPC EC) and is should cost the implementer only a few days to add support to flashrom if he has access to the hardware, a LPC/SPI logic analyzer and a soldering iron in case flashing goes wrong.
Try the attached patch for reading the flash chip.
Regards, Carl-Daniel
Index: flash.h =================================================================== --- flash.h (Revision 3210) +++ flash.h (Arbeitskopie) @@ -316,6 +316,7 @@
/* flashrom.c */ int map_flash_registers(struct flashchip *flash); +int probe_fake(struct flashchip *flash);
/* layout.c */ int show_id(uint8_t *bios, int size); Index: flashchips.c =================================================================== --- flashchips.c (Revision 3210) +++ flashchips.c (Arbeitskopie) @@ -137,6 +137,7 @@ {"PMC", "unknown SPI chip", PMC_ID, GENERIC_DEVICE_ID, 0, 0, probe_spi, NULL, NULL}, {"SST", "unknown SPI chip", SST_ID, GENERIC_DEVICE_ID, 0, 0, probe_spi, NULL, NULL}, {"ST", "unknown SPI chip", ST_ID, GENERIC_DEVICE_ID, 0, 0, probe_spi, NULL, NULL}, + {"Fake", "Fake flash chip", 0, 0, 512, 0, probe_fake, NULL, NULL},
{NULL,} }; Index: flashrom.c =================================================================== --- flashrom.c (Revision 3210) +++ flashrom.c (Arbeitskopie) @@ -99,6 +99,11 @@ return 0; }
+int probe_fake(struct flashchip *flash) +{ + return 1; +} + struct flashchip *probe_flash(struct flashchip *flash) { volatile uint8_t *bios;