On Wednesday 22 October 2008, Juha Kuikka wrote: > >> - __raw_readsl(nand->IO_ADDR_R, buf, len / 2); > >> + __raw_readsl(nand->IO_ADDR_R, buf, len / 4); > >> } > > > > Shouldn't that have been __raw_readsw() though? > > Hmh, good point. Yeah, but the bug was from a patch from me ... sigh. > From the original code it looks like that was the intention but > readsl() works just as well. Really? Both upper and lower 16-bit units have the right data? > I tested this on OMAP2430 and it works ok. > > I don't see any mentions in the TRM about the width of the > GPMC_NAND_DATA registers but apparently the NAND engine happily > accepts 32bit accesses on bus. Maybe this has to do with the FIFO behavior. It would certainly make sense to allow reads of any size from the FIFO. If it were raw reads on the data bus, then I'd expect that both 8 and 16 bit widths would work. (Assuming NAND chips weren't in parallel...) If the FIFO is active, and specified to support arbitrary width accesses (that don't match the data bus), then by all means use the __raw_readsl() call to maximize bandwidth use. - Dave -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html