Commit 2c01946c authored by Sukumar Ghorai's avatar Sukumar Ghorai Committed by Tony Lindgren

omap3 nand: cleanup virtual address usages

This patch removes direct reference of gpmc address from generic nand platform code.
Nand platform code now uses wrapper functions which are implemented in gpmc module.
Signed-off-by: default avatarSukumar Ghorai <s-ghorai@ti.com>
Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
parent 948d38e7
...@@ -19,8 +19,6 @@ ...@@ -19,8 +19,6 @@
#include <plat/board.h> #include <plat/board.h>
#include <plat/gpmc.h> #include <plat/gpmc.h>
#define WR_RD_PIN_MONITORING 0x00600000
static struct omap_nand_platform_data *gpmc_nand_data; static struct omap_nand_platform_data *gpmc_nand_data;
static struct resource gpmc_nand_resource = { static struct resource gpmc_nand_resource = {
...@@ -71,10 +69,10 @@ static int omap2_nand_gpmc_retime(void) ...@@ -71,10 +69,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_write_reg(gpmc_nand_data->cs, GPMC_CS_CONFIG1, gpmc_cs_configure(gpmc_nand_data->cs,
GPMC_CONFIG1_DEVICESIZE(gpmc_nand_data->devsize) | GPMC_CONFIG_DEV_SIZE, gpmc_nand_data->devsize);
GPMC_CONFIG1_DEVICETYPE_NAND); gpmc_cs_configure(gpmc_nand_data->cs,
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);
if (err) if (err)
return err; return err;
...@@ -82,27 +80,13 @@ static int omap2_nand_gpmc_retime(void) ...@@ -82,27 +80,13 @@ static int omap2_nand_gpmc_retime(void)
return 0; return 0;
} }
static int gpmc_nand_setup(void)
{
struct device *dev = &gpmc_nand_device.dev;
/* Set timings in GPMC */
if (omap2_nand_gpmc_retime() < 0) {
dev_err(dev, "Unable to set gpmc timings\n");
return -EINVAL;
}
return 0;
}
int __init gpmc_nand_init(struct omap_nand_platform_data *_nand_data) int __init gpmc_nand_init(struct omap_nand_platform_data *_nand_data)
{ {
unsigned int val;
int err = 0; int err = 0;
struct device *dev = &gpmc_nand_device.dev; struct device *dev = &gpmc_nand_device.dev;
gpmc_nand_data = _nand_data; gpmc_nand_data = _nand_data;
gpmc_nand_data->nand_setup = gpmc_nand_setup; gpmc_nand_data->nand_setup = omap2_nand_gpmc_retime;
gpmc_nand_device.dev.platform_data = gpmc_nand_data; gpmc_nand_device.dev.platform_data = gpmc_nand_data;
err = gpmc_cs_request(gpmc_nand_data->cs, NAND_IO_SIZE, err = gpmc_cs_request(gpmc_nand_data->cs, NAND_IO_SIZE,
...@@ -112,19 +96,16 @@ int __init gpmc_nand_init(struct omap_nand_platform_data *_nand_data) ...@@ -112,19 +96,16 @@ int __init gpmc_nand_init(struct omap_nand_platform_data *_nand_data)
return err; return err;
} }
err = gpmc_nand_setup(); /* Set timings in GPMC */
err = omap2_nand_gpmc_retime();
if (err < 0) { if (err < 0) {
dev_err(dev, "NAND platform setup failed: %d\n", err); dev_err(dev, "Unable to set gpmc timings: %d\n", err);
return err; return err;
} }
/* Enable RD PIN Monitoring Reg */ /* Enable RD PIN Monitoring Reg */
if (gpmc_nand_data->dev_ready) { if (gpmc_nand_data->dev_ready) {
val = gpmc_cs_read_reg(gpmc_nand_data->cs, gpmc_cs_configure(gpmc_nand_data->cs, GPMC_CONFIG_RDY_BSY, 1);
GPMC_CS_CONFIG1);
val |= WR_RD_PIN_MONITORING;
gpmc_cs_write_reg(gpmc_nand_data->cs,
GPMC_CS_CONFIG1, val);
} }
err = platform_device_register(&gpmc_nand_device); err = platform_device_register(&gpmc_nand_device);
......
...@@ -641,15 +641,6 @@ int gpmc_prefetch_reset(int cs) ...@@ -641,15 +641,6 @@ int gpmc_prefetch_reset(int cs)
} }
EXPORT_SYMBOL(gpmc_prefetch_reset); EXPORT_SYMBOL(gpmc_prefetch_reset);
/**
* gpmc_prefetch_status - reads prefetch status of engine
*/
int gpmc_prefetch_status(void)
{
return gpmc_read_reg(GPMC_PREFETCH_STATUS);
}
EXPORT_SYMBOL(gpmc_prefetch_status);
static void __init gpmc_mem_init(void) static void __init gpmc_mem_init(void)
{ {
int cs; int cs;
......
...@@ -25,9 +25,6 @@ ...@@ -25,9 +25,6 @@
#define GPMC_CS_NAND_ADDRESS 0x20 #define GPMC_CS_NAND_ADDRESS 0x20
#define GPMC_CS_NAND_DATA 0x24 #define GPMC_CS_NAND_DATA 0x24
#define GPMC_CONFIG 0x50
#define GPMC_STATUS 0x54
/* Control Commands */ /* Control Commands */
#define GPMC_CONFIG_RDY_BSY 0x00000001 #define GPMC_CONFIG_RDY_BSY 0x00000001
#define GPMC_CONFIG_DEV_SIZE 0x00000002 #define GPMC_CONFIG_DEV_SIZE 0x00000002
...@@ -66,7 +63,6 @@ ...@@ -66,7 +63,6 @@
#define GPMC_CONFIG1_DEVICESIZE_16 GPMC_CONFIG1_DEVICESIZE(1) #define GPMC_CONFIG1_DEVICESIZE_16 GPMC_CONFIG1_DEVICESIZE(1)
#define GPMC_CONFIG1_DEVICETYPE(val) ((val & 3) << 10) #define GPMC_CONFIG1_DEVICETYPE(val) ((val & 3) << 10)
#define GPMC_CONFIG1_DEVICETYPE_NOR GPMC_CONFIG1_DEVICETYPE(0) #define GPMC_CONFIG1_DEVICETYPE_NOR GPMC_CONFIG1_DEVICETYPE(0)
#define GPMC_CONFIG1_DEVICETYPE_NAND GPMC_CONFIG1_DEVICETYPE(2)
#define GPMC_CONFIG1_MUXADDDATA (1 << 9) #define GPMC_CONFIG1_MUXADDDATA (1 << 9)
#define GPMC_CONFIG1_TIME_PARA_GRAN (1 << 4) #define GPMC_CONFIG1_TIME_PARA_GRAN (1 << 4)
#define GPMC_CONFIG1_FCLK_DIV(val) (val & 3) #define GPMC_CONFIG1_FCLK_DIV(val) (val & 3)
...@@ -136,7 +132,6 @@ extern int gpmc_cs_reserved(int cs); ...@@ -136,7 +132,6 @@ extern int gpmc_cs_reserved(int cs);
extern int gpmc_prefetch_enable(int cs, int dma_mode, extern int gpmc_prefetch_enable(int cs, int dma_mode,
unsigned int u32_count, int is_write); unsigned int u32_count, int is_write);
extern int gpmc_prefetch_reset(int cs); extern int gpmc_prefetch_reset(int cs);
extern int gpmc_prefetch_status(void);
extern void omap3_gpmc_save_context(void); extern void omap3_gpmc_save_context(void);
extern void omap3_gpmc_restore_context(void); extern void omap3_gpmc_restore_context(void);
extern void gpmc_init(void); extern void gpmc_init(void);
......
...@@ -21,13 +21,11 @@ struct omap_nand_platform_data { ...@@ -21,13 +21,11 @@ struct omap_nand_platform_data {
int (*dev_ready)(struct omap_nand_platform_data *); int (*dev_ready)(struct omap_nand_platform_data *);
int dma_channel; int dma_channel;
unsigned long phys_base; unsigned long phys_base;
void __iomem *gpmc_cs_baseaddr;
void __iomem *gpmc_baseaddr;
int devsize; int devsize;
}; };
/* size (4 KiB) for IO mapping */ /* minimum size for IO mapping */
#define NAND_IO_SIZE SZ_4K #define NAND_IO_SIZE 4
#if defined(CONFIG_MTD_NAND_OMAP2) || defined(CONFIG_MTD_NAND_OMAP2_MODULE) #if defined(CONFIG_MTD_NAND_OMAP2) || defined(CONFIG_MTD_NAND_OMAP2_MODULE)
extern int gpmc_nand_init(struct omap_nand_platform_data *d); extern int gpmc_nand_init(struct omap_nand_platform_data *d);
......
This diff is collapsed.
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