
Hi Denk,
Me again.
In my situation, S29AL016M works in x8 mode, which has different command sequence from in x16 mode.
The following are from datasheet.
Providing vu_char *addr = (vu_char *) info->start[sect];
x16 mode sector erase addr[0x555] = 0xAA; addr[0x2AA] = 0x55; addr[0x555] = 0x80; addr[0x555] = 0xAA; addr[0x2AA] = 0x55; addr[0x000] = 0x30; udelay(50); // at least 50 us before polling for status
x16 mode program addr[0x555] = 0xAA; addr[0x2AA] = 0x55; addr[0x555] = 0xA0; addr[offset] = data;
x8 mode sector erase addr[0xAAA] = 0xAA; addr[0x555] = 0x55; addr[0xAAA] = 0x80; addr[0xAAA] = 0xAA; addr[0x555] = 0x55; addr[0x000] = 0x30; udelay(50); // at least 50 us before polling for status
x8 mode program addr[0xAAA] = 0xAA; addr[0x555] = 0x55; addr[0xAAA] = 0xA0; addr[offset] = data;
I have little knowledge about other flash chips, so it is not easy for me to write clean patch for cfi_flash.c, although I want to.
Regards
On Mon, 26 Dec 2005 09:49:10 +0800, Wang Jian lark@linux.net.cn wrote:
Hi Wolfgang Denk,
On Sun, 25 Dec 2005 17:34:49 +0100, Wolfgang Denk wd@denx.de wrote:
In message 20051225190658.F3F9.LARK@linux.net.cn you wrote:
I have tested cfi_flash.c for a while. Unfortuanately, it fails for Spansion S29AL016M. The chip can be recognized, chip information is all correct, but the erase and write routines fail.
Then please (lets) fix the problem instead of inventing the wheel again.
After a bad sleep, I read the manual again. This time, I find the cfi_flash.c DOES do as what manual says. I will set some debug information and find what happend. Stay tune.