mirror of https://gitee.com/openkylin/linux.git
[PATCH] m68knommu: extract common timer code for 68328 processor
Rework the 68x328 configuration and setup code. All 68x328 varient share the same timer hardware, so extract that into its own file, instead of keeping copies in each processors setup code. Signed-off-by: Greg Ungerer <gerg@uclinux.com> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
8c2b58ce71
commit
ee721126ca
|
@ -1,5 +1,7 @@
|
|||
/***************************************************************************/
|
||||
|
||||
/*
|
||||
* linux/arch/$(ARCH)/platform/$(PLATFORM)/config.c
|
||||
* linux/arch/m68knommu/platform/68328/config.c
|
||||
*
|
||||
* Copyright (C) 1993 Hamish Macdonald
|
||||
* Copyright (C) 1999 D. Jeff Dionne
|
||||
|
@ -11,6 +13,8 @@
|
|||
* VZ Support/Fixes Evan Stawnyczy <e@lineo.ca>
|
||||
*/
|
||||
|
||||
/***************************************************************************/
|
||||
|
||||
#include <asm/dbg.h>
|
||||
#include <stdarg.h>
|
||||
#include <linux/config.h>
|
||||
|
@ -29,76 +33,16 @@
|
|||
#include <asm/machdep.h>
|
||||
#include <asm/MC68328.h>
|
||||
|
||||
/***************************************************************************/
|
||||
|
||||
void BSP_sched_init(irqreturn_t (*timer_routine)(int, void *, struct pt_regs *))
|
||||
{
|
||||
void m68328_timer_init(irqreturn_t (*timer_routine) (int, void *, struct pt_regs *));
|
||||
void m68328_timer_tick(void);
|
||||
unsigned long m68328_timer_gettimeoffset(void);
|
||||
void m68328_timer_gettod(int *year, int *mon, int *day, int *hour, int *min, int *sec);
|
||||
|
||||
#ifdef CONFIG_XCOPILOT_BUGS
|
||||
/*
|
||||
* The only thing I know is that CLK32 is not available on Xcopilot
|
||||
* I have little idea about what frequency SYSCLK has on Xcopilot.
|
||||
* The values for prescaler and compare registers were simply
|
||||
* taken from the original source
|
||||
*/
|
||||
/***************************************************************************/
|
||||
|
||||
/* Restart mode, Enable int, SYSCLK, Enable timer */
|
||||
TCTL2 = TCTL_OM | TCTL_IRQEN | TCTL_CLKSOURCE_SYSCLK | TCTL_TEN;
|
||||
/* Set prescaler */
|
||||
TPRER2 = 2;
|
||||
/* Set compare register */
|
||||
TCMP2 = 0xd7e4;
|
||||
#else
|
||||
/* Restart mode, Enable int, 32KHz, Enable timer */
|
||||
TCTL2 = TCTL_OM | TCTL_IRQEN | TCTL_CLKSOURCE_32KHZ | TCTL_TEN;
|
||||
/* Set prescaler (Divide 32KHz by 32)*/
|
||||
TPRER2 = 31;
|
||||
/* Set compare register 32Khz / 32 / 10 = 100 */
|
||||
TCMP2 = 10;
|
||||
#endif
|
||||
|
||||
request_irq(TMR2_IRQ_NUM, timer_routine, IRQ_FLG_LOCK, "timer", NULL);
|
||||
}
|
||||
|
||||
void BSP_tick(void)
|
||||
{
|
||||
/* Reset Timer2 */
|
||||
TSTAT2 &= 0;
|
||||
}
|
||||
|
||||
unsigned long BSP_gettimeoffset (void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void BSP_gettod (int *yearp, int *monp, int *dayp,
|
||||
int *hourp, int *minp, int *secp)
|
||||
{
|
||||
}
|
||||
|
||||
int BSP_hwclk(int op, struct hwclk_time *t)
|
||||
{
|
||||
if (!op) {
|
||||
/* read */
|
||||
} else {
|
||||
/* write */
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int BSP_set_clock_mmss (unsigned long nowtime)
|
||||
{
|
||||
#if 0
|
||||
short real_seconds = nowtime % 60, real_minutes = (nowtime / 60) % 60;
|
||||
|
||||
tod->second1 = real_seconds / 10;
|
||||
tod->second2 = real_seconds % 10;
|
||||
tod->minute1 = real_minutes / 10;
|
||||
tod->minute2 = real_minutes % 10;
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
void BSP_reset (void)
|
||||
void m68328_reset (void)
|
||||
{
|
||||
local_irq_disable();
|
||||
asm volatile ("moveal #0x10c00000, %a0;\n\t"
|
||||
|
@ -108,18 +52,22 @@ void BSP_reset (void)
|
|||
"jmp (%a0);");
|
||||
}
|
||||
|
||||
/***************************************************************************/
|
||||
|
||||
void config_BSP(char *command, int len)
|
||||
{
|
||||
printk(KERN_INFO "\n68328 support D. Jeff Dionne <jeff@uclinux.org>\n");
|
||||
printk(KERN_INFO "68328 support Kenneth Albanowski <kjahds@kjshds.com>\n");
|
||||
printk(KERN_INFO "68328/Pilot support Bernhard Kuhn <kuhn@lpr.e-technik.tu-muenchen.de>\n");
|
||||
|
||||
mach_sched_init = BSP_sched_init;
|
||||
mach_tick = BSP_tick;
|
||||
mach_gettimeoffset = BSP_gettimeoffset;
|
||||
mach_gettod = BSP_gettod;
|
||||
mach_sched_init = m68328_timer_init;
|
||||
mach_tick = m68328_timer_tick;
|
||||
mach_gettimeoffset = m68328_timer_gettimeoffset;
|
||||
mach_gettod = m68328_timer_gettod;
|
||||
mach_hwclk = NULL;
|
||||
mach_set_clock_mmss = NULL;
|
||||
mach_reset = BSP_reset;
|
||||
mach_reset = m68328_reset;
|
||||
*command = '\0';
|
||||
}
|
||||
|
||||
/***************************************************************************/
|
||||
|
|
Loading…
Reference in New Issue