[U-Boot] [PATCH 1/6] sh: timer: Mask bit of timer prescaler

timer_init function sets timer prescaler bit. The previous code so did not mask this bit, this function was to overwrite the bit. This will fix this problem.
Signed-off-by: Nobuhiro Iwamatsu nobuhiro.iwamatsu.yj@renesas.com --- arch/sh/lib/time.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/arch/sh/lib/time.c b/arch/sh/lib/time.c index 1fe537e..8f83d46 100644 --- a/arch/sh/lib/time.c +++ b/arch/sh/lib/time.c @@ -17,6 +17,8 @@ #include <asm/io.h> #include <sh_tmu.h>
+#define TCR_TPSC 0x07 + static struct tmu_regs *tmu = (struct tmu_regs *)TMU_BASE;
static u16 bit; @@ -61,7 +63,7 @@ static void tmu_timer_stop(unsigned int timer) int timer_init(void) { bit = (ffs(CONFIG_SYS_TMU_CLK_DIV) >> 1) - 1; - writew(readw(&tmu->tcr0) | bit, &tmu->tcr0); + writew((readw(&tmu->tcr0) & ~TCR_TPSC) | bit, &tmu->tcr0);
tmu_timer_stop(0); tmu_timer_start(0);

"static u16 bit" is not necessary to use this as static global variable. This patch fixes this.
Signed-off-by: Nobuhiro Iwamatsu nobuhiro.iwamatsu.yj@renesas.com --- arch/sh/lib/time.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/arch/sh/lib/time.c b/arch/sh/lib/time.c index 8f83d46..c554fe8 100644 --- a/arch/sh/lib/time.c +++ b/arch/sh/lib/time.c @@ -21,13 +21,13 @@
static struct tmu_regs *tmu = (struct tmu_regs *)TMU_BASE;
-static u16 bit; static unsigned long last_tcnt; static unsigned long long overflow_ticks;
unsigned long get_tbclk(void) { - return get_tmu0_clk_rate() >> ((bit + 1) * 2); + u16 tmu_bit = (ffs(CONFIG_SYS_TMU_CLK_DIV) >> 1) - 1; + return get_tmu0_clk_rate() >> ((tmu_bit + 1) * 2); }
static inline unsigned long long tick_to_time(unsigned long long tick) @@ -62,8 +62,8 @@ static void tmu_timer_stop(unsigned int timer)
int timer_init(void) { - bit = (ffs(CONFIG_SYS_TMU_CLK_DIV) >> 1) - 1; - writew((readw(&tmu->tcr0) & ~TCR_TPSC) | bit, &tmu->tcr0); + u16 tmu_bit = (ffs(CONFIG_SYS_TMU_CLK_DIV) >> 1) - 1; + writew((readw(&tmu->tcr0) & ~TCR_TPSC) | tmu_bit, &tmu->tcr0);
tmu_timer_stop(0); tmu_timer_start(0);

A chache API of SH is developped by reference in linux kernel. And API was the same as the linux kernel. This patch change cache API to defines as U-Boot.
Signed-off-by: Nobuhiro Iwamatsu nobuhiro.iwamatsu.yj@renesas.com --- arch/sh/cpu/sh4/cache.c | 4 ++-- arch/sh/cpu/sh4/cpu.c | 2 +- arch/sh/include/asm/cache.h | 3 --- 3 files changed, 3 insertions(+), 6 deletions(-)
diff --git a/arch/sh/cpu/sh4/cache.c b/arch/sh/cpu/sh4/cache.c index 1947ec8..e1ee970 100644 --- a/arch/sh/cpu/sh4/cache.c +++ b/arch/sh/cpu/sh4/cache.c @@ -91,7 +91,7 @@ int cache_control(unsigned int cmd) return 0; }
-void dcache_wback_range(u32 start, u32 end) +void flush_dcache_range(unsigned long start, unsigned long end) { u32 v;
@@ -102,7 +102,7 @@ void dcache_wback_range(u32 start, u32 end) } }
-void dcache_invalid_range(u32 start, u32 end) +void invalidate_dcache_range(unsigned long start, unsigned long end) { u32 v;
diff --git a/arch/sh/cpu/sh4/cpu.c b/arch/sh/cpu/sh4/cpu.c index 9fae614..91133a3 100644 --- a/arch/sh/cpu/sh4/cpu.c +++ b/arch/sh/cpu/sh4/cpu.c @@ -41,7 +41,7 @@ int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
void flush_cache (unsigned long addr, unsigned long size) { - dcache_invalid_range( addr , addr + size ); + invalidate_dcache_range(addr , addr + size); }
void icache_enable (void) diff --git a/arch/sh/include/asm/cache.h b/arch/sh/include/asm/cache.h index 24941b3..b21dc44 100644 --- a/arch/sh/include/asm/cache.h +++ b/arch/sh/include/asm/cache.h @@ -10,9 +10,6 @@ int cache_control(unsigned int cmd); struct __large_struct { unsigned long buf[100]; }; #define __m(x) (*(struct __large_struct *)(x))
-void dcache_wback_range(u32 start, u32 end); -void dcache_invalid_range(u32 start, u32 end); - #else
/*

The former SH/TMU driver had calculated timer based on CONFIG_SYS_CLK_FREQ. The newest SH/TMU newly needs calculation of the clock for TMU. This patch defines clock CONFIG_SH_TMU_CLK_FREQ for TMU and changes it to CONFIG_SH_TMU_CLK_FREQ from CONFIG_SYS_CLK_FREQ.
Signed-off-by: Nobuhiro Iwamatsu nobuhiro.iwamatsu.yj@renesas.com --- include/sh_tmu.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/sh_tmu.h b/include/sh_tmu.h index 96c589d..f5b42fa 100644 --- a/include/sh_tmu.h +++ b/include/sh_tmu.h @@ -69,7 +69,7 @@ struct tmu_regs {
static inline unsigned long get_tmu0_clk_rate(void) { - return CONFIG_SYS_CLK_FREQ; + return CONFIG_SH_TMU_CLK_FREQ; }
#endif /* __SH_TMU_H */

The former SH/SCIF driver had calculated baudrate based on CONFIG_SYS_CLK_FREQ. The newest SH/SCIF needs calculation of the clock for SCIF. This patch defines clock CONFIG_SH_SCIF_CLK_FREQ for SCIF and changes it to CONFIG_SH_SCIF_CLK_FREQ from CONFIG_SYS_CLK_FREQ.
Signed-off-by: Nobuhiro Iwamatsu nobuhiro.iwamatsu.yj@renesas.com --- drivers/serial/serial_sh.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/serial/serial_sh.c b/drivers/serial/serial_sh.c index ff2cdc5..67cc0dc 100644 --- a/drivers/serial/serial_sh.c +++ b/drivers/serial/serial_sh.c @@ -48,7 +48,9 @@ static struct uart_port sh_sci = { static void sh_serial_setbrg(void) { DECLARE_GLOBAL_DATA_PTR; - sci_out(&sh_sci, SCBRR, SCBRR_VALUE(gd->baudrate, CONFIG_SYS_CLK_FREQ)); + + sci_out(&sh_sci, SCBRR, + SCBRR_VALUE(gd->baudrate, CONFIG_SH_SCIF_CLK_FREQ)); }
static int sh_serial_init(void)

This changes clock definition of SCIF from CONFIG_SYS_CLK_FREQ to CONFIG_SH_SCIF_CLK_FREQ, and clock definition of TMU from CONFIG_SYS_CLK_FREQ to CONFIG_SH_TMU_CLK_FREQ for boards.
Signed-off-by: Nobuhiro Iwamatsu nobuhiro.iwamatsu.yj@renesas.com --- include/configs/MigoR.h | 2 ++ include/configs/ap325rxa.h | 2 ++ include/configs/ap_sh4a_4a.h | 2 ++ include/configs/ecovec.h | 2 ++ include/configs/espt.h | 2 ++ include/configs/mpr2.h | 2 ++ include/configs/ms7720se.h | 2 ++ include/configs/ms7722se.h | 2 ++ include/configs/ms7750se.h | 2 ++ include/configs/r0p7734.h | 2 ++ include/configs/r2dplus.h | 2 ++ include/configs/r7780mp.h | 2 ++ include/configs/rsk7203.h | 2 ++ include/configs/rsk7264.h | 2 ++ include/configs/rsk7269.h | 2 ++ include/configs/sh7752evb.h | 2 ++ include/configs/sh7757lcr.h | 2 ++ include/configs/sh7763rdp.h | 2 ++ include/configs/sh7785lcr.h | 2 ++ include/configs/shmin.h | 2 ++ 20 files changed, 40 insertions(+)
diff --git a/include/configs/MigoR.h b/include/configs/MigoR.h index dc4a768..d536ebd 100644 --- a/include/configs/MigoR.h +++ b/include/configs/MigoR.h @@ -123,6 +123,8 @@
/* Board Clock */ #define CONFIG_SYS_CLK_FREQ 33333333 +#define CONFIG_SH_TMU_CLK_FREQ CONFIG_SYS_CLK_FREQ +#define CONFIG_SH_SCIF_CLK_FREQ CONFIG_SYS_CLK_FREQ #define CONFIG_SYS_TMU_CLK_DIV (4) /* 4 (default), 16, 64, 256 or 1024 */ #define CONFIG_SYS_HZ 1000
diff --git a/include/configs/ap325rxa.h b/include/configs/ap325rxa.h index af3a427..07ec8a7 100644 --- a/include/configs/ap325rxa.h +++ b/include/configs/ap325rxa.h @@ -155,6 +155,8 @@
/* Board Clock */ #define CONFIG_SYS_CLK_FREQ 33333333 +#define CONFIG_SH_TMU_CLK_FREQ CONFIG_SYS_CLK_FREQ +#define CONFIG_SH_SCIF_CLK_FREQ CONFIG_SYS_CLK_FREQ #define CONFIG_SYS_TMU_CLK_DIV (4) /* 4 (default), 16, 64, 256 or 1024 */ #define CONFIG_SYS_HZ 1000
diff --git a/include/configs/ap_sh4a_4a.h b/include/configs/ap_sh4a_4a.h index b911291..ada42d7 100644 --- a/include/configs/ap_sh4a_4a.h +++ b/include/configs/ap_sh4a_4a.h @@ -158,6 +158,8 @@ #else #define CONFIG_SYS_CLK_FREQ 44444444 #endif +#define CONFIG_SH_TMU_CLK_FREQ CONFIG_SYS_CLK_FREQ +#define CONFIG_SH_SCIF_CLK_FREQ CONFIG_SYS_CLK_FREQ #define CONFIG_SYS_TMU_CLK_DIV 4 #define CONFIG_SYS_HZ 1000
diff --git a/include/configs/ecovec.h b/include/configs/ecovec.h index 2c9594b..34bd0b3 100644 --- a/include/configs/ecovec.h +++ b/include/configs/ecovec.h @@ -179,6 +179,8 @@
/* Board Clock */ #define CONFIG_SYS_CLK_FREQ 41666666 +#define CONFIG_SH_TMU_CLK_FREQ CONFIG_SYS_CLK_FREQ +#define CONFIG_SH_SCIF_CLK_FREQ CONFIG_SYS_CLK_FREQ #define CONFIG_SYS_TMU_CLK_DIV 4 #define CONFIG_SYS_HZ 1000
diff --git a/include/configs/espt.h b/include/configs/espt.h index e906efb..f1a44bc 100644 --- a/include/configs/espt.h +++ b/include/configs/espt.h @@ -98,6 +98,8 @@
/* Clock */ #define CONFIG_SYS_CLK_FREQ 66666666 +#define CONFIG_SH_TMU_CLK_FREQ CONFIG_SYS_CLK_FREQ +#define CONFIG_SH_SCIF_CLK_FREQ CONFIG_SYS_CLK_FREQ #define CONFIG_SYS_TMU_CLK_DIV 4 #define CONFIG_SYS_HZ 1000
diff --git a/include/configs/mpr2.h b/include/configs/mpr2.h index 7e18723..b0b23a6 100644 --- a/include/configs/mpr2.h +++ b/include/configs/mpr2.h @@ -67,6 +67,8 @@
/* Clocks */ #define CONFIG_SYS_CLK_FREQ 24000000 +#define CONFIG_SH_TMU_CLK_FREQ CONFIG_SYS_CLK_FREQ +#define CONFIG_SH_SCIF_CLK_FREQ CONFIG_SYS_CLK_FREQ #define CONFIG_SYS_TMU_CLK_DIV 4 /* 4 (default), 16, 64, 256 or 1024 */ #define CONFIG_SYS_HZ 1000
diff --git a/include/configs/ms7720se.h b/include/configs/ms7720se.h index bc8bb8d..d6b1762 100644 --- a/include/configs/ms7720se.h +++ b/include/configs/ms7720se.h @@ -85,6 +85,8 @@
/* Board Clock */ #define CONFIG_SYS_CLK_FREQ 33333333 +#define CONFIG_SH_TMU_CLK_FREQ CONFIG_SYS_CLK_FREQ +#define CONFIG_SH_SCIF_CLK_FREQ CONFIG_SYS_CLK_FREQ #define CONFIG_SYS_TMU_CLK_DIV 4 /* 4 (default), 16, 64, 256 or 1024 */ #define CONFIG_SYS_HZ 1000
diff --git a/include/configs/ms7722se.h b/include/configs/ms7722se.h index a757737..787c255 100644 --- a/include/configs/ms7722se.h +++ b/include/configs/ms7722se.h @@ -111,6 +111,8 @@
/* Board Clock */ #define CONFIG_SYS_CLK_FREQ 33333333 +#define CONFIG_SH_TMU_CLK_FREQ CONFIG_SYS_CLK_FREQ +#define CONFIG_SH_SCIF_CLK_FREQ CONFIG_SYS_CLK_FREQ #define CONFIG_SYS_TMU_CLK_DIV (4) /* 4 (default), 16, 64, 256 or 1024 */ #define CONFIG_SYS_HZ 1000
diff --git a/include/configs/ms7750se.h b/include/configs/ms7750se.h index c4c96bf..37ef02e 100644 --- a/include/configs/ms7750se.h +++ b/include/configs/ms7750se.h @@ -82,6 +82,8 @@
/* Board Clock */ #define CONFIG_SYS_CLK_FREQ 33333333 +#define CONFIG_SH_TMU_CLK_FREQ CONFIG_SYS_CLK_FREQ +#define CONFIG_SH_SCIF_CLK_FREQ CONFIG_SYS_CLK_FREQ #define CONFIG_SYS_TMU_CLK_DIV 4 #define CONFIG_SYS_HZ 1000
diff --git a/include/configs/r0p7734.h b/include/configs/r0p7734.h index 0804480..5894f5f 100644 --- a/include/configs/r0p7734.h +++ b/include/configs/r0p7734.h @@ -164,6 +164,8 @@ #else #define CONFIG_SYS_CLK_FREQ 44444444 #endif +#define CONFIG_SH_TMU_CLK_FREQ CONFIG_SYS_CLK_FREQ +#define CONFIG_SH_SCIF_CLK_FREQ CONFIG_SYS_CLK_FREQ #define CONFIG_SYS_TMU_CLK_DIV 4 #define CONFIG_SYS_HZ 1000
diff --git a/include/configs/r2dplus.h b/include/configs/r2dplus.h index 65dcffb..8c11b99 100644 --- a/include/configs/r2dplus.h +++ b/include/configs/r2dplus.h @@ -77,6 +77,8 @@ * SuperH Clock setting */ #define CONFIG_SYS_CLK_FREQ 60000000 +#define CONFIG_SH_TMU_CLK_FREQ CONFIG_SYS_CLK_FREQ +#define CONFIG_SH_SCIF_CLK_FREQ CONFIG_SYS_CLK_FREQ #define CONFIG_SYS_TMU_CLK_DIV 4 #define CONFIG_SYS_HZ 1000 #define CONFIG_SYS_PLL_SETTLING_TIME 100/* in us */ diff --git a/include/configs/r7780mp.h b/include/configs/r7780mp.h index dd1caf1..07c9903 100644 --- a/include/configs/r7780mp.h +++ b/include/configs/r7780mp.h @@ -102,6 +102,8 @@
/* Board Clock */ #define CONFIG_SYS_CLK_FREQ 33333333 +#define CONFIG_SH_TMU_CLK_FREQ CONFIG_SYS_CLK_FREQ +#define CONFIG_SH_SCIF_CLK_FREQ CONFIG_SYS_CLK_FREQ #define CONFIG_SYS_TMU_CLK_DIV 4 #define CONFIG_SYS_HZ 1000
diff --git a/include/configs/rsk7203.h b/include/configs/rsk7203.h index d7473c3..2e96883 100644 --- a/include/configs/rsk7203.h +++ b/include/configs/rsk7203.h @@ -85,6 +85,8 @@
/* Board Clock */ #define CONFIG_SYS_CLK_FREQ 33333333 +#define CONFIG_SH_TMU_CLK_FREQ CONFIG_SYS_CLK_FREQ +#define CONFIG_SH_SCIF_CLK_FREQ CONFIG_SYS_CLK_FREQ #define CMT_CLK_DIVIDER 32 /* 8 (default), 32, 128 or 512 */ #define CONFIG_SYS_HZ (CONFIG_SYS_CLK_FREQ / CMT_CLK_DIVIDER)
diff --git a/include/configs/rsk7264.h b/include/configs/rsk7264.h index 783467a..cf7bc63 100644 --- a/include/configs/rsk7264.h +++ b/include/configs/rsk7264.h @@ -65,6 +65,8 @@
/* Board Clock */ #define CONFIG_SYS_CLK_FREQ 36000000 +#define CONFIG_SH_TMU_CLK_FREQ CONFIG_SYS_CLK_FREQ +#define CONFIG_SH_SCIF_CLK_FREQ CONFIG_SYS_CLK_FREQ #define CMT_CLK_DIVIDER 32 /* 8 (default), 32, 128 or 512 */ #define CONFIG_SYS_HZ (CONFIG_SYS_CLK_FREQ / CMT_CLK_DIVIDER)
diff --git a/include/configs/rsk7269.h b/include/configs/rsk7269.h index 11c2a93..1f4e2f3 100644 --- a/include/configs/rsk7269.h +++ b/include/configs/rsk7269.h @@ -64,6 +64,8 @@
/* Board Clock */ #define CONFIG_SYS_CLK_FREQ 66125000 +#define CONFIG_SH_TMU_CLK_FREQ CONFIG_SYS_CLK_FREQ +#define CONFIG_SH_SCIF_CLK_FREQ CONFIG_SYS_CLK_FREQ #define CMT_CLK_DIVIDER 32 /* 8 (default), 32, 128 or 512 */ #define CONFIG_SYS_HZ (CONFIG_SYS_CLK_FREQ / CMT_CLK_DIVIDER)
diff --git a/include/configs/sh7752evb.h b/include/configs/sh7752evb.h index fb4dc6f..bab7e4d 100644 --- a/include/configs/sh7752evb.h +++ b/include/configs/sh7752evb.h @@ -132,6 +132,8 @@
/* Board Clock */ #define CONFIG_SYS_CLK_FREQ 48000000 +#define CONFIG_SH_TMU_CLK_FREQ CONFIG_SYS_CLK_FREQ +#define CONFIG_SH_SCIF_CLK_FREQ CONFIG_SYS_CLK_FREQ #define CONFIG_SYS_TMU_CLK_DIV 4 #define CONFIG_SYS_HZ 1000 #endif /* __SH7752EVB_H */ diff --git a/include/configs/sh7757lcr.h b/include/configs/sh7757lcr.h index af76f49..b0df4da 100644 --- a/include/configs/sh7757lcr.h +++ b/include/configs/sh7757lcr.h @@ -140,6 +140,8 @@
/* Board Clock */ #define CONFIG_SYS_CLK_FREQ 48000000 +#define CONFIG_SH_TMU_CLK_FREQ CONFIG_SYS_CLK_FREQ +#define CONFIG_SH_SCIF_CLK_FREQ CONFIG_SYS_CLK_FREQ #define CONFIG_SYS_TMU_CLK_DIV 4 #define CONFIG_SYS_HZ 1000 #endif /* __SH7757LCR_H */ diff --git a/include/configs/sh7763rdp.h b/include/configs/sh7763rdp.h index c1d33d8..d0dc102 100644 --- a/include/configs/sh7763rdp.h +++ b/include/configs/sh7763rdp.h @@ -98,6 +98,8 @@
/* Clock */ #define CONFIG_SYS_CLK_FREQ 66666666 +#define CONFIG_SH_TMU_CLK_FREQ CONFIG_SYS_CLK_FREQ +#define CONFIG_SH_SCIF_CLK_FREQ CONFIG_SYS_CLK_FREQ #define CONFIG_SYS_TMU_CLK_DIV (4) /* 4 (default), 16, 64, 256 or 1024 */ #define CONFIG_SYS_HZ 1000
diff --git a/include/configs/sh7785lcr.h b/include/configs/sh7785lcr.h index 04f1d22..baee07b 100644 --- a/include/configs/sh7785lcr.h +++ b/include/configs/sh7785lcr.h @@ -172,6 +172,8 @@ /* Board Clock */ /* The SCIF used external clock. system clock only used timer. */ #define CONFIG_SYS_CLK_FREQ 50000000 +#define CONFIG_SH_TMU_CLK_FREQ CONFIG_SYS_CLK_FREQ +#define CONFIG_SH_SCIF_CLK_FREQ CONFIG_SYS_CLK_FREQ #define CONFIG_SYS_TMU_CLK_DIV 4 #define CONFIG_SYS_HZ 1000
diff --git a/include/configs/shmin.h b/include/configs/shmin.h index 5fb7176..8cdb8f9 100644 --- a/include/configs/shmin.h +++ b/include/configs/shmin.h @@ -103,6 +103,8 @@ #else #define CONFIG_SYS_CLK_FREQ 33333333 #endif /* CONFIG_T_SH7706LSR */ +#define CONFIG_SH_TMU_CLK_FREQ CONFIG_SYS_CLK_FREQ +#define CONFIG_SH_SCIF_CLK_FREQ CONFIG_SYS_CLK_FREQ #define CONFIG_SYS_TMU_CLK_DIV 4 #define CONFIG_SYS_HZ 1000
participants (1)
-
Nobuhiro Iwamatsu