Lines Matching refs:cs43130
238 struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); in cs43130_pll_config() local
242 cs43130->mclk, cs43130->mclk_int); in cs43130_pll_config()
244 pll_entry = cs43130_get_pll_table(cs43130->mclk, cs43130->mclk_int); in cs43130_pll_config()
249 regmap_update_bits(cs43130->regmap, CS43130_PLL_SET_1, in cs43130_pll_config()
252 cs43130->pll_bypass = true; in cs43130_pll_config()
256 cs43130->pll_bypass = false; in cs43130_pll_config()
258 regmap_update_bits(cs43130->regmap, CS43130_PLL_SET_2, in cs43130_pll_config()
262 regmap_update_bits(cs43130->regmap, CS43130_PLL_SET_3, in cs43130_pll_config()
266 regmap_update_bits(cs43130->regmap, CS43130_PLL_SET_4, in cs43130_pll_config()
270 regmap_write(cs43130->regmap, CS43130_PLL_SET_5, in cs43130_pll_config()
272 regmap_write(cs43130->regmap, CS43130_PLL_SET_6, pll_entry->pll_divout); in cs43130_pll_config()
273 regmap_write(cs43130->regmap, CS43130_PLL_SET_7, in cs43130_pll_config()
275 regmap_update_bits(cs43130->regmap, CS43130_PLL_SET_8, in cs43130_pll_config()
278 regmap_write(cs43130->regmap, CS43130_PLL_SET_9, in cs43130_pll_config()
280 regmap_update_bits(cs43130->regmap, CS43130_PLL_SET_1, in cs43130_pll_config()
290 struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); in cs43130_set_pll() local
303 cs43130->mclk = freq_in; in cs43130_set_pll()
313 cs43130->mclk_int = freq_out; in cs43130_set_pll()
316 cs43130->mclk_int = freq_out; in cs43130_set_pll()
325 dev_dbg(component->dev, "cs43130->pll_bypass = %d", cs43130->pll_bypass); in cs43130_set_pll()
333 struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); in cs43130_change_clksrc() local
336 if (src == cs43130->mclk_int_src) { in cs43130_change_clksrc()
341 switch (cs43130->mclk_int) { in cs43130_change_clksrc()
349 dev_err(component->dev, "Invalid MCLK INT freq: %u\n", cs43130->mclk_int); in cs43130_change_clksrc()
355 cs43130->pll_bypass = true; in cs43130_change_clksrc()
356 cs43130->mclk_int_src = CS43130_MCLK_SRC_EXT; in cs43130_change_clksrc()
357 if (cs43130->xtal_ibias == CS43130_XTAL_UNUSED) { in cs43130_change_clksrc()
358 regmap_update_bits(cs43130->regmap, CS43130_PWDN_CTL, in cs43130_change_clksrc()
362 reinit_completion(&cs43130->xtal_rdy); in cs43130_change_clksrc()
363 regmap_update_bits(cs43130->regmap, CS43130_INT_MASK_1, in cs43130_change_clksrc()
365 regmap_update_bits(cs43130->regmap, CS43130_PWDN_CTL, in cs43130_change_clksrc()
367 ret = wait_for_completion_timeout(&cs43130->xtal_rdy, in cs43130_change_clksrc()
369 regmap_update_bits(cs43130->regmap, CS43130_INT_MASK_1, in cs43130_change_clksrc()
378 regmap_update_bits(cs43130->regmap, CS43130_SYS_CLK_CTL_1, in cs43130_change_clksrc()
381 regmap_update_bits(cs43130->regmap, CS43130_SYS_CLK_CTL_1, in cs43130_change_clksrc()
386 regmap_update_bits(cs43130->regmap, CS43130_PWDN_CTL, in cs43130_change_clksrc()
391 cs43130->pll_bypass = false; in cs43130_change_clksrc()
392 cs43130->mclk_int_src = CS43130_MCLK_SRC_PLL; in cs43130_change_clksrc()
393 if (cs43130->xtal_ibias == CS43130_XTAL_UNUSED) { in cs43130_change_clksrc()
394 regmap_update_bits(cs43130->regmap, CS43130_PWDN_CTL, in cs43130_change_clksrc()
398 reinit_completion(&cs43130->xtal_rdy); in cs43130_change_clksrc()
399 regmap_update_bits(cs43130->regmap, CS43130_INT_MASK_1, in cs43130_change_clksrc()
401 regmap_update_bits(cs43130->regmap, CS43130_PWDN_CTL, in cs43130_change_clksrc()
403 ret = wait_for_completion_timeout(&cs43130->xtal_rdy, in cs43130_change_clksrc()
405 regmap_update_bits(cs43130->regmap, CS43130_INT_MASK_1, in cs43130_change_clksrc()
414 reinit_completion(&cs43130->pll_rdy); in cs43130_change_clksrc()
415 regmap_update_bits(cs43130->regmap, CS43130_INT_MASK_1, in cs43130_change_clksrc()
417 regmap_update_bits(cs43130->regmap, CS43130_PWDN_CTL, in cs43130_change_clksrc()
419 ret = wait_for_completion_timeout(&cs43130->pll_rdy, in cs43130_change_clksrc()
421 regmap_update_bits(cs43130->regmap, CS43130_INT_MASK_1, in cs43130_change_clksrc()
429 regmap_update_bits(cs43130->regmap, CS43130_SYS_CLK_CTL_1, in cs43130_change_clksrc()
432 regmap_update_bits(cs43130->regmap, CS43130_SYS_CLK_CTL_1, in cs43130_change_clksrc()
438 cs43130->mclk_int_src = CS43130_MCLK_SRC_RCO; in cs43130_change_clksrc()
440 regmap_update_bits(cs43130->regmap, CS43130_SYS_CLK_CTL_1, in cs43130_change_clksrc()
443 regmap_update_bits(cs43130->regmap, CS43130_SYS_CLK_CTL_1, in cs43130_change_clksrc()
448 regmap_update_bits(cs43130->regmap, CS43130_PWDN_CTL, in cs43130_change_clksrc()
451 regmap_update_bits(cs43130->regmap, CS43130_PWDN_CTL, in cs43130_change_clksrc()
558 struct cs43130_private *cs43130) in cs43130_set_sp_fmt() argument
573 switch (cs43130->dais[dai_id].dai_format) { in cs43130_set_sp_fmt()
598 switch (cs43130->dais[dai_id].dai_mode) { in cs43130_set_sp_fmt()
631 regmap_update_bits(cs43130->regmap, CS43130_ASP_LRCK_PERIOD_1, in cs43130_set_sp_fmt()
634 regmap_update_bits(cs43130->regmap, CS43130_ASP_LRCK_PERIOD_2, in cs43130_set_sp_fmt()
637 regmap_update_bits(cs43130->regmap, CS43130_ASP_LRCK_HI_TIME_1, in cs43130_set_sp_fmt()
640 regmap_update_bits(cs43130->regmap, CS43130_ASP_LRCK_HI_TIME_2, in cs43130_set_sp_fmt()
643 regmap_write(cs43130->regmap, CS43130_ASP_FRAME_CONF, frm_data); in cs43130_set_sp_fmt()
644 regmap_write(cs43130->regmap, CS43130_ASP_CH_1_LOC, loc_ch1); in cs43130_set_sp_fmt()
645 regmap_write(cs43130->regmap, CS43130_ASP_CH_2_LOC, loc_ch2); in cs43130_set_sp_fmt()
646 regmap_update_bits(cs43130->regmap, CS43130_ASP_CH_1_SZ_EN, in cs43130_set_sp_fmt()
648 regmap_update_bits(cs43130->regmap, CS43130_ASP_CH_2_SZ_EN, in cs43130_set_sp_fmt()
650 regmap_write(cs43130->regmap, CS43130_ASP_CLOCK_CONF, clk_data); in cs43130_set_sp_fmt()
653 regmap_update_bits(cs43130->regmap, CS43130_XSP_LRCK_PERIOD_1, in cs43130_set_sp_fmt()
656 regmap_update_bits(cs43130->regmap, CS43130_XSP_LRCK_PERIOD_2, in cs43130_set_sp_fmt()
659 regmap_update_bits(cs43130->regmap, CS43130_XSP_LRCK_HI_TIME_1, in cs43130_set_sp_fmt()
662 regmap_update_bits(cs43130->regmap, CS43130_XSP_LRCK_HI_TIME_2, in cs43130_set_sp_fmt()
665 regmap_write(cs43130->regmap, CS43130_XSP_FRAME_CONF, frm_data); in cs43130_set_sp_fmt()
666 regmap_write(cs43130->regmap, CS43130_XSP_CH_1_LOC, loc_ch1); in cs43130_set_sp_fmt()
667 regmap_write(cs43130->regmap, CS43130_XSP_CH_2_LOC, loc_ch2); in cs43130_set_sp_fmt()
668 regmap_update_bits(cs43130->regmap, CS43130_XSP_CH_1_SZ_EN, in cs43130_set_sp_fmt()
670 regmap_update_bits(cs43130->regmap, CS43130_XSP_CH_2_SZ_EN, in cs43130_set_sp_fmt()
672 regmap_write(cs43130->regmap, CS43130_XSP_CLOCK_CONF, clk_data); in cs43130_set_sp_fmt()
680 clk_gen = cs43130_get_clk_gen(cs43130->mclk_int, in cs43130_set_sp_fmt()
686 clk_gen = cs43130_get_clk_gen(cs43130->mclk_int, in cs43130_set_sp_fmt()
692 clk_gen = cs43130_get_clk_gen(cs43130->mclk_int, in cs43130_set_sp_fmt()
698 clk_gen = cs43130_get_clk_gen(cs43130->mclk_int, in cs43130_set_sp_fmt()
713 regmap_write(cs43130->regmap, CS43130_ASP_DEN_1, in cs43130_set_sp_fmt()
716 regmap_write(cs43130->regmap, CS43130_ASP_DEN_2, in cs43130_set_sp_fmt()
719 regmap_write(cs43130->regmap, CS43130_ASP_NUM_1, in cs43130_set_sp_fmt()
722 regmap_write(cs43130->regmap, CS43130_ASP_NUM_2, in cs43130_set_sp_fmt()
727 regmap_write(cs43130->regmap, CS43130_XSP_DEN_1, in cs43130_set_sp_fmt()
730 regmap_write(cs43130->regmap, CS43130_XSP_DEN_2, in cs43130_set_sp_fmt()
733 regmap_write(cs43130->regmap, CS43130_XSP_NUM_1, in cs43130_set_sp_fmt()
736 regmap_write(cs43130->regmap, CS43130_XSP_NUM_2, in cs43130_set_sp_fmt()
775 struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); in cs43130_dsd_hw_params() local
779 mutex_lock(&cs43130->clk_mutex); in cs43130_dsd_hw_params()
780 if (!cs43130->clk_req) { in cs43130_dsd_hw_params()
787 cs43130_set_pll(component, 0, 0, cs43130->mclk, required_clk); in cs43130_dsd_hw_params()
788 if (cs43130->pll_bypass) in cs43130_dsd_hw_params()
794 cs43130->clk_req++; in cs43130_dsd_hw_params()
795 if (cs43130->clk_req == 2) in cs43130_dsd_hw_params()
796 cs43130_pcm_dsd_mix(true, cs43130->regmap); in cs43130_dsd_hw_params()
797 mutex_unlock(&cs43130->clk_mutex); in cs43130_dsd_hw_params()
812 if (cs43130->dais[dai->id].dai_mode == SND_SOC_DAIFMT_CBM_CFM) in cs43130_dsd_hw_params()
813 regmap_update_bits(cs43130->regmap, CS43130_DSD_INT_CFG, in cs43130_dsd_hw_params()
816 regmap_update_bits(cs43130->regmap, CS43130_DSD_INT_CFG, in cs43130_dsd_hw_params()
819 regmap_update_bits(cs43130->regmap, CS43130_DSD_PATH_CTL_2, in cs43130_dsd_hw_params()
822 regmap_update_bits(cs43130->regmap, CS43130_DSD_PATH_CTL_2, in cs43130_dsd_hw_params()
834 struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); in cs43130_hw_params() local
836 unsigned int sclk = cs43130->dais[dai->id].sclk; in cs43130_hw_params()
842 mutex_lock(&cs43130->clk_mutex); in cs43130_hw_params()
843 if (!cs43130->clk_req) { in cs43130_hw_params()
850 cs43130_set_pll(component, 0, 0, cs43130->mclk, required_clk); in cs43130_hw_params()
851 if (cs43130->pll_bypass) in cs43130_hw_params()
857 cs43130->clk_req++; in cs43130_hw_params()
858 if (cs43130->clk_req == 2) in cs43130_hw_params()
859 cs43130_pcm_dsd_mix(true, cs43130->regmap); in cs43130_hw_params()
860 mutex_unlock(&cs43130->clk_mutex); in cs43130_hw_params()
883 regmap_update_bits(cs43130->regmap, CS43130_DSD_PATH_CTL_2, in cs43130_hw_params()
892 regmap_write(cs43130->regmap, CS43130_SP_SRATE, rate_map->val); in cs43130_hw_params()
901 regmap_update_bits(cs43130->regmap, CS43130_DSD_PATH_CTL_2, in cs43130_hw_params()
906 regmap_update_bits(cs43130->regmap, CS43130_DSD_PATH_CTL_2, in cs43130_hw_params()
912 if (!sclk && cs43130->dais[dai->id].dai_mode == SND_SOC_DAIFMT_CBM_CFM) in cs43130_hw_params()
937 cs43130_set_bitwidth(dai->id, bitwidth_dai, cs43130->regmap); in cs43130_hw_params()
938 cs43130_set_sp_fmt(dai->id, bitwidth_sclk, params, cs43130); in cs43130_hw_params()
947 struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); in cs43130_hw_free() local
949 mutex_lock(&cs43130->clk_mutex); in cs43130_hw_free()
950 cs43130->clk_req--; in cs43130_hw_free()
951 if (!cs43130->clk_req) { in cs43130_hw_free()
954 cs43130_pcm_dsd_mix(false, cs43130->regmap); in cs43130_hw_free()
956 mutex_unlock(&cs43130->clk_mutex); in cs43130_hw_free()
1024 struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); in cs43130_pcm_ch_put() local
1031 switch (cs43130->dev_id) { in cs43130_pcm_ch_put()
1035 regmap_multi_reg_write(cs43130->regmap, pcm_ch_en_seq, in cs43130_pcm_ch_put()
1038 regmap_multi_reg_write(cs43130->regmap, pcm_ch_dis_seq, in cs43130_pcm_ch_put()
1145 struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); in cs43130_dsd_event() local
1149 switch (cs43130->dev_id) { in cs43130_dsd_event()
1152 regmap_multi_reg_write(cs43130->regmap, dsd_seq, in cs43130_dsd_event()
1158 regmap_update_bits(cs43130->regmap, CS43130_DSD_PATH_CTL_1, in cs43130_dsd_event()
1160 switch (cs43130->dev_id) { in cs43130_dsd_event()
1163 regmap_multi_reg_write(cs43130->regmap, unmute_seq, in cs43130_dsd_event()
1169 switch (cs43130->dev_id) { in cs43130_dsd_event()
1172 regmap_multi_reg_write(cs43130->regmap, mute_seq, in cs43130_dsd_event()
1174 regmap_update_bits(cs43130->regmap, in cs43130_dsd_event()
1185 regmap_update_bits(cs43130->regmap, in cs43130_dsd_event()
1202 struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); in cs43130_pcm_event() local
1206 switch (cs43130->dev_id) { in cs43130_pcm_event()
1209 regmap_multi_reg_write(cs43130->regmap, pcm_seq, in cs43130_pcm_event()
1215 regmap_update_bits(cs43130->regmap, CS43130_PCM_PATH_CTL_1, in cs43130_pcm_event()
1217 switch (cs43130->dev_id) { in cs43130_pcm_event()
1220 regmap_multi_reg_write(cs43130->regmap, unmute_seq, in cs43130_pcm_event()
1226 switch (cs43130->dev_id) { in cs43130_pcm_event()
1229 regmap_multi_reg_write(cs43130->regmap, mute_seq, in cs43130_pcm_event()
1231 regmap_update_bits(cs43130->regmap, in cs43130_pcm_event()
1242 regmap_update_bits(cs43130->regmap, in cs43130_pcm_event()
1271 struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); in cs43130_dac_event() local
1275 switch (cs43130->dev_id) { in cs43130_dac_event()
1278 regmap_multi_reg_write(cs43130->regmap, pop_free_seq, in cs43130_dac_event()
1283 regmap_multi_reg_write(cs43130->regmap, pop_free_seq2, in cs43130_dac_event()
1291 regmap_write(cs43130->regmap, CS43130_DXD1, 0x99); in cs43130_dac_event()
1293 switch (cs43130->dev_id) { in cs43130_dac_event()
1296 regmap_multi_reg_write(cs43130->regmap, dac_postpmu_seq, in cs43130_dac_event()
1304 regmap_write(cs43130->regmap, CS43130_DXD12, 0); in cs43130_dac_event()
1309 regmap_write(cs43130->regmap, CS43130_DXD13, 0); in cs43130_dac_event()
1313 regmap_write(cs43130->regmap, CS43130_DXD1, 0); in cs43130_dac_event()
1316 switch (cs43130->dev_id) { in cs43130_dac_event()
1319 regmap_multi_reg_write(cs43130->regmap, dac_postpmd_seq, in cs43130_dac_event()
1351 struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); in cs43130_hpin_event() local
1355 regmap_multi_reg_write(cs43130->regmap, hpin_prepmd_seq, in cs43130_hpin_event()
1359 regmap_multi_reg_write(cs43130->regmap, hpin_postpmu_seq, in cs43130_hpin_event()
1472 struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); in cs43130_pcm_set_fmt() local
1476 cs43130->dais[codec_dai->id].dai_mode = SND_SOC_DAIFMT_CBS_CFS; in cs43130_pcm_set_fmt()
1479 cs43130->dais[codec_dai->id].dai_mode = SND_SOC_DAIFMT_CBM_CFM; in cs43130_pcm_set_fmt()
1488 cs43130->dais[codec_dai->id].dai_format = SND_SOC_DAIFMT_I2S; in cs43130_pcm_set_fmt()
1491 cs43130->dais[codec_dai->id].dai_format = SND_SOC_DAIFMT_LEFT_J; in cs43130_pcm_set_fmt()
1494 cs43130->dais[codec_dai->id].dai_format = SND_SOC_DAIFMT_DSP_A; in cs43130_pcm_set_fmt()
1497 cs43130->dais[codec_dai->id].dai_format = SND_SOC_DAIFMT_DSP_B; in cs43130_pcm_set_fmt()
1507 cs43130->dais[codec_dai->id].dai_mode, in cs43130_pcm_set_fmt()
1508 cs43130->dais[codec_dai->id].dai_format); in cs43130_pcm_set_fmt()
1516 struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); in cs43130_dsd_set_fmt() local
1520 cs43130->dais[codec_dai->id].dai_mode = SND_SOC_DAIFMT_CBS_CFS; in cs43130_dsd_set_fmt()
1523 cs43130->dais[codec_dai->id].dai_mode = SND_SOC_DAIFMT_CBM_CFM; in cs43130_dsd_set_fmt()
1531 cs43130->dais[codec_dai->id].dai_mode); in cs43130_dsd_set_fmt()
1540 struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); in cs43130_set_sysclk() local
1542 cs43130->dais[codec_dai->id].sclk = freq; in cs43130_set_sysclk()
1544 cs43130->dais[codec_dai->id].sclk); in cs43130_set_sysclk()
1631 struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); in cs43130_component_set_sysclk() local
1639 cs43130->mclk = freq; in cs43130_component_set_sysclk()
1647 cs43130->pll_bypass = true; in cs43130_component_set_sysclk()
1665 struct cs43130_private *cs43130 = i2c_get_clientdata(client); in cs43130_show_dc() local
1667 if (!cs43130->hpload_done) in cs43130_show_dc()
1671 cs43130->hpload_dc[ch]); in cs43130_show_dc()
1703 struct cs43130_private *cs43130 = i2c_get_clientdata(client); in cs43130_show_ac() local
1705 if (cs43130->hpload_done && cs43130->ac_meas) { in cs43130_show_ac()
1708 cs43130->hpload_ac[i][ch]); in cs43130_show_ac()
1931 struct cs43130_private *cs43130) in cs43130_update_hpload() argument
1937 struct snd_soc_component *component = cs43130->component; in cs43130_update_hpload()
1947 regmap_read(cs43130->regmap, CS43130_HP_LOAD_1, ®); in cs43130_update_hpload()
1956 regmap_read(cs43130->regmap, addr, ®); in cs43130_update_hpload()
1958 regmap_read(cs43130->regmap, addr + 1, ®); in cs43130_update_hpload()
1963 cs43130->hpload_dc[HP_LEFT] = impedance; in cs43130_update_hpload()
1965 cs43130->hpload_dc[HP_RIGHT] = impedance; in cs43130_update_hpload()
1971 cs43130->hpload_ac[ac_idx][HP_LEFT] = impedance; in cs43130_update_hpload()
1973 cs43130->hpload_ac[ac_idx][HP_RIGHT] = impedance; in cs43130_update_hpload()
1976 cs43130->ac_freq[ac_idx], !left_ch, impedance); in cs43130_update_hpload()
1982 static int cs43130_hpload_proc(struct cs43130_private *cs43130, in cs43130_hpload_proc() argument
1989 struct snd_soc_component *component = cs43130->component; in cs43130_hpload_proc()
1991 reinit_completion(&cs43130->hpload_evt); in cs43130_hpload_proc()
1994 ac_reg_val = cs43130_get_ac_reg_val(cs43130->ac_freq[ac_idx]); in cs43130_hpload_proc()
1995 regmap_update_bits(cs43130->regmap, CS43130_HP_LOAD_1, in cs43130_hpload_proc()
1997 regmap_update_bits(cs43130->regmap, CS43130_HP_MEAS_LOAD_1, in cs43130_hpload_proc()
2000 regmap_update_bits(cs43130->regmap, CS43130_HP_MEAS_LOAD_2, in cs43130_hpload_proc()
2005 regmap_multi_reg_write(cs43130->regmap, seq, in cs43130_hpload_proc()
2008 ret = wait_for_completion_timeout(&cs43130->hpload_evt, in cs43130_hpload_proc()
2010 regmap_read(cs43130->regmap, CS43130_INT_MASK_4, &msk); in cs43130_hpload_proc()
2017 cs43130->hpload_stat, msk); in cs43130_hpload_proc()
2018 if ((cs43130->hpload_stat & (CS43130_HPLOAD_NO_DC_INT | in cs43130_hpload_proc()
2021 !(cs43130->hpload_stat & rslt_msk)) { in cs43130_hpload_proc()
2063 struct cs43130_private *cs43130; in cs43130_imp_meas() local
2067 cs43130 = container_of(wk, struct cs43130_private, work); in cs43130_imp_meas()
2068 component = cs43130->component; in cs43130_imp_meas()
2070 if (!cs43130->mclk) in cs43130_imp_meas()
2073 cs43130->hpload_done = false; in cs43130_imp_meas()
2075 mutex_lock(&cs43130->clk_mutex); in cs43130_imp_meas()
2076 if (!cs43130->clk_req) { in cs43130_imp_meas()
2078 cs43130_set_pll(component, 0, 0, cs43130->mclk, CS43130_MCLK_22M); in cs43130_imp_meas()
2079 if (cs43130->pll_bypass) in cs43130_imp_meas()
2085 cs43130->clk_req++; in cs43130_imp_meas()
2086 mutex_unlock(&cs43130->clk_mutex); in cs43130_imp_meas()
2088 regmap_read(cs43130->regmap, CS43130_INT_STATUS_4, ®); in cs43130_imp_meas()
2090 switch (cs43130->dev_id) { in cs43130_imp_meas()
2100 WARN(1, "Invalid dev_id for meas: %d", cs43130->dev_id); in cs43130_imp_meas()
2107 ret = cs43130_hpload_proc(cs43130, hpload_seq[i].seq, in cs43130_imp_meas()
2113 cs43130_update_hpload(hpload_seq[i].msk, ac_idx, cs43130); in cs43130_imp_meas()
2115 if (cs43130->ac_meas && in cs43130_imp_meas()
2124 cs43130->hpload_done = true; in cs43130_imp_meas()
2126 if (cs43130->hpload_dc[HP_LEFT] >= CS43130_LINEOUT_LOAD) in cs43130_imp_meas()
2127 snd_soc_jack_report(&cs43130->jack, CS43130_JACK_LINEOUT, in cs43130_imp_meas()
2130 snd_soc_jack_report(&cs43130->jack, CS43130_JACK_HEADPHONE, in cs43130_imp_meas()
2136 cs43130->dc_threshold[i]); in cs43130_imp_meas()
2138 cs43130_set_hv(cs43130->regmap, cs43130->hpload_dc[HP_LEFT], in cs43130_imp_meas()
2139 cs43130->dc_threshold); in cs43130_imp_meas()
2142 switch (cs43130->dev_id) { in cs43130_imp_meas()
2144 cs43130_hpload_proc(cs43130, hp_dis_cal_seq, in cs43130_imp_meas()
2149 cs43130_hpload_proc(cs43130, hp_dis_cal_seq2, in cs43130_imp_meas()
2155 regmap_multi_reg_write(cs43130->regmap, hp_cln_seq, in cs43130_imp_meas()
2158 mutex_lock(&cs43130->clk_mutex); in cs43130_imp_meas()
2159 cs43130->clk_req--; in cs43130_imp_meas()
2161 if (!cs43130->clk_req) in cs43130_imp_meas()
2163 mutex_unlock(&cs43130->clk_mutex); in cs43130_imp_meas()
2168 struct cs43130_private *cs43130 = (struct cs43130_private *)data; in cs43130_irq_thread() local
2169 struct snd_soc_component *component = cs43130->component; in cs43130_irq_thread()
2176 regmap_read(cs43130->regmap, CS43130_INT_STATUS_1 + i, in cs43130_irq_thread()
2178 regmap_read(cs43130->regmap, CS43130_INT_MASK_1 + i, in cs43130_irq_thread()
2194 complete(&cs43130->xtal_rdy); in cs43130_irq_thread()
2199 complete(&cs43130->pll_rdy); in cs43130_irq_thread()
2204 cs43130->hpload_stat = stickies[3]; in cs43130_irq_thread()
2207 cs43130->hpload_stat); in cs43130_irq_thread()
2208 complete(&cs43130->hpload_evt); in cs43130_irq_thread()
2213 cs43130->hpload_stat = stickies[3]; in cs43130_irq_thread()
2215 cs43130->hpload_stat); in cs43130_irq_thread()
2216 complete(&cs43130->hpload_evt); in cs43130_irq_thread()
2221 cs43130->hpload_stat = stickies[3]; in cs43130_irq_thread()
2223 cs43130->hpload_stat); in cs43130_irq_thread()
2224 complete(&cs43130->hpload_evt); in cs43130_irq_thread()
2229 cs43130->hpload_stat = stickies[3]; in cs43130_irq_thread()
2231 cs43130->hpload_stat); in cs43130_irq_thread()
2232 complete(&cs43130->hpload_evt); in cs43130_irq_thread()
2237 cs43130->hpload_stat = stickies[3]; in cs43130_irq_thread()
2239 cs43130->hpload_stat); in cs43130_irq_thread()
2240 complete(&cs43130->hpload_evt); in cs43130_irq_thread()
2245 cs43130->hpload_stat = stickies[3]; in cs43130_irq_thread()
2247 cs43130->hpload_stat); in cs43130_irq_thread()
2248 complete(&cs43130->hpload_evt); in cs43130_irq_thread()
2253 cs43130->hpload_stat = stickies[3]; in cs43130_irq_thread()
2255 cs43130->hpload_stat); in cs43130_irq_thread()
2256 complete(&cs43130->hpload_evt); in cs43130_irq_thread()
2267 cs43130->hpload_done = false; in cs43130_irq_thread()
2268 snd_soc_jack_report(&cs43130->jack, 0, CS43130_JACK_MASK); in cs43130_irq_thread()
2273 if (cs43130->dc_meas && !cs43130->hpload_done && in cs43130_irq_thread()
2274 !work_busy(&cs43130->work)) { in cs43130_irq_thread()
2276 queue_work(cs43130->wq, &cs43130->work); in cs43130_irq_thread()
2279 snd_soc_jack_report(&cs43130->jack, SND_JACK_MECHANICAL, in cs43130_irq_thread()
2290 struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); in cs43130_probe() local
2294 cs43130->component = component; in cs43130_probe()
2296 if (cs43130->xtal_ibias != CS43130_XTAL_UNUSED) { in cs43130_probe()
2297 regmap_update_bits(cs43130->regmap, CS43130_CRYSTAL_SET, in cs43130_probe()
2299 cs43130->xtal_ibias); in cs43130_probe()
2300 regmap_update_bits(cs43130->regmap, CS43130_INT_MASK_1, in cs43130_probe()
2305 &cs43130->jack, NULL, 0); in cs43130_probe()
2311 cs43130->hpload_done = false; in cs43130_probe()
2312 if (cs43130->dc_meas) { in cs43130_probe()
2317 cs43130->wq = create_singlethread_workqueue("cs43130_hp"); in cs43130_probe()
2318 if (!cs43130->wq) { in cs43130_probe()
2322 INIT_WORK(&cs43130->work, cs43130_imp_meas); in cs43130_probe()
2325 regmap_read(cs43130->regmap, CS43130_INT_STATUS_1, ®); in cs43130_probe()
2326 regmap_read(cs43130->regmap, CS43130_HP_STATUS, ®); in cs43130_probe()
2327 regmap_update_bits(cs43130->regmap, CS43130_INT_MASK_1, in cs43130_probe()
2329 regmap_update_bits(cs43130->regmap, CS43130_HP_DETECT, in cs43130_probe()
2331 regmap_update_bits(cs43130->regmap, CS43130_HP_DETECT, in cs43130_probe()
2373 struct cs43130_private *cs43130) in cs43130_handle_device_data() argument
2381 cs43130->xtal_ibias = CS43130_XTAL_UNUSED; in cs43130_handle_device_data()
2387 cs43130->xtal_ibias = CS43130_XTAL_IBIAS_7_5UA; in cs43130_handle_device_data()
2390 cs43130->xtal_ibias = CS43130_XTAL_IBIAS_12_5UA; in cs43130_handle_device_data()
2393 cs43130->xtal_ibias = CS43130_XTAL_IBIAS_15UA; in cs43130_handle_device_data()
2401 cs43130->dc_meas = of_property_read_bool(np, "cirrus,dc-measure"); in cs43130_handle_device_data()
2402 cs43130->ac_meas = of_property_read_bool(np, "cirrus,ac-measure"); in cs43130_handle_device_data()
2404 if (of_property_read_u16_array(np, "cirrus,ac-freq", cs43130->ac_freq, in cs43130_handle_device_data()
2407 cs43130->ac_freq[i] = cs43130_ac_freq[i]; in cs43130_handle_device_data()
2411 cs43130->dc_threshold, in cs43130_handle_device_data()
2414 cs43130->dc_threshold[i] = cs43130_dc_threshold[i]; in cs43130_handle_device_data()
2423 struct cs43130_private *cs43130; in cs43130_i2c_probe() local
2429 cs43130 = devm_kzalloc(&client->dev, sizeof(*cs43130), GFP_KERNEL); in cs43130_i2c_probe()
2430 if (!cs43130) in cs43130_i2c_probe()
2433 i2c_set_clientdata(client, cs43130); in cs43130_i2c_probe()
2435 cs43130->regmap = devm_regmap_init_i2c(client, &cs43130_regmap); in cs43130_i2c_probe()
2436 if (IS_ERR(cs43130->regmap)) { in cs43130_i2c_probe()
2437 ret = PTR_ERR(cs43130->regmap); in cs43130_i2c_probe()
2442 ret = cs43130_handle_device_data(client, cs43130); in cs43130_i2c_probe()
2446 for (i = 0; i < ARRAY_SIZE(cs43130->supplies); i++) in cs43130_i2c_probe()
2447 cs43130->supplies[i].supply = cs43130_supply_names[i]; in cs43130_i2c_probe()
2450 ARRAY_SIZE(cs43130->supplies), in cs43130_i2c_probe()
2451 cs43130->supplies); in cs43130_i2c_probe()
2456 ret = regulator_bulk_enable(ARRAY_SIZE(cs43130->supplies), in cs43130_i2c_probe()
2457 cs43130->supplies); in cs43130_i2c_probe()
2463 cs43130->reset_gpio = devm_gpiod_get_optional(&client->dev, in cs43130_i2c_probe()
2465 if (IS_ERR(cs43130->reset_gpio)) in cs43130_i2c_probe()
2466 return PTR_ERR(cs43130->reset_gpio); in cs43130_i2c_probe()
2468 gpiod_set_value_cansleep(cs43130->reset_gpio, 1); in cs43130_i2c_probe()
2472 ret = regmap_read(cs43130->regmap, CS43130_DEVID_AB, ®); in cs43130_i2c_probe()
2475 ret = regmap_read(cs43130->regmap, CS43130_DEVID_CD, ®); in cs43130_i2c_probe()
2477 ret = regmap_read(cs43130->regmap, CS43130_DEVID_E, ®); in cs43130_i2c_probe()
2495 cs43130->dev_id = devid; in cs43130_i2c_probe()
2496 ret = regmap_read(cs43130->regmap, CS43130_REV_ID, ®); in cs43130_i2c_probe()
2506 mutex_init(&cs43130->clk_mutex); in cs43130_i2c_probe()
2508 init_completion(&cs43130->xtal_rdy); in cs43130_i2c_probe()
2509 init_completion(&cs43130->pll_rdy); in cs43130_i2c_probe()
2510 init_completion(&cs43130->hpload_evt); in cs43130_i2c_probe()
2515 "cs43130", cs43130); in cs43130_i2c_probe()
2521 cs43130->mclk_int_src = CS43130_MCLK_SRC_RCO; in cs43130_i2c_probe()
2528 switch (cs43130->dev_id) { in cs43130_i2c_probe()
2571 regmap_update_bits(cs43130->regmap, CS43130_PAD_INT_CFG, in cs43130_i2c_probe()
2573 regmap_update_bits(cs43130->regmap, CS43130_PAD_INT_CFG, in cs43130_i2c_probe()
2583 struct cs43130_private *cs43130 = i2c_get_clientdata(client); in cs43130_i2c_remove() local
2585 if (cs43130->xtal_ibias != CS43130_XTAL_UNUSED) in cs43130_i2c_remove()
2586 regmap_update_bits(cs43130->regmap, CS43130_INT_MASK_1, in cs43130_i2c_remove()
2590 regmap_update_bits(cs43130->regmap, CS43130_INT_MASK_1, in cs43130_i2c_remove()
2594 if (cs43130->dc_meas) { in cs43130_i2c_remove()
2595 cancel_work_sync(&cs43130->work); in cs43130_i2c_remove()
2596 flush_workqueue(cs43130->wq); in cs43130_i2c_remove()
2604 gpiod_set_value_cansleep(cs43130->reset_gpio, 0); in cs43130_i2c_remove()
2607 regulator_bulk_disable(CS43130_NUM_SUPPLIES, cs43130->supplies); in cs43130_i2c_remove()
2614 struct cs43130_private *cs43130 = dev_get_drvdata(dev); in cs43130_runtime_suspend() local
2616 if (cs43130->xtal_ibias != CS43130_XTAL_UNUSED) in cs43130_runtime_suspend()
2617 regmap_update_bits(cs43130->regmap, CS43130_INT_MASK_1, in cs43130_runtime_suspend()
2621 regcache_cache_only(cs43130->regmap, true); in cs43130_runtime_suspend()
2622 regcache_mark_dirty(cs43130->regmap); in cs43130_runtime_suspend()
2624 gpiod_set_value_cansleep(cs43130->reset_gpio, 0); in cs43130_runtime_suspend()
2626 regulator_bulk_disable(CS43130_NUM_SUPPLIES, cs43130->supplies); in cs43130_runtime_suspend()
2633 struct cs43130_private *cs43130 = dev_get_drvdata(dev); in cs43130_runtime_resume() local
2636 ret = regulator_bulk_enable(CS43130_NUM_SUPPLIES, cs43130->supplies); in cs43130_runtime_resume()
2642 regcache_cache_only(cs43130->regmap, false); in cs43130_runtime_resume()
2644 gpiod_set_value_cansleep(cs43130->reset_gpio, 1); in cs43130_runtime_resume()
2648 ret = regcache_sync(cs43130->regmap); in cs43130_runtime_resume()
2654 if (cs43130->xtal_ibias != CS43130_XTAL_UNUSED) in cs43130_runtime_resume()
2655 regmap_update_bits(cs43130->regmap, CS43130_INT_MASK_1, in cs43130_runtime_resume()
2660 regcache_cache_only(cs43130->regmap, true); in cs43130_runtime_resume()
2661 regulator_bulk_disable(CS43130_NUM_SUPPLIES, cs43130->supplies); in cs43130_runtime_resume()