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