Why CFI_DEVICETYPE_X8 in cfi_send_gen_cmd()?
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
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