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