Commit 453e37b3 authored by Krzysztof Helt's avatar Krzysztof Helt Committed by Takashi Iwai

ALSA: sscape: drop redundant fields from soundscape struct

The wss_base is disuised parameter for one function.
It is converted to function parameter.

The code_type is only set but never read.
It is removed.

The midi_vol is set only to 0 so it does not work
as detection of change in midi volume. It is fixed.

The xport variable is alias to the port[dev]. Use
the port[dev] directly to increase readability.
Signed-off-by: default avatarKrzysztof Helt <krzysztof.h1@wp.pl>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 56305757
...@@ -135,8 +135,6 @@ enum card_type { ...@@ -135,8 +135,6 @@ enum card_type {
struct soundscape { struct soundscape {
spinlock_t lock; spinlock_t lock;
unsigned io_base; unsigned io_base;
unsigned wss_base;
int codec_type;
int ic_type; int ic_type;
enum card_type type; enum card_type type;
struct resource *io_res; struct resource *io_res;
...@@ -726,13 +724,7 @@ static int sscape_midi_get(struct snd_kcontrol *kctl, ...@@ -726,13 +724,7 @@ static int sscape_midi_get(struct snd_kcontrol *kctl,
unsigned long flags; unsigned long flags;
spin_lock_irqsave(&s->lock, flags); spin_lock_irqsave(&s->lock, flags);
set_host_mode_unsafe(s->io_base); uctl->value.integer.value[0] = s->midi_vol;
if (host_write_ctrl_unsafe(s->io_base, CMD_GET_MIDI_VOL, 100)) {
uctl->value.integer.value[0] = host_read_ctrl_unsafe(s->io_base, 100);
}
set_midi_mode_unsafe(s->io_base);
spin_unlock_irqrestore(&s->lock, flags); spin_unlock_irqrestore(&s->lock, flags);
return 0; return 0;
} }
...@@ -767,6 +759,7 @@ static int sscape_midi_put(struct snd_kcontrol *kctl, ...@@ -767,6 +759,7 @@ static int sscape_midi_put(struct snd_kcontrol *kctl,
change = (host_write_ctrl_unsafe(s->io_base, CMD_SET_MIDI_VOL, 100) change = (host_write_ctrl_unsafe(s->io_base, CMD_SET_MIDI_VOL, 100)
&& host_write_ctrl_unsafe(s->io_base, ((unsigned char) uctl->value.integer. value[0]) & 127, 100) && host_write_ctrl_unsafe(s->io_base, ((unsigned char) uctl->value.integer. value[0]) & 127, 100)
&& host_write_ctrl_unsafe(s->io_base, CMD_XXX_MIDI_VOL, 100)); && host_write_ctrl_unsafe(s->io_base, CMD_XXX_MIDI_VOL, 100));
s->midi_vol = (unsigned char) uctl->value.integer.value[0] & 127;
__skip_change: __skip_change:
/* /*
...@@ -809,12 +802,11 @@ static unsigned __devinit get_irq_config(int irq) ...@@ -809,12 +802,11 @@ static unsigned __devinit get_irq_config(int irq)
* Perform certain arcane port-checks to see whether there * Perform certain arcane port-checks to see whether there
* is a SoundScape board lurking behind the given ports. * is a SoundScape board lurking behind the given ports.
*/ */
static int __devinit detect_sscape(struct soundscape *s) static int __devinit detect_sscape(struct soundscape *s, long wss_io)
{ {
unsigned long flags; unsigned long flags;
unsigned d; unsigned d;
int retval = 0; int retval = 0;
int codec = s->wss_base;
spin_lock_irqsave(&s->lock, flags); spin_lock_irqsave(&s->lock, flags);
...@@ -830,13 +822,11 @@ static int __devinit detect_sscape(struct soundscape *s) ...@@ -830,13 +822,11 @@ static int __devinit detect_sscape(struct soundscape *s)
if ((d & 0x80) != 0) if ((d & 0x80) != 0)
goto _done; goto _done;
if (d == 0) { if (d == 0)
s->codec_type = 1;
s->ic_type = IC_ODIE; s->ic_type = IC_ODIE;
} else if ((d & 0x60) != 0) { else if ((d & 0x60) != 0)
s->codec_type = 2;
s->ic_type = IC_OPUS; s->ic_type = IC_OPUS;
} else else
goto _done; goto _done;
outb(0xfa, ODIE_ADDR_IO(s->io_base)); outb(0xfa, ODIE_ADDR_IO(s->io_base));
...@@ -856,10 +846,10 @@ static int __devinit detect_sscape(struct soundscape *s) ...@@ -856,10 +846,10 @@ static int __devinit detect_sscape(struct soundscape *s)
sscape_write_unsafe(s->io_base, GA_HMCTL_REG, d | 0xc0); sscape_write_unsafe(s->io_base, GA_HMCTL_REG, d | 0xc0);
if (s->type == SSCAPE_VIVO) if (s->type == SSCAPE_VIVO)
codec += 4; wss_io += 4;
/* wait for WSS codec */ /* wait for WSS codec */
for (d = 0; d < 500; d++) { for (d = 0; d < 500; d++) {
if ((inb(codec) & 0x80) == 0) if ((inb(wss_io) & 0x80) == 0)
break; break;
spin_unlock_irqrestore(&s->lock, flags); spin_unlock_irqrestore(&s->lock, flags);
msleep(1); msleep(1);
...@@ -1057,7 +1047,6 @@ static int __devinit create_sscape(int dev, struct snd_card *card) ...@@ -1057,7 +1047,6 @@ static int __devinit create_sscape(int dev, struct snd_card *card)
unsigned dma_cfg; unsigned dma_cfg;
unsigned irq_cfg; unsigned irq_cfg;
unsigned mpu_irq_cfg; unsigned mpu_irq_cfg;
unsigned xport;
struct resource *io_res; struct resource *io_res;
struct resource *wss_res; struct resource *wss_res;
unsigned long flags; unsigned long flags;
...@@ -1077,15 +1066,15 @@ static int __devinit create_sscape(int dev, struct snd_card *card) ...@@ -1077,15 +1066,15 @@ static int __devinit create_sscape(int dev, struct snd_card *card)
printk(KERN_ERR "sscape: Invalid IRQ %d\n", mpu_irq[dev]); printk(KERN_ERR "sscape: Invalid IRQ %d\n", mpu_irq[dev]);
return -ENXIO; return -ENXIO;
} }
xport = port[dev];
/* /*
* Grab IO ports that we will need to probe so that we * Grab IO ports that we will need to probe so that we
* can detect and control this hardware ... * can detect and control this hardware ...
*/ */
io_res = request_region(xport, 8, "SoundScape"); io_res = request_region(port[dev], 8, "SoundScape");
if (!io_res) { if (!io_res) {
snd_printk(KERN_ERR "sscape: can't grab port 0x%x\n", xport); snd_printk(KERN_ERR
"sscape: can't grab port 0x%lx\n", port[dev]);
return -EBUSY; return -EBUSY;
} }
wss_res = NULL; wss_res = NULL;
...@@ -1112,10 +1101,9 @@ static int __devinit create_sscape(int dev, struct snd_card *card) ...@@ -1112,10 +1101,9 @@ static int __devinit create_sscape(int dev, struct snd_card *card)
spin_lock_init(&sscape->fwlock); spin_lock_init(&sscape->fwlock);
sscape->io_res = io_res; sscape->io_res = io_res;
sscape->wss_res = wss_res; sscape->wss_res = wss_res;
sscape->io_base = xport; sscape->io_base = port[dev];
sscape->wss_base = wss_port[dev];
if (!detect_sscape(sscape)) { if (!detect_sscape(sscape, wss_port[dev])) {
printk(KERN_ERR "sscape: hardware not detected at 0x%x\n", sscape->io_base); printk(KERN_ERR "sscape: hardware not detected at 0x%x\n", sscape->io_base);
err = -ENODEV; err = -ENODEV;
goto _release_dma; goto _release_dma;
...@@ -1188,11 +1176,11 @@ static int __devinit create_sscape(int dev, struct snd_card *card) ...@@ -1188,11 +1176,11 @@ static int __devinit create_sscape(int dev, struct snd_card *card)
} }
#define MIDI_DEVNUM 0 #define MIDI_DEVNUM 0
if (sscape->type != SSCAPE_VIVO) { if (sscape->type != SSCAPE_VIVO) {
err = create_mpu401(card, MIDI_DEVNUM, xport, mpu_irq[dev]); err = create_mpu401(card, MIDI_DEVNUM, port[dev], mpu_irq[dev]);
if (err < 0) { if (err < 0) {
printk(KERN_ERR "sscape: Failed to create " printk(KERN_ERR "sscape: Failed to create "
"MPU-401 device at 0x%x\n", "MPU-401 device at 0x%lx\n",
xport); port[dev]);
goto _release_dma; goto _release_dma;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment