On Sat, Jun 07, 2008 at 04:29:13PM +0200, Peter Stuge wrote:
> On Sat, Jun 07, 2008 at 04:07:29PM +0200, Stefan Reinauer wrote:
> > Ah, this is broken... flashrom should not continue when it found a
> > chip in a given memory area already.
> 
> flashrom supports boards with more than one flash chip.
> 
> But perhaps we need to teach flashrom more about how chips can be
> connected. On boards with two chips, they can obviously not be on
> the same LPC bus for example. There would be a collision on the bus.
> 
> Ward and me investigated. The W29EE011 probe command is quite similar
> to the A49LF040A block erase command, but the last byte differs.
> A49LF040A seems to enter an undefined state when it receives such an
> unknown command. Sleeping the maximum A49LF040A timeout before
> sending the jedec ID exit command did not help.
> 
> It seems to me that the Amic chip is behaving badly.
> 
> Action plan?
> 
> 1. Penalize W29EE011 by never probing it without -c W29EE011
> 
> This sucks because the W29EE011 chip isn't the one misbehaving here.
> On the other hand, it does have a nasty product ID sequence.

Please find a patch attached that does just that.

Thanks,
Ward.

-- 
Ward Vandewege <[EMAIL PROTECTED]>
Free Software Foundation - Senior System Administrator
This patch disables default probing for the Winbond W29EE011, because its
(unusual) probe sequence puts the AMIC A49LF040A in a funky state.

Signed-off-by: Ward Vandewege <[EMAIL PROTECTED]>

Index: w29ee011.c
===================================================================
--- w29ee011.c	(revision 3360)
+++ w29ee011.c	(working copy)
@@ -25,6 +25,14 @@
 	volatile uint8_t *bios = flash->virtual_memory;
 	uint8_t id1, id2;
 
+
+	printf_debug("\n===\n");
+	printf_debug("  Probing disabled for Winbond W29EE011 because the probing sequence puts the\n");
+	printf_debug("  AMIC A49LF040A in a funky state.\n");
+	printf_debug("  Use 'flashrom -c W29EE011' if you have a board with this chip.");
+	printf_debug("\n===\n");
+	return 0;
+
 	/* Issue JEDEC Product ID Entry command */
 	*(volatile uint8_t *)(bios + 0x5555) = 0xAA;
 	myusec_delay(10);
-- 
coreboot mailing list
[email protected]
http://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to