[alsa-devel] [PATCH][RFC] ASoC: soc-core: WARN() is not related to component->driver->probe

Pierre-Louis Bossart pierre-louis.bossart at linux.intel.com
Fri May 17 15:08:08 CEST 2019



On 5/17/19 1:06 AM, Kuninori Morimoto wrote:
> From: Kuninori Morimoto <kuninori.morimoto.gx at renesas.com>
> 
> soc_probe_component() has WARN() under if (component->driver->probe),
> but, this WARN() check is not related to .probe callback.
> So, it should be called at (B) instead of (A).
> This patch moves it out of if().
> 
> 	if (component->driver->probe) {
> 		ret = component->driver->probe(component);
> 		...
> (A)		WARN(...)
> 	}
> (B)	WARN(...)
> 
> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx at renesas.com>
> ---
> Mark, Pierre-Louis, Vinod, Liam
> 
> I think this patch is correct, but I'm not sure.
> I'm happy someone can confirm it.

This WARN() was added in 2012 by ff541f4b2a75 ('ASoC: core: giving WARN 
when device starting from non-off bias with idle_bias_off')

The commit message hints at an intentional check

"
Just found some cases that some codec drivers set the bias to _STANDBY 
and set idle_bias_off to 1 during probing.
It will cause unpaired runtime_get_sync/put() issue. Also as Mark 
suggested, there is no reason to start from _STANDBY bias with 
idle_bias_off == 1.

So here giving one warning when detected (dapm.idle_bias_off == 1) and
     (dapm.bias_level != SND_SOC_BIAS_OFF) just after driver->probe().
"

My take is that unless we can prove this is incorrect we leave it as is.

> 
>   sound/soc/soc-core.c | 9 ++++-----
>   1 file changed, 4 insertions(+), 5 deletions(-)
> 
> diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
> index cab30ae..7157d67 100644
> --- a/sound/soc/soc-core.c
> +++ b/sound/soc/soc-core.c
> @@ -1420,12 +1420,11 @@ static int soc_probe_component(struct snd_soc_card *card,
>   				"ASoC: failed to probe component %d\n", ret);
>   			goto err_probe;
>   		}
> -
> -		WARN(dapm->idle_bias_off &&
> -			dapm->bias_level != SND_SOC_BIAS_OFF,
> -			"codec %s can not start from non-off bias with idle_bias_off==1\n",
> -			component->name);
>   	}
> +	WARN(dapm->idle_bias_off &&
> +	     dapm->bias_level != SND_SOC_BIAS_OFF,
> +	     "codec %s can not start from non-off bias with idle_bias_off==1\n",
> +	     component->name);
>   
>   	/* machine specific init */
>   	if (component->init) {
> 


More information about the Alsa-devel mailing list