On 5/17/19 1:06 AM, Kuninori Morimoto wrote:
From: Kuninori Morimoto kuninori.morimoto.gx@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@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) {