Support of stupid devices

Ian Molton spyro at f2s.com
Sun Aug 15 20:39:33 EDT 2004


Hi.

Im porting linux to the toshiba e7xx and 8xx PDAs which contain a nand flash controller.

Im not certain, but it appears the controllerhas an odd quirk meaning byte-reads of the data register dont work as the linux mtd code expects.

AFAICT if I read a word (after issuing a chipid command) I get:

0xYYZZ75ec   -- this is good - Samsung, 32MB device.

if I do two byte reads I get 0xec 0xec.

a halfword access gets me 0xYYZZ.

a misaligned (by one byte) word access gives me 0xecYYZZ75, but this fails to work for byte accesses. halfword misaligned accesses are just weird.

so basically, the only way to read the chipid is to do:

a word access to the data reg and then shift the data out

or

a word access (and mask off the high 3 bytes followed by a misaligned word access and mask off the upper 3 bytes.

clearly the former solution is the better one, but this doesnt fit in the nand driver model very well (read_byte() et.al.)

the chip is a TC6393XB (system on chip) and the flash is a samsung K9F5608UOC YCBO




More information about the linux-mtd mailing list