ChangeSet 1.2181.25.18, 2005/03/22 09:06:04+01:00, [EMAIL PROTECTED]
[ALSA] remove superfluous spin_lock_irqsave calls
MPU401 UART,CS4281 driver,ENS1370/1+ driver,CS46xx driver
RME HDSP driver
In PCM trigger and pointer callbacks, replace spin_lock_irqsave() with
spin_lock() because interrupts are already guaranteed to be disabled.
Signed-off-by: Clemens Ladisch <[EMAIL PROTECTED]>
drivers/mpu401/mpu401_uart.c | 5 ++---
pci/cs4281.c | 7 +++----
pci/cs46xx/cs46xx_lib.c | 16 ++++++----------
pci/ens1370.c | 25 ++++++++++---------------
pci/rme9652/hdsp.c | 7 +++----
5 files changed, 24 insertions(+), 36 deletions(-)
diff -Nru a/sound/drivers/mpu401/mpu401_uart.c
b/sound/drivers/mpu401/mpu401_uart.c
--- a/sound/drivers/mpu401/mpu401_uart.c 2005-03-30 16:12:59 -08:00
+++ b/sound/drivers/mpu401/mpu401_uart.c 2005-03-30 16:12:59 -08:00
@@ -134,14 +134,13 @@
*/
static void snd_mpu401_uart_timer(unsigned long data)
{
- unsigned long flags;
mpu401_t *mpu = (mpu401_t *)data;
- spin_lock_irqsave(&mpu->timer_lock, flags);
+ spin_lock(&mpu->timer_lock);
/*mpu->mode |= MPU401_MODE_TIMER;*/
mpu->timer.expires = 1 + jiffies;
add_timer(&mpu->timer);
- spin_unlock_irqrestore(&mpu->timer_lock, flags);
+ spin_unlock(&mpu->timer_lock);
if (mpu->rmidi)
_snd_mpu401_uart_interrupt(mpu);
}
diff -Nru a/sound/pci/cs4281.c b/sound/pci/cs4281.c
--- a/sound/pci/cs4281.c 2005-03-30 16:12:59 -08:00
+++ b/sound/pci/cs4281.c 2005-03-30 16:12:59 -08:00
@@ -697,11 +697,10 @@
static int snd_cs4281_trigger(snd_pcm_substream_t *substream, int cmd)
{
- unsigned long flags;
cs4281_dma_t *dma = (cs4281_dma_t *)substream->runtime->private_data;
cs4281_t *chip = snd_pcm_substream_chip(substream);
- spin_lock_irqsave(&chip->reg_lock, flags);
+ spin_lock(&chip->reg_lock);
switch (cmd) {
case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
dma->valDCR |= BA0_DCR_MSK;
@@ -728,13 +727,13 @@
dma->valFCR &= ~BA0_FCR_FEN;
break;
default:
- spin_unlock_irqrestore(&chip->reg_lock, flags);
+ spin_unlock(&chip->reg_lock);
return -EINVAL;
}
snd_cs4281_pokeBA0(chip, dma->regDMR, dma->valDMR);
snd_cs4281_pokeBA0(chip, dma->regFCR, dma->valFCR);
snd_cs4281_pokeBA0(chip, dma->regDCR, dma->valDCR);
- spin_unlock_irqrestore(&chip->reg_lock, flags);
+ spin_unlock(&chip->reg_lock);
return 0;
}
diff -Nru a/sound/pci/cs46xx/cs46xx_lib.c b/sound/pci/cs46xx/cs46xx_lib.c
--- a/sound/pci/cs46xx/cs46xx_lib.c 2005-03-30 16:12:59 -08:00
+++ b/sound/pci/cs46xx/cs46xx_lib.c 2005-03-30 16:12:59 -08:00
@@ -765,9 +765,6 @@
static int snd_cs46xx_playback_trigger(snd_pcm_substream_t * substream,
int cmd)
{
-#ifndef CONFIG_SND_CS46XX_NEW_DSP
- unsigned long flags;
-#endif
cs46xx_t *chip = snd_pcm_substream_chip(substream);
/*snd_pcm_runtime_t *runtime = substream->runtime;*/
int result = 0;
@@ -792,7 +789,7 @@
if (substream->runtime->periods != CS46XX_FRAGS)
snd_cs46xx_playback_transfer(substream);
#else
- spin_lock_irqsave(&chip->reg_lock, flags);
+ spin_lock(&chip->reg_lock);
if (substream->runtime->periods != CS46XX_FRAGS)
snd_cs46xx_playback_transfer(substream);
{ unsigned int tmp;
@@ -800,7 +797,7 @@
tmp &= 0x0000ffff;
snd_cs46xx_poke(chip, BA1_PCTL, chip->play_ctl | tmp);
}
- spin_unlock_irqrestore(&chip->reg_lock, flags);
+ spin_unlock(&chip->reg_lock);
#endif
break;
case SNDRV_PCM_TRIGGER_STOP:
@@ -813,13 +810,13 @@
if (!cpcm->pcm_channel->unlinked)
cs46xx_dsp_pcm_unlink(chip,cpcm->pcm_channel);
#else
- spin_lock_irqsave(&chip->reg_lock, flags);
+ spin_lock(&chip->reg_lock);
{ unsigned int tmp;
tmp = snd_cs46xx_peek(chip, BA1_PCTL);
tmp &= 0x0000ffff;
snd_cs46xx_poke(chip, BA1_PCTL, tmp);
}
- spin_unlock_irqrestore(&chip->reg_lock, flags);
+ spin_unlock(&chip->reg_lock);
#endif
break;
default:
@@ -833,12 +830,11 @@
static int snd_cs46xx_capture_trigger(snd_pcm_substream_t * substream,
int cmd)
{
- unsigned long flags;
cs46xx_t *chip = snd_pcm_substream_chip(substream);
unsigned int tmp;
int result = 0;
- spin_lock_irqsave(&chip->reg_lock, flags);
+ spin_lock(&chip->reg_lock);
switch (cmd) {
case SNDRV_PCM_TRIGGER_START:
case SNDRV_PCM_TRIGGER_RESUME:
@@ -856,7 +852,7 @@
result = -EINVAL;
break;
}
- spin_unlock_irqrestore(&chip->reg_lock, flags);
+ spin_unlock(&chip->reg_lock);
return result;
}
diff -Nru a/sound/pci/ens1370.c b/sound/pci/ens1370.c
--- a/sound/pci/ens1370.c 2005-03-30 16:12:59 -08:00
+++ b/sound/pci/ens1370.c 2005-03-30 16:12:59 -08:00
@@ -754,8 +754,6 @@
static int snd_ensoniq_trigger(snd_pcm_substream_t *substream, int cmd)
{
- unsigned long flags;
-
ensoniq_t *ensoniq = snd_pcm_substream_chip(substream);
switch (cmd) {
case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
@@ -775,13 +773,13 @@
} else if (s == ensoniq->capture_substream)
return -EINVAL;
}
- spin_lock_irqsave(&ensoniq->reg_lock, flags);
+ spin_lock(&ensoniq->reg_lock);
if (cmd == SNDRV_PCM_TRIGGER_PAUSE_PUSH)
ensoniq->sctrl |= what;
else
ensoniq->sctrl &= ~what;
outl(ensoniq->sctrl, ES_REG(ensoniq, SERIAL));
- spin_unlock_irqrestore(&ensoniq->reg_lock, flags);
+ spin_unlock(&ensoniq->reg_lock);
break;
}
case SNDRV_PCM_TRIGGER_START:
@@ -803,13 +801,13 @@
snd_pcm_trigger_done(s, substream);
}
}
- spin_lock_irqsave(&ensoniq->reg_lock, flags);
+ spin_lock(&ensoniq->reg_lock);
if (cmd == SNDRV_PCM_TRIGGER_START)
ensoniq->ctrl |= what;
else
ensoniq->ctrl &= ~what;
outl(ensoniq->ctrl, ES_REG(ensoniq, CONTROL));
- spin_unlock_irqrestore(&ensoniq->reg_lock, flags);
+ spin_unlock(&ensoniq->reg_lock);
break;
}
default:
@@ -958,11 +956,10 @@
static snd_pcm_uframes_t snd_ensoniq_playback1_pointer(snd_pcm_substream_t *
substream)
{
- unsigned long flags;
ensoniq_t *ensoniq = snd_pcm_substream_chip(substream);
size_t ptr;
- spin_lock_irqsave(&ensoniq->reg_lock, flags);
+ spin_lock(&ensoniq->reg_lock);
if (inl(ES_REG(ensoniq, CONTROL)) & ES_DAC1_EN) {
outl(ES_MEM_PAGEO(ES_PAGE_DAC), ES_REG(ensoniq, MEM_PAGE));
ptr = ES_REG_FCURR_COUNTI(inl(ES_REG(ensoniq, DAC1_SIZE)));
@@ -970,17 +967,16 @@
} else {
ptr = 0;
}
- spin_unlock_irqrestore(&ensoniq->reg_lock, flags);
+ spin_unlock(&ensoniq->reg_lock);
return ptr;
}
static snd_pcm_uframes_t snd_ensoniq_playback2_pointer(snd_pcm_substream_t *
substream)
{
- unsigned long flags;
ensoniq_t *ensoniq = snd_pcm_substream_chip(substream);
size_t ptr;
- spin_lock_irqsave(&ensoniq->reg_lock, flags);
+ spin_lock(&ensoniq->reg_lock);
if (inl(ES_REG(ensoniq, CONTROL)) & ES_DAC2_EN) {
outl(ES_MEM_PAGEO(ES_PAGE_DAC), ES_REG(ensoniq, MEM_PAGE));
ptr = ES_REG_FCURR_COUNTI(inl(ES_REG(ensoniq, DAC2_SIZE)));
@@ -988,17 +984,16 @@
} else {
ptr = 0;
}
- spin_unlock_irqrestore(&ensoniq->reg_lock, flags);
+ spin_unlock(&ensoniq->reg_lock);
return ptr;
}
static snd_pcm_uframes_t snd_ensoniq_capture_pointer(snd_pcm_substream_t *
substream)
{
- unsigned long flags;
ensoniq_t *ensoniq = snd_pcm_substream_chip(substream);
size_t ptr;
- spin_lock_irqsave(&ensoniq->reg_lock, flags);
+ spin_lock(&ensoniq->reg_lock);
if (inl(ES_REG(ensoniq, CONTROL)) & ES_ADC_EN) {
outl(ES_MEM_PAGEO(ES_PAGE_ADC), ES_REG(ensoniq, MEM_PAGE));
ptr = ES_REG_FCURR_COUNTI(inl(ES_REG(ensoniq, ADC_SIZE)));
@@ -1006,7 +1001,7 @@
} else {
ptr = 0;
}
- spin_unlock_irqrestore(&ensoniq->reg_lock, flags);
+ spin_unlock(&ensoniq->reg_lock);
return ptr;
}
diff -Nru a/sound/pci/rme9652/hdsp.c b/sound/pci/rme9652/hdsp.c
--- a/sound/pci/rme9652/hdsp.c 2005-03-30 16:12:59 -08:00
+++ b/sound/pci/rme9652/hdsp.c 2005-03-30 16:12:59 -08:00
@@ -3905,7 +3905,6 @@
static int snd_hdsp_trigger(snd_pcm_substream_t *substream, int cmd)
{
- unsigned long flags;
hdsp_t *hdsp = snd_pcm_substream_chip(substream);
snd_pcm_substream_t *other;
int running;
@@ -3925,7 +3924,7 @@
return -EIO;
}
- spin_lock_irqsave(&hdsp->lock, flags);
+ spin_lock(&hdsp->lock);
running = hdsp->running;
switch (cmd) {
case SNDRV_PCM_TRIGGER_START:
@@ -3936,7 +3935,7 @@
break;
default:
snd_BUG();
- spin_unlock_irqrestore(&hdsp->lock, flags);
+ spin_unlock(&hdsp->lock);
return -EINVAL;
}
if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
@@ -3978,7 +3977,7 @@
else if (hdsp->running && !running)
hdsp_stop_audio(hdsp);
hdsp->running = running;
- spin_unlock_irqrestore(&hdsp->lock, flags);
+ spin_unlock(&hdsp->lock);
return 0;
}
-
To unsubscribe from this list: send the line "unsubscribe bk-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html