Why CFI_DEVICETYPE_X8 in cfi_send_gen_cmd()?

Shawn Jin shawnxtech at yahoo.com
Tue Feb 24 20:24:49 EST 2004


In cfi_cmdset_0002.c, there is a piece of comment stating that the
CFI_DEVICETYPE_X8 is needed even when cfi->device_type !=
CFI_DEVICETYPE_X8. Why is it the case?

In my case, two Am29PL320D chips are interleaved and each works in 32-bit
mode. So the buswidth is 64 bits. When CFI_DEVICETYPE_x8 is used in either
erase_oneblock() or write_oneword(), the command address generated is not
right. For example, to erase a block, the following commands are generated:
    Addr: 0xff002aaa  Data: 0x000000aa000000aa
    Addr: 0xff001554  Data: 0x0000005500000055
I found out that the cfi->addr_unlock1(2) are set to 0x1555 (0xaaa) because
of CFI_DEVICETYPE_X32 in cfi_cmdset_0002().

According to the datasheet of Am29PL320D
the correct addresses should be 0xff002aa8 (555 << 3) and 0xff001550 (2aa
<< 3).

So I replaced CFI_DEVICETYPE_X8 with cfi->device_type in both
do_erase_oneblock() and do_write_oneword(). I tested and found that erase
can succeed but write still fails.

Any ideas or explanations?


Do you Yahoo!?
Yahoo! Mail SpamGuard - Read only the mail you want.

More information about the linux-mtd mailing list