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

Commit 2e618261 authored by Afzal Mohammed's avatar Afzal Mohammed
Browse files

ARM: OMAP2+: nand: unify init functions



Helper function for updating nand platform data has been
added the capability to take timing structure arguement.
Usage of omap_nand_flash_init() has been replaced by modifed
one, omap_nand_flash_init was doing things similar to
board_nand_init except that NAND CS# were being acquired
based on bootloader setting. As CS# is hardwired for a given
board, acquiring gpmc CS# has been removed, and updated with
the value on board.

NAND CS# used in beagle board & omap3evm was found to be CS0.
Thomas Weber <thomas.weber.linux@googlemail.com> reported
that value of devkit8000 to be CS0. Overo board was found
to be using CS0 based on u-boot, while google grep says
omap3touchbook too has CS0.

Signed-off-by: default avatarAfzal Mohammed <afzal@ti.com>
Reviewed-by: default avatarJon Hunter <jon-hunter@ti.com>
Acked-by: default avatarIgor Grinberg <grinberg@compulab.co.il>
parent ddffeb8c
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -55,8 +55,11 @@
#include "sdram-micron-mt46h32m32lf-6.h"
#include "mux.h"
#include "hsmmc.h"
#include "board-flash.h"
#include "common-board-devices.h"

#define	NAND_CS			0

#define OMAP_DM9000_GPIO_IRQ	25
#define OMAP3_DEVKIT_TS_GPIO	27

@@ -621,8 +624,9 @@ static void __init devkit8000_init(void)

	usb_musb_init(NULL);
	usbhs_init(&usbhs_bdata);
	omap_nand_flash_init(NAND_BUSWIDTH_16, devkit8000_nand_partitions,
			     ARRAY_SIZE(devkit8000_nand_partitions));
	board_nand_init(devkit8000_nand_partitions,
			ARRAY_SIZE(devkit8000_nand_partitions), NAND_CS,
			NAND_BUSWIDTH_16, NULL);
	omap_twl4030_audio_init("omap3beagle");

	/* Ensure SDRC pins are mux'd for self-refresh */
+23 −22
Original line number Diff line number Diff line
@@ -104,8 +104,8 @@ __init board_onenand_init(struct mtd_partition *onenand_parts,
		defined(CONFIG_MTD_NAND_OMAP2_MODULE)

/* Note that all values in this struct are in nanoseconds */
static struct gpmc_timings nand_timings = {

struct gpmc_timings nand_default_timings[1] = {
	{
		.sync_clk = 0,

		.cs_on = 0,
@@ -125,20 +125,20 @@ static struct gpmc_timings nand_timings = {

		.wr_access = 30,
		.wr_data_mux_bus = 0,
	},
};

static struct omap_nand_platform_data board_nand_data = {
	.gpmc_t		= &nand_timings,
};
static struct omap_nand_platform_data board_nand_data;

void
__init board_nand_init(struct mtd_partition *nand_parts,
			u8 nr_parts, u8 cs, int nand_type)
__init board_nand_init(struct mtd_partition *nand_parts, u8 nr_parts, u8 cs,
				int nand_type, struct gpmc_timings *gpmc_t)
{
	board_nand_data.cs		= cs;
	board_nand_data.parts		= nand_parts;
	board_nand_data.nr_parts	= nr_parts;
	board_nand_data.devsize		= nand_type;
	board_nand_data.gpmc_t		= gpmc_t;

	board_nand_data.ecc_opt = OMAP_ECC_HAMMING_CODE_DEFAULT;
	gpmc_nand_init(&board_nand_data);
@@ -238,5 +238,6 @@ void __init board_flash_init(struct flash_partitions partition_info[],
		pr_err("NAND: Unable to find configuration in GPMC\n");
	else
		board_nand_init(partition_info[2].parts,
			partition_info[2].nr_parts, nandcs, nand_type);
			partition_info[2].nr_parts, nandcs,
			nand_type, nand_default_timings);
}
+4 −2
Original line number Diff line number Diff line
@@ -40,12 +40,14 @@ static inline void board_flash_init(struct flash_partitions part[],
#if defined(CONFIG_MTD_NAND_OMAP2) || \
		defined(CONFIG_MTD_NAND_OMAP2_MODULE)
extern void board_nand_init(struct mtd_partition *nand_parts,
					u8 nr_parts, u8 cs, int nand_type);
		u8 nr_parts, u8 cs, int nand_type, struct gpmc_timings *gpmc_t);
extern struct gpmc_timings nand_default_timings[];
#else
static inline void board_nand_init(struct mtd_partition *nand_parts,
					u8 nr_parts, u8 cs, int nand_type)
		u8 nr_parts, u8 cs, int nand_type, struct gpmc_timings *gpmc_t)
{
}
#define	nand_default_timings	NULL
#endif

#if defined(CONFIG_MTD_ONENAND_OMAP2) || \
+1 −1
Original line number Diff line number Diff line
@@ -175,7 +175,7 @@ static void __init igep_flash_init(void)
		pr_info("IGEP: initializing NAND memory device\n");
		board_nand_init(igep_flash_partitions,
				ARRAY_SIZE(igep_flash_partitions),
				0, NAND_BUSWIDTH_16);
				0, NAND_BUSWIDTH_16, nand_default_timings);
	} else if (mux == IGEP_SYSBOOT_ONENAND) {
		pr_info("IGEP: initializing OneNAND memory device\n");
		board_onenand_init(igep_flash_partitions,
+2 −2
Original line number Diff line number Diff line
@@ -420,8 +420,8 @@ static void __init omap_ldp_init(void)
	omap_serial_init();
	omap_sdrc_init(NULL, NULL);
	usb_musb_init(NULL);
	board_nand_init(ldp_nand_partitions,
		ARRAY_SIZE(ldp_nand_partitions), ZOOM_NAND_CS, 0);
	board_nand_init(ldp_nand_partitions, ARRAY_SIZE(ldp_nand_partitions),
			ZOOM_NAND_CS, 0, nand_default_timings);

	omap_hsmmc_init(mmc);
	ldp_display_init();
Loading