patch-2.4.0-test7 linux/drivers/char/joystick/gamecon.c

Next file: linux/drivers/char/joystick/iforce.c
Previous file: linux/drivers/char/joystick/db9.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.4.0-test6/linux/drivers/char/joystick/gamecon.c linux/drivers/char/joystick/gamecon.c
@@ -1,5 +1,5 @@
 /*
- * $Id: gamecon.c,v 1.4 2000/05/29 21:08:45 vojtech Exp $
+ * $Id: gamecon.c,v 1.5 2000/06/25 09:56:58 vojtech Exp $
  *
  *  Copyright (c) 1999-2000 Vojtech Pavlik
  *
@@ -157,7 +157,7 @@
 
 static unsigned char gc_nes_bytes[] = { 0, 1, 2, 3 };
 static unsigned char gc_snes_bytes[] = { 8, 0, 2, 3, 9, 1, 10, 11 };
-static short gc_snes_btn[] = { BTN_A, BTN_B, BTN_START, BTN_SELECT, BTN_X, BTN_Y, BTN_TL, BTN_TR };
+static short gc_snes_btn[] = { BTN_A, BTN_B, BTN_SELECT, BTN_START, BTN_X, BTN_Y, BTN_TL, BTN_TR };
 
 /*
  * gc_nes_read_packet() reads a NES/SNES packet.
@@ -515,7 +515,7 @@
 
 			case GC_N64:
 				for (j = 0; j < 10; j++)
-					set_bit(gc_n64_btn[j], gc->dev[j].keybit);
+					set_bit(gc_n64_btn[j], gc->dev[i].keybit);
 
 				for (j = 0; j < 2; j++) {
 					set_bit(ABS_X + j, gc->dev[i].absbit);
@@ -530,18 +530,15 @@
 				break;
 
 			case GC_SNES:
-				for (j = 0; j < 8; j++)
-					set_bit(gc_snes_btn[j], gc->dev[j].keybit);
-				break;
-
+				for (j = 4; j < 8; j++)
+					set_bit(gc_snes_btn[j], gc->dev[i].keybit);
 			case GC_NES:
 				for (j = 0; j < 4; j++)
-					set_bit(gc_snes_btn[j], gc->dev[j].keybit);
+					set_bit(gc_snes_btn[j], gc->dev[i].keybit);
 				break;
 
 			case GC_MULTI2:
 				set_bit(BTN_THUMB, gc->dev[i].keybit);
-
 			case GC_MULTI:
 				set_bit(BTN_TRIGGER, gc->dev[i].keybit);
 				break;
@@ -656,12 +653,13 @@
 {
 	int i, j;
 
-	for (i = 0; i < 3; i++)  {
-		for (j = 0; j < 5; j++) 
-			if (gc_base[i]->pads[0] & gc_status_bit[j])
-				input_unregister_device(gc_base[i]->dev + j);
-		parport_unregister_device(gc_base[i]->pd);
-	}
+	for (i = 0; i < 3; i++)
+		if (gc_base[i]) {
+			for (j = 0; j < 5; j++)
+				if (gc_base[i]->pads[0] & gc_status_bit[j])
+					input_unregister_device(gc_base[i]->dev + j); 
+			parport_unregister_device(gc_base[i]->pd);
+		}
 }
 
 module_init(gc_init);

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)