From: <mi...@pr...> - 2004-01-31 01:06:00
|
Update of /cvsroot/gc-linux/linux/arch/ppc/platforms In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29995/arch/ppc/platforms Modified Files: gamecube.c gc-rsw.c Log Message: interrupts seem to work now (reset code is tray-close code now :-)) Index: gamecube.c =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/ppc/platforms/gamecube.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- gamecube.c 30 Jan 2004 12:35:07 -0000 1.7 +++ gamecube.c 30 Jan 2004 14:03:07 -0000 1.8 @@ -29,25 +29,17 @@ static void gamecube_unmask_irq(unsigned int irq) { -printk("U%x",irq); - if (irq == 3) { - printk("X"); - while(1); - } - printk("\n"); - printk("GAMECUBE_PIIM = %x\n", GAMECUBE_IN(GAMECUBE_PIIM)); - printk("GAMECUBE_PIIC = %x\n", GAMECUBE_IN(GAMECUBE_PIIC)); - printk("out |= %x\n", (1 << irq)); + //printk("unmask(): %x, %x\n", GAMECUBE_IN(GAMECUBE_PIIM), GAMECUBE_IN(GAMECUBE_PIIC)); if (irq < GAMECUBE_IRQS) { GAMECUBE_OUT(GAMECUBE_PIIM, GAMECUBE_IN(GAMECUBE_PIIM) | (1 << irq)); - printk("GAMECUBE_PIIM = %x\n", GAMECUBE_IN(GAMECUBE_PIIM)); - printk("GAMECUBE_PIIC = %x\n", GAMECUBE_IN(GAMECUBE_PIIC)); } + //printk("after unmask(): %x, %x\n", GAMECUBE_IN(GAMECUBE_PIIM), GAMECUBE_IN(GAMECUBE_PIIC)); } static void gamecube_mask_irq(unsigned int irq) { + //printk("mask(): %x, %x\n", GAMECUBE_IN(GAMECUBE_PIIM), GAMECUBE_IN(GAMECUBE_PIIC)); if (irq < GAMECUBE_IRQS) { GAMECUBE_OUT(GAMECUBE_PIIM, GAMECUBE_IN(GAMECUBE_PIIM) & ~(1 << irq)); /* mask */ } @@ -56,11 +48,12 @@ static void gamecube_mask_and_ack_irq(unsigned int irq) { -printk("A%x\n", irq); + //printk("mask_and_ack(): %x, %x\n", GAMECUBE_IN(GAMECUBE_PIIM), GAMECUBE_IN(GAMECUBE_PIIC)); if (irq < GAMECUBE_IRQS) { GAMECUBE_OUT(GAMECUBE_PIIM, GAMECUBE_IN(GAMECUBE_PIIM) & ~(1 << irq)); /* mask */ GAMECUBE_OUT(GAMECUBE_PIIC, 1 << irq); /* ack */ } + //printk("after mask_and_ack(): %x, %x\n", GAMECUBE_IN(GAMECUBE_PIIM), GAMECUBE_IN(GAMECUBE_PIIC)); } static struct hw_interrupt_type gamecube_pic = { @@ -96,14 +89,13 @@ int irq = 0; u_int irq_status, irq_test = 1; - printk("GAMECUBE_PIIM = %x\n", GAMECUBE_IN(GAMECUBE_PIIM)); - printk("GAMECUBE_PIIC = %x\n", GAMECUBE_IN(GAMECUBE_PIIC)); + //printk("get_irq(): %x, %x\n", GAMECUBE_IN(GAMECUBE_PIIM), GAMECUBE_IN(GAMECUBE_PIIC)); irq_status = GAMECUBE_IN(GAMECUBE_PIIC) & GAMECUBE_IN(GAMECUBE_PIIM); - printk("irq_status = %x\n", irq_status); if(irq_status==0) { - printk("\nPanic: IRQ for no reason!\n\n\n\n\n\n"); - while(1); + return -1; + //printk("\nPanic: IRQ for no reason!\n\n\n\n\n\n"); + //while(1); } do { @@ -113,7 +105,6 @@ irq_test <<= 1; } while (irq < GAMECUBE_IRQS); -printk("f%x: \"%x\"",irq,irq_status); return irq; } Index: gc-rsw.c =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/ppc/platforms/gc-rsw.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- gc-rsw.c 30 Jan 2004 11:08:53 -0000 1.3 +++ gc-rsw.c 30 Jan 2004 14:03:07 -0000 1.4 @@ -29,11 +29,13 @@ #include <asm/irq.h> -#define RSW_IRQ 1 +#define RSW_IRQ 2 static irqreturn_t gc_rsw_handler(int this_irq, void *dev_id, struct pt_regs *regs) { - printk(KERN_ERR "gc_rsw: reset switch pressed\n"); + *(volatile int *)0xCC006004 |= 4; + printk(KERN_ERR "D"); + //printk(KERN_ERR "gc_rsw: reset switch pressed\n"); return IRQ_HANDLED; } @@ -45,6 +47,7 @@ } else { enable_irq(RSW_IRQ); } + *(volatile int *)0xCC006004 |= 2; return 0; } |