aboutsummaryrefslogtreecommitdiffstats
path: root/packages/linux/linux-ezx-2.6.21/patches/mtdfix.patch
diff options
context:
space:
mode:
Diffstat (limited to 'packages/linux/linux-ezx-2.6.21/patches/mtdfix.patch')
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/mtdfix.patch41
1 files changed, 41 insertions, 0 deletions
diff --git a/packages/linux/linux-ezx-2.6.21/patches/mtdfix.patch b/packages/linux/linux-ezx-2.6.21/patches/mtdfix.patch
new file mode 100644
index 0000000000..89a8402681
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/patches/mtdfix.patch
@@ -0,0 +1,41 @@
+--- /tmp/cacheflush.h 2007-09-10 15:22:58.188856413 +0200
++++ linux-2.6.21/include/asm-arm/cacheflush.h 2007-09-10 15:23:14.009757994 +0200
+@@ -418,6 +418,14 @@
+ */
+ #define flush_icache_page(vma,page) do { } while (0)
+
++inline static void flush_ioremap_region(unsigned long phys, void __iomem *virt,
++ unsigned offset, size_t size)
++{
++ const void *start = virt + offset;
++ dmac_inv_range(start, start + size);
++}
++
++
+ #define __cacheid_present(val) (val != read_cpuid(CPUID_ID))
+ #define __cacheid_vivt(val) ((val & (15 << 25)) != (14 << 25))
+ #define __cacheid_vipt(val) ((val & (15 << 25)) == (14 << 25))
+--- /tmp/ezx-flash.c 2007-09-10 15:22:58.192856640 +0200
++++ linux-2.6.21/drivers/mtd/maps/ezx-flash.c 2007-09-10 15:23:24.878377362 +0200
+@@ -21,6 +21,8 @@
+ #include <linux/dma-mapping.h>
+ #include <linux/slab.h>
+
++#include <asm/cacheflush.h>
++
+ #include <linux/mtd/mtd.h>
+ #include <linux/mtd/map.h>
+ #include <linux/mtd/partitions.h>
+@@ -51,11 +53,10 @@
+ "sub pc, pc #4"
+ :"=r"(j));
+ #else
+- consistent_sync((char *)map->cached + from, len, DMA_FROM_DEVICE);
++ flush_ioremap_region(map->phys, map->cached, from, len);
+ #endif
+ }
+
+-
+ struct map_info pxa27x_map = {
+ .name = "PXA27x flash",
+ .size = WINDOW_SIZE,