From 699c96c93229f765d8f06aed00a3d85dc37dd9d8 Mon Sep 17 00:00:00 2001 From: Linus Walleij Date: Sat, 5 Jan 2013 22:28:32 +0100 Subject: [PATCH] --- yaml --- r: 355734 b: refs/heads/master c: ba785205502f9a03d4ee31bdc3a1228ba5465f00 h: refs/heads/master v: v3 --- [refs] | 2 +- .../devicetree/bindings/mtd/fsmc-nand.txt | 2 +- .../arm/boot/dts/ste-nomadik-stn8815.dtsi | 38 +++++++++++++++++++ trunk/arch/arm/mach-nomadik/cpu-8815.c | 15 ++++++++ trunk/drivers/mtd/nand/fsmc_nand.c | 1 + 5 files changed, 56 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 743335881506..458661d8bf05 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 27bda036d246ae417af348d7868f96d2da208ecc +refs/heads/master: ba785205502f9a03d4ee31bdc3a1228ba5465f00 diff --git a/trunk/Documentation/devicetree/bindings/mtd/fsmc-nand.txt b/trunk/Documentation/devicetree/bindings/mtd/fsmc-nand.txt index e3ea32e7de3e..2240ac09f6ba 100644 --- a/trunk/Documentation/devicetree/bindings/mtd/fsmc-nand.txt +++ b/trunk/Documentation/devicetree/bindings/mtd/fsmc-nand.txt @@ -1,7 +1,7 @@ * FSMC NAND Required properties: -- compatible : "st,spear600-fsmc-nand" +- compatible : "st,spear600-fsmc-nand", "stericsson,fsmc-nand" - reg : Address range of the mtd chip - reg-names: Should contain the reg names "fsmc_regs", "nand_data", "nand_addr" and "nand_cmd" diff --git a/trunk/arch/arm/boot/dts/ste-nomadik-stn8815.dtsi b/trunk/arch/arm/boot/dts/ste-nomadik-stn8815.dtsi index 88fb98f910cf..c73df370373b 100644 --- a/trunk/arch/arm/boot/dts/ste-nomadik-stn8815.dtsi +++ b/trunk/arch/arm/boot/dts/ste-nomadik-stn8815.dtsi @@ -35,6 +35,44 @@ interrupts = <5>; }; + /* A NAND flash of 128 MiB */ + fsmc: flash@40000000 { + compatible = "stericsson,fsmc-nand"; + #address-cells = <1>; + #size-cells = <1>; + reg = <0x10100000 0x1000>, /* FSMC Register*/ + <0x40000000 0x2000>, /* NAND Base DATA */ + <0x41000000 0x2000>, /* NAND Base ADDR */ + <0x40800000 0x2000>; /* NAND Base CMD */ + reg-names = "fsmc_regs", "nand_data", "nand_addr", "nand_cmd"; + status = "okay"; + + partition@0 { + label = "X-Loader(NAND)"; + reg = <0x0 0x40000>; + }; + partition@40000 { + label = "MemInit(NAND)"; + reg = <0x40000 0x40000>; + }; + partition@80000 { + label = "BootLoader(NAND)"; + reg = <0x80000 0x200000>; + }; + partition@280000 { + label = "Kernel zImage(NAND)"; + reg = <0x280000 0x300000>; + }; + partition@580000 { + label = "Root Filesystem(NAND)"; + reg = <0x580000 0x1600000>; + }; + partition@1b80000 { + label = "User Filesystem(NAND)"; + reg = <0x1b80000 0x6480000>; + }; + }; + amba { compatible = "arm,amba-bus"; #address-cells = <1>; diff --git a/trunk/arch/arm/mach-nomadik/cpu-8815.c b/trunk/arch/arm/mach-nomadik/cpu-8815.c index 8d071d2769b5..a3894ca45bb8 100644 --- a/trunk/arch/arm/mach-nomadik/cpu-8815.c +++ b/trunk/arch/arm/mach-nomadik/cpu-8815.c @@ -33,6 +33,7 @@ #include #include #include +#include #include #include @@ -249,6 +250,17 @@ static void __init cpu8815_timer_init_of(void) nmdk_timer_init(base, irq); } +static struct fsmc_nand_timings cpu8815_nand_timings = { + .thiz = 0, + .thold = 0x10, + .twait = 0x0A, + .tset = 0, +}; + +static struct fsmc_nand_platform_data cpu8815_nand_data = { + .nand_timings = &cpu8815_nand_timings, +}; + /* These are mostly to get the right device names for the clock lookups */ static struct of_dev_auxdata cpu8815_auxdata_lookup[] __initdata = { OF_DEV_AUXDATA("arm,primecell", NOMADIK_UART0_BASE, @@ -259,6 +271,9 @@ static struct of_dev_auxdata cpu8815_auxdata_lookup[] __initdata = { "rng", NULL), OF_DEV_AUXDATA("arm,primecell", NOMADIK_RTC_BASE, "rtc-pl031", NULL), + OF_DEV_AUXDATA("stericsson,fsmc-nand", NOMADIK_FSMC_BASE, + "fsmc-nand", &cpu8815_nand_data), + { /* sentinel */ }, }; diff --git a/trunk/drivers/mtd/nand/fsmc_nand.c b/trunk/drivers/mtd/nand/fsmc_nand.c index 67e62d3d495c..61043a92c007 100644 --- a/trunk/drivers/mtd/nand/fsmc_nand.c +++ b/trunk/drivers/mtd/nand/fsmc_nand.c @@ -1218,6 +1218,7 @@ static SIMPLE_DEV_PM_OPS(fsmc_nand_pm_ops, fsmc_nand_suspend, fsmc_nand_resume); #ifdef CONFIG_OF static const struct of_device_id fsmc_nand_id_table[] = { { .compatible = "st,spear600-fsmc-nand" }, + { .compatible = "stericsson,fsmc-nand" }, {} }; MODULE_DEVICE_TABLE(of, fsmc_nand_id_table);