sh: tmu: Clean up register usage

The code uses all in all three TMU registers, drop the massive
register layout structures and just define the required timer
registers and use them throughout the code.

Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com>
lime2-spi
Marek Vasut 6 years ago committed by Marek Vasut
parent 8b39df9e78
commit f02c1f695e
  1. 54
      arch/sh/lib/time.c

@ -15,52 +15,20 @@
#include <asm/io.h> #include <asm/io.h>
#if defined(CONFIG_CPU_SH3) #if defined(CONFIG_CPU_SH3)
struct tmu_regs { #define TSTR 0x2
u8 tocr; #define TCNT0 0x8
u8 reserved0; #define TCR0 0xc
u8 tstr;
u8 reserved1;
u32 tcor0;
u32 tcnt0;
u16 tcr0;
u16 reserved2;
u32 tcor1;
u32 tcnt1;
u16 tcr1;
u16 reserved3;
u32 tcor2;
u32 tcnt2;
u16 tcr2;
u16 reserved4;
u32 tcpr2;
};
#endif /* CONFIG_CPU_SH3 */ #endif /* CONFIG_CPU_SH3 */
#if defined(CONFIG_CPU_SH4) || defined(CONFIG_ARCH_RMOBILE) #if defined(CONFIG_CPU_SH4) || defined(CONFIG_ARCH_RMOBILE)
struct tmu_regs { #define TSTR 0x4
u32 reserved; #define TCNT0 0xc
u8 tstr; #define TCR0 0x10
u8 reserved2[3];
u32 tcor0;
u32 tcnt0;
u16 tcr0;
u16 reserved3;
u32 tcor1;
u32 tcnt1;
u16 tcr1;
u16 reserved4;
u32 tcor2;
u32 tcnt2;
u16 tcr2;
u16 reserved5;
};
#endif /* CONFIG_CPU_SH4 */ #endif /* CONFIG_CPU_SH4 */
#define TCR_TPSC 0x07 #define TCR_TPSC 0x07
#define TSTR_STR0 BIT(0) #define TSTR_STR0 BIT(0)
static struct tmu_regs *tmu = (struct tmu_regs *)TMU_BASE;
unsigned long get_tbclk(void) unsigned long get_tbclk(void)
{ {
#ifdef CONFIG_RCAR_GEN2 #ifdef CONFIG_RCAR_GEN2
@ -72,14 +40,14 @@ unsigned long get_tbclk(void)
unsigned long timer_read_counter(void) unsigned long timer_read_counter(void)
{ {
return ~readl(&tmu->tcnt0); return ~readl(TMU_BASE + TCNT0);
} }
int timer_init(void) int timer_init(void)
{ {
writew(readw(&tmu->tcr0) & ~TCR_TPSC, &tmu->tcr0); writew(readw(TMU_BASE + TCR0) & ~TCR_TPSC, TMU_BASE + TCR0);
writeb(readb(&tmu->tstr) & ~TSTR_STR0, &tmu->tstr); writeb(readb(TMU_BASE + TSTR) & ~TSTR_STR0, TMU_BASE + TSTR);
writeb(readb(&tmu->tstr) | TSTR_STR0, &tmu->tstr); writeb(readb(TMU_BASE + TSTR) | TSTR_STR0, TMU_BASE + TSTR);
return 0; return 0;
} }

Loading…
Cancel
Save