stepan at suse.de
Thu Apr 4 05:36:04 EST 2002
* Jeremy Jackson <jerj at coplanar.net> [020404 04:21]:
> Also, I have discovered (see prev. post) at least one device that doesn't
> respond to the aa 55 90 sequence, requiring an alternate
> "old" sequence instead. Any guidance on the best way to
> implement this generically would be appreciated.
There's 3 different methods used by flash devices to identify
aa 55 90 is the most used one. Others (i.e. some Winbonds) need
aa 55 80 aa 55 60, whereas the third method (some other winbonds)
is aa 55 80 aa 55 20.
As far as I could estimate, the order in which you probe is crucial.
Some chips answer to aa 55 80 aa 55 60 or aa 55 80 aa 55 20 with
their protection map instead of their id.
Eon Flashchips don't put their device id to 0x01, but to 0x101.
0x00 and 0x01 contain the vendor id (0x7f)
/dev/bios does that part of the probing pretty ok. I suggest you have a
look at programming.c:flash_probe_address()
get /dev/bios from the OpenBIOS cvs tree:
Ok hex 4666 dup negate do i 4000 dup 2* negate do " *" 0 dup 2dup 1e 0 do
2swap * e >>a 2* 5 pick + -rot - j + dup dup * e >>a rot dup dup * e >>a
rot swap 2dup + 10000 > if 3drop 3drop " " 0 dup 2dup leave then loop
2drop 2drop type 268 +loop cr drop 5de +loop
More information about the linux-mtd