This commit was manufactured by cvs2svn to create tag
[linux-2.6.git] / sound / pci / rme96.c
index 8ab9ba8..a282795 100644 (file)
@@ -56,12 +56,13 @@ MODULE_SUPPORTED_DEVICE("{{RME,Digi96},"
 static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX;     /* Index 0-MAX */
 static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR;      /* ID for this card */
 static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP;     /* Enable this card */
+static int boot_devs;
 
-module_param_array(index, int, NULL, 0444);
+module_param_array(index, int, boot_devs, 0444);
 MODULE_PARM_DESC(index, "Index value for RME Digi96 soundcard.");
-module_param_array(id, charp, NULL, 0444);
+module_param_array(id, charp, boot_devs, 0444);
 MODULE_PARM_DESC(id, "ID string for RME Digi96 soundcard.");
-module_param_array(enable, bool, NULL, 0444);
+module_param_array(enable, bool, boot_devs, 0444);
 MODULE_PARM_DESC(enable, "Enable RME Digi96 soundcard.");
 
 /*
@@ -224,7 +225,7 @@ typedef struct snd_rme96 {
        spinlock_t    lock;
        int irq;
        unsigned long port;
-       void __iomem *iobase;
+       unsigned long iobase;
        
        u32 wcreg;    /* cached write control register value */
        u32 wcreg_spdif;                /* S/PDIF setup */
@@ -1546,14 +1547,13 @@ snd_rme96_free(void *private_data)
                rme96->irq = -1;
        }
        if (rme96->iobase) {
-               iounmap(rme96->iobase);
-               rme96->iobase = NULL;
+               iounmap((void *)rme96->iobase);
+               rme96->iobase = 0;
        }
        if (rme96->port) {
                pci_release_regions(rme96->pci);
                rme96->port = 0;
        }
-       pci_disable_device(rme96->pci);
 }
 
 static void
@@ -1592,7 +1592,7 @@ snd_rme96_create(rme96_t *rme96)
        }
        rme96->irq = pci->irq;
 
-       if ((rme96->iobase = ioremap_nocache(rme96->port, RME96_IO_SIZE)) == 0) {
+       if ((rme96->iobase = (unsigned long) ioremap_nocache(rme96->port, RME96_IO_SIZE)) == 0) {
                snd_printk("unable to remap memory region 0x%lx-0x%lx\n", rme96->port, rme96->port + RME96_IO_SIZE - 1);
                return -ENOMEM;
        }
@@ -1859,8 +1859,7 @@ snd_rme96_put_loopback_control(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t *
        spin_lock_irq(&rme96->lock);
        val = (rme96->wcreg & ~RME96_WCR_SEL) | val;
        change = val != rme96->wcreg;
-       rme96->wcreg = val;
-       writel(val, rme96->iobase + RME96_IO_CONTROL_REGISTER);
+       writel(rme96->wcreg = val, rme96->iobase + RME96_IO_CONTROL_REGISTER);
        spin_unlock_irq(&rme96->lock);
        return change;
 }
@@ -2178,8 +2177,7 @@ static int snd_rme96_control_spdif_stream_put(snd_kcontrol_t * kcontrol, snd_ctl
        change = val != rme96->wcreg_spdif_stream;
        rme96->wcreg_spdif_stream = val;
        rme96->wcreg &= ~(RME96_WCR_PRO | RME96_WCR_DOLBY | RME96_WCR_EMP);
-       rme96->wcreg |= val;
-       writel(rme96->wcreg, rme96->iobase + RME96_IO_CONTROL_REGISTER);
+       writel(rme96->wcreg |= val, rme96->iobase + RME96_IO_CONTROL_REGISTER);
        spin_unlock_irq(&rme96->lock);
        return change;
 }