On Sat, Nov 01, 2008 at 01:54:53PM -0200, Werner Almesberger wrote: > Andy Green wrote: > > It seems its moot since the patch is not accepted as the solution... > > Not so hasty :-) Ben thought this was something else entirely. > Let's see if he likes it better now that I've explained what's > really going on. > > > you have some time to dig further into it to see where the unaligned > > reads are suddenly coming from? > > They're coming from nand_read_subpage and are just what the code > there intends to do. There are (at least) three ways to fix this: > > 1) declare non-word accesses generally illegal, which means that > nand_read_subpage needs to change > > 2) make the driver support non-word accesses. This is what my > patch does.
I think this should be ok if it is as you say that the driver is
only reading three bytes from the ECC. My only comment would be
that a slightly better solution would be to do:
u8 *ptr = buf + (len & ~3);
for (i = 0; i < (len & 3); i++)
ptr[i] = readb(_pointertodataregister);
so we always read the requisting number of data bytes from the data
register.
> 3) add some means for the driver to inform the NAND layer that it
> has special alignment constraints.
>
> 1) and 2) would be straightforward to do. 3) would make an
> already hard to understand interface a little more complex.
>
> - Werner
>
--
--
Ben
Q: What's a light-year?
A: One-third less calories than a regular year.
signature.asc
Description: Digital signature
