[lantiq] fixes NO_XIP on CFI0001 flash

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>

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@35992 3c298f89-4303-0410-b956-a3cf2f4a3e73
master
John Crispin 2013-03-12 13:53:08 +00:00
parent 1fdb34983b
commit 92c75fe5c3
2 changed files with 19 additions and 0 deletions

View File

@ -28,6 +28,8 @@
#address-cells = <1>;
#size-cells = <1>;
lantiq,noxip;
partition@0 {
label = "uboot";
reg = <0x00000 0x20000>;

View File

@ -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) {