diff options
Diffstat (limited to 'extras/recipes-kernel/linux/linux-omap-2.6.39/sakoman/0026-mtd-nand-omap2-Force-all-buffer-reads-to-u32-alignme.patch')
-rw-r--r-- | extras/recipes-kernel/linux/linux-omap-2.6.39/sakoman/0026-mtd-nand-omap2-Force-all-buffer-reads-to-u32-alignme.patch | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/extras/recipes-kernel/linux/linux-omap-2.6.39/sakoman/0026-mtd-nand-omap2-Force-all-buffer-reads-to-u32-alignme.patch b/extras/recipes-kernel/linux/linux-omap-2.6.39/sakoman/0026-mtd-nand-omap2-Force-all-buffer-reads-to-u32-alignme.patch new file mode 100644 index 00000000..5e060231 --- /dev/null +++ b/extras/recipes-kernel/linux/linux-omap-2.6.39/sakoman/0026-mtd-nand-omap2-Force-all-buffer-reads-to-u32-alignme.patch | |||
@@ -0,0 +1,35 @@ | |||
1 | From 048c2b85c12ac4aa8cd82201e1ade332557e4380 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 26/32] mtd: nand: omap2: Force all buffer reads to u32 alignment | ||
5 | |||
6 | --- | ||
7 | drivers/mtd/nand/omap2.c | 12 ++++++++++++ | ||
8 | 1 files changed, 12 insertions(+), 0 deletions(-) | ||
9 | |||
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; | ||
17 | |||
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 | ||
35 | |||