[alsa-devel] Question about WM8904 regcache

Bo Shen voice.shen at atmel.com
Fri Jul 12 12:03:16 CEST 2013


Hi Mark,

On 07/12/2013 04:42 PM, Mark Brown wrote:
> On Fri, Jul 12, 2013 at 03:00:26PM +0800, Bo Shen wrote:
>
>>    I try to add the following two line in wm8904_set_bias_level into
>> "case SND_SOC_BIAS_ON", it doesn't work.
>> ---8>---
>> @@ -1832,9 +1834,12 @@ static int wm8904_set_bias_level(struct
>> snd_soc_codec *codec,
>>
>>          switch (level) {
>>          case SND_SOC_BIAS_ON:
>> +               regcache_cache_only(wm8904->regmap, false);
>> +               regcache_sync(wm8904->regmap);
>>                  break;
>> ---<8---
>
> That's far too late to be doing that, the device is already supposed to
> be powered and running - you can see the device is doing this already in
> the transition from _OFF to _STANDBY which is where it should happen.
>
>>    However, If I comment the regcache_cache_only(wm8904->regmap,
>> true) as following, then it play OK.
>> ---8>---
>> @@ -2232,7 +2239,7 @@ static int wm8904_i2c_probe(struct i2c_client *i2c,
>>                              WM8904_POBCTRL, 0);
>>
>>          /* Can leave the device powered off until we need it */
>> -       regcache_cache_only(wm8904->regmap, true);
>> +       // regcache_cache_only(wm8904->regmap, true);
>> ---<8---
>
>>    So, any clue for this issue?
>
> The device is supposed to be idle_bias_off so sitting in _BIAS_OFF when
> not in use, this should mean a transition to _STANDBY as part of the
> power up sequence which should reenable interaction with the device.
> Check to see why that is not happening - _OFF should be the default bias
> level as well.
>

Do you mean the system boot up the device should be in _BIAS_OFF state?

I add debug info to set_bias_level function, and don't see this is 
called when system boot up. When I run aplay command, it call from 
_STANDBY to _ON, not _OFF, after show the error message, it call from 
_PREPARE to _OFF.

---8>---
# aplay 44.1k_16bit_stereo.wav
Playing WAVE '44.1k_16bit_stereo.wav' : Signed 16 bit Little Endian, 
Rate 44100 Hz, Stereo
 >>>>>> leve is: 1
 >>>>>> leve is: 2
 >>>>>> leve is: 3
aplay: pcm_write:1737: write error: Input/output error
# >>>>>> leve is: 2
 >>>>>> leve is: 1
 >>>>>> leve is: 0
---<8---

Best Regards,
Bo Shen


More information about the Alsa-devel mailing list