[coreboot] flashrom: Macronix MX29F040C support

Carl-Daniel Hailfinger c-d.hailfinger.devel.2006 at gmx.net
Thu Jun 18 15:18:15 CEST 2009

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.



More information about the coreboot mailing list