Commit 80d597b0 authored by Juha Yrjola's avatar Juha Yrjola

Merge 65.200.49.170:linux-omap

parents d43f67c3 e7f9337e
...@@ -88,6 +88,13 @@ unsigned int gpmc_ns_to_ticks(unsigned int time_ns) ...@@ -88,6 +88,13 @@ unsigned int gpmc_ns_to_ticks(unsigned int time_ns)
return (time_ns * 1000 + tick_ps - 1) / tick_ps; return (time_ns * 1000 + tick_ps - 1) / tick_ps;
} }
unsigned int gpmc_round_ns_to_ticks(unsigned int time_ns)
{
unsigned long ticks = gpmc_ns_to_ticks(time_ns);
return ticks * gpmc_get_fclk_period() / 1000;
}
#ifdef DEBUG #ifdef DEBUG
static int set_gpmc_timing_reg(int cs, int reg, int st_bit, int end_bit, static int set_gpmc_timing_reg(int cs, int reg, int st_bit, int end_bit,
int time, const char *name) int time, const char *name)
...@@ -141,7 +148,7 @@ int gpmc_cs_calc_divider(int cs, unsigned int sync_clk) ...@@ -141,7 +148,7 @@ int gpmc_cs_calc_divider(int cs, unsigned int sync_clk)
div = l / gpmc_get_fclk_period(); div = l / gpmc_get_fclk_period();
if (div > 4) if (div > 4)
return -1; return -1;
if (div < 0) if (div <= 0)
div = 1; div = 1;
return div; return div;
...@@ -183,6 +190,7 @@ int gpmc_cs_set_timings(int cs, const struct gpmc_timings *t) ...@@ -183,6 +190,7 @@ int gpmc_cs_set_timings(int cs, const struct gpmc_timings *t)
l = gpmc_cs_read_reg(cs, GPMC_CS_CONFIG1); l = gpmc_cs_read_reg(cs, GPMC_CS_CONFIG1);
l &= ~0x03; l &= ~0x03;
l |= (div - 1); l |= (div - 1);
gpmc_cs_write_reg(cs, GPMC_CS_CONFIG1, l);
return 0; return 0;
} }
......
...@@ -23,9 +23,10 @@ ...@@ -23,9 +23,10 @@
#define GPMC_CS_NAND_DATA 0x24 #define GPMC_CS_NAND_DATA 0x24
#define GPMC_CONFIG1_WRAPBURST_SUPP (1 << 31) #define GPMC_CONFIG1_WRAPBURST_SUPP (1 << 31)
#define GPMC_CONFIG1_READMULTIPLE_SUPP (1 << 20) #define GPMC_CONFIG1_READMULTIPLE_SUPP (1 << 30)
#define GPMC_CONFIG1_READTYPE_ASYNC (0 << 29) #define GPMC_CONFIG1_READTYPE_ASYNC (0 << 29)
#define GPMC_CONFIG1_READTYPE_SYNC (1 << 29) #define GPMC_CONFIG1_READTYPE_SYNC (1 << 29)
#define GPMC_CONFIG1_WRITEMULTIPLE_SUPP (1 << 28)
#define GPMC_CONFIG1_WRITETYPE_ASYNC (0 << 27) #define GPMC_CONFIG1_WRITETYPE_ASYNC (0 << 27)
#define GPMC_CONFIG1_WRITETYPE_SYNC (1 << 27) #define GPMC_CONFIG1_WRITETYPE_SYNC (1 << 27)
#define GPMC_CONFIG1_CLKACTIVATIONTIME(val) ((val & 3) << 25) #define GPMC_CONFIG1_CLKACTIVATIONTIME(val) ((val & 3) << 25)
...@@ -80,6 +81,7 @@ struct gpmc_timings { ...@@ -80,6 +81,7 @@ struct gpmc_timings {
}; };
extern unsigned int gpmc_ns_to_ticks(unsigned int time_ns); extern unsigned int gpmc_ns_to_ticks(unsigned int time_ns);
extern unsigned int gpmc_round_ns_to_ticks(unsigned int time_ns);
extern void gpmc_cs_write_reg(int cs, int idx, u32 val); extern void gpmc_cs_write_reg(int cs, int idx, u32 val);
extern u32 gpmc_cs_read_reg(int cs, int idx); extern u32 gpmc_cs_read_reg(int cs, int idx);
......
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