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 -- http://www.hailfinger.org/ -- coreboot mailing list: [email protected] http://www.coreboot.org/mailman/listinfo/coreboot

