From: Albert H. <he...@us...> - 2006-05-17 22:15:34
|
Update of /cvsroot/gc-linux/linux/drivers/exi In directory sc8-pr-cvs11.sourceforge.net:/tmp/cvs-serv13454/drivers/exi Modified Files: exi-driver.c exi-hw.c Log Message: Added initial support for the Nintendo GameCube microphone (DOL-022). Small EXI and AI fixes. Index: exi-driver.c =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/exi/exi-driver.c,v retrieving revision 1.11 retrieving revision 1.12 diff -u -d -r1.11 -r1.12 --- exi-driver.c 7 Nov 2005 21:34:17 -0000 1.11 +++ exi-driver.c 17 May 2006 22:14:39 -0000 1.12 @@ -50,11 +50,12 @@ { .id = 0x00000080, .name = "Memory Card 2043" }, { .id = 0x01010000, .name = "USB Adapter" }, { .id = 0x01020000, .name = "NPDP GDEV" }, - { .id = 0x05070000, .name = "IS Viewer" }, - { .id = 0x04120000, .name = "AD16" }, - { .id = 0x03010000, .name = "Marlin?" }, { .id = 0x02020000, .name = "Modem" }, - { .id = 0x04020200, .name = "BroadBand Adapter" }, + { .id = 0x03010000, .name = "Marlin?" }, + { .id = 0x04020200, .name = "BroadBand Adapter (DOL-015)" }, + { .id = 0x04120000, .name = "AD16" }, + { .id = 0x05070000, .name = "IS Viewer" }, + { .id = 0x0a000000, .name = "Microphone (DOL-022)" }, { .id = 0 } }; Index: exi-hw.c =================================================================== RCS file: /cvsroot/gc-linux/linux/drivers/exi/exi-hw.c,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -r1.12 -r1.13 --- exi-hw.c 7 Nov 2005 21:34:17 -0000 1.12 +++ exi-hw.c 17 May 2006 22:14:39 -0000 1.13 @@ -1026,20 +1026,17 @@ struct exi_event *event; unsigned long flags; - event = &exi_channel->events[event_id]; - if (exi_can_trigger_event(event)) { - spin_lock_irqsave(&exi_channel->lock, flags); - if ((exi_channel->csr & csr_mask)) { + if ((exi_channel->csr & csr_mask)) { + event = &exi_channel->events[event_id]; + if (exi_can_trigger_event(event)) { + spin_lock_irqsave(&exi_channel->lock, flags); exi_channel->csr &= ~csr_mask; spin_unlock_irqrestore(&exi_channel->lock, flags); exi_trigger_event(exi_channel, event); exi_finish_event(event); - goto out; } - spin_unlock_irqrestore(&exi_channel->lock, flags); } -out: return; } @@ -1294,6 +1291,9 @@ exi_dev_deselect(exi_device); exi_dev_give(exi_device); + /* "canonicalize" the id */ + if (!id) + id = EXI_ID_INVALID; /* * We return a EXI_ID_NONE if there is some unidentified device * inserted in memcard slot A or memcard slot B. |