17 Dec
2013
17 Dec
'13
11:50 p.m.
On Thu, Dec 12, 2013 at 05:59:28PM +0800, Nicolin Chen wrote:
- mask = WM8962_MIXINL_TO_HPMIXL_MASK | WM8962_MIXINR_TO_HPMIXL_MASK |
WM8962_IN4L_TO_HPMIXL_MASK | WM8962_IN4R_TO_HPMIXL_MASK;
- bypass |= snd_soc_read(codec, WM8962_HEADPHONE_MIXER_1) & mask;
- bypass |= snd_soc_read(codec, WM8962_HEADPHONE_MIXER_2) & mask;
- bypass |= snd_soc_read(codec, WM8962_SPEAKER_MIXER_1) & mask;
- bypass |= snd_soc_read(codec, WM8962_SPEAKER_MIXER_2) & mask;
- /* Don't diable FLL if running multi-substreams or analogue bypass */
- if (codec_dai->active != 1 || bypass)
return 0;
I don't think this works with the power down delay we do on playback - the DAI will go inactive when closed but we'll still have the CODEC active and using its clocks until the power down time has elapsed if it's a playback DAI. Trying to reclock the device while active is at best risky, even if it's muted.
I do think refcounting from both here and the bias level changes is going to be the most robust thing, that'd also avoid the need to peer into the CODEC register map.