[glsdk/meta-ti-glsdk.git] / recipes-kernel / linux / linux-omap-2.6.39 / sakoman / 0025-mtd-nand-omap2-Force-all-buffer-reads-to-u32-alignme.patch
1 From 2611e93b57147877fabb181bd86c78fd425a5467 Mon Sep 17 00:00:00 2001
2 From: Charles Manning <manningc2@actrix.gen.nz>
3 Date: Thu, 16 Dec 2010 20:35:56 -0800
4 Subject: [PATCH 25/28] mtd: nand: omap2: Force all buffer reads to u32 alignment
6 ---
7 drivers/mtd/nand/omap2.c | 12 ++++++++++++
8 1 files changed, 12 insertions(+), 0 deletions(-)
10 diff --git a/drivers/mtd/nand/omap2.c b/drivers/mtd/nand/omap2.c
11 index bb89c65..832f111 100644
12 --- a/drivers/mtd/nand/omap2.c
13 +++ b/drivers/mtd/nand/omap2.c
14 @@ -247,6 +247,18 @@ static void omap_read_buf_pref(struct mtd_info *mtd, u_char *buf, int len)
15 int ret = 0;
16 u32 *p = (u32 *)buf;
18 + /* u32 align the buffer and read */
19 + /* NB: This assumes the buf ptr can be aligned *down* which is a valid.
20 + * Assumption when dealing with ecc buffers etc.
21 + */
22 + u32 addr = (u32)p;
23 +
24 + int diff = addr & 3;
25 + addr -= diff;
26 + len += diff;
27 + len = (len + 3) & ~3;
28 + p = (u32 *)addr;
29 +
30 /* take care of subpage reads */
31 if (len % 4) {
32 if (info->nand.options & NAND_BUSWIDTH_16)
33 --
34 1.6.6.1