X-Git-Url: https://git.openpandora.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=arch%2Fm68knommu%2Fplatform%2F68360%2Fconfig.c;h=9dd5bca387494d33ec87259382c7d9a134f928a7;hb=27d2a8b97ebc4467e47722415b81ebe72d5f654f;hp=4ff13bd51ffd0e536e06e3f176ad9a18b5c7d2e4;hpb=e0cc09e295f346b7921e921f385fe5213472316a;p=pandora-kernel.git diff --git a/arch/m68knommu/platform/68360/config.c b/arch/m68knommu/platform/68360/config.c index 4ff13bd51ffd..9dd5bca38749 100644 --- a/arch/m68knommu/platform/68360/config.c +++ b/arch/m68knommu/platform/68360/config.c @@ -14,14 +14,12 @@ #include #include #include -#include -#include #include +#include #include #include #include -#include #include #include @@ -40,8 +38,6 @@ extern void m360_cpm_reset(void); unsigned long int system_clock; -void M68360_init_IRQ(void); - extern QUICC *pquicc; /* TODO DON"T Hard Code this */ @@ -49,13 +45,27 @@ extern QUICC *pquicc; // unsigned int system_clock = 33000000l; extern unsigned long int system_clock; //In kernel setup.c -extern void config_M68360_irq(void); -void BSP_sched_init(irq_handler_t timer_routine) +static irqreturn_t hw_tick(int irq, void *dummy) +{ + /* Reset Timer1 */ + /* TSTAT &= 0; */ + + pquicc->timer_ter1 = 0x0002; /* clear timer event */ + + return arch_timer_interrupt(irq, dummy); +} + +static struct irqaction m68360_timer_irq = { + .name = "timer", + .flags = IRQF_DISABLED | IRQF_TIMER, + .handler = hw_tick, +}; + +void hw_timer_init(void) { unsigned char prescaler; unsigned short tgcr_save; - int return_value; #if 0 /* Restart mode, Enable int, 32KHz, Enable timer */ @@ -65,7 +75,7 @@ void BSP_sched_init(irq_handler_t timer_routine) /* Set compare register 32Khz / 32 / 10 = 100 */ TCMP = 10; - request_irq(IRQ_MACHSPEC | 1, timer_routine, IRQ_FLG_LOCK, "timer", NULL); + request_irq(IRQ_MACHSPEC | 1, timer_routine, 0, "timer", NULL); #endif /* General purpose quicc timers: MC68360UM p7-20 */ @@ -86,46 +96,19 @@ void BSP_sched_init(irq_handler_t timer_routine) pquicc->timer_ter1 = 0x0003; /* clear timer events */ /* enable timer 1 interrupt in CIMR */ -// request_irq(IRQ_MACHSPEC | CPMVEC_TIMER1, timer_routine, IRQ_FLG_LOCK, "timer", NULL); - //return_value = request_irq( CPMVEC_TIMER1, timer_routine, IRQ_FLG_LOCK, "timer", NULL); - return_value = request_irq(CPMVEC_TIMER1 , timer_routine, IRQ_FLG_LOCK, - "Timer", NULL); + setup_irq(CPMVEC_TIMER1, &m68360_timer_irq); /* Start timer 1: */ tgcr_save = (pquicc->timer_tgcr & 0xfff0) | 0x0001; pquicc->timer_tgcr = tgcr_save; } - -void BSP_tick(void) -{ - /* Reset Timer1 */ - /* TSTAT &= 0; */ - - pquicc->timer_ter1 = 0x0002; /* clear timer event */ -} - -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 rtc_time *t) -{ - if (!op) { - /* read */ - } else { - /* write */ - } - return 0; -} - -int BSP_set_clock_mmss (unsigned long nowtime) +int BSP_set_clock_mmss(unsigned long nowtime) { #if 0 short real_seconds = nowtime % 60, real_minutes = (nowtime / 60) % 60; @@ -198,11 +181,6 @@ void config_BSP(char *command, int len) scc1_hwaddr = "\00\01\02\03\04\05"; #endif - mach_sched_init = BSP_sched_init; - mach_tick = BSP_tick; - mach_gettimeoffset = BSP_gettimeoffset; mach_gettod = BSP_gettod; - mach_hwclk = NULL; - mach_set_clock_mmss = NULL; mach_reset = BSP_reset; }