static int es8316_resume(struct snd_soc_codec *codec)
{
+ struct es8316_priv *es8316 = snd_soc_codec_get_drvdata(codec);
+ int retv;
+
+ pr_info("%s: %d\n", __func__, __LINE__);
+ retv = es8316_reset(codec); /* UPDATED BY DAVID,15-3-5 */
+ retv = snd_soc_read(codec, ES8316_CLKMGR_ADCDIV2_REG05);
+ if (retv == 0) {
+ es8316_init_regs(codec);
+ if (es8316->dmic_amic == dmic_used) {
+ /* set gpio2 to DMIC CLK */
+ snd_soc_write(codec, ES8316_GPIO_SEL_REG4D, 0x02);
+ } else {
+ /* set gpio2 to GM SHORT */
+ snd_soc_write(codec, ES8316_GPIO_SEL_REG4D, 0x00);
+ }
+ /* max debance time, enable interrupt, low active */
+ snd_soc_write(codec, ES8316_GPIO_DEBUNCE_INT_REG4E, 0xf3);
+ /* es8316_set_bias_level(codec, SND_SOC_BIAS_OFF); */
+ snd_soc_write(codec, ES8316_CPHP_OUTEN_REG17, 0x00);
+ snd_soc_write(codec, ES8316_DAC_PDN_REG2F, 0x11);
+ snd_soc_write(codec, ES8316_CPHP_LDOCTL_REG1B, 0x03);
+ snd_soc_write(codec, ES8316_CPHP_PDN2_REG1A, 0x22);
+ snd_soc_write(codec, ES8316_CPHP_PDN1_REG19, 0x06);
+ snd_soc_write(codec, ES8316_HPMIX_SWITCH_REG14, 0x00);
+ snd_soc_write(codec, ES8316_HPMIX_PDN_REG15, 0x33);
+ snd_soc_write(codec, ES8316_HPMIX_VOL_REG16, 0x00);
+ snd_soc_write(codec, ES8316_SYS_PDN_REG0D, 0x3F);
+ snd_soc_write(codec, ES8316_SYS_LP1_REG0E, 0xFF);
+ snd_soc_write(codec, ES8316_SYS_LP2_REG0F, 0xFF);
+ snd_soc_write(codec, ES8316_CLKMGR_CLKSW_REG01, 0xF3);
+ snd_soc_write(codec, ES8316_ADC_PDN_LINSEL_REG22, 0xc0);
+ es8316_init_reg = 1;
+ }
return 0;
}