diff options
Diffstat (limited to 'arch/sh')
| -rw-r--r-- | arch/sh/include/asm/config.h | 9 | ||||
| -rw-r--r-- | arch/sh/include/asm/cpu_sh7724.h | 3 | ||||
| -rw-r--r-- | arch/sh/lib/time.c | 45 | 
3 files changed, 22 insertions, 35 deletions
| diff --git a/arch/sh/include/asm/config.h b/arch/sh/include/asm/config.h index bad0026648a..d2862df4a5f 100644 --- a/arch/sh/include/asm/config.h +++ b/arch/sh/include/asm/config.h @@ -6,4 +6,13 @@  #ifndef _ASM_CONFIG_H_  #define _ASM_CONFIG_H_ +#if !defined(CONFIG_CPU_SH2) +#include <asm/processor.h> + +/* Timer */ +#define CONFIG_SYS_TIMER_COUNTS_DOWN +#define CONFIG_SYS_TIMER_COUNTER	(TMU_BASE + 0x8)	/* TCNT0 */ +#define CONFIG_SYS_TIMER_RATE		(CONFIG_SYS_CLK_FREQ / 4) +#endif +  #endif diff --git a/arch/sh/include/asm/cpu_sh7724.h b/arch/sh/include/asm/cpu_sh7724.h index 7a81e1677e5..7b217959ed7 100644 --- a/arch/sh/include/asm/cpu_sh7724.h +++ b/arch/sh/include/asm/cpu_sh7724.h @@ -203,9 +203,6 @@  #define PYDR        0xA405016A  #define PZDR        0xA405016C -/* Ether */ -#define EDMR		0xA4600000 -  /* UBC */  /* H-UDI */ diff --git a/arch/sh/lib/time.c b/arch/sh/lib/time.c index eb642969aab..fb317f95d55 100644 --- a/arch/sh/lib/time.c +++ b/arch/sh/lib/time.c @@ -13,44 +13,25 @@  #include <common.h>  #include <asm/processor.h>  #include <asm/io.h> -#include <sh_tmu.h> -#define TCR_TPSC 0x07 +#if defined(CONFIG_CPU_SH3) +#define TSTR	0x2 +#define TCR0	0xc +#endif /* CONFIG_CPU_SH3 */ -static struct tmu_regs *tmu = (struct tmu_regs *)TMU_BASE; +#if defined(CONFIG_CPU_SH4) || defined(CONFIG_ARCH_RMOBILE) +#define TSTR	0x4 +#define TCR0	0x10 +#endif /* CONFIG_CPU_SH4 */ -unsigned long get_tbclk(void) -{ -	u16 tmu_bit = (ffs(CONFIG_SYS_TMU_CLK_DIV) >> 1) - 1; -	return get_tmu0_clk_rate() >> ((tmu_bit + 1) * 2); -} - -unsigned long timer_read_counter(void) -{ -	return ~readl(&tmu->tcnt0); -} - -static void tmu_timer_start(unsigned int timer) -{ -	if (timer > 2) -		return; -	writeb(readb(&tmu->tstr) | (1 << timer), &tmu->tstr); -} - -static void tmu_timer_stop(unsigned int timer) -{ -	if (timer > 2) -		return; -	writeb(readb(&tmu->tstr) & ~(1 << timer), &tmu->tstr); -} +#define TCR_TPSC	0x07 +#define TSTR_STR0	BIT(0)  int timer_init(void)  { -	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); +	writew(readw(TMU_BASE + TCR0) & ~TCR_TPSC, TMU_BASE + TCR0); +	writeb(readb(TMU_BASE + TSTR) & ~TSTR_STR0, TMU_BASE + TSTR); +	writeb(readb(TMU_BASE + TSTR) | TSTR_STR0, TMU_BASE + TSTR);  	return 0;  } | 
