Skip to content

Commit

Permalink
[PATCH] m68knommu: extract common timer code for 68EZ328 processor
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Greg Ungerer authored and Linus Torvalds committed Sep 9, 2005
1 parent d9b9d5d commit 03981f2
Showing 1 changed file with 21 additions and 59 deletions.
80 changes: 21 additions & 59 deletions arch/m68knommu/platform/68EZ328/config.c
Original file line number Diff line number Diff line change
@@ -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) 1999 D. Jeff Dionne
Expand All @@ -9,6 +11,8 @@
* for more details.
*/

/***************************************************************************/

#include <stdarg.h>
#include <linux/config.h>
#include <linux/types.h>
Expand All @@ -20,68 +24,22 @@
#include <asm/setup.h>
#include <asm/system.h>
#include <asm/pgtable.h>
#include <asm/irq.h>
#include <asm/machdep.h>
#include <asm/MC68EZ328.h>
#ifdef CONFIG_UCSIMM
#include <asm/bootstd.h>
#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 BSP_tick(void)
{
/* Reset Timer1 */
TSTAT &= 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;
}
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);

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 m68ez328_reset(void)
{
local_irq_disable();
asm volatile ("
Expand All @@ -93,6 +51,8 @@ void BSP_reset (void)
");
}

/***************************************************************************/

unsigned char *cs8900a_hwaddr;
static int errno;

Expand All @@ -119,11 +79,13 @@ void config_BSP(char *command, int len)
else command[0] = 0;
#endif

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 = m68ez328_reset;
}

/***************************************************************************/

0 comments on commit 03981f2

Please sign in to comment.