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

Reply via email to