On Sat, 08 Sep 2018 15:40:41 +0200, Stefan Wahren wrote: > > Hi, > > > Takashi Iwai <ti...@suse.de> hat am 4. September 2018 um 17:58 geschrieben: > > > > > > The chip->audio_mutex is used basically for protecting the opened > > stream assignment, and the prepare callback is irrelevant with it. > > > > Signed-off-by: Takashi Iwai <ti...@suse.de> > > --- > > drivers/staging/vc04_services/bcm2835-audio/bcm2835-pcm.c | 8 ++------ > > 1 file changed, 2 insertions(+), 6 deletions(-) > > > > diff --git a/drivers/staging/vc04_services/bcm2835-audio/bcm2835-pcm.c > > b/drivers/staging/vc04_services/bcm2835-audio/bcm2835-pcm.c > > index 1f9c940f1cc3..9659c25b9f9d 100644 > > --- a/drivers/staging/vc04_services/bcm2835-audio/bcm2835-pcm.c > > +++ b/drivers/staging/vc04_services/bcm2835-audio/bcm2835-pcm.c > > @@ -218,8 +218,6 @@ static int snd_bcm2835_pcm_prepare(struct > > snd_pcm_substream *substream) > > int channels; > > int err; > > > > - mutex_lock(&chip->audio_mutex); > > - > > /* notify the vchiq that it should enter spdif passthrough mode by > > * setting channels=0 (see > > * https://github.com/raspberrypi/linux/issues/528) > > @@ -233,7 +231,7 @@ static int snd_bcm2835_pcm_prepare(struct > > snd_pcm_substream *substream) > > runtime->rate, > > snd_pcm_format_width(runtime->format)); > > if (err < 0) > > - goto out; > > + return err; > > > > memset(&alsa_stream->pcm_indirect, 0, > > sizeof(alsa_stream->pcm_indirect)); > > > > @@ -246,9 +244,7 @@ static int snd_bcm2835_pcm_prepare(struct > > snd_pcm_substream *substream) > > alsa_stream->pos = 0; > > alsa_stream->draining = false; > > > > - out: > > - mutex_unlock(&chip->audio_mutex); > > - return err; > > + return 0; > > looks like your are removing code which has been added in patch #14 ?
No, the patch #14 corrects the missing error path. Without patch 14, the error from prepare is ignored. And this patch gets rid of the superfluous mutex lock. thanks, Takashi