[lantiq] fixes NO_XIP on CFI0001 flash
authorJohn Crispin <john@openwrt.org>
Tue, 12 Mar 2013 13:53:08 +0000 (13:53 +0000)
committerJohn Crispin <john@openwrt.org>
Tue, 12 Mar 2013 13:53:08 +0000 (13:53 +0000)
This patch disables the execute-in-place (XIP) support for flash on
lantiq. This has to be disabled since the bus which flash is connected
to does not support unaligned accesses. Resolves data bus errors on
Lantiq routers with Intel command set flash.

Signed-off-by: Matti Laakso <malaakso@elisanet.fi>
SVN-Revision: 35992

target/linux/lantiq/image/ARV4510PW.dts
target/linux/lantiq/patches-3.7/0305-no_xip_nor.patch [new file with mode: 0644]

index f1d41da39fa5869b6b451d33142271341a61c2db..e0cd38a460538b169c26e56f83ba79cfdc62202f 100644 (file)
@@ -28,6 +28,8 @@
                                #address-cells = <1>;
                                #size-cells = <1>;
 
+                               lantiq,noxip;
+
                                partition@0 {
                                        label = "uboot";
                                        reg = <0x00000 0x20000>;
diff --git a/target/linux/lantiq/patches-3.7/0305-no_xip_nor.patch b/target/linux/lantiq/patches-3.7/0305-no_xip_nor.patch
new file mode 100644 (file)
index 0000000..a154bef
--- /dev/null
@@ -0,0 +1,17 @@
+Index: linux-3.7.10/drivers/mtd/maps/lantiq-flash.c
+===================================================================
+--- linux-3.7.10.orig/drivers/mtd/maps/lantiq-flash.c  2013-02-27 18:22:04.000000000 +0100
++++ linux-3.7.10/drivers/mtd/maps/lantiq-flash.c       2013-03-12 10:10:22.954382685 +0100
+@@ -134,7 +134,11 @@
+       }
+       ltq_mtd->map = kzalloc(sizeof(struct map_info), GFP_KERNEL);
+-      ltq_mtd->map->phys = ltq_mtd->res->start;
++      if (of_find_property(pdev->dev.of_node, "lantiq,noxip", NULL))
++              ltq_mtd->map->phys = NO_XIP;
++      else
++              ltq_mtd->map->phys = ltq_mtd->res->start;
++      ltq_mtd->res->start;
+       ltq_mtd->map->size = resource_size(ltq_mtd->res);
+       ltq_mtd->map->virt = devm_request_and_ioremap(&pdev->dev, ltq_mtd->res);
+       if (!ltq_mtd->map->virt) {