mirror of https://gitee.com/openkylin/linux.git
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: Krzysztof Helt <krzysztof.h1@wp.pl> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
56305757f0
commit
453e37b375
|
@ -135,8 +135,6 @@ enum card_type {
|
|||
struct soundscape {
|
||||
spinlock_t lock;
|
||||
unsigned io_base;
|
||||
unsigned wss_base;
|
||||
int codec_type;
|
||||
int ic_type;
|
||||
enum card_type type;
|
||||
struct resource *io_res;
|
||||
|
@ -726,13 +724,7 @@ static int sscape_midi_get(struct snd_kcontrol *kctl,
|
|||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&s->lock, flags);
|
||||
set_host_mode_unsafe(s->io_base);
|
||||
|
||||
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);
|
||||
uctl->value.integer.value[0] = s->midi_vol;
|
||||
spin_unlock_irqrestore(&s->lock, flags);
|
||||
return 0;
|
||||
}
|
||||
|
@ -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)
|
||||
&& 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));
|
||||
s->midi_vol = (unsigned char) uctl->value.integer.value[0] & 127;
|
||||
__skip_change:
|
||||
|
||||
/*
|
||||
|
@ -809,12 +802,11 @@ static unsigned __devinit get_irq_config(int irq)
|
|||
* Perform certain arcane port-checks to see whether there
|
||||
* 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 d;
|
||||
int retval = 0;
|
||||
int codec = s->wss_base;
|
||||
|
||||
spin_lock_irqsave(&s->lock, flags);
|
||||
|
||||
|
@ -830,13 +822,11 @@ static int __devinit detect_sscape(struct soundscape *s)
|
|||
if ((d & 0x80) != 0)
|
||||
goto _done;
|
||||
|
||||
if (d == 0) {
|
||||
s->codec_type = 1;
|
||||
if (d == 0)
|
||||
s->ic_type = IC_ODIE;
|
||||
} else if ((d & 0x60) != 0) {
|
||||
s->codec_type = 2;
|
||||
else if ((d & 0x60) != 0)
|
||||
s->ic_type = IC_OPUS;
|
||||
} else
|
||||
else
|
||||
goto _done;
|
||||
|
||||
outb(0xfa, ODIE_ADDR_IO(s->io_base));
|
||||
|
@ -856,10 +846,10 @@ static int __devinit detect_sscape(struct soundscape *s)
|
|||
sscape_write_unsafe(s->io_base, GA_HMCTL_REG, d | 0xc0);
|
||||
|
||||
if (s->type == SSCAPE_VIVO)
|
||||
codec += 4;
|
||||
wss_io += 4;
|
||||
/* wait for WSS codec */
|
||||
for (d = 0; d < 500; d++) {
|
||||
if ((inb(codec) & 0x80) == 0)
|
||||
if ((inb(wss_io) & 0x80) == 0)
|
||||
break;
|
||||
spin_unlock_irqrestore(&s->lock, flags);
|
||||
msleep(1);
|
||||
|
@ -1057,7 +1047,6 @@ static int __devinit create_sscape(int dev, struct snd_card *card)
|
|||
unsigned dma_cfg;
|
||||
unsigned irq_cfg;
|
||||
unsigned mpu_irq_cfg;
|
||||
unsigned xport;
|
||||
struct resource *io_res;
|
||||
struct resource *wss_res;
|
||||
unsigned long flags;
|
||||
|
@ -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]);
|
||||
return -ENXIO;
|
||||
}
|
||||
xport = port[dev];
|
||||
|
||||
/*
|
||||
* Grab IO ports that we will need to probe so that we
|
||||
* can detect and control this hardware ...
|
||||
*/
|
||||
io_res = request_region(xport, 8, "SoundScape");
|
||||
io_res = request_region(port[dev], 8, "SoundScape");
|
||||
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;
|
||||
}
|
||||
wss_res = NULL;
|
||||
|
@ -1112,10 +1101,9 @@ static int __devinit create_sscape(int dev, struct snd_card *card)
|
|||
spin_lock_init(&sscape->fwlock);
|
||||
sscape->io_res = io_res;
|
||||
sscape->wss_res = wss_res;
|
||||
sscape->io_base = xport;
|
||||
sscape->wss_base = wss_port[dev];
|
||||
sscape->io_base = 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);
|
||||
err = -ENODEV;
|
||||
goto _release_dma;
|
||||
|
@ -1188,11 +1176,11 @@ static int __devinit create_sscape(int dev, struct snd_card *card)
|
|||
}
|
||||
#define MIDI_DEVNUM 0
|
||||
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) {
|
||||
printk(KERN_ERR "sscape: Failed to create "
|
||||
"MPU-401 device at 0x%x\n",
|
||||
xport);
|
||||
"MPU-401 device at 0x%lx\n",
|
||||
port[dev]);
|
||||
goto _release_dma;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue