public inbox for linux-omap@vger.kernel.org
 help / color / mirror / Atom feed
From: Tony Lindgren <tony@atomide.com>
To: linux-arm-kernel@lists.infradead.org
Cc: Enric Balletbo i Serra <eballetbo@iseebcn.com>,
	linux-omap@vger.kernel.org
Subject: [PATCH 12/23] omap3: Add support for flash on IGEP v2 board
Date: Wed, 17 Feb 2010 17:32:21 -0800	[thread overview]
Message-ID: <20100218013220.32075.94439.stgit@baageli.muru.com> (raw)
In-Reply-To: <20100218013012.32075.43788.stgit@baageli.muru.com>

From: Enric Balletbo i Serra <eballetbo@iseebcn.com>

This patch adds support for flashes on IGEP v2 boards. For now
only OneNAND is supported.

Signed-off-by: Enric Balletbo i Serra <eballetbo@iseebcn.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
---
 arch/arm/mach-omap2/board-igep0020.c |  101 ++++++++++++++++++++++++++++++++++
 1 files changed, 101 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-omap2/board-igep0020.c b/arch/arm/mach-omap2/board-igep0020.c
index f6899f9..8ed935c 100644
--- a/arch/arm/mach-omap2/board-igep0020.c
+++ b/arch/arm/mach-omap2/board-igep0020.c
@@ -29,6 +29,7 @@
 #include <plat/gpmc.h>
 #include <plat/usb.h>
 #include <plat/display.h>
+#include <plat/onenand.h>
 
 #include "mux.h"
 #include "hsmmc.h"
@@ -41,6 +42,105 @@
 #define IGEP2_GPIO_LED1_RED   	28
 #define IGEP2_GPIO_DVI_PUP	170
 
+#if defined(CONFIG_MTD_ONENAND_OMAP2) || \
+	defined(CONFIG_MTD_ONENAND_OMAP2_MODULE)
+
+#define ONENAND_MAP             0x20000000
+
+/* NAND04GR4E1A ( x2 Flash built-in COMBO POP MEMORY )
+ * Since the device is equipped with two DataRAMs, and two-plane NAND
+ * Flash memory array, these two component enables simultaneous program
+ * of 4KiB. Plane1 has only even blocks such as block0, block2, block4
+ * while Plane2 has only odd blocks such as block1, block3, block5.
+ * So MTD regards it as 4KiB page size and 256KiB block size 64*(2*2048)
+ */
+
+static struct mtd_partition igep2_onenand_partitions[] = {
+	{
+		.name           = "X-Loader",
+		.offset         = 0,
+		.size           = 2 * (64*(2*2048))
+	},
+	{
+		.name           = "U-Boot",
+		.offset         = MTDPART_OFS_APPEND,
+		.size           = 6 * (64*(2*2048)),
+	},
+	{
+		.name           = "Environment",
+		.offset         = MTDPART_OFS_APPEND,
+		.size           = 2 * (64*(2*2048)),
+	},
+	{
+		.name           = "Kernel",
+		.offset         = MTDPART_OFS_APPEND,
+		.size           = 12 * (64*(2*2048)),
+	},
+	{
+		.name           = "File System",
+		.offset         = MTDPART_OFS_APPEND,
+		.size           = MTDPART_SIZ_FULL,
+	},
+};
+
+static int igep2_onenand_setup(void __iomem *onenand_base, int freq)
+{
+       /* nothing is required to be setup for onenand as of now */
+       return 0;
+}
+
+static struct omap_onenand_platform_data igep2_onenand_data = {
+	.parts = igep2_onenand_partitions,
+	.nr_parts = ARRAY_SIZE(igep2_onenand_partitions),
+	.onenand_setup = igep2_onenand_setup,
+	.dma_channel	= -1,	/* disable DMA in OMAP OneNAND driver */
+};
+
+static struct platform_device igep2_onenand_device = {
+	.name		= "omap2-onenand",
+	.id		= -1,
+	.dev = {
+		.platform_data = &igep2_onenand_data,
+	},
+};
+
+void __init igep2_flash_init(void)
+{
+	u8		cs = 0;
+	u8		onenandcs = GPMC_CS_NUM + 1;
+
+	while (cs < GPMC_CS_NUM) {
+		u32 ret = 0;
+		ret = gpmc_cs_read_reg(cs, GPMC_CS_CONFIG1);
+
+		/* Check if NAND/oneNAND is configured */
+		if ((ret & 0xC00) == 0x800)
+			/* NAND found */
+			pr_err("IGEP v2: Unsupported NAND found\n");
+		else {
+			ret = gpmc_cs_read_reg(cs, GPMC_CS_CONFIG7);
+			if ((ret & 0x3F) == (ONENAND_MAP >> 24))
+				/* ONENAND found */
+				onenandcs = cs;
+		}
+		cs++;
+	}
+	if (onenandcs > GPMC_CS_NUM) {
+		pr_err("IGEP v2: Unable to find configuration in GPMC\n");
+		return;
+	}
+
+	if (onenandcs < GPMC_CS_NUM) {
+		igep2_onenand_data.cs = onenandcs;
+		if (platform_device_register(&igep2_onenand_device) < 0)
+			pr_err("IGEP v2: Unable to register OneNAND device\n");
+	}
+}
+
+#else
+void __init igep2_flash_init(void) {}
+#endif
+
 #if defined(CONFIG_SMSC911X) || defined(CONFIG_SMSC911X_MODULE)
 
 #include <linux/smsc911x.h>
@@ -314,6 +414,7 @@ static void __init igep2_init(void)
 	usb_musb_init();
 	usb_ehci_init(&ehci_pdata);
 
+	igep2_flash_init();
 	igep2_display_init();
 	igep2_init_smsc911x();
 


  parent reply	other threads:[~2010-02-18  1:31 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-02-18  1:31 [PATCH 00/23] Series short description Tony Lindgren
2010-02-18  1:31 ` [PATCH 01/23] omap: zoom3: enable ehci support Tony Lindgren
2010-02-18  1:31 ` [PATCH 02/23] omap3evm: Add mux settings for keypad Tony Lindgren
2010-02-18  1:31 ` [PATCH 03/23] omap3evm: Fixes after moving to matrix_keypad Tony Lindgren
2010-02-18  1:31 ` [PATCH 04/23] omap3evm: Configure GPIO175 for touchscreen PEN_IRQ Tony Lindgren
2010-02-18  1:32 ` [PATCH 05/23] OMAP: pandora: add DSS2 support and related regulators Tony Lindgren
2010-02-18  1:32 ` [PATCH 06/23] omap3: pandora: update regulator setup Tony Lindgren
2010-02-18  1:32 ` [PATCH 07/23] omap3: pandora: update defconfig Tony Lindgren
2010-02-18  1:32 ` [PATCH 08/23] omap3: Add platform data for the twl4030_codec MFD on IGEP v2 Tony Lindgren
2010-02-18  1:32 ` [PATCH 09/23] omap3: Fix typo on IGEP v2 board Tony Lindgren
2010-02-18  1:32 ` [PATCH 10/23] omap3: Add platform init code for EHCI driver on IGEP v2 Tony Lindgren
2010-02-18  1:32 ` [PATCH 11/23] omap3: Enable DSS2 for IGEP v2 board Tony Lindgren
2010-02-18  1:32 ` Tony Lindgren [this message]
2010-02-18  1:32 ` [PATCH 13/23] ARM: OMAP3: SDRC: add timing data for Numonyx M65KxxxxAM Tony Lindgren
2010-02-18  1:32 ` [PATCH 14/23] omap3: Use timing data for omap2_init_common_hw on IGEP v2 Tony Lindgren
2010-02-18  1:32 ` [PATCH 15/23] omap3: Update defconfig for IGEP v2 to allow new drivers andfeatures Tony Lindgren
2010-02-18  1:32 ` [PATCH 16/23] IGEPv2: Added WIFI support Tony Lindgren
2010-02-18  1:32 ` [PATCH 17/23] IGEPv2: Use Red Led1 as Heartbeat if configured Tony Lindgren
2010-02-18  1:32 ` [PATCH 18/23] AM3517: Enable basic I2C Support Tony Lindgren
2010-02-18  1:32 ` [PATCH 19/23] AM3517: Enable RTC driver support for AM3517EVM Tony Lindgren
2010-02-18  1:32 ` [PATCH 20/23] AM3517: Enable I2C-GPIO Expander " Tony Lindgren
2010-02-18  1:32 ` [PATCH 21/23] Add minimal support for DevKit8000 Tony Lindgren
2010-02-18  1:32 ` [PATCH 22/23] Add devkit8000_defconfig Tony Lindgren
2010-02-18  1:32 ` [PATCH 23/23] OMAP3EVM: PM: Update defconfig Tony Lindgren

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20100218013220.32075.94439.stgit@baageli.muru.com \
    --to=tony@atomide.com \
    --cc=eballetbo@iseebcn.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-omap@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox