X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fm68k%2Fapollo%2Fconfig.c;h=cb8e7609df4c1308ef105864d88030a318ff0634;hb=refs%2Fheads%2Fvserver;hp=3e96cb6eef43a4e8a6a87fcde417beadc64e0afb;hpb=5273a3df6485dc2ad6aa7ddd441b9a21970f003b;p=linux-2.6.git diff --git a/arch/m68k/apollo/config.c b/arch/m68k/apollo/config.c index 3e96cb6ee..cb8e7609d 100644 --- a/arch/m68k/apollo/config.c +++ b/arch/m68k/apollo/config.c @@ -1,4 +1,3 @@ -#include #include #include #include @@ -26,13 +25,8 @@ u_long cpuctrl_physaddr; u_long timer_physaddr; u_long apollo_model; -extern void dn_sched_init(irqreturn_t (*handler)(int,void *,struct pt_regs *)); +extern void dn_sched_init(irq_handler_t handler); extern void dn_init_IRQ(void); -extern int dn_request_irq(unsigned int irq, irqreturn_t (*handler)(int, void *, struct pt_regs *), unsigned long flags, const char *devname, void *dev_id); -extern void dn_free_irq(unsigned int irq, void *dev_id); -extern void dn_enable_irq(unsigned int); -extern void dn_disable_irq(unsigned int); -extern int show_dn_interrupts(struct seq_file *, void *); extern unsigned long dn_gettimeoffset(void); extern int dn_dummy_hwclk(int, struct rtc_time *); extern int dn_dummy_set_clock_mmss(unsigned long); @@ -40,13 +34,11 @@ extern void dn_dummy_reset(void); extern void dn_dummy_waitbut(void); extern struct fb_info *dn_fb_init(long *); extern void dn_dummy_debug_init(void); -extern void dn_dummy_video_setup(char *,int *); extern irqreturn_t dn_process_int(int irq, struct pt_regs *fp); #ifdef CONFIG_HEARTBEAT static void dn_heartbeat(int on); #endif -static irqreturn_t dn_timer_int(int irq,void *, struct pt_regs *); -static irqreturn_t (*sched_timer_handler)(int, void *, struct pt_regs *)=NULL; +static irqreturn_t dn_timer_int(int irq,void *); static void dn_get_model(char *model); static const char *apollo_models[] = { [APOLLO_DN3000-APOLLO_DN3000] = "DN3000 (Otter)", @@ -62,19 +54,19 @@ int apollo_parse_bootinfo(const struct bi_record *record) { const unsigned long *data = record->data; switch(record->tag) { - case BI_APOLLO_MODEL: - apollo_model=*data; + case BI_APOLLO_MODEL: + apollo_model=*data; break; default: unknown=1; } - + return unknown; } void dn_setup_model(void) { - + printk("Apollo hardware found: "); printk("[%s]\n", apollo_models[apollo_model - APOLLO_DN3000]); @@ -85,19 +77,19 @@ void dn_setup_model(void) { break; case APOLLO_DN3000: case APOLLO_DN3010: - sio01_physaddr=SAU8_SIO01_PHYSADDR; - rtc_physaddr=SAU8_RTC_PHYSADDR; - pica_physaddr=SAU8_PICA; - picb_physaddr=SAU8_PICB; + sio01_physaddr=SAU8_SIO01_PHYSADDR; + rtc_physaddr=SAU8_RTC_PHYSADDR; + pica_physaddr=SAU8_PICA; + picb_physaddr=SAU8_PICB; cpuctrl_physaddr=SAU8_CPUCTRL; timer_physaddr=SAU8_TIMER; break; case APOLLO_DN4000: - sio01_physaddr=SAU7_SIO01_PHYSADDR; - sio23_physaddr=SAU7_SIO23_PHYSADDR; - rtc_physaddr=SAU7_RTC_PHYSADDR; - pica_physaddr=SAU7_PICA; - picb_physaddr=SAU7_PICB; + sio01_physaddr=SAU7_SIO01_PHYSADDR; + sio23_physaddr=SAU7_SIO23_PHYSADDR; + rtc_physaddr=SAU7_RTC_PHYSADDR; + pica_physaddr=SAU7_PICA; + picb_physaddr=SAU7_PICB; cpuctrl_physaddr=SAU7_CPUCTRL; timer_physaddr=SAU7_TIMER; break; @@ -105,11 +97,11 @@ void dn_setup_model(void) { panic("Apollo model not yet supported"); break; case APOLLO_DN3500: - sio01_physaddr=SAU7_SIO01_PHYSADDR; - sio23_physaddr=SAU7_SIO23_PHYSADDR; - rtc_physaddr=SAU7_RTC_PHYSADDR; - pica_physaddr=SAU7_PICA; - picb_physaddr=SAU7_PICB; + sio01_physaddr=SAU7_SIO01_PHYSADDR; + sio23_physaddr=SAU7_SIO23_PHYSADDR; + rtc_physaddr=SAU7_RTC_PHYSADDR; + pica_physaddr=SAU7_PICA; + picb_physaddr=SAU7_PICB; cpuctrl_physaddr=SAU7_CPUCTRL; timer_physaddr=SAU7_TIMER; break; @@ -131,17 +123,17 @@ int dn_serial_console_wait_key(struct console *co) { void dn_serial_console_write (struct console *co, const char *str,unsigned int count) { while(count--) { - if (*str == '\n') { - sio01.rhrb_thrb = (unsigned char)'\r'; - while (!(sio01.srb_csrb & 0x4)) + if (*str == '\n') { + sio01.rhrb_thrb = (unsigned char)'\r'; + while (!(sio01.srb_csrb & 0x4)) ; - } + } sio01.rhrb_thrb = (unsigned char)*str++; while (!(sio01.srb_csrb & 0x4)) ; - } + } } - + void dn_serial_print (const char *str) { while (*str) { @@ -160,53 +152,45 @@ void config_apollo(void) { int i; - dn_setup_model(); + dn_setup_model(); mach_sched_init=dn_sched_init; /* */ mach_init_IRQ=dn_init_IRQ; - mach_default_handler=NULL; - mach_request_irq = dn_request_irq; - mach_free_irq = dn_free_irq; - enable_irq = dn_enable_irq; - disable_irq = dn_disable_irq; - mach_get_irq_list = show_dn_interrupts; mach_gettimeoffset = dn_gettimeoffset; mach_max_dma_address = 0xffffffff; mach_hwclk = dn_dummy_hwclk; /* */ mach_set_clock_mmss = dn_dummy_set_clock_mmss; /* */ - mach_process_int = dn_process_int; mach_reset = dn_dummy_reset; /* */ -#ifdef CONFIG_DUMMY_CONSOLE - conswitchp = &dummy_con; -#endif #ifdef CONFIG_HEARTBEAT - mach_heartbeat = dn_heartbeat; + mach_heartbeat = dn_heartbeat; #endif mach_get_model = dn_get_model; cpuctrl=0xaa00; /* clear DMA translation table */ - for(i=0;i<0x400;i++) + for(i=0;i<0x400;i++) addr_xlat_map[i]=0; -} +} -irqreturn_t dn_timer_int(int irq, void *dev_id, struct pt_regs *fp) { +irqreturn_t dn_timer_int(int irq, void *dev_id) +{ + irq_handler_t timer_handler = dev_id; volatile unsigned char x; - sched_timer_handler(irq,dev_id,fp); - + timer_handler(irq, dev_id); + x=*(volatile unsigned char *)(timer+3); x=*(volatile unsigned char *)(timer+5); return IRQ_HANDLED; } -void dn_sched_init(irqreturn_t (*timer_routine)(int, void *, struct pt_regs *)) { - - /* program timer 1 */ +void dn_sched_init(irq_handler_t timer_routine) +{ + /* program timer 1 */ *(volatile unsigned char *)(timer+3)=0x01; *(volatile unsigned char *)(timer+1)=0x40; *(volatile unsigned char *)(timer+5)=0x09; @@ -220,9 +204,7 @@ void dn_sched_init(irqreturn_t (*timer_routine)(int, void *, struct pt_regs *)) printk("*(0x10803) %02x\n",*(volatile unsigned char *)(timer+0x3)); #endif - sched_timer_handler=timer_routine; - request_irq(0,dn_timer_int,0,NULL,NULL); - + request_irq(IRQ_APOLLO, dn_timer_int, 0, "time", timer_routine); } unsigned long dn_gettimeoffset(void) { @@ -272,7 +254,7 @@ void dn_dummy_reset(void) { for(;;); } - + void dn_dummy_waitbut(void) { dn_serial_print("waitbut\n"); @@ -291,7 +273,7 @@ static int dn_cpuctrl=0xff00; static void dn_heartbeat(int on) { - if(on) { + if(on) { dn_cpuctrl&=~0x100; cpuctrl=dn_cpuctrl; }