Re: [PATCH] ASoC: dmic: Introduce mode switch delay

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 02 Nov 2018 08:30:47 +0100,
Jenny TC wrote:
> 
> Some DMICs require a delay as defined in the DMIC data sheet to complete
> DMIC mode transitions. DMIC may enter a bad state if the clock is stopped
> before successful mode transition. To handle this, a delay is introduced
> in the STOP STREAM to ensure the clock is running for the mode switch delay
> duration. A module parameter is introduced to pass the delay as a module
> parameter.
> 
> Signed-off-by: Sathyanarayana Nujella <sathyanarayana.nujella@xxxxxxxxx>
> Signed-off-by: Jairaj Arava <jairaj.arava@xxxxxxxxx>
> Signed-off-by: Harsha Priya <harshapriya.n@xxxxxxxxx>
> ---
>  sound/soc/codecs/dmic.c | 31 +++++++++++++++++++++++++++++++
>  1 file changed, 31 insertions(+)
> 
> diff --git a/sound/soc/codecs/dmic.c b/sound/soc/codecs/dmic.c
> index 8c4926d..0527bc2 100644
> --- a/sound/soc/codecs/dmic.c
> +++ b/sound/soc/codecs/dmic.c
> @@ -30,9 +30,35 @@
>  #include <sound/soc.h>
>  #include <sound/soc-dapm.h>
>  
> +static int modeswitch_delay_ms;
> +module_param(modeswitch_delay_ms, uint, 0644);

signed or unsigned?


>  struct dmic {
>  	struct gpio_desc *gpio_en;
>  	int wakeup_delay;
> +	/* Delay after DMIC mode switch */
> +	int modeswitch_delay_ms;
> +};
> +
> +int dmic_daiops_trigger(struct snd_pcm_substream *substream,
> +		int cmd, struct snd_soc_dai *dai)
> +{
> +	struct snd_soc_component *component = dai->component;
> +	struct dmic *dmic = snd_soc_component_get_drvdata(component);
> +
> +	switch (cmd) {
> +	case SNDRV_PCM_TRIGGER_STOP:
> +		if (dmic->modeswitch_delay_ms)
> +			mdelay(dmic->modeswitch_delay_ms);

You need to have a value sanity check either at execution time or at
initialization time.  The current code allows user to stall for a
quite long time by passing some bad value via module option.


thanks,

Takashi
_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel



[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Pulse Audio]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux