Hi Arjen,
thanks for your patch and the detailed analysis. Could you reply to this mail with a Signed-off-by statement as explained in http://www.coreboot.org/Development_Guidelines#Sign-off_Procedure ? That will allow us to commit your patch. Thanks.
On 17.06.2009 21:11, Arjan Koers wrote:
The flash part in my MSI ms-7021 (KT6V) mainboard wasn't recognized. After peeling the label off, the markings on the chip showed: MX 29F040QC-90 This is a Macronix MX29F040C (Q=PLCC; C=0C..70C; 90=90ns)
The software commands in the datasheet seem to match those of the AMD Am29F040B and ST M29F040B. I copied the configuration and performed some tests. Probe, read, erase and write all work (see below for code and results).
Since the software commands for a different Macronix part (MX29LV040C) also appear to be the same, I copied the configuration for that part and performed some more tests. Probe, read, erase and write all work and writing is about twice as fast. I'm not sure why the code writes to address 0x5555 and 0x2AAA instead of 0x555 and 0x2AA as specified in the datasheet, but it seems to work.
The MX29F040C data sheet says: "Address bit A11~A18=X=Don't care for all address commands except...program". That means as long as the low 10 bits of your command addresses are 0x2AA/0x555, the upper bits are ignored.
If would be very interesting to see if probe_jedec works for your chip. AFAICS it should, but you may need to change the timing definition to TIMING_ZERO (at least the data sheet suggests that). If it works, probe_jedec is definitely preferable.
Maybe someone with more knowledge about these flash parts knows what's the best way to support this MX29F040C part? Please let me know if you need more information (i.e. -V debug output).
MX29F040C with *_29f040b probe, erase and write functions: [Slow write]
MX29F040C with *_29f002 probe, erase and write functions: [Fast write]
Basically, the write functions are identical except for one detail: _29f040b uses sector erase (slower) and _29f002 uses chip erase (faster). This difference will be factored out once my generic sector erase patch is merged.
To summarize: - Please test with probe_jedec as detailed above. - Your choice which write/erase function to pick.
Regards, Carl-Daniel