Support of stupid devices
tglx at linutronix.de
Mon Aug 16 09:11:17 EDT 2004
On Mon, 2004-08-16 at 02:39, Ian Molton wrote:
> 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
> 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.)
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