Update of /cvsroot/gc-linux/linux/arch/ppc/platforms
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8670/arch/ppc/platforms
Modified Files:
gc-dvdcover.c
Log Message:
- Don't re-enable an IRQ we didn't disable in the first place; from dmesg:
"enable_irq(2) unbalanced"
- Whitespace fixups.
Index: gc-dvdcover.c
===================================================================
RCS file: /cvsroot/gc-linux/linux/arch/ppc/platforms/gc-dvdcover.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- gc-dvdcover.c 3 Jun 2004 15:19:44 -0000 1.3
+++ gc-dvdcover.c 16 Jun 2004 15:32:36 -0000 1.4
@@ -30,7 +30,6 @@
#include <linux/interrupt.h>
#include <asm/io.h>
-#include <asm/irq.h>
#define DVD_IRQ 2
@@ -60,28 +59,27 @@
static int gc_dvdcover_init(void)
{
- unsigned long outval;
+ unsigned long outval;
+ int err;
- /* clear pending DI interrupts and mask new ones */
- /* this prevents an annoying bug while we lack a complete DVD driver */
- outval = GC_DI_DISR_BRKINT | GC_DI_DISR_TCINT |
- GC_DI_DISR_DEINT;
- outval &= ~(GC_DI_DISR_BRKINTMASK | GC_DI_DISR_TCINTMASK |
- GC_DI_DISR_DEINTMASK);
- writel(outval, GC_DI_DISR);
+ /* clear pending DI interrupts and mask new ones */
+ /* this prevents an annoying bug while we lack a complete DVD driver */
+ outval = GC_DI_DISR_BRKINT | GC_DI_DISR_TCINT | GC_DI_DISR_DEINT;
+ outval &= ~(GC_DI_DISR_BRKINTMASK | GC_DI_DISR_TCINTMASK |
+ GC_DI_DISR_DEINTMASK);
+ writel(outval, GC_DI_DISR);
+
+ err = request_irq(DVD_IRQ, gc_dvdcover_handler, 0, "GameCube DVD Cover", 0);
+ if (err)
+ return err;
+
+ writel(readl(GAMECUBE_DICVR) | 2, GAMECUBE_DICVR);
- if (request_irq(DVD_IRQ, gc_dvdcover_handler, 0, "GameCube DVD Cover", 0) < 0) {
- printk(KERN_ERR "gc_dvdcover: Request irq%d failed\n", DVD_IRQ);
- } else {
- enable_irq(DVD_IRQ);
- writel(readl(GAMECUBE_DICVR) | 2, GAMECUBE_DICVR);
- }
return 0;
}
static void gc_dvdcover_exit(void)
{
- disable_irq(DVD_IRQ);
free_irq(DVD_IRQ, 0);
}
|