|
@@ -175,9 +175,10 @@ static int omap_pcm_trigger(struct snd_pcm_substream *substream, int cmd)
|
|
{
|
|
{
|
|
struct snd_pcm_runtime *runtime = substream->runtime;
|
|
struct snd_pcm_runtime *runtime = substream->runtime;
|
|
struct omap_runtime_data *prtd = runtime->private_data;
|
|
struct omap_runtime_data *prtd = runtime->private_data;
|
|
|
|
+ unsigned long flags;
|
|
int ret = 0;
|
|
int ret = 0;
|
|
|
|
|
|
- spin_lock_irq(&prtd->lock);
|
|
|
|
|
|
+ spin_lock_irqsave(&prtd->lock, flags);
|
|
switch (cmd) {
|
|
switch (cmd) {
|
|
case SNDRV_PCM_TRIGGER_START:
|
|
case SNDRV_PCM_TRIGGER_START:
|
|
case SNDRV_PCM_TRIGGER_RESUME:
|
|
case SNDRV_PCM_TRIGGER_RESUME:
|
|
@@ -195,7 +196,7 @@ static int omap_pcm_trigger(struct snd_pcm_substream *substream, int cmd)
|
|
default:
|
|
default:
|
|
ret = -EINVAL;
|
|
ret = -EINVAL;
|
|
}
|
|
}
|
|
- spin_unlock_irq(&prtd->lock);
|
|
|
|
|
|
+ spin_unlock_irqrestore(&prtd->lock, flags);
|
|
|
|
|
|
return ret;
|
|
return ret;
|
|
}
|
|
}
|