gamecon.c and PSX DDR controllers
PATCH 1/1 gamecon.c and PSX DDR controllers
PSX DDR controllers don't work with gamecon.c. I sent a quick fix for the crash-on-load to Vojtech a while ago, but didn't have time to really fix it until now, and it didn't actually make DDR controllers *work* (just load without an oops) so I can't blame him for ignoring it. :-)
It turns out that getting DDR controllers to function with gamecon is very simple -- we just forgot to check for them when looking in status_bit. Here's the three-line patch. Could someone get this into 2.6.10? Thanks a lot.
Signature · 2 lines
things change. [email protected]
gamecon.c renamed from gamecon.c~ +3 -3
@@ -89,7 +89,7 @@static int gc_status_bit[] = {0x40 ,0x80 ,0x20 ,0x10 ,0x08 };static char *gc_names[] = {NULL ,"SNES pad" ,"NES pad" ,"NES FourPort" ,"Multisystem joystick" , -"Multisystem 2-button joystick" ,"N64 controller" ,"PSX controller" +"Multisystem 2-button joystick" ,"N64 controller" ,"PSX controller" ,"PSX DDR controller" };/* * N64 support.
@@ -271,7 +271,7 @@udelay (gc_psx_delay); read =parport_read_status (gc->pd->port) ^0x80 ;for (j =0 ; j <5 ; j++) - data[j] |= (read & gc_status_bit[j] & gc->pads[GC_PSX ]) ? (1 << i) :0 ; + data[j] |= (read & gc_status_bit[j] & (gc->pads[GC_PSX ]|gc->pads[GC_DDR ])) ? (1 << i) :0 ;parport_write_data (gc->pd->port, cmd |GC_PSX_CLOCK |GC_PSX_POWER );udelay (gc_psx_delay); }
@@ -300,7 +300,7 @@gc_psx_command (gc,0 , data2);/* Dump status */ for (i =0 ; i <5 ; i++)/* Find the longest pad */ -if ((gc_status_bit[i] & gc->pads[GC_PSX ]) && (GC_PSX_LEN (id[i]) > max_len)) +if ((gc_status_bit[i] & (gc->pads[GC_PSX ]|gc->pads[GC_DDR ])) && (GC_PSX_LEN (id[i]) > max_len)) max_len =GC_PSX_LEN (id[i]);for (i =0 ; i < max_len *2 ; i++) {/* Read in all the data */