[PATCH] m68knommu: extract common timer code for 68EZ328 processor
Rework the 68x328 configuration and setup code. All 68x328 varients 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
d9b9d5ddb8
commit
03981f2427
|
@ -1,5 +1,7 @@
|
||||||
|
/***************************************************************************/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* linux/arch/$(ARCH)/platform/$(PLATFORM)/config.c
|
* linux/arch/m68knommu/platform/68EZ328/config.c
|
||||||
*
|
*
|
||||||
* Copyright (C) 1993 Hamish Macdonald
|
* Copyright (C) 1993 Hamish Macdonald
|
||||||
* Copyright (C) 1999 D. Jeff Dionne
|
* Copyright (C) 1999 D. Jeff Dionne
|
||||||
|
@ -9,6 +11,8 @@
|
||||||
* for more details.
|
* for more details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/***************************************************************************/
|
||||||
|
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <linux/config.h>
|
#include <linux/config.h>
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
|
@ -20,68 +24,22 @@
|
||||||
#include <asm/setup.h>
|
#include <asm/setup.h>
|
||||||
#include <asm/system.h>
|
#include <asm/system.h>
|
||||||
#include <asm/pgtable.h>
|
#include <asm/pgtable.h>
|
||||||
#include <asm/irq.h>
|
|
||||||
#include <asm/machdep.h>
|
#include <asm/machdep.h>
|
||||||
#include <asm/MC68EZ328.h>
|
#include <asm/MC68EZ328.h>
|
||||||
#ifdef CONFIG_UCSIMM
|
#ifdef CONFIG_UCSIMM
|
||||||
#include <asm/bootstd.h>
|
#include <asm/bootstd.h>
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_PILOT
|
|
||||||
#include "PalmV/romfs.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void BSP_sched_init(void (*timer_routine)(int, void *, struct pt_regs *))
|
/***************************************************************************/
|
||||||
{
|
|
||||||
/* Restart mode, Enable int, 32KHz, Enable timer */
|
|
||||||
TCTL = TCTL_OM | TCTL_IRQEN | TCTL_CLKSOURCE_32KHZ | TCTL_TEN;
|
|
||||||
/* Set prescaler (Divide 32KHz by 32)*/
|
|
||||||
TPRER = 31;
|
|
||||||
/* Set compare register 32Khz / 32 / 10 = 100 */
|
|
||||||
TCMP = 10;
|
|
||||||
|
|
||||||
request_irq(TMR_IRQ_NUM, timer_routine, IRQ_FLG_LOCK, "timer", NULL);
|
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);
|
||||||
|
|
||||||
void BSP_tick(void)
|
/***************************************************************************/
|
||||||
{
|
|
||||||
/* Reset Timer1 */
|
|
||||||
TSTAT &= 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
unsigned long BSP_gettimeoffset (void)
|
void m68ez328_reset(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)
|
|
||||||
{
|
{
|
||||||
local_irq_disable();
|
local_irq_disable();
|
||||||
asm volatile ("
|
asm volatile ("
|
||||||
|
@ -93,6 +51,8 @@ void BSP_reset (void)
|
||||||
");
|
");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/***************************************************************************/
|
||||||
|
|
||||||
unsigned char *cs8900a_hwaddr;
|
unsigned char *cs8900a_hwaddr;
|
||||||
static int errno;
|
static int errno;
|
||||||
|
|
||||||
|
@ -119,11 +79,13 @@ void config_BSP(char *command, int len)
|
||||||
else command[0] = 0;
|
else command[0] = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
mach_sched_init = BSP_sched_init;
|
mach_sched_init = m68328_timer_init;
|
||||||
mach_tick = BSP_tick;
|
mach_tick = m68328_timer_tick;
|
||||||
mach_gettimeoffset = BSP_gettimeoffset;
|
mach_gettimeoffset = m68328_timer_gettimeoffset;
|
||||||
mach_gettod = BSP_gettod;
|
mach_gettod = m68328_timer_gettod;
|
||||||
mach_hwclk = NULL;
|
mach_hwclk = NULL;
|
||||||
mach_set_clock_mmss = NULL;
|
mach_set_clock_mmss = NULL;
|
||||||
mach_reset = BSP_reset;
|
mach_reset = m68ez328_reset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/***************************************************************************/
|
||||||
|
|
Loading…
Reference in a new issue