[alsa-devel] Question about sound device release timing

Kuninori Morimoto kuninori.morimoto.gx at renesas.com
Fri Aug 25 10:44:00 CEST 2017


Hi Mark, Takashi-san

> --- a/sound/soc/soc-pcm.c
> +++ b/sound/soc/soc-pcm.c
> @@ -2632,6 +2632,16 @@ static int dpcm_fe_dai_close(struct snd_pcm_substream *fe_substream)
>  	return ret;
>  }
>  
> +static void soc_pcm_private_free(struct snd_pcm *pcm)
> +{
> +	struct snd_soc_pcm_runtime *rtd = pcm->private_data;
> +	struct snd_soc_platform *platform = rtd->platform;
> +
> +	flush_delayed_work(&rtd->delayed_work);
> +	if (platform->driver->pcm_free)
> +		if (platform->driver->pcm_free(pcm);
> +}
> +
>  /* create a new pcm */
>  int soc_new_pcm(struct snd_soc_pcm_runtime *rtd, int num)
>  {
> @@ -2757,7 +2767,7 @@ int soc_new_pcm(struct snd_soc_pcm_runtime *rtd, int num)
>  		}
>  	}
>  
> -	pcm->private_free = platform->driver->pcm_free;
> +	pcm->private_free = soc_pcm_private_free;

Thanks !
I confirmed that this solved my issue from kernel Oops.
 - Renesas Lager board
 - Renesas R-Car Salvator-X board

Reported-by: Hiep Cao Minh <cm-hiep at jinso.co.jp>
Reported-by: Kuninori Morimoto <kuninori.morimoto.gx at renesas.com>
Tested-by: Kuninori Morimoto <kuninori.morimoto.gx at renesas.com>

> Mark

If above patch was added, my current posted patch
# ASoC: add Component level pcm_new/pcm_free v2
# Date: Tue, 08 Aug 2017 15:12:06 +0900
will have conflict. Then I can re-post it.
Please let me know if your review was finished.

> > 	/*
> > 	 * custom kernel for avoiding close_delayed_work()
> > 	 */
> > 	> aplay xxx.wav &
> > 	> echo xxxx > /sys/bus/platform/drivers/rcar_sound/unbind
> > 	/* unbind codec and card drivers here */
> > 	>
> > 	/*
> > 	 * try re-bind
> > 	 */
> > 	/* re-bind codec and card drivers here */
> > 	> echo xxxx > /sys/bus/platform/drivers/rcar_sound/bind 
> > 	rcar_sound ec500000.sound: probed
> > 	asoc-simple-card sound: ak4613-hifi <-> ec500000.sound mapping ok
> > 	>
> > 	> aplay xxx.wav 
> > 	Playing WAVE '/home/Calm_16bit_48k.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo
> > 	ALSA lib pcm_params.c:2162:(snd1_pcm_hw_refine_slave) Slave PCM not usable
> > 	aplay: set_params:1204: Broken configuration for this PCM: no configurations available
> > 
> > Do you know why or have hint to solve these issue ?
> 
> It's hard to say only from that...  But judging from your description,
> it must be relevant with the stale DAPM setup that was left untouched
> at the previous driver unbind?  That is, the driver doesn't fully
> initialize the hardware at probe.

Thanks.
I noticed that my one board could re-bind without issue,
but one board had issue. I want to debug it.
Do you know which function returns error to user side ?
# set_params is only used on soc-compress, but my driver doesn't use it.

Best regards
---
Kuninori Morimoto


More information about the Alsa-devel mailing list