Support of stupid devices

Thomas Gleixner tglx at
Mon Aug 16 09:11:17 EDT 2004

On Mon, 2004-08-16 at 02:39, Ian Molton wrote:
> 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, 

Sounds really stupid :)

> 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()

You can provide your own read_byte() et. al. functions which do all the
magic. Look into the other Toshiba nand driver implementations. They do
the same. I don't have the header files which implement the real access
but Alice should be a source of help.

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


> ______________________________________________________
> Linux MTD discussion mailing list

More information about the linux-mtd mailing list