Commit 310efd3a authored by Takashi Iwai's avatar Takashi Iwai

ALSA: gus: Fix assignment in if condition

ISA GUS driver code contains lots of assignments in if condition,
which is a bad coding style that may confuse readers and occasionally
lead to bugs.

This patch is merely for coding-style fixes, no functional changes.

Link: https://lore.kernel.org/r/20210608140540.17885-5-tiwai@suse.deSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent c305366a
...@@ -165,12 +165,14 @@ int snd_gus_create(struct snd_card *card, ...@@ -165,12 +165,14 @@ int snd_gus_create(struct snd_card *card,
gus->gf1.reg_timerctrl = GUSP(gus, TIMERCNTRL); gus->gf1.reg_timerctrl = GUSP(gus, TIMERCNTRL);
gus->gf1.reg_timerdata = GUSP(gus, TIMERDATA); gus->gf1.reg_timerdata = GUSP(gus, TIMERDATA);
/* allocate resources */ /* allocate resources */
if ((gus->gf1.res_port1 = request_region(port, 16, "GUS GF1 (Adlib/SB)")) == NULL) { gus->gf1.res_port1 = request_region(port, 16, "GUS GF1 (Adlib/SB)");
if (!gus->gf1.res_port1) {
snd_printk(KERN_ERR "gus: can't grab SB port 0x%lx\n", port); snd_printk(KERN_ERR "gus: can't grab SB port 0x%lx\n", port);
snd_gus_free(gus); snd_gus_free(gus);
return -EBUSY; return -EBUSY;
} }
if ((gus->gf1.res_port2 = request_region(port + 0x100, 12, "GUS GF1 (Synth)")) == NULL) { gus->gf1.res_port2 = request_region(port + 0x100, 12, "GUS GF1 (Synth)");
if (!gus->gf1.res_port2) {
snd_printk(KERN_ERR "gus: can't grab synth port 0x%lx\n", port + 0x100); snd_printk(KERN_ERR "gus: can't grab synth port 0x%lx\n", port + 0x100);
snd_gus_free(gus); snd_gus_free(gus);
return -EBUSY; return -EBUSY;
...@@ -215,7 +217,8 @@ int snd_gus_create(struct snd_card *card, ...@@ -215,7 +217,8 @@ int snd_gus_create(struct snd_card *card,
gus->gf1.pcm_channels = pcm_channels; gus->gf1.pcm_channels = pcm_channels;
gus->gf1.volume_ramp = 25; gus->gf1.volume_ramp = 25;
gus->gf1.smooth_pan = 1; gus->gf1.smooth_pan = 1;
if ((err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, gus, &ops)) < 0) { err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, gus, &ops);
if (err < 0) {
snd_gus_free(gus); snd_gus_free(gus);
return err; return err;
} }
...@@ -404,14 +407,17 @@ int snd_gus_initialize(struct snd_gus_card *gus) ...@@ -404,14 +407,17 @@ int snd_gus_initialize(struct snd_gus_card *gus)
int err; int err;
if (!gus->interwave) { if (!gus->interwave) {
if ((err = snd_gus_check_version(gus)) < 0) { err = snd_gus_check_version(gus);
if (err < 0) {
snd_printk(KERN_ERR "version check failed\n"); snd_printk(KERN_ERR "version check failed\n");
return err; return err;
} }
if ((err = snd_gus_detect_memory(gus)) < 0) err = snd_gus_detect_memory(gus);
if (err < 0)
return err; return err;
} }
if ((err = snd_gus_init_dma_irq(gus, 1)) < 0) err = snd_gus_init_dma_irq(gus, 1);
if (err < 0)
return err; return err;
snd_gf1_start(gus); snd_gf1_start(gus);
gus->initialized = 1; gus->initialized = 1;
......
...@@ -210,7 +210,8 @@ int snd_gf1_mem_free(struct snd_gf1_mem * alloc, unsigned int address) ...@@ -210,7 +210,8 @@ int snd_gf1_mem_free(struct snd_gf1_mem * alloc, unsigned int address)
struct snd_gf1_mem_block *block; struct snd_gf1_mem_block *block;
snd_gf1_mem_lock(alloc, 0); snd_gf1_mem_lock(alloc, 0);
if ((block = snd_gf1_mem_look(alloc, address)) != NULL) { block = snd_gf1_mem_look(alloc, address);
if (block) {
result = snd_gf1_mem_xfree(alloc, block); result = snd_gf1_mem_xfree(alloc, block);
snd_gf1_mem_lock(alloc, 1); snd_gf1_mem_lock(alloc, 1);
return result; return result;
......
...@@ -162,12 +162,14 @@ int snd_gf1_new_mixer(struct snd_gus_card * gus) ...@@ -162,12 +162,14 @@ int snd_gf1_new_mixer(struct snd_gus_card * gus)
if (!gus->ics_flag) { if (!gus->ics_flag) {
max = gus->ess_flag ? 1 : ARRAY_SIZE(snd_gf1_controls); max = gus->ess_flag ? 1 : ARRAY_SIZE(snd_gf1_controls);
for (idx = 0; idx < max; idx++) { for (idx = 0; idx < max; idx++) {
if ((err = snd_ctl_add(card, snd_ctl_new1(&snd_gf1_controls[idx], gus))) < 0) err = snd_ctl_add(card, snd_ctl_new1(&snd_gf1_controls[idx], gus));
if (err < 0)
return err; return err;
} }
} else { } else {
for (idx = 0; idx < ARRAY_SIZE(snd_ics_controls); idx++) { for (idx = 0; idx < ARRAY_SIZE(snd_ics_controls); idx++) {
if ((err = snd_ctl_add(card, snd_ctl_new1(&snd_ics_controls[idx], gus))) < 0) err = snd_ctl_add(card, snd_ctl_new1(&snd_ics_controls[idx], gus));
if (err < 0)
return err; return err;
} }
} }
......
...@@ -430,17 +430,19 @@ static int snd_gf1_pcm_playback_hw_params(struct snd_pcm_substream *substream, ...@@ -430,17 +430,19 @@ static int snd_gf1_pcm_playback_hw_params(struct snd_pcm_substream *substream,
snd_gf1_mem_free(&gus->gf1.mem_alloc, pcmp->memory); snd_gf1_mem_free(&gus->gf1.mem_alloc, pcmp->memory);
pcmp->memory = 0; pcmp->memory = 0;
} }
if ((block = snd_gf1_mem_alloc(&gus->gf1.mem_alloc, block = snd_gf1_mem_alloc(&gus->gf1.mem_alloc,
SNDRV_GF1_MEM_OWNER_DRIVER, SNDRV_GF1_MEM_OWNER_DRIVER,
"GF1 PCM", "GF1 PCM",
runtime->dma_bytes, 1, 32, runtime->dma_bytes, 1, 32,
NULL)) == NULL) NULL);
if (!block)
return -ENOMEM; return -ENOMEM;
pcmp->memory = block->ptr; pcmp->memory = block->ptr;
} }
pcmp->voices = params_channels(hw_params); pcmp->voices = params_channels(hw_params);
if (pcmp->pvoices[0] == NULL) { if (pcmp->pvoices[0] == NULL) {
if ((pcmp->pvoices[0] = snd_gf1_alloc_voice(pcmp->gus, SNDRV_GF1_VOICE_TYPE_PCM, 0, 0)) == NULL) pcmp->pvoices[0] = snd_gf1_alloc_voice(pcmp->gus, SNDRV_GF1_VOICE_TYPE_PCM, 0, 0);
if (!pcmp->pvoices[0])
return -ENOMEM; return -ENOMEM;
pcmp->pvoices[0]->handler_wave = snd_gf1_pcm_interrupt_wave; pcmp->pvoices[0]->handler_wave = snd_gf1_pcm_interrupt_wave;
pcmp->pvoices[0]->handler_volume = snd_gf1_pcm_interrupt_volume; pcmp->pvoices[0]->handler_volume = snd_gf1_pcm_interrupt_volume;
...@@ -448,7 +450,8 @@ static int snd_gf1_pcm_playback_hw_params(struct snd_pcm_substream *substream, ...@@ -448,7 +450,8 @@ static int snd_gf1_pcm_playback_hw_params(struct snd_pcm_substream *substream,
pcmp->pvoices[0]->private_data = pcmp; pcmp->pvoices[0]->private_data = pcmp;
} }
if (pcmp->voices > 1 && pcmp->pvoices[1] == NULL) { if (pcmp->voices > 1 && pcmp->pvoices[1] == NULL) {
if ((pcmp->pvoices[1] = snd_gf1_alloc_voice(pcmp->gus, SNDRV_GF1_VOICE_TYPE_PCM, 0, 0)) == NULL) pcmp->pvoices[1] = snd_gf1_alloc_voice(pcmp->gus, SNDRV_GF1_VOICE_TYPE_PCM, 0, 0);
if (!pcmp->pvoices[1])
return -ENOMEM; return -ENOMEM;
pcmp->pvoices[1]->handler_wave = snd_gf1_pcm_interrupt_wave; pcmp->pvoices[1]->handler_wave = snd_gf1_pcm_interrupt_wave;
pcmp->pvoices[1]->handler_volume = snd_gf1_pcm_interrupt_volume; pcmp->pvoices[1]->handler_volume = snd_gf1_pcm_interrupt_volume;
...@@ -689,7 +692,8 @@ static int snd_gf1_pcm_playback_open(struct snd_pcm_substream *substream) ...@@ -689,7 +692,8 @@ static int snd_gf1_pcm_playback_open(struct snd_pcm_substream *substream)
printk(KERN_DEBUG "playback.buffer = 0x%lx, gf1.pcm_buffer = 0x%lx\n", printk(KERN_DEBUG "playback.buffer = 0x%lx, gf1.pcm_buffer = 0x%lx\n",
(long) pcm->playback.buffer, (long) gus->gf1.pcm_buffer); (long) pcm->playback.buffer, (long) gus->gf1.pcm_buffer);
#endif #endif
if ((err = snd_gf1_dma_init(gus)) < 0) err = snd_gf1_dma_init(gus);
if (err < 0)
return err; return err;
pcmp->flags = SNDRV_GF1_PCM_PFLG_NONE; pcmp->flags = SNDRV_GF1_PCM_PFLG_NONE;
pcmp->substream = substream; pcmp->substream = substream;
...@@ -888,7 +892,8 @@ int snd_gf1_pcm_new(struct snd_gus_card *gus, int pcm_dev, int control_index) ...@@ -888,7 +892,8 @@ int snd_gf1_pcm_new(struct snd_gus_card *gus, int pcm_dev, int control_index)
kctl = snd_ctl_new1(&snd_gf1_pcm_volume_control1, gus); kctl = snd_ctl_new1(&snd_gf1_pcm_volume_control1, gus);
else else
kctl = snd_ctl_new1(&snd_gf1_pcm_volume_control, gus); kctl = snd_ctl_new1(&snd_gf1_pcm_volume_control, gus);
if ((err = snd_ctl_add(card, kctl)) < 0) err = snd_ctl_add(card, kctl);
if (err < 0)
return err; return err;
kctl->id.index = control_index; kctl->id.index = control_index;
......
...@@ -232,7 +232,8 @@ int snd_gf1_rawmidi_new(struct snd_gus_card *gus, int device) ...@@ -232,7 +232,8 @@ int snd_gf1_rawmidi_new(struct snd_gus_card *gus, int device)
struct snd_rawmidi *rmidi; struct snd_rawmidi *rmidi;
int err; int err;
if ((err = snd_rawmidi_new(gus->card, "GF1", device, 1, 1, &rmidi)) < 0) err = snd_rawmidi_new(gus->card, "GF1", device, 1, 1, &rmidi);
if (err < 0)
return err; return err;
strcpy(rmidi->name, gus->interwave ? "AMD InterWave" : "GF1"); strcpy(rmidi->name, gus->interwave ? "AMD InterWave" : "GF1");
snd_rawmidi_set_ops(rmidi, SNDRV_RAWMIDI_STREAM_OUTPUT, &snd_gf1_uart_output); snd_rawmidi_set_ops(rmidi, SNDRV_RAWMIDI_STREAM_OUTPUT, &snd_gf1_uart_output);
......
...@@ -113,14 +113,16 @@ static int snd_gusclassic_detect(struct snd_gus_card *gus) ...@@ -113,14 +113,16 @@ static int snd_gusclassic_detect(struct snd_gus_card *gus)
unsigned char d; unsigned char d;
snd_gf1_i_write8(gus, SNDRV_GF1_GB_RESET, 0); /* reset GF1 */ snd_gf1_i_write8(gus, SNDRV_GF1_GB_RESET, 0); /* reset GF1 */
if (((d = snd_gf1_i_look8(gus, SNDRV_GF1_GB_RESET)) & 0x07) != 0) { d = snd_gf1_i_look8(gus, SNDRV_GF1_GB_RESET);
if ((d & 0x07) != 0) {
snd_printdd("[0x%lx] check 1 failed - 0x%x\n", gus->gf1.port, d); snd_printdd("[0x%lx] check 1 failed - 0x%x\n", gus->gf1.port, d);
return -ENODEV; return -ENODEV;
} }
udelay(160); udelay(160);
snd_gf1_i_write8(gus, SNDRV_GF1_GB_RESET, 1); /* release reset */ snd_gf1_i_write8(gus, SNDRV_GF1_GB_RESET, 1); /* release reset */
udelay(160); udelay(160);
if (((d = snd_gf1_i_look8(gus, SNDRV_GF1_GB_RESET)) & 0x07) != 1) { d = snd_gf1_i_look8(gus, SNDRV_GF1_GB_RESET);
if ((d & 0x07) != 1) {
snd_printdd("[0x%lx] check 2 failed - 0x%x\n", gus->gf1.port, d); snd_printdd("[0x%lx] check 2 failed - 0x%x\n", gus->gf1.port, d);
return -ENODEV; return -ENODEV;
} }
......
...@@ -177,14 +177,16 @@ static int snd_gusextreme_detect(struct snd_gus_card *gus, ...@@ -177,14 +177,16 @@ static int snd_gusextreme_detect(struct snd_gus_card *gus,
udelay(100); udelay(100);
snd_gf1_i_write8(gus, SNDRV_GF1_GB_RESET, 0); /* reset GF1 */ snd_gf1_i_write8(gus, SNDRV_GF1_GB_RESET, 0); /* reset GF1 */
if (((d = snd_gf1_i_look8(gus, SNDRV_GF1_GB_RESET)) & 0x07) != 0) { d = snd_gf1_i_look8(gus, SNDRV_GF1_GB_RESET);
if ((d & 0x07) != 0) {
snd_printdd("[0x%lx] check 1 failed - 0x%x\n", gus->gf1.port, d); snd_printdd("[0x%lx] check 1 failed - 0x%x\n", gus->gf1.port, d);
return -EIO; return -EIO;
} }
udelay(160); udelay(160);
snd_gf1_i_write8(gus, SNDRV_GF1_GB_RESET, 1); /* release reset */ snd_gf1_i_write8(gus, SNDRV_GF1_GB_RESET, 1); /* release reset */
udelay(160); udelay(160);
if (((d = snd_gf1_i_look8(gus, SNDRV_GF1_GB_RESET)) & 0x07) != 1) { d = snd_gf1_i_look8(gus, SNDRV_GF1_GB_RESET);
if ((d & 0x07) != 1) {
snd_printdd("[0x%lx] check 2 failed - 0x%x\n", gus->gf1.port, d); snd_printdd("[0x%lx] check 2 failed - 0x%x\n", gus->gf1.port, d);
return -EIO; return -EIO;
} }
......
...@@ -71,14 +71,16 @@ static int snd_gusmax_detect(struct snd_gus_card *gus) ...@@ -71,14 +71,16 @@ static int snd_gusmax_detect(struct snd_gus_card *gus)
unsigned char d; unsigned char d;
snd_gf1_i_write8(gus, SNDRV_GF1_GB_RESET, 0); /* reset GF1 */ snd_gf1_i_write8(gus, SNDRV_GF1_GB_RESET, 0); /* reset GF1 */
if (((d = snd_gf1_i_look8(gus, SNDRV_GF1_GB_RESET)) & 0x07) != 0) { d = snd_gf1_i_look8(gus, SNDRV_GF1_GB_RESET);
if ((d & 0x07) != 0) {
snd_printdd("[0x%lx] check 1 failed - 0x%x\n", gus->gf1.port, d); snd_printdd("[0x%lx] check 1 failed - 0x%x\n", gus->gf1.port, d);
return -ENODEV; return -ENODEV;
} }
udelay(160); udelay(160);
snd_gf1_i_write8(gus, SNDRV_GF1_GB_RESET, 1); /* release reset */ snd_gf1_i_write8(gus, SNDRV_GF1_GB_RESET, 1); /* release reset */
udelay(160); udelay(160);
if (((d = snd_gf1_i_look8(gus, SNDRV_GF1_GB_RESET)) & 0x07) != 1) { d = snd_gf1_i_look8(gus, SNDRV_GF1_GB_RESET);
if ((d & 0x07) != 1) {
snd_printdd("[0x%lx] check 2 failed - 0x%x\n", gus->gf1.port, d); snd_printdd("[0x%lx] check 2 failed - 0x%x\n", gus->gf1.port, d);
return -ENODEV; return -ENODEV;
} }
...@@ -136,20 +138,24 @@ static int snd_gusmax_mixer(struct snd_wss *chip) ...@@ -136,20 +138,24 @@ static int snd_gusmax_mixer(struct snd_wss *chip)
/* reassign AUXA to SYNTHESIZER */ /* reassign AUXA to SYNTHESIZER */
strcpy(id1.name, "Aux Playback Switch"); strcpy(id1.name, "Aux Playback Switch");
strcpy(id2.name, "Synth Playback Switch"); strcpy(id2.name, "Synth Playback Switch");
if ((err = snd_ctl_rename_id(card, &id1, &id2)) < 0) err = snd_ctl_rename_id(card, &id1, &id2);
if (err < 0)
return err; return err;
strcpy(id1.name, "Aux Playback Volume"); strcpy(id1.name, "Aux Playback Volume");
strcpy(id2.name, "Synth Playback Volume"); strcpy(id2.name, "Synth Playback Volume");
if ((err = snd_ctl_rename_id(card, &id1, &id2)) < 0) err = snd_ctl_rename_id(card, &id1, &id2);
if (err < 0)
return err; return err;
/* reassign AUXB to CD */ /* reassign AUXB to CD */
strcpy(id1.name, "Aux Playback Switch"); id1.index = 1; strcpy(id1.name, "Aux Playback Switch"); id1.index = 1;
strcpy(id2.name, "CD Playback Switch"); strcpy(id2.name, "CD Playback Switch");
if ((err = snd_ctl_rename_id(card, &id1, &id2)) < 0) err = snd_ctl_rename_id(card, &id1, &id2);
if (err < 0)
return err; return err;
strcpy(id1.name, "Aux Playback Volume"); strcpy(id1.name, "Aux Playback Volume");
strcpy(id2.name, "CD Playback Volume"); strcpy(id2.name, "CD Playback Volume");
if ((err = snd_ctl_rename_id(card, &id1, &id2)) < 0) err = snd_ctl_rename_id(card, &id1, &id2);
if (err < 0)
return err; return err;
#if 0 #if 0
/* reassign Mono Input to MIC */ /* reassign Mono Input to MIC */
...@@ -209,7 +215,8 @@ static int snd_gusmax_probe(struct device *pdev, unsigned int dev) ...@@ -209,7 +215,8 @@ static int snd_gusmax_probe(struct device *pdev, unsigned int dev)
xirq = irq[dev]; xirq = irq[dev];
if (xirq == SNDRV_AUTO_IRQ) { if (xirq == SNDRV_AUTO_IRQ) {
if ((xirq = snd_legacy_find_free_irq(possible_irqs)) < 0) { xirq = snd_legacy_find_free_irq(possible_irqs);
if (xirq < 0) {
snd_printk(KERN_ERR PFX "unable to find a free IRQ\n"); snd_printk(KERN_ERR PFX "unable to find a free IRQ\n");
err = -EBUSY; err = -EBUSY;
goto _err; goto _err;
...@@ -217,7 +224,8 @@ static int snd_gusmax_probe(struct device *pdev, unsigned int dev) ...@@ -217,7 +224,8 @@ static int snd_gusmax_probe(struct device *pdev, unsigned int dev)
} }
xdma1 = dma1[dev]; xdma1 = dma1[dev];
if (xdma1 == SNDRV_AUTO_DMA) { if (xdma1 == SNDRV_AUTO_DMA) {
if ((xdma1 = snd_legacy_find_free_dma(possible_dmas)) < 0) { xdma1 = snd_legacy_find_free_dma(possible_dmas);
if (xdma1 < 0) {
snd_printk(KERN_ERR PFX "unable to find a free DMA1\n"); snd_printk(KERN_ERR PFX "unable to find a free DMA1\n");
err = -EBUSY; err = -EBUSY;
goto _err; goto _err;
...@@ -225,7 +233,8 @@ static int snd_gusmax_probe(struct device *pdev, unsigned int dev) ...@@ -225,7 +233,8 @@ static int snd_gusmax_probe(struct device *pdev, unsigned int dev)
} }
xdma2 = dma2[dev]; xdma2 = dma2[dev];
if (xdma2 == SNDRV_AUTO_DMA) { if (xdma2 == SNDRV_AUTO_DMA) {
if ((xdma2 = snd_legacy_find_free_dma(possible_dmas)) < 0) { xdma2 = snd_legacy_find_free_dma(possible_dmas);
if (xdma2 < 0) {
snd_printk(KERN_ERR PFX "unable to find a free DMA2\n"); snd_printk(KERN_ERR PFX "unable to find a free DMA2\n");
err = -EBUSY; err = -EBUSY;
goto _err; goto _err;
...@@ -260,13 +269,15 @@ static int snd_gusmax_probe(struct device *pdev, unsigned int dev) ...@@ -260,13 +269,15 @@ static int snd_gusmax_probe(struct device *pdev, unsigned int dev)
if (err < 0) if (err < 0)
goto _err; goto _err;
if ((err = snd_gusmax_detect(gus)) < 0) err = snd_gusmax_detect(gus);
if (err < 0)
goto _err; goto _err;
maxcard->gus_status_reg = gus->gf1.reg_irqstat; maxcard->gus_status_reg = gus->gf1.reg_irqstat;
maxcard->pcm_status_reg = gus->gf1.port + 0x10c + 2; maxcard->pcm_status_reg = gus->gf1.port + 0x10c + 2;
snd_gusmax_init(dev, card, gus); snd_gusmax_init(dev, card, gus);
if ((err = snd_gus_initialize(gus)) < 0) err = snd_gus_initialize(gus);
if (err < 0)
goto _err; goto _err;
if (!gus->max_flag) { if (!gus->max_flag) {
...@@ -307,7 +318,8 @@ static int snd_gusmax_probe(struct device *pdev, unsigned int dev) ...@@ -307,7 +318,8 @@ static int snd_gusmax_probe(struct device *pdev, unsigned int dev)
goto _err; goto _err;
if (pcm_channels[dev] > 0) { if (pcm_channels[dev] > 0) {
if ((err = snd_gf1_pcm_new(gus, 1, 1)) < 0) err = snd_gf1_pcm_new(gus, 1, 1);
if (err < 0)
goto _err; goto _err;
} }
err = snd_gusmax_mixer(wss); err = snd_gusmax_mixer(wss);
......
...@@ -204,7 +204,8 @@ static int snd_interwave_detect_stb(struct snd_interwave *iwcard, ...@@ -204,7 +204,8 @@ static int snd_interwave_detect_stb(struct snd_interwave *iwcard,
port = 0x360; port = 0x360;
} }
while (port <= 0x380) { while (port <= 0x380) {
if ((iwcard->i2c_res = request_region(port, 1, "InterWave (I2C bus)")) != NULL) iwcard->i2c_res = request_region(port, 1, "InterWave (I2C bus)");
if (iwcard->i2c_res)
break; break;
port += 0x10; port += 0x10;
} }
...@@ -217,11 +218,13 @@ static int snd_interwave_detect_stb(struct snd_interwave *iwcard, ...@@ -217,11 +218,13 @@ static int snd_interwave_detect_stb(struct snd_interwave *iwcard,
} }
sprintf(name, "InterWave-%i", card->number); sprintf(name, "InterWave-%i", card->number);
if ((err = snd_i2c_bus_create(card, name, NULL, &bus)) < 0) err = snd_i2c_bus_create(card, name, NULL, &bus);
if (err < 0)
return err; return err;
bus->private_value = port; bus->private_value = port;
bus->hw_ops.bit = &snd_interwave_i2c_bit_ops; bus->hw_ops.bit = &snd_interwave_i2c_bit_ops;
if ((err = snd_tea6330t_detect(bus, 0)) < 0) err = snd_tea6330t_detect(bus, 0);
if (err < 0)
return err; return err;
*rbus = bus; *rbus = bus;
return 0; return 0;
...@@ -241,14 +244,16 @@ static int snd_interwave_detect(struct snd_interwave *iwcard, ...@@ -241,14 +244,16 @@ static int snd_interwave_detect(struct snd_interwave *iwcard,
int d; int d;
snd_gf1_i_write8(gus, SNDRV_GF1_GB_RESET, 0); /* reset GF1 */ snd_gf1_i_write8(gus, SNDRV_GF1_GB_RESET, 0); /* reset GF1 */
if (((d = snd_gf1_i_look8(gus, SNDRV_GF1_GB_RESET)) & 0x07) != 0) { d = snd_gf1_i_look8(gus, SNDRV_GF1_GB_RESET);
if ((d & 0x07) != 0) {
snd_printdd("[0x%lx] check 1 failed - 0x%x\n", gus->gf1.port, d); snd_printdd("[0x%lx] check 1 failed - 0x%x\n", gus->gf1.port, d);
return -ENODEV; return -ENODEV;
} }
udelay(160); udelay(160);
snd_gf1_i_write8(gus, SNDRV_GF1_GB_RESET, 1); /* release reset */ snd_gf1_i_write8(gus, SNDRV_GF1_GB_RESET, 1); /* release reset */
udelay(160); udelay(160);
if (((d = snd_gf1_i_look8(gus, SNDRV_GF1_GB_RESET)) & 0x07) != 1) { d = snd_gf1_i_look8(gus, SNDRV_GF1_GB_RESET);
if ((d & 0x07) != 1) {
snd_printdd("[0x%lx] check 2 failed - 0x%x\n", gus->gf1.port, d); snd_printdd("[0x%lx] check 2 failed - 0x%x\n", gus->gf1.port, d);
return -ENODEV; return -ENODEV;
} }
...@@ -493,16 +498,20 @@ static int snd_interwave_mixer(struct snd_wss *chip) ...@@ -493,16 +498,20 @@ static int snd_interwave_mixer(struct snd_wss *chip)
#if 0 #if 0
/* remove mono microphone controls */ /* remove mono microphone controls */
strcpy(id1.name, "Mic Playback Switch"); strcpy(id1.name, "Mic Playback Switch");
if ((err = snd_ctl_remove_id(card, &id1)) < 0) err = snd_ctl_remove_id(card, &id1);
if (err < 0)
return err; return err;
strcpy(id1.name, "Mic Playback Volume"); strcpy(id1.name, "Mic Playback Volume");
if ((err = snd_ctl_remove_id(card, &id1)) < 0) err = snd_ctl_remove_id(card, &id1);
if (err < 0)
return err; return err;
#endif #endif
/* add new master and mic controls */ /* add new master and mic controls */
for (idx = 0; idx < ARRAY_SIZE(snd_interwave_controls); idx++) for (idx = 0; idx < ARRAY_SIZE(snd_interwave_controls); idx++) {
if ((err = snd_ctl_add(card, snd_ctl_new1(&snd_interwave_controls[idx], chip))) < 0) err = snd_ctl_add(card, snd_ctl_new1(&snd_interwave_controls[idx], chip));
if (err < 0)
return err; return err;
}
snd_wss_out(chip, CS4231_LINE_LEFT_OUTPUT, 0x9f); snd_wss_out(chip, CS4231_LINE_LEFT_OUTPUT, 0x9f);
snd_wss_out(chip, CS4231_LINE_RIGHT_OUTPUT, 0x9f); snd_wss_out(chip, CS4231_LINE_RIGHT_OUTPUT, 0x9f);
snd_wss_out(chip, CS4231_LEFT_MIC_INPUT, 0x9f); snd_wss_out(chip, CS4231_LEFT_MIC_INPUT, 0x9f);
...@@ -510,20 +519,24 @@ static int snd_interwave_mixer(struct snd_wss *chip) ...@@ -510,20 +519,24 @@ static int snd_interwave_mixer(struct snd_wss *chip)
/* reassign AUXA to SYNTHESIZER */ /* reassign AUXA to SYNTHESIZER */
strcpy(id1.name, "Aux Playback Switch"); strcpy(id1.name, "Aux Playback Switch");
strcpy(id2.name, "Synth Playback Switch"); strcpy(id2.name, "Synth Playback Switch");
if ((err = snd_ctl_rename_id(card, &id1, &id2)) < 0) err = snd_ctl_rename_id(card, &id1, &id2);
if (err < 0)
return err; return err;
strcpy(id1.name, "Aux Playback Volume"); strcpy(id1.name, "Aux Playback Volume");
strcpy(id2.name, "Synth Playback Volume"); strcpy(id2.name, "Synth Playback Volume");
if ((err = snd_ctl_rename_id(card, &id1, &id2)) < 0) err = snd_ctl_rename_id(card, &id1, &id2);
if (err < 0)
return err; return err;
/* reassign AUXB to CD */ /* reassign AUXB to CD */
strcpy(id1.name, "Aux Playback Switch"); id1.index = 1; strcpy(id1.name, "Aux Playback Switch"); id1.index = 1;
strcpy(id2.name, "CD Playback Switch"); strcpy(id2.name, "CD Playback Switch");
if ((err = snd_ctl_rename_id(card, &id1, &id2)) < 0) err = snd_ctl_rename_id(card, &id1, &id2);
if (err < 0)
return err; return err;
strcpy(id1.name, "Aux Playback Volume"); strcpy(id1.name, "Aux Playback Volume");
strcpy(id2.name, "CD Playback Volume"); strcpy(id2.name, "CD Playback Volume");
if ((err = snd_ctl_rename_id(card, &id1, &id2)) < 0) err = snd_ctl_rename_id(card, &id1, &id2);
if (err < 0)
return err; return err;
return 0; return 0;
} }
...@@ -633,18 +646,20 @@ static int snd_interwave_probe(struct snd_card *card, int dev) ...@@ -633,18 +646,20 @@ static int snd_interwave_probe(struct snd_card *card, int dev)
xdma1 = dma1[dev]; xdma1 = dma1[dev];
xdma2 = dma2[dev]; xdma2 = dma2[dev];
if ((err = snd_gus_create(card, err = snd_gus_create(card,
port[dev], port[dev],
-xirq, xdma1, xdma2, -xirq, xdma1, xdma2,
0, 32, 0, 32,
pcm_channels[dev], effect[dev], &gus)) < 0) pcm_channels[dev], effect[dev], &gus);
if (err < 0)
return err; return err;
if ((err = snd_interwave_detect(iwcard, gus, dev err = snd_interwave_detect(iwcard, gus, dev
#ifdef SNDRV_STB #ifdef SNDRV_STB
, &i2c_bus , &i2c_bus
#endif #endif
)) < 0) );
if (err < 0)
return err; return err;
iwcard->gus_status_reg = gus->gf1.reg_irqstat; iwcard->gus_status_reg = gus->gf1.reg_irqstat;
...@@ -652,7 +667,8 @@ static int snd_interwave_probe(struct snd_card *card, int dev) ...@@ -652,7 +667,8 @@ static int snd_interwave_probe(struct snd_card *card, int dev)
snd_interwave_init(dev, gus); snd_interwave_init(dev, gus);
snd_interwave_detect_memory(gus); snd_interwave_detect_memory(gus);
if ((err = snd_gus_initialize(gus)) < 0) err = snd_gus_initialize(gus);
if (err < 0)
return err; return err;
if (request_irq(xirq, snd_interwave_interrupt, 0, if (request_irq(xirq, snd_interwave_interrupt, 0,
...@@ -708,19 +724,23 @@ static int snd_interwave_probe(struct snd_card *card, int dev) ...@@ -708,19 +724,23 @@ static int snd_interwave_probe(struct snd_card *card, int dev)
strcpy(id1.name, "Master Playback Switch"); strcpy(id1.name, "Master Playback Switch");
strcpy(id2.name, id1.name); strcpy(id2.name, id1.name);
id2.index = 1; id2.index = 1;
if ((err = snd_ctl_rename_id(card, &id1, &id2)) < 0) err = snd_ctl_rename_id(card, &id1, &id2);
if (err < 0)
return err; return err;
strcpy(id1.name, "Master Playback Volume"); strcpy(id1.name, "Master Playback Volume");
strcpy(id2.name, id1.name); strcpy(id2.name, id1.name);
if ((err = snd_ctl_rename_id(card, &id1, &id2)) < 0) err = snd_ctl_rename_id(card, &id1, &id2);
if (err < 0)
return err; return err;
if ((err = snd_tea6330t_update_mixer(card, i2c_bus, 0, 1)) < 0) err = snd_tea6330t_update_mixer(card, i2c_bus, 0, 1);
if (err < 0)
return err; return err;
} }
#endif #endif
gus->uart_enable = midi[dev]; gus->uart_enable = midi[dev];
if ((err = snd_gf1_rawmidi_new(gus, 0)) < 0) err = snd_gf1_rawmidi_new(gus, 0);
if (err < 0)
return err; return err;
#ifndef SNDRV_STB #ifndef SNDRV_STB
...@@ -758,7 +778,8 @@ static int snd_interwave_isa_probe1(int dev, struct device *devptr) ...@@ -758,7 +778,8 @@ static int snd_interwave_isa_probe1(int dev, struct device *devptr)
if (err < 0) if (err < 0)
return err; return err;
if ((err = snd_interwave_probe(card, dev)) < 0) { err = snd_interwave_probe(card, dev);
if (err < 0) {
snd_card_free(card); snd_card_free(card);
return err; return err;
} }
...@@ -786,19 +807,22 @@ static int snd_interwave_isa_probe(struct device *pdev, ...@@ -786,19 +807,22 @@ static int snd_interwave_isa_probe(struct device *pdev,
static const int possible_dmas[] = {0, 1, 3, 5, 6, 7, -1}; static const int possible_dmas[] = {0, 1, 3, 5, 6, 7, -1};
if (irq[dev] == SNDRV_AUTO_IRQ) { if (irq[dev] == SNDRV_AUTO_IRQ) {
if ((irq[dev] = snd_legacy_find_free_irq(possible_irqs)) < 0) { irq[dev] = snd_legacy_find_free_irq(possible_irqs);
if (irq[dev] < 0) {
snd_printk(KERN_ERR PFX "unable to find a free IRQ\n"); snd_printk(KERN_ERR PFX "unable to find a free IRQ\n");
return -EBUSY; return -EBUSY;
} }
} }
if (dma1[dev] == SNDRV_AUTO_DMA) { if (dma1[dev] == SNDRV_AUTO_DMA) {
if ((dma1[dev] = snd_legacy_find_free_dma(possible_dmas)) < 0) { dma1[dev] = snd_legacy_find_free_dma(possible_dmas);
if (dma1[dev] < 0) {
snd_printk(KERN_ERR PFX "unable to find a free DMA1\n"); snd_printk(KERN_ERR PFX "unable to find a free DMA1\n");
return -EBUSY; return -EBUSY;
} }
} }
if (dma2[dev] == SNDRV_AUTO_DMA) { if (dma2[dev] == SNDRV_AUTO_DMA) {
if ((dma2[dev] = snd_legacy_find_free_dma(possible_dmas)) < 0) { dma2[dev] = snd_legacy_find_free_dma(possible_dmas);
if (dma2[dev] < 0) {
snd_printk(KERN_ERR PFX "unable to find a free DMA2\n"); snd_printk(KERN_ERR PFX "unable to find a free DMA2\n");
return -EBUSY; return -EBUSY;
} }
...@@ -853,11 +877,13 @@ static int snd_interwave_pnp_detect(struct pnp_card_link *pcard, ...@@ -853,11 +877,13 @@ static int snd_interwave_pnp_detect(struct pnp_card_link *pcard,
if (res < 0) if (res < 0)
return res; return res;
if ((res = snd_interwave_pnp(dev, card->private_data, pcard, pid)) < 0) { res = snd_interwave_pnp(dev, card->private_data, pcard, pid);
if (res < 0) {
snd_card_free(card); snd_card_free(card);
return res; return res;
} }
if ((res = snd_interwave_probe(card, dev)) < 0) { res = snd_interwave_probe(card, dev);
if (res < 0) {
snd_card_free(card); snd_card_free(card);
return res; return res;
} }
......
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