9 Mar
2012
9 Mar
'12
3:09 a.m.
Shawn Guo wrote:
Something like this:
@@ -496,6 +494,10 @@ static int fsl_ssi_trigger(struct snd_pcm_substream *substream, int cmd, struct snd_soc_pcm_runtime *rtd = substream->private_data; struct fsl_ssi_private *ssi_private = snd_soc_dai_get_drvdata(rtd->cpu_dai); struct ccsr_ssi __iomem *ssi = ssi_private->ssi;
unsigned long flags;
int ret = 0;
spin_lock_irqsave(&ssi_lock, flags); switch (cmd) { case SNDRV_PCM_TRIGGER_START:
@@ -517,10 +519,12 @@ static int fsl_ssi_trigger(struct snd_pcm_substream *substream, int cmd, break;
default:
return -EINVAL;
ret = -EINVAL; }
return 0;
spin_unlock_irqrestore(&ssi_lock, flags);
}return ret;
That's the general idea, but I think it needs more study. I don't consider this to be a bug that needs to be fixed ASAP, since it's never been an actual problem so far. For instance, do we need to protect between hw_params and _trigger?
--
Timur Tabi
Linux kernel developer at Freescale