From: eballetbo@gmail.com (Enric Balletbò i Serra)
To: linux-arm-kernel@lists.infradead.org
Subject: [RESEND PATCH 2/2] OMAP3: igep0020: Add support for Micron NAND Flash storage memory
Date: Wed, 25 Apr 2012 10:00:03 +0200 [thread overview]
Message-ID: <CAFqH_52ukhZ93idQoHaA_OwnouffeCkMYfNDhn1mdV8A8FBaBA@mail.gmail.com> (raw)
In-Reply-To: <1333564586-3259-2-git-send-email-javier@dowhile0.org>
2012/4/4 Javier Martinez Canillas <javier@dowhile0.org>:
> IGEP-based boards can have two different flash memories, a OneNAND or
> a NAND device. The boot configuration pins (sys_boot) are used to
> specify which memory is available.
>
> Also, this patch removes unnecesary code for registering the OneNAND.
>
> Signed-off-by: Javier Martinez Canillas <javier@dowhile0.org>
> ---
> ?arch/arm/mach-omap2/board-igep0020.c | ? 75 ++++++++++++++--------------------
> ?1 files changed, 31 insertions(+), 44 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/board-igep0020.c b/arch/arm/mach-omap2/board-igep0020.c
> index 930c0d3..4af615a 100644
> --- a/arch/arm/mach-omap2/board-igep0020.c
> +++ b/arch/arm/mach-omap2/board-igep0020.c
> @@ -24,6 +24,8 @@
> ?#include <linux/i2c/twl.h>
> ?#include <linux/mmc/host.h>
>
> +#include <linux/mtd/nand.h>
> +
> ?#include <asm/mach-types.h>
> ?#include <asm/mach/arch.h>
>
> @@ -39,6 +41,8 @@
> ?#include "hsmmc.h"
> ?#include "sdram-numonyx-m65kxxxxam.h"
> ?#include "common-board-devices.h"
> +#include "board-flash.h"
> +#include "control.h"
>
> ?#define IGEP2_SMSC911X_CS ? ? ? 5
> ?#define IGEP2_SMSC911X_GPIO ? ? 176
> @@ -60,6 +64,10 @@
> ?#define IGEP3_GPIO_LED1_RED ? ?16
> ?#define IGEP3_GPIO_USBH_NRESET ?183
>
> +#define IGEP_SYSBOOT_MASK ? ? ? ? ? 0x1f
> +#define IGEP_SYSBOOT_NAND ? ? ? ? ? 0x0f
> +#define IGEP_SYSBOOT_ONENAND ? ? ? ?0x10
> +
> ?/*
> ?* IGEP2 Hardware Revision Table
> ?*
> @@ -110,8 +118,10 @@ static void __init igep2_get_revision(void)
> ? ? ? ?gpio_free(IGEP2_GPIO_LED1_RED);
> ?}
>
> -#if defined(CONFIG_MTD_ONENAND_OMAP2) || \
> - ? ? ? defined(CONFIG_MTD_ONENAND_OMAP2_MODULE)
> +#if defined(CONFIG_MTD_ONENAND_OMAP2) || ? ? ? ? ? ? ? \
> + ? ? ? defined(CONFIG_MTD_ONENAND_OMAP2_MODULE) || ? ? \
> + ? ? ? defined(CONFIG_MTD_NAND_OMAP2) || ? ? ? ? ? ? ? \
> + ? ? ? defined(CONFIG_MTD_NAND_OMAP2_MODULE)
>
> ?#define ONENAND_MAP ? ? ? ? ? ? 0x20000000
>
> @@ -123,7 +133,7 @@ static void __init igep2_get_revision(void)
> ?* So MTD regards it as 4KiB page size and 256KiB block size 64*(2*2048)
> ?*/
>
> -static struct mtd_partition igep_onenand_partitions[] = {
> +static struct mtd_partition igep_flash_partitions[] = {
> ? ? ? ?{
> ? ? ? ? ? ? ? ?.name ? ? ? ? ? = "X-Loader",
> ? ? ? ? ? ? ? ?.offset ? ? ? ? = 0,
> @@ -151,50 +161,27 @@ static struct mtd_partition igep_onenand_partitions[] = {
> ? ? ? ?},
> ?};
>
> -static struct omap_onenand_platform_data igep_onenand_data = {
> - ? ? ? .parts = igep_onenand_partitions,
> - ? ? ? .nr_parts = ARRAY_SIZE(igep_onenand_partitions),
> - ? ? ? .dma_channel ? ?= -1, ? /* disable DMA in OMAP OneNAND driver */
> -};
> -
> -static struct platform_device igep_onenand_device = {
> - ? ? ? .name ? ? ? ? ? = "omap2-onenand",
> - ? ? ? .id ? ? ? ? ? ? = -1,
> - ? ? ? .dev = {
> - ? ? ? ? ? ? ? .platform_data = &igep_onenand_data,
> - ? ? ? },
> -};
> +static inline u32 igep_get_sysboot_value(void)
> +{
> + ? ? ? return omap_ctrl_readl(OMAP343X_CONTROL_STATUS) & IGEP_SYSBOOT_MASK;
> +}
>
> ?static void __init igep_flash_init(void)
> ?{
> - ? ? ? u8 cs = 0;
> - ? ? ? u8 onenandcs = GPMC_CS_NUM + 1;
> -
> - ? ? ? for (cs = 0; cs < GPMC_CS_NUM; cs++) {
> - ? ? ? ? ? ? ? u32 ret;
> - ? ? ? ? ? ? ? ret = gpmc_cs_read_reg(cs, GPMC_CS_CONFIG1);
> -
> - ? ? ? ? ? ? ? /* Check if NAND/oneNAND is configured */
> - ? ? ? ? ? ? ? if ((ret & 0xC00) == 0x800)
> - ? ? ? ? ? ? ? ? ? ? ? /* NAND found */
> - ? ? ? ? ? ? ? ? ? ? ? pr_err("IGEP: Unsupported NAND found\n");
> - ? ? ? ? ? ? ? else {
> - ? ? ? ? ? ? ? ? ? ? ? ret = gpmc_cs_read_reg(cs, GPMC_CS_CONFIG7);
> - ? ? ? ? ? ? ? ? ? ? ? if ((ret & 0x3F) == (ONENAND_MAP >> 24))
> - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /* ONENAND found */
> - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? onenandcs = cs;
> - ? ? ? ? ? ? ? }
> - ? ? ? }
> -
> - ? ? ? if (onenandcs > GPMC_CS_NUM) {
> - ? ? ? ? ? ? ? pr_err("IGEP: Unable to find configuration in GPMC\n");
> - ? ? ? ? ? ? ? return;
> - ? ? ? }
> -
> - ? ? ? igep_onenand_data.cs = onenandcs;
> -
> - ? ? ? if (platform_device_register(&igep_onenand_device) < 0)
> - ? ? ? ? ? ? ? pr_err("IGEP: Unable to register OneNAND device\n");
> + ? ? ? u32 mux;
> + ? ? ? mux = igep_get_sysboot_value();
> +
> + ? ? ? if (mux == IGEP_SYSBOOT_NAND) {
> + ? ? ? ? ? ? ? pr_info("IGEP: initializing NAND memory device\n");
> + ? ? ? ? ? ? ? board_nand_init(igep_flash_partitions,
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ARRAY_SIZE(igep_flash_partitions),
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 0, NAND_BUSWIDTH_16);
> + ? ? ? } else if (mux == IGEP_SYSBOOT_ONENAND) {
> + ? ? ? ? ? ? ? pr_info("IGEP: initializing OneNAND memory device\n");
> + ? ? ? ? ? ? ? board_onenand_init(igep_flash_partitions,
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?ARRAY_SIZE(igep_flash_partitions), 0);
> + ? ? ? } else
> + ? ? ? ? ? ? ? pr_err("IGEP: Flash: unsupported sysboot sequence found\n");
> ?}
>
> ?#else
> --
> 1.7.7.6
>
Seems good to me.
Tony, as this is a fix ,may be included ?
Acked-by: Enric Balletbo i Serra <eballetbo@gmail.com>
Tested-by: Enric Balletbo i Serra <eballetbo@gmail.com>
Cheers,
Enric
next prev parent reply other threads:[~2012-04-25 8:00 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-04-04 18:36 [RESEND PATCH 1/2] ARM: OMAP2+: nand: Make board_onenand_init() visible to board code Javier Martinez Canillas
2012-04-04 18:36 ` [RESEND PATCH 2/2] OMAP3: igep0020: Add support for Micron NAND Flash storage memory Javier Martinez Canillas
2012-04-25 8:00 ` Enric Balletbò i Serra [this message]
2012-04-30 16:52 ` Javier Martinez Canillas
2012-04-25 7:59 ` [RESEND PATCH 1/2] ARM: OMAP2+: nand: Make board_onenand_init() visible to board code Enric Balletbò i Serra
2012-04-27 9:30 ` Javier Martinez Canillas
2012-05-08 23:16 ` Tony Lindgren
2012-05-09 13:30 ` Javier Martinez Canillas
2012-05-15 18:13 ` Kevin Hilman
2012-05-15 19:58 ` Tony Lindgren
2012-05-15 20:13 ` Kevin Hilman
2012-05-15 20:31 ` 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=CAFqH_52ukhZ93idQoHaA_OwnouffeCkMYfNDhn1mdV8A8FBaBA@mail.gmail.com \
--to=eballetbo@gmail.com \
--cc=linux-arm-kernel@lists.infradead.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;
as well as URLs for NNTP newsgroup(s).