u-boot/drivers
Philippe De Muyter 54652991ca Work around bug in Numonyx P33/P30 256-Mbit 65nm flash chips.
I have "ported" U-boot to a in house made board with Numonyx Axcell P33/P30
256-Mbit 65nm flash chips.

After some time :( searching for bugs in our board or soft, we have
discovered that those chips have a small but annoying bug, documented in
"Numonyx Axcell P33/P30 256-Mbit Specification Update"

It states :
When customer uses [...] block unlock, the block lock status might be
altered inadvertently. Lock status might be set to either 01h or 03h
unexpectedly (00h as expected data), which leads to program/erase failure
on certain blocks.

A working workaround is given, which I have applied and tested with success :

Workaround:  If the interval between 60h and its subsequent command
	     can be guaranteed within 20us, Option I is recommended,
	     otherwise Option II (involves hardware) should be selected.
Option I: The table below lists the detail command sequences:
Command
	      Data bus           Address bus       Remarks
Sequence
  1              90h            Block Address
						   Read Lock Status
  2             Read         Block Address + 02h
 (2)(3)                                      (1)
3                60h           Block Address
 (2)(3)                                      (1)   Lock/Unlock/RCR Configuration
4           D0h/01h/03h        Block Address
Notes:
(1) Block Address refers to RCR configuration data only when the 60h
    command sequence is used to set RCR register combined with 03h
    subsequent command.
(2) For the third and fourth command sequences, the Block Address must
    be the same.
(3) The interval between 60h command and its subsequent D0h/01h/2Fh/03h
    commands should be less than 20us.

And here is a log comparison of a simple (destructive) flash test without
and with the workaround.

 diff without-numonyx-workaround.log with-numonyx-workaround.log
 -U-Boot 2010.06-00696-g22b002c-dirty (Aug 16 2010 - 15:07:47)
 +U-Boot 2010.06-00696-g22b002c-dirty (Aug 16 2010 - 15:25:19)

  CPU:   Freescale MCF5484
         CPU CLK 200 MHz BUS CLK 100 MHz
  Board: Macq Electronique ME2060
  I2C:   ready
  DRAM:  64 MiB
  FLASH: 32 MiB
  In:    serial
  Out:   serial
  Err:   serial
  Net:   FEC0, FEC1
  -> flinfo

  Bank # 1: CFI conformant FLASH (16 x 16)  Size: 32 MB in 259 Sectors
    Intel Extended command set, Manufacturer ID: 0x89, Device ID: 0x8922
    Erase timeout: 4096 ms, write timeout: 1 ms
    Buffer write timeout: 5 ms, buffer size: 1024 bytes

    Sector Start Addresses:
    FE000000 RO   FE008000 RO   FE010000 RO   FE018000 RO   FE020000 RO
    FE040000 RO   FE060000 RO   FE080000 RO   FE0A0000 RO   FE0C0000 RO
    ...
    FFF80000 RO   FFFA0000 RO   FFFC0000 RO   FFFE0000 RO
  -> protect off all
  Un-Protect Flash Bank # 1
  ................... done
  -> erase all
  Erase Flash Bank # 1
  ................... done
  -> cp.b 1000000 fe000000 2000000
 -Copy to Flash... Flash not Erased
 +Copy to Flash... done
  ->

Signed-off-by: Philippe De Muyter <phdm@macqel.be>
Signed-off-by: Stefan Roese <sr@denx.de>
2010-08-18 09:09:00 +02:00
..
bios_emulator ati_radeon: Support PCI virtual not eq bus mapping. 2010-04-08 15:30:47 +02:00
block ide: add mvsata_ide driver 2010-08-08 05:17:06 +05:30
dma ColdFire: Fix compile warning messages 2009-08-26 03:44:31 -05:00
fpga add block write function to spartan3 slave serial load 2010-03-24 11:08:43 -05:00
gpio cmd_usage(): simplify return code handling 2010-07-24 20:43:57 +02:00
hwmon Misc ds1722 fixups 2009-09-04 21:54:52 +02:00
i2c ARMV7: Modify i2c driver for more reliable operation on OMAP4 2010-08-05 10:11:24 -04:00
input mpc5xxx: Remove all references to MGT5100 2010-03-21 22:44:42 +01:00
misc cmd_usage(): simplify return code handling 2010-07-24 20:43:57 +02:00
mmc Merge branch 'master' of git://git.denx.de/u-boot-samsung 2010-08-04 00:35:10 +02:00
mtd Work around bug in Numonyx P33/P30 256-Mbit 65nm flash chips. 2010-08-18 09:09:00 +02:00
net Fix compile warnings for const correctness 2010-08-09 11:52:30 -07:00
pci powerpc/85xx & 86xx: Rework ft_fsl_pci_setup to not require aliases 2010-07-20 04:40:06 -05:00
pcmcia Misc ti_pci1410a fixups 2009-09-04 21:54:04 +02:00
power ARMV7: Add support for the TWL6030 I2C power chip used in OMAP4 systems 2010-08-05 10:11:30 -04:00
qe miiphy: constify device name 2010-08-09 11:52:29 -07:00
rtc Remove AmigaOneG3SE board 2010-06-23 23:24:20 +02:00
serial SAMSUNG: serial: remove compiler warnings 2010-07-09 13:28:55 +09:00
spi Merge branch 'master' of ../master 2010-07-15 22:48:46 +02:00
twserial drivers/twserial: Add protocol driver for "three wire serial" interface. 2009-03-30 09:38:36 +02:00
usb musb: am35x: Workaround for fifo read issue 2010-08-12 16:40:00 +02:00
video video: cleanup comments in cfb_console.c and video_fb.h 2010-07-17 00:05:14 +02:00
watchdog Convert at91 watchdog driver to new SoC access 2010-04-03 15:24:27 -05:00