Update of /cvsroot/gc-linux/linux/arch/ppc/platforms
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29454/arch/ppc/platforms
Modified Files:
gamecube_pic.c
Log Message:
Rework ->get_irq() to:
- Use readl() instead of GAMECUBE_IN() (this'll be going away RSN).
- Use a (simpler) `for' loop to determine highest numbered IRQ
generating an interrupt.
- Remove debug printk's.
Index: gamecube_pic.c
===================================================================
RCS file: /cvsroot/gc-linux/linux/arch/ppc/platforms/gamecube_pic.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- gamecube_pic.c 25 Apr 2004 18:57:28 -0000 1.2
+++ gamecube_pic.c 1 May 2004 15:22:49 -0000 1.3
@@ -72,25 +72,16 @@
*/
int gamecube_get_irq(struct pt_regs *regs)
{
- int irq = 0;
+ int irq;
u_int irq_status, irq_test = 1;
- pr_debug("get_irq(): %x, %x\n", GAMECUBE_IN(GAMECUBE_PIIM),
- GAMECUBE_IN(GAMECUBE_PIIC));
- irq_status = GAMECUBE_IN(GAMECUBE_PIIC) & GAMECUBE_IN(GAMECUBE_PIIM);
-
- if (irq_status == 0) {
- pr_debug("GC-PIC: Received a spurious IRQ\n");
- return -1;
-/* while(1);*/
- }
+ irq_status = readl(GAMECUBE_PIIC) & readl(GAMECUBE_PIIM);
+ if (irq_status == 0)
+ return -1; /* no more IRQs pending */
- do {
+ for (irq = 0; irq < GAMECUBE_IRQS; irq++, irq_test <<= 1)
if (irq_status & irq_test)
break;
- irq++;
- irq_test <<= 1;
- } while (irq < GAMECUBE_IRQS);
return irq;
}
|