Hi Morimoto-san,
if (component->driver->probe) { ret = component->driver->probe(component); ... (A) WARN(...) } (B) WARN(...)
(snip)
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.
I think this commit is correct, thanks. But, then, it sounds we need to check it even though without .prove ?
Sorry, I am not getting your question. I don't have a trace of which codecs need this check, and I don't know either if this check needs to be done in other cases than the .probe(). Given all this, why would we try to move this WARN statement outside of the .probe case? It seems like asking for trouble.