Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ba785205 authored by Linus Walleij's avatar Linus Walleij
Browse files

ARM: nomadik: add FSMC NAND



This adds the FSMC NAND driver and flash partitions to the Nomadik
device tree.

The only compatible string accepted by this driver is currently
"st,spear600-fsmc-nand" which is inappropriate for this system, so
this patch adds the compatible value "stericsson,fsmc-nand" as
well.

Cc: linux-mtd@vger.kernel.org
Cc: David Woodhouse <dwmw2@infradead.org>
Cc: Artem Bityutskiy <dedekind1@gmail.com>
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent 27bda036
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
* FSMC NAND
* FSMC NAND


Required properties:
Required properties:
- compatible : "st,spear600-fsmc-nand"
- compatible : "st,spear600-fsmc-nand", "stericsson,fsmc-nand"
- reg : Address range of the mtd chip
- reg : Address range of the mtd chip
- reg-names: Should contain the reg names "fsmc_regs", "nand_data", "nand_addr" and "nand_cmd"
- reg-names: Should contain the reg names "fsmc_regs", "nand_data", "nand_addr" and "nand_cmd"


+38 −0
Original line number Original line Diff line number Diff line
@@ -35,6 +35,44 @@
		interrupts = <5>;
		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 {
	amba {
		compatible = "arm,amba-bus";
		compatible = "arm,amba-bus";
		#address-cells = <1>;
		#address-cells = <1>;
+15 −0
Original line number Original line Diff line number Diff line
@@ -33,6 +33,7 @@
#include <linux/of_irq.h>
#include <linux/of_irq.h>
#include <linux/of_address.h>
#include <linux/of_address.h>
#include <linux/of_platform.h>
#include <linux/of_platform.h>
#include <linux/mtd/fsmc.h>


#include <mach/hardware.h>
#include <mach/hardware.h>
#include <mach/irqs.h>
#include <mach/irqs.h>
@@ -249,6 +250,17 @@ static void __init cpu8815_timer_init_of(void)
	nmdk_timer_init(base, irq);
	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 */
/* These are mostly to get the right device names for the clock lookups */
static struct of_dev_auxdata cpu8815_auxdata_lookup[] __initdata = {
static struct of_dev_auxdata cpu8815_auxdata_lookup[] __initdata = {
	OF_DEV_AUXDATA("arm,primecell", NOMADIK_UART0_BASE,
	OF_DEV_AUXDATA("arm,primecell", NOMADIK_UART0_BASE,
@@ -259,6 +271,9 @@ static struct of_dev_auxdata cpu8815_auxdata_lookup[] __initdata = {
		"rng", NULL),
		"rng", NULL),
	OF_DEV_AUXDATA("arm,primecell", NOMADIK_RTC_BASE,
	OF_DEV_AUXDATA("arm,primecell", NOMADIK_RTC_BASE,
		"rtc-pl031", NULL),
		"rtc-pl031", NULL),
	OF_DEV_AUXDATA("stericsson,fsmc-nand", NOMADIK_FSMC_BASE,
		"fsmc-nand", &cpu8815_nand_data),

	{ /* sentinel */ },
	{ /* sentinel */ },
};
};


+1 −0
Original line number Original line Diff line number Diff line
@@ -1218,6 +1218,7 @@ static SIMPLE_DEV_PM_OPS(fsmc_nand_pm_ops, fsmc_nand_suspend, fsmc_nand_resume);
#ifdef CONFIG_OF
#ifdef CONFIG_OF
static const struct of_device_id fsmc_nand_id_table[] = {
static const struct of_device_id fsmc_nand_id_table[] = {
	{ .compatible = "st,spear600-fsmc-nand" },
	{ .compatible = "st,spear600-fsmc-nand" },
	{ .compatible = "stericsson,fsmc-nand" },
	{}
	{}
};
};
MODULE_DEVICE_TABLE(of, fsmc_nand_id_table);
MODULE_DEVICE_TABLE(of, fsmc_nand_id_table);