Hello,
The following series adds support for turning the tlv320dac33 codec off in BIAS_STANDBY (and obviously in BIAS_OFF).
Since the driver already had mechanics for supporting turned off codec in register writes, the needed changes are mainly in the BIAS/stream handling.
As part of the series further optimization has been done to codec initialization, resume.
The following scenarios has been tested, and verified (I think these are covering all cases): 1. Analog bypass caused BIAS_STANDBY -> BIAS_ON We need to power on the codec, and do the chip init, but we does not need to execute the playback related configuration 2. Playback caused BIAS_STANDBY -> BIAS_ON We need to power on the codec, and do the chip init, and also we need to execute the playback related configuration. 3. Playback start, while Analog bypass is on (BIAS_ON -> BIAS_ON) We need to execute the playback related configuration. The codec is already on. 4. Analog bypass enable, while playback (BIAS_ON -> BIAS_ON) Nothing need to be done. 5. Playback start withing soc power down timeout (BIAS_ON -> BIAS_ON) We need to execute the playback related configuration. The codec is still on. 6. Analog bypass enable withing soc power down timeout (BIAS_ON -> BIAS_ON) Nothing need to be done.
This series applies on top of Liam's: git://git.kernel.org/pub/scm/linux/kernel/git/lrg/asoc-2.6.git for-2.6.35 branch
--- Peter Ujfalusi (4): ASoC: tlv320dac33: Optimize power up, and restore ASoC: tlv320dac33: Revised module loading, and DAC33 ID read ASoC: tlv320dac33: Manage a pointer for snd_pcm_substream in private structure ASoC: tlv320dac33: Support for turning off the codec in BIAS_STANDBY
sound/soc/codecs/tlv320dac33.c | 236 +++++++++++++++++++++++----------------- 1 files changed, 137 insertions(+), 99 deletions(-)