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: Sukumar Ghorai <s-ghorai@ti.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
This commit is contained in:
parent
df7ffd317d
commit
d5ce2b6592
|
@ -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 @@
|
||||||
#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)
|
||||||
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 = {
|
||||||
};
|
};
|
||||||
|
|
||||||
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)
|
||||||
* @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[],
|
||||||
"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 {
|
||||||
};
|
};
|
||||||
|
|
||||||
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)
|
||||||
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 @@
|
||||||
#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)
|
||||||
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 @@
|
||||||
#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)
|
||||||
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)
|
||||||
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 */
|
||||||
|
|
Loading…
Reference in New Issue