Hi,

* Vimal Singh <vimal.neww...@gmail.com> [091203 06:09]:
> From 13d52884956a26f93826c443e2b8bd78615f74d6 Mon Sep 17 00:00:00 2001
> From: Vimal Singh <vimalsi...@ti.com>
> Date: Thu, 26 Nov 2009 16:10:24 +0530
> Subject: [PATCH] OMAP: SDP: Introducing 'board-sdp-flash.c' for flash init
> 
> This patch adds 'board-sdp-flash.c', which could be utilized
> by boards similar to 3430SDP. (For ex: 2430sdp, 36030sdp).
> 
> This file does initialization for all three flash devices present
> in SDP boards (NOR, NAND, OneNAND), by finding there 'cs' number
> dynamically using switch setting information (S8: 1-4).
> This also expects partition information from core board files (for
> ex: board-3430sdp.c). Which allows to choose different default
> partitions for different boards.
> 
> A new structure is created for this purpose: 'flash_partitions'
> in 'mach/board-sdp.h'. This has two members:
> 1. struct mtd_partition *parts
> 2. int nr_parts
> 
> A board file is expected to fill this structure and pass it to
> 'sdp-flsash-init'. Partition information should be passed in
> structure array of 'flash_partitions'. Partition information should
> be passed in below sequence in array:
> NOR
> OneNAND
> NAND
> 
> Signed-off-by: Vimal Singh <vimalsi...@ti.com>
> ---
>  arch/arm/mach-omap2/board-sdp-flash.c        |  246 
> ++++++++++++++++++++++++++
>  arch/arm/mach-omap2/include/mach/board-sdp.h |   22 +++
>  arch/arm/plat-omap/include/plat/gpmc.h       |    2 +
>  3 files changed, 270 insertions(+), 0 deletions(-)
>  create mode 100644 arch/arm/mach-omap2/board-sdp-flash.c
>  create mode 100644 arch/arm/mach-omap2/include/mach/board-sdp.h
> 
> diff --git a/arch/arm/mach-omap2/board-sdp-flash.c
> b/arch/arm/mach-omap2/board-sdp-flash.c
> new file mode 100644
> index 0000000..fbbcd0e
> --- /dev/null
> +++ b/arch/arm/mach-omap2/board-sdp-flash.c

<snip>

> +__init board_nand_init(struct flash_partitions sdp_nand_parts, u8 cs)
> +{
> +     sdp_nand_data.cs                = cs;
> +     sdp_nand_data.parts             = sdp_nand_parts.parts;
> +     sdp_nand_data.nr_parts          = sdp_nand_parts.nr_parts;
> +
> +     sdp_nand_data.gpmc_cs_baseaddr  = (void *)(OMAP34XX_GPMC_VIRT +
> +                                                     GPMC_CS0_BASE +
> +                                                     cs * GPMC_CS_SIZE);
> +     sdp_nand_data.gpmc_baseaddr      = (void *) (OMAP34XX_GPMC_VIRT);
> +
> +     gpmc_nand_init(&sdp_nand_data);
> +}

This does not look right. You're supposed to use gpmc_cs_request()
for allocating the GPMC area based on the chip select and size.

> --- a/arch/arm/plat-omap/include/plat/gpmc.h
> +++ b/arch/arm/plat-omap/include/plat/gpmc.h
> @@ -27,6 +27,8 @@
> 
>  #define GPMC_CONFIG          0x50
>  #define GPMC_STATUS          0x54
> +#define GPMC_CS0_BASE                0x60
> +#define GPMC_CS_SIZE         0x30

The GPMC_CS0_BASE and GPMC_CS_SIZE seem to be values specic to
your board, not for the GPMC hardware.

Tony
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to