From b68fc0f2ba50339f42356c0120bba769f295acae Mon Sep 17 00:00:00 2001 From: ChenJQ Date: Thu, 2 Sep 2010 19:39:57 -0700 Subject: [PATCH] =?utf8?q?=E4=BF=AE=E6=94=B9wm8994=20codec=20resume?= =?utf8?q?=E6=B2=A1=E6=9C=89=E5=A3=B0=E9=9F=B3=EF=BC=8C=E5=8F=96=E6=B6=88r?= =?utf8?q?esume=E8=B0=83=E7=94=A8hw=5Fwrite?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- sound/soc/codecs/wm8994.c | 33 ++++++++++----------------------- 1 file changed, 10 insertions(+), 23 deletions(-) diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c index ebd86d94e025..3b71911722b1 100755 --- a/sound/soc/codecs/wm8994.c +++ b/sound/soc/codecs/wm8994.c @@ -284,10 +284,10 @@ void AP_to_speakers(void) wm8994_write(0x60, 0x00EE); wm8994_write(0x208, 0x000A); wm8994_write(0x420, 0x0000); - + wm8994_write(0x601, 0x0001); wm8994_write(0x602, 0x0001); - + wm8994_write(0x610, 0x01c0); //DAC1 Left Volume bit0~7 wm8994_write(0x611, 0x01c0); //DAC1 Right Volume bit0~7 wm8994_write(0x03, 0x0330); @@ -303,8 +303,6 @@ void AP_to_speakers(void) wm8994_write(0x305, 0x0040); // AIF1 DACLRCK DIV-----BCLK/64 wm8994_write(0x302, 0x4000); // AIF1_MSTR=1 #endif - - mdelay(WM8994_DELAY); } void recorder_and_AP_to_headset(void) @@ -1045,8 +1043,8 @@ void BT_baseband(void) wm8994_write(0x603, 0x000C); wm8994_write(0x604, 0x0010); wm8994_write(0x605, 0x0010); - wm8994_write(0x606, 0x0003); - wm8994_write(0x607, 0x0003); + //wm8994_write(0x606, 0x0003); + //wm8994_write(0x607, 0x0003); wm8994_write(0x610, 0x01C0); wm8994_write(0x612, 0x01C0); wm8994_write(0x613, 0x01C0); @@ -2597,33 +2595,23 @@ static int wm8994_resume(struct platform_device *pdev) { struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_codec *codec = socdev->card->codec; - int i; - u8 data[2]; - u16 *cache = codec->reg_cache; wm8994_codec_fnc_t **wm8994_fnc_ptr=wm8994_codec_sequence; - - /* Sync reg_cache with the hardware */ - for (i = 0; i < WM8994_NUM_REG; i++) { - if (i == WM8994_RESET) - continue; - data[0] = (i << 1) | ((cache[i] >> 8) & 0x0001); - data[1] = cache[i] & 0x00ff; - codec->hw_write(codec->control_data, data, 2); - } + unsigned char wm8994_resume_mode=wm8994_current_mode; + wm8994_current_mode=null; wm8994_set_bias_level(codec,SND_SOC_BIAS_STANDBY); - if(wm8994_current_mode<=wm8994_AP_to_speakers) + if(wm8994_resume_mode<=wm8994_AP_to_speakers) { - wm8994_fnc_ptr+=wm8994_current_mode; + wm8994_fnc_ptr+=wm8994_resume_mode; (*wm8994_fnc_ptr)() ; } - else if(wm8994_current_mode>wm8994_BT_baseband_and_record) + else if(wm8994_resume_mode>wm8994_BT_baseband_and_record) { printk("%s--%d--: Wm8994 resume with null mode\n",__FUNCTION__,__LINE__); } else { - wm8994_fnc_ptr+=wm8994_current_mode; + wm8994_fnc_ptr+=wm8994_resume_mode; (*wm8994_fnc_ptr)(); printk("%s--%d--: Wm8994 resume with error mode\n",__FUNCTION__,__LINE__); } @@ -2848,7 +2836,6 @@ int reg_send_data(struct i2c_client *client, unsigned short *reg, unsigned short msg.flags = client->flags; msg.scl_rate = scl_rate; msg.read_type = I2C_NORMAL; - ret = i2c_transfer(adap, &msg, 1); return ret; -- 2.34.1