Commit d5ce2b65 authored by Sukumar Ghorai's avatar Sukumar Ghorai Committed by Tony Lindgren

omap3630: nand: fix device size to work in polled mode

zoom3 and 3630-sdp having the x16 nand device.
This patch configure gpmc as x16 and select the currect function in driver
for polled mode (without prefetch enable) transfer.
Signed-off-by: default avatarSukumar Ghorai <s-ghorai@ti.com>
Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
parent df7ffd31
...@@ -812,7 +812,7 @@ static void __init omap_3430sdp_init(void) ...@@ -812,7 +812,7 @@ static void __init omap_3430sdp_init(void)
omap_serial_init(); omap_serial_init();
usb_musb_init(&musb_board_data); usb_musb_init(&musb_board_data);
board_smc91x_init(); board_smc91x_init();
board_flash_init(sdp_flash_partitions, chip_sel_3430); board_flash_init(sdp_flash_partitions, chip_sel_3430, 0);
sdp3430_display_init(); sdp3430_display_init();
enable_board_wakeup_source(); enable_board_wakeup_source();
usb_ehci_init(&ehci_pdata); usb_ehci_init(&ehci_pdata);
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/input.h> #include <linux/input.h>
#include <linux/gpio.h> #include <linux/gpio.h>
#include <linux/mtd/nand.h>
#include <asm/mach-types.h> #include <asm/mach-types.h>
#include <asm/mach/arch.h> #include <asm/mach/arch.h>
...@@ -208,7 +209,7 @@ static void __init omap_sdp_init(void) ...@@ -208,7 +209,7 @@ static void __init omap_sdp_init(void)
zoom_peripherals_init(); zoom_peripherals_init();
zoom_display_init(); zoom_display_init();
board_smc91x_init(); board_smc91x_init();
board_flash_init(sdp_flash_partitions, chip_sel_sdp); board_flash_init(sdp_flash_partitions, chip_sel_sdp, NAND_BUSWIDTH_16);
enable_board_wakeup_source(); enable_board_wakeup_source();
usb_ehci_init(&ehci_pdata); usb_ehci_init(&ehci_pdata);
} }
......
...@@ -139,11 +139,13 @@ static struct omap_nand_platform_data board_nand_data = { ...@@ -139,11 +139,13 @@ static struct omap_nand_platform_data board_nand_data = {
}; };
void void
__init board_nand_init(struct mtd_partition *nand_parts, u8 nr_parts, u8 cs) __init board_nand_init(struct mtd_partition *nand_parts,
u8 nr_parts, u8 cs, int nand_type)
{ {
board_nand_data.cs = cs; board_nand_data.cs = cs;
board_nand_data.parts = nand_parts; board_nand_data.parts = nand_parts;
board_nand_data.nr_parts = nr_parts; board_nand_data.nr_parts = nr_parts;
board_nand_data.devsize = nand_type;
gpmc_nand_init(&board_nand_data); gpmc_nand_init(&board_nand_data);
} }
...@@ -194,7 +196,7 @@ static u8 get_gpmc0_type(void) ...@@ -194,7 +196,7 @@ static u8 get_gpmc0_type(void)
* @return - void. * @return - void.
*/ */
void board_flash_init(struct flash_partitions partition_info[], void board_flash_init(struct flash_partitions partition_info[],
char chip_sel_board[][GPMC_CS_NUM]) char chip_sel_board[][GPMC_CS_NUM], int nand_type)
{ {
u8 cs = 0; u8 cs = 0;
u8 norcs = GPMC_CS_NUM + 1; u8 norcs = GPMC_CS_NUM + 1;
...@@ -250,5 +252,5 @@ void board_flash_init(struct flash_partitions partition_info[], ...@@ -250,5 +252,5 @@ void board_flash_init(struct flash_partitions partition_info[],
"in GPMC\n"); "in GPMC\n");
else else
board_nand_init(partition_info[2].parts, board_nand_init(partition_info[2].parts,
partition_info[2].nr_parts, nandcs); partition_info[2].nr_parts, nandcs, nand_type);
} }
...@@ -25,6 +25,6 @@ struct flash_partitions { ...@@ -25,6 +25,6 @@ struct flash_partitions {
}; };
extern void board_flash_init(struct flash_partitions [], extern void board_flash_init(struct flash_partitions [],
char chip_sel[][GPMC_CS_NUM]); char chip_sel[][GPMC_CS_NUM], int nand_type);
extern void board_nand_init(struct mtd_partition *nand_parts, extern void board_nand_init(struct mtd_partition *nand_parts,
u8 nr_parts, u8 cs); u8 nr_parts, u8 cs, int nand_type);
...@@ -433,7 +433,7 @@ static void __init omap_ldp_init(void) ...@@ -433,7 +433,7 @@ static void __init omap_ldp_init(void)
omap_serial_init(); omap_serial_init();
usb_musb_init(&musb_board_data); usb_musb_init(&musb_board_data);
board_nand_init(ldp_nand_partitions, board_nand_init(ldp_nand_partitions,
ARRAY_SIZE(ldp_nand_partitions), ZOOM_NAND_CS); ARRAY_SIZE(ldp_nand_partitions), ZOOM_NAND_CS, 0);
omap2_hsmmc_init(mmc); omap2_hsmmc_init(mmc);
/* link regulators to MMC adapters */ /* link regulators to MMC adapters */
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#include <linux/input.h> #include <linux/input.h>
#include <linux/gpio.h> #include <linux/gpio.h>
#include <linux/i2c/twl.h> #include <linux/i2c/twl.h>
#include <linux/mtd/nand.h>
#include <asm/mach-types.h> #include <asm/mach-types.h>
#include <asm/mach/arch.h> #include <asm/mach/arch.h>
...@@ -124,8 +125,8 @@ static void __init omap_zoom_init(void) ...@@ -124,8 +125,8 @@ static void __init omap_zoom_init(void)
usb_ehci_init(&ehci_pdata); usb_ehci_init(&ehci_pdata);
} }
board_nand_init(zoom_nand_partitions, board_nand_init(zoom_nand_partitions, ARRAY_SIZE(zoom_nand_partitions),
ARRAY_SIZE(zoom_nand_partitions), ZOOM_NAND_CS); ZOOM_NAND_CS, NAND_BUSWIDTH_16);
zoom_debugboard_init(); zoom_debugboard_init();
zoom_peripherals_init(); zoom_peripherals_init();
zoom_display_init(); zoom_display_init();
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/io.h> #include <linux/io.h>
#include <linux/mtd/nand.h>
#include <asm/mach/flash.h> #include <asm/mach/flash.h>
...@@ -69,8 +70,10 @@ static int omap2_nand_gpmc_retime(void) ...@@ -69,8 +70,10 @@ static int omap2_nand_gpmc_retime(void)
t.wr_cycle = gpmc_round_ns_to_ticks(gpmc_nand_data->gpmc_t->wr_cycle); t.wr_cycle = gpmc_round_ns_to_ticks(gpmc_nand_data->gpmc_t->wr_cycle);
/* Configure GPMC */ /* Configure GPMC */
gpmc_cs_configure(gpmc_nand_data->cs, if (gpmc_nand_data->devsize == NAND_BUSWIDTH_16)
GPMC_CONFIG_DEV_SIZE, gpmc_nand_data->devsize); gpmc_cs_configure(gpmc_nand_data->cs, GPMC_CONFIG_DEV_SIZE, 1);
else
gpmc_cs_configure(gpmc_nand_data->cs, GPMC_CONFIG_DEV_SIZE, 0);
gpmc_cs_configure(gpmc_nand_data->cs, gpmc_cs_configure(gpmc_nand_data->cs,
GPMC_CONFIG_DEV_TYPE, GPMC_DEVICETYPE_NAND); GPMC_CONFIG_DEV_TYPE, GPMC_DEVICETYPE_NAND);
err = gpmc_cs_set_timings(gpmc_nand_data->cs, &t); err = gpmc_cs_set_timings(gpmc_nand_data->cs, &t);
......
...@@ -804,7 +804,7 @@ static int __devinit omap_nand_probe(struct platform_device *pdev) ...@@ -804,7 +804,7 @@ static int __devinit omap_nand_probe(struct platform_device *pdev)
info->mtd.name = dev_name(&pdev->dev); info->mtd.name = dev_name(&pdev->dev);
info->mtd.owner = THIS_MODULE; info->mtd.owner = THIS_MODULE;
info->nand.options |= pdata->devsize ? NAND_BUSWIDTH_16 : 0; info->nand.options = pdata->devsize;
info->nand.options |= NAND_SKIP_BBTSCAN; info->nand.options |= NAND_SKIP_BBTSCAN;
/* NAND write protect off */ /* NAND write protect off */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment