* [PATCH] clarify and improve calculation in nand_read_subpage
@ 2008-11-07 21:37 Werner Almesberger
0 siblings, 0 replies; only message in thread
From: Werner Almesberger @ 2008-11-07 21:37 UTC (permalink / raw)
To: linux-mtd; +Cc: Alexey Korolev
clarify-nand-ecc-access.patch
The ECC access calculation in nand_read_subpage is quite hard to
understand. This patch makes it more readable.
There is a small change in what the algorithm does: while
if (eccpos[(start_step + num_steps) * chip->ecc.bytes] & (busw - 1))
looks at the position of the ECC byte following the bytes we're
currently reading,
aligned_len = ALIGN(eccfrag_len+(pos-aligned_pos), busw);
only looks at their length plus the additional data we have to read
due to aligning the start position.
The latter is more correct than the former, since the next ECC byte
could be located anywhere and its location therefore may not give the
alignment information we seek.
The change also saves 44 bytes on ARM.
Signed-off-by: Werner Almesberger <werner@openmoko.org>
Acked-by: Alexey Korolev <akorolev@infradead.org>
---
Index: ktrack/drivers/mtd/nand/nand_base.c
===================================================================
--- ktrack.orig/drivers/mtd/nand/nand_base.c 2008-11-02 02:28:19.000000000 -0200
+++ ktrack/drivers/mtd/nand/nand_base.c 2008-11-02 02:38:22.000000000 -0200
@@ -851,12 +851,12 @@
} else {
/* send the command to read the particular ecc bytes */
/* take care about buswidth alignment in read_buf */
- aligned_pos = eccpos[start_step * chip->ecc.bytes] & ~(busw - 1);
- aligned_len = eccfrag_len;
- if (eccpos[start_step * chip->ecc.bytes] & (busw - 1))
- aligned_len++;
- if (eccpos[(start_step + num_steps) * chip->ecc.bytes] & (busw - 1))
- aligned_len++;
+
+ int pos;
+
+ pos = eccpos[start_step * chip->ecc.bytes];
+ aligned_pos = pos & ~(busw - 1);
+ aligned_len = ALIGN(eccfrag_len+(pos-aligned_pos), busw);
chip->cmdfunc(mtd, NAND_CMD_RNDOUT, mtd->writesize + aligned_pos, -1);
chip->read_buf(mtd, &chip->oob_poi[aligned_pos], aligned_len);
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2008-11-07 21:38 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-11-07 21:37 [PATCH] clarify and improve calculation in nand_read_subpage Werner Almesberger
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox