Update of /cvsroot/alsa/alsa-driver/pci/au88x0
In directory sc8-pr-cvs1:/tmp/cvs-serv29604
Modified Files:
au88x0_game.c
Log Message:
- fixed compilation with 2.2 kernel.
- allow multiple gameport instances.
Index: au88x0_game.c
===================================================================
RCS file: /cvsroot/alsa/alsa-driver/pci/au88x0/au88x0_game.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- au88x0_game.c 6 Oct 2003 14:01:05 -0000 1.1
+++ au88x0_game.c 16 Oct 2003 11:51:22 -0000 1.2
@@ -41,20 +41,26 @@
#define VORTEX_GAME_DWAIT 20 /* 20 ms */
-static struct gameport gameport;
+struct au88x0_gameport {
+ struct gameport info;
+ vortex_t *chip;
+};
static unsigned char vortex_game_read(struct gameport *gameport) {
- vortex_t *vortex = gameport->driver;
+ struct au88x0_gameport *gp = (struct au88x0_gameport *)gameport;
+ vortex_t *vortex = gp->chip;
return hwread(vortex->mmio, VORTEX_GAME_LEGACY);
}
static void vortex_game_trigger(struct gameport *gameport) {
- vortex_t *vortex = gameport->driver;
+ struct au88x0_gameport *gp = (struct au88x0_gameport *)gameport;
+ vortex_t *vortex = gp->chip;
hwwrite(vortex->mmio, VORTEX_GAME_LEGACY, 0xff);
}
static int vortex_game_cooked_read(struct gameport *gameport, int *axes, int
*buttons) {
- vortex_t *vortex = gameport->driver;
+ struct au88x0_gameport *gp = (struct au88x0_gameport *)gameport;
+ vortex_t *vortex = gp->chip;
int i;
*buttons = (~hwread(vortex->mmio, VORTEX_GAME_LEGACY) >> 4) & 0xf;
@@ -67,7 +73,8 @@
}
static int vortex_game_open(struct gameport *gameport, int mode) {
- vortex_t *vortex = gameport->driver;
+ struct au88x0_gameport *gp = (struct au88x0_gameport *)gameport;
+ vortex_t *vortex = gp->chip;
switch (mode) {
case GAMEPORT_MODE_COOKED:
@@ -85,9 +92,15 @@
}
int vortex_gameport_register(vortex_t *vortex) {
- vortex->gameport = &gameport;
- vortex->gameport->driver = vortex;
+ struct au88x0_gameport *gp;
+ gp = kmalloc(sizeof(*gp), GFP_KERNEL);
+ if (! gp)
+ return -ENOMEM;
+ memset(gp, 0, sizeof(*gp));
+ gp->chip = vortex;
+
+ vortex->gameport = &gp->info;
vortex->gameport->fuzz = 64;
vortex->gameport->read = vortex_game_read;
@@ -95,7 +108,7 @@
vortex->gameport->cooked_read = vortex_game_cooked_read;
vortex->gameport->open = vortex_game_open;
- gameport_register_port((struct gameport *)vortex->gameport);
+ gameport_register_port(vortex->gameport);
/* printk(KERN_INFO "gameport%d: %s at speed %d kHz\n",
vortex->gameport->number, vortex->pci_dev->name,
vortex->gameport->speed);
@@ -104,8 +117,11 @@
}
int vortex_gameport_unregister(vortex_t *vortex) {
- if (vortex->gameport != NULL)
+ if (vortex->gameport != NULL) {
gameport_unregister_port(vortex->gameport);
+ kfree(vortex->gameport);
+ vortex->gameport = NULL;
+ }
return 0;
}
-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
SourceForge.net hosts over 70,000 Open Source Projects.
See the people who have HELPED US provide better services:
Click here: http://sourceforge.net/supporters.php
_______________________________________________
Alsa-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-cvslog