On 01/11/2013 12:52 PM, Mark Brown wrote:
On Fri, Jan 11, 2013 at 11:32:32AM +0100, Peter Ujfalusi wrote:
- twl6040_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
- twl6040_set_bias_level(codec, codec->dapm.suspend_bias_level);
- if (codec->dapm.bias_level != codec->dapm.suspend_bias_level) {
twl6040_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
twl6040_set_bias_level(codec, codec->dapm.suspend_bias_level);
- }
The device should always be in either _STANDBY or _OFF (depending on if it supports idle_bias_off) before it tries to suspend so suspend_bias_level ought to be redundant. We should really get round to killing it...
Yes, that's true. At the moment I can just send the codec to _STANDBY in resume since I don't have idle_bias_off support ready (due to external dependencies, but I'm working on it). But when we have idle_bias_off support we want to avoid sending the codec to _STANDBY here just that ASoC core will put us back to _OFF later on. On/Off is a bit expensive on twl6040. Since the core saves the previous bias_level in before suspend I can just do this here:
twl6040_set_bias_level(codec, codec->dapm.suspend_bias_level);
If we were in _OFF before it is going to do nothing, but if we were in _STANDBY it brings the codec back.