From: Dave A. <ai...@us...> - 2001-11-11 22:43:28
|
Update of /cvsroot/linux-vax/kernel-2.4/drivers/vsbus In directory usw-pr-cvs1:/tmp/cvs-serv558 Modified Files: vsbus.c Log Message: DA: vsbus changes for 4000/60... need testing on 3100/m38 Index: vsbus.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/drivers/vsbus/vsbus.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- vsbus.c 2001/09/16 15:13:09 1.5 +++ vsbus.c 2001/11/11 22:43:25 1.6 @@ -27,26 +27,27 @@ unsigned long irqs; sys_vs.vs_cpu_ptr=(void *)ioremap(VSA_BASE_REGS, 128); - + sys_vs.vs_mask=sys_vs.vs_cpu_ptr->vc_intreq; + printk("vsbus: interrupt mask %x\n", sys_vs.vs_mask); irqs=probe_irq_on(); sys_vs.vs_cpu_ptr->vc_intmsk=0; sys_vs.vs_cpu_ptr->vc_intclr=0xFF; // printk("vsbus: Getting Interrupt Mask\n"); - udelay(100000); + mdelay(1); sys_vs.vs_mask=sys_vs.vs_cpu_ptr->vc_intreq; - sys_vs.vs_cpu_ptr->vc_intmsk=0; /*~sys_vs.vs_mask;*/ + /* switch off all interrupts for now */ + sys_vs.vs_cpu_ptr->vc_intmsk=0; /*~sys_vs.vs_mask;*/ probe_irq_off(irqs); printk("vsbus: interrupt mask %x\n", sys_vs.vs_mask); - return 0; } int vsbus_enable_int(int bit_nr) { sys_vs.vs_cpu_ptr->vc_intmsk|=1<<bit_nr; - + sys_vs.vs_enabled |= 1<< bit_nr; return 0; } @@ -60,24 +61,26 @@ int vsbus_disable_int(int bit_nr) { sys_vs.vs_cpu_ptr->vc_intmsk&=~(1<<bit_nr); + sys_vs.vs_enabled &= ~(1<<bit_nr); return 0; } int vsbus_probe_irq_on(void) { printk("vsbus: probing set mask ~%2X\n", sys_vs.vs_mask); - sys_vs.vs_cpu_ptr->vc_intmsk = sys_vs.vs_mask; + sys_vs.vs_cpu_ptr->vc_intmsk = 0; //~sys_vs.vs_mask; sys_vs.vs_cpu_ptr->vc_intclr=0xff; return 0; } unsigned char vsbus_probe_irq_report(void) { - unsigned char x, y; - + unsigned char x, y; + x=sys_vs.vs_cpu_ptr->vc_intreq; y = x & ~sys_vs.vs_mask; printk("vsbus: probe returning %2X, %2X\n", x, ffs(y)); + sys_vs.vs_cpu_ptr->vc_intmsk = sys_vs.vs_enabled; return ffs(y)-1; } |