cs43130 238 sound/soc/codecs/cs43130.c struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); cs43130 242 sound/soc/codecs/cs43130.c cs43130->mclk, cs43130->mclk_int); cs43130 244 sound/soc/codecs/cs43130.c pll_entry = cs43130_get_pll_table(cs43130->mclk, cs43130->mclk_int); cs43130 249 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_PLL_SET_1, cs43130 252 sound/soc/codecs/cs43130.c cs43130->pll_bypass = true; cs43130 256 sound/soc/codecs/cs43130.c cs43130->pll_bypass = false; cs43130 258 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_PLL_SET_2, cs43130 262 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_PLL_SET_3, cs43130 266 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_PLL_SET_4, cs43130 270 sound/soc/codecs/cs43130.c regmap_write(cs43130->regmap, CS43130_PLL_SET_5, cs43130 272 sound/soc/codecs/cs43130.c regmap_write(cs43130->regmap, CS43130_PLL_SET_6, pll_entry->pll_divout); cs43130 273 sound/soc/codecs/cs43130.c regmap_write(cs43130->regmap, CS43130_PLL_SET_7, cs43130 275 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_PLL_SET_8, cs43130 278 sound/soc/codecs/cs43130.c regmap_write(cs43130->regmap, CS43130_PLL_SET_9, cs43130 280 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_PLL_SET_1, cs43130 290 sound/soc/codecs/cs43130.c struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); cs43130 303 sound/soc/codecs/cs43130.c cs43130->mclk = freq_in; cs43130 313 sound/soc/codecs/cs43130.c cs43130->mclk_int = freq_out; cs43130 316 sound/soc/codecs/cs43130.c cs43130->mclk_int = freq_out; cs43130 325 sound/soc/codecs/cs43130.c dev_dbg(component->dev, "cs43130->pll_bypass = %d", cs43130->pll_bypass); cs43130 333 sound/soc/codecs/cs43130.c struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); cs43130 336 sound/soc/codecs/cs43130.c if (src == cs43130->mclk_int_src) { cs43130 341 sound/soc/codecs/cs43130.c switch (cs43130->mclk_int) { cs43130 349 sound/soc/codecs/cs43130.c dev_err(component->dev, "Invalid MCLK INT freq: %u\n", cs43130->mclk_int); cs43130 355 sound/soc/codecs/cs43130.c cs43130->pll_bypass = true; cs43130 356 sound/soc/codecs/cs43130.c cs43130->mclk_int_src = CS43130_MCLK_SRC_EXT; cs43130 357 sound/soc/codecs/cs43130.c if (cs43130->xtal_ibias == CS43130_XTAL_UNUSED) { cs43130 358 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_PWDN_CTL, cs43130 362 sound/soc/codecs/cs43130.c reinit_completion(&cs43130->xtal_rdy); cs43130 363 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_INT_MASK_1, cs43130 365 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_PWDN_CTL, cs43130 367 sound/soc/codecs/cs43130.c ret = wait_for_completion_timeout(&cs43130->xtal_rdy, cs43130 369 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_INT_MASK_1, cs43130 378 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_SYS_CLK_CTL_1, cs43130 381 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_SYS_CLK_CTL_1, cs43130 386 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_PWDN_CTL, cs43130 391 sound/soc/codecs/cs43130.c cs43130->pll_bypass = false; cs43130 392 sound/soc/codecs/cs43130.c cs43130->mclk_int_src = CS43130_MCLK_SRC_PLL; cs43130 393 sound/soc/codecs/cs43130.c if (cs43130->xtal_ibias == CS43130_XTAL_UNUSED) { cs43130 394 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_PWDN_CTL, cs43130 398 sound/soc/codecs/cs43130.c reinit_completion(&cs43130->xtal_rdy); cs43130 399 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_INT_MASK_1, cs43130 401 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_PWDN_CTL, cs43130 403 sound/soc/codecs/cs43130.c ret = wait_for_completion_timeout(&cs43130->xtal_rdy, cs43130 405 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_INT_MASK_1, cs43130 414 sound/soc/codecs/cs43130.c reinit_completion(&cs43130->pll_rdy); cs43130 415 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_INT_MASK_1, cs43130 417 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_PWDN_CTL, cs43130 419 sound/soc/codecs/cs43130.c ret = wait_for_completion_timeout(&cs43130->pll_rdy, cs43130 421 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_INT_MASK_1, cs43130 429 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_SYS_CLK_CTL_1, cs43130 432 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_SYS_CLK_CTL_1, cs43130 438 sound/soc/codecs/cs43130.c cs43130->mclk_int_src = CS43130_MCLK_SRC_RCO; cs43130 440 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_SYS_CLK_CTL_1, cs43130 443 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_SYS_CLK_CTL_1, cs43130 448 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_PWDN_CTL, cs43130 451 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_PWDN_CTL, cs43130 558 sound/soc/codecs/cs43130.c struct cs43130_private *cs43130) cs43130 573 sound/soc/codecs/cs43130.c switch (cs43130->dais[dai_id].dai_format) { cs43130 598 sound/soc/codecs/cs43130.c switch (cs43130->dais[dai_id].dai_mode) { cs43130 631 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_ASP_LRCK_PERIOD_1, cs43130 634 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_ASP_LRCK_PERIOD_2, cs43130 637 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_ASP_LRCK_HI_TIME_1, cs43130 640 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_ASP_LRCK_HI_TIME_2, cs43130 643 sound/soc/codecs/cs43130.c regmap_write(cs43130->regmap, CS43130_ASP_FRAME_CONF, frm_data); cs43130 644 sound/soc/codecs/cs43130.c regmap_write(cs43130->regmap, CS43130_ASP_CH_1_LOC, loc_ch1); cs43130 645 sound/soc/codecs/cs43130.c regmap_write(cs43130->regmap, CS43130_ASP_CH_2_LOC, loc_ch2); cs43130 646 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_ASP_CH_1_SZ_EN, cs43130 648 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_ASP_CH_2_SZ_EN, cs43130 650 sound/soc/codecs/cs43130.c regmap_write(cs43130->regmap, CS43130_ASP_CLOCK_CONF, clk_data); cs43130 653 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_XSP_LRCK_PERIOD_1, cs43130 656 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_XSP_LRCK_PERIOD_2, cs43130 659 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_XSP_LRCK_HI_TIME_1, cs43130 662 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_XSP_LRCK_HI_TIME_2, cs43130 665 sound/soc/codecs/cs43130.c regmap_write(cs43130->regmap, CS43130_XSP_FRAME_CONF, frm_data); cs43130 666 sound/soc/codecs/cs43130.c regmap_write(cs43130->regmap, CS43130_XSP_CH_1_LOC, loc_ch1); cs43130 667 sound/soc/codecs/cs43130.c regmap_write(cs43130->regmap, CS43130_XSP_CH_2_LOC, loc_ch2); cs43130 668 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_XSP_CH_1_SZ_EN, cs43130 670 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_XSP_CH_2_SZ_EN, cs43130 672 sound/soc/codecs/cs43130.c regmap_write(cs43130->regmap, CS43130_XSP_CLOCK_CONF, clk_data); cs43130 680 sound/soc/codecs/cs43130.c clk_gen = cs43130_get_clk_gen(cs43130->mclk_int, cs43130 686 sound/soc/codecs/cs43130.c clk_gen = cs43130_get_clk_gen(cs43130->mclk_int, cs43130 692 sound/soc/codecs/cs43130.c clk_gen = cs43130_get_clk_gen(cs43130->mclk_int, cs43130 698 sound/soc/codecs/cs43130.c clk_gen = cs43130_get_clk_gen(cs43130->mclk_int, cs43130 713 sound/soc/codecs/cs43130.c regmap_write(cs43130->regmap, CS43130_ASP_DEN_1, cs43130 716 sound/soc/codecs/cs43130.c regmap_write(cs43130->regmap, CS43130_ASP_DEN_2, cs43130 719 sound/soc/codecs/cs43130.c regmap_write(cs43130->regmap, CS43130_ASP_NUM_1, cs43130 722 sound/soc/codecs/cs43130.c regmap_write(cs43130->regmap, CS43130_ASP_NUM_2, cs43130 727 sound/soc/codecs/cs43130.c regmap_write(cs43130->regmap, CS43130_XSP_DEN_1, cs43130 730 sound/soc/codecs/cs43130.c regmap_write(cs43130->regmap, CS43130_XSP_DEN_2, cs43130 733 sound/soc/codecs/cs43130.c regmap_write(cs43130->regmap, CS43130_XSP_NUM_1, cs43130 736 sound/soc/codecs/cs43130.c regmap_write(cs43130->regmap, CS43130_XSP_NUM_2, cs43130 775 sound/soc/codecs/cs43130.c struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); cs43130 779 sound/soc/codecs/cs43130.c mutex_lock(&cs43130->clk_mutex); cs43130 780 sound/soc/codecs/cs43130.c if (!cs43130->clk_req) { cs43130 787 sound/soc/codecs/cs43130.c cs43130_set_pll(component, 0, 0, cs43130->mclk, required_clk); cs43130 788 sound/soc/codecs/cs43130.c if (cs43130->pll_bypass) cs43130 794 sound/soc/codecs/cs43130.c cs43130->clk_req++; cs43130 795 sound/soc/codecs/cs43130.c if (cs43130->clk_req == 2) cs43130 796 sound/soc/codecs/cs43130.c cs43130_pcm_dsd_mix(true, cs43130->regmap); cs43130 797 sound/soc/codecs/cs43130.c mutex_unlock(&cs43130->clk_mutex); cs43130 812 sound/soc/codecs/cs43130.c if (cs43130->dais[dai->id].dai_mode == SND_SOC_DAIFMT_CBM_CFM) cs43130 813 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_DSD_INT_CFG, cs43130 816 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_DSD_INT_CFG, cs43130 819 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_DSD_PATH_CTL_2, cs43130 822 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_DSD_PATH_CTL_2, cs43130 834 sound/soc/codecs/cs43130.c struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); cs43130 836 sound/soc/codecs/cs43130.c unsigned int sclk = cs43130->dais[dai->id].sclk; cs43130 842 sound/soc/codecs/cs43130.c mutex_lock(&cs43130->clk_mutex); cs43130 843 sound/soc/codecs/cs43130.c if (!cs43130->clk_req) { cs43130 850 sound/soc/codecs/cs43130.c cs43130_set_pll(component, 0, 0, cs43130->mclk, required_clk); cs43130 851 sound/soc/codecs/cs43130.c if (cs43130->pll_bypass) cs43130 857 sound/soc/codecs/cs43130.c cs43130->clk_req++; cs43130 858 sound/soc/codecs/cs43130.c if (cs43130->clk_req == 2) cs43130 859 sound/soc/codecs/cs43130.c cs43130_pcm_dsd_mix(true, cs43130->regmap); cs43130 860 sound/soc/codecs/cs43130.c mutex_unlock(&cs43130->clk_mutex); cs43130 883 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_DSD_PATH_CTL_2, cs43130 892 sound/soc/codecs/cs43130.c regmap_write(cs43130->regmap, CS43130_SP_SRATE, rate_map->val); cs43130 901 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_DSD_PATH_CTL_2, cs43130 906 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_DSD_PATH_CTL_2, cs43130 912 sound/soc/codecs/cs43130.c if (!sclk && cs43130->dais[dai->id].dai_mode == SND_SOC_DAIFMT_CBM_CFM) cs43130 937 sound/soc/codecs/cs43130.c cs43130_set_bitwidth(dai->id, bitwidth_dai, cs43130->regmap); cs43130 938 sound/soc/codecs/cs43130.c cs43130_set_sp_fmt(dai->id, bitwidth_sclk, params, cs43130); cs43130 947 sound/soc/codecs/cs43130.c struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); cs43130 949 sound/soc/codecs/cs43130.c mutex_lock(&cs43130->clk_mutex); cs43130 950 sound/soc/codecs/cs43130.c cs43130->clk_req--; cs43130 951 sound/soc/codecs/cs43130.c if (!cs43130->clk_req) { cs43130 954 sound/soc/codecs/cs43130.c cs43130_pcm_dsd_mix(false, cs43130->regmap); cs43130 956 sound/soc/codecs/cs43130.c mutex_unlock(&cs43130->clk_mutex); cs43130 1024 sound/soc/codecs/cs43130.c struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); cs43130 1031 sound/soc/codecs/cs43130.c switch (cs43130->dev_id) { cs43130 1035 sound/soc/codecs/cs43130.c regmap_multi_reg_write(cs43130->regmap, pcm_ch_en_seq, cs43130 1038 sound/soc/codecs/cs43130.c regmap_multi_reg_write(cs43130->regmap, pcm_ch_dis_seq, cs43130 1145 sound/soc/codecs/cs43130.c struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); cs43130 1149 sound/soc/codecs/cs43130.c switch (cs43130->dev_id) { cs43130 1152 sound/soc/codecs/cs43130.c regmap_multi_reg_write(cs43130->regmap, dsd_seq, cs43130 1158 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_DSD_PATH_CTL_1, cs43130 1160 sound/soc/codecs/cs43130.c switch (cs43130->dev_id) { cs43130 1163 sound/soc/codecs/cs43130.c regmap_multi_reg_write(cs43130->regmap, unmute_seq, cs43130 1169 sound/soc/codecs/cs43130.c switch (cs43130->dev_id) { cs43130 1172 sound/soc/codecs/cs43130.c regmap_multi_reg_write(cs43130->regmap, mute_seq, cs43130 1174 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, cs43130 1185 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, cs43130 1202 sound/soc/codecs/cs43130.c struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); cs43130 1206 sound/soc/codecs/cs43130.c switch (cs43130->dev_id) { cs43130 1209 sound/soc/codecs/cs43130.c regmap_multi_reg_write(cs43130->regmap, pcm_seq, cs43130 1215 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_PCM_PATH_CTL_1, cs43130 1217 sound/soc/codecs/cs43130.c switch (cs43130->dev_id) { cs43130 1220 sound/soc/codecs/cs43130.c regmap_multi_reg_write(cs43130->regmap, unmute_seq, cs43130 1226 sound/soc/codecs/cs43130.c switch (cs43130->dev_id) { cs43130 1229 sound/soc/codecs/cs43130.c regmap_multi_reg_write(cs43130->regmap, mute_seq, cs43130 1231 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, cs43130 1242 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, cs43130 1271 sound/soc/codecs/cs43130.c struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); cs43130 1275 sound/soc/codecs/cs43130.c switch (cs43130->dev_id) { cs43130 1278 sound/soc/codecs/cs43130.c regmap_multi_reg_write(cs43130->regmap, pop_free_seq, cs43130 1283 sound/soc/codecs/cs43130.c regmap_multi_reg_write(cs43130->regmap, pop_free_seq2, cs43130 1291 sound/soc/codecs/cs43130.c regmap_write(cs43130->regmap, CS43130_DXD1, 0x99); cs43130 1293 sound/soc/codecs/cs43130.c switch (cs43130->dev_id) { cs43130 1296 sound/soc/codecs/cs43130.c regmap_multi_reg_write(cs43130->regmap, dac_postpmu_seq, cs43130 1304 sound/soc/codecs/cs43130.c regmap_write(cs43130->regmap, CS43130_DXD12, 0); cs43130 1309 sound/soc/codecs/cs43130.c regmap_write(cs43130->regmap, CS43130_DXD13, 0); cs43130 1313 sound/soc/codecs/cs43130.c regmap_write(cs43130->regmap, CS43130_DXD1, 0); cs43130 1316 sound/soc/codecs/cs43130.c switch (cs43130->dev_id) { cs43130 1319 sound/soc/codecs/cs43130.c regmap_multi_reg_write(cs43130->regmap, dac_postpmd_seq, cs43130 1351 sound/soc/codecs/cs43130.c struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); cs43130 1355 sound/soc/codecs/cs43130.c regmap_multi_reg_write(cs43130->regmap, hpin_prepmd_seq, cs43130 1359 sound/soc/codecs/cs43130.c regmap_multi_reg_write(cs43130->regmap, hpin_postpmu_seq, cs43130 1472 sound/soc/codecs/cs43130.c struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); cs43130 1476 sound/soc/codecs/cs43130.c cs43130->dais[codec_dai->id].dai_mode = SND_SOC_DAIFMT_CBS_CFS; cs43130 1479 sound/soc/codecs/cs43130.c cs43130->dais[codec_dai->id].dai_mode = SND_SOC_DAIFMT_CBM_CFM; cs43130 1488 sound/soc/codecs/cs43130.c cs43130->dais[codec_dai->id].dai_format = SND_SOC_DAIFMT_I2S; cs43130 1491 sound/soc/codecs/cs43130.c cs43130->dais[codec_dai->id].dai_format = SND_SOC_DAIFMT_LEFT_J; cs43130 1494 sound/soc/codecs/cs43130.c cs43130->dais[codec_dai->id].dai_format = SND_SOC_DAIFMT_DSP_A; cs43130 1497 sound/soc/codecs/cs43130.c cs43130->dais[codec_dai->id].dai_format = SND_SOC_DAIFMT_DSP_B; cs43130 1507 sound/soc/codecs/cs43130.c cs43130->dais[codec_dai->id].dai_mode, cs43130 1508 sound/soc/codecs/cs43130.c cs43130->dais[codec_dai->id].dai_format); cs43130 1516 sound/soc/codecs/cs43130.c struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); cs43130 1520 sound/soc/codecs/cs43130.c cs43130->dais[codec_dai->id].dai_mode = SND_SOC_DAIFMT_CBS_CFS; cs43130 1523 sound/soc/codecs/cs43130.c cs43130->dais[codec_dai->id].dai_mode = SND_SOC_DAIFMT_CBM_CFM; cs43130 1531 sound/soc/codecs/cs43130.c cs43130->dais[codec_dai->id].dai_mode); cs43130 1540 sound/soc/codecs/cs43130.c struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); cs43130 1542 sound/soc/codecs/cs43130.c cs43130->dais[codec_dai->id].sclk = freq; cs43130 1544 sound/soc/codecs/cs43130.c cs43130->dais[codec_dai->id].sclk); cs43130 1631 sound/soc/codecs/cs43130.c struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); cs43130 1639 sound/soc/codecs/cs43130.c cs43130->mclk = freq; cs43130 1647 sound/soc/codecs/cs43130.c cs43130->pll_bypass = true; cs43130 1665 sound/soc/codecs/cs43130.c struct cs43130_private *cs43130 = i2c_get_clientdata(client); cs43130 1667 sound/soc/codecs/cs43130.c if (!cs43130->hpload_done) cs43130 1671 sound/soc/codecs/cs43130.c cs43130->hpload_dc[ch]); cs43130 1703 sound/soc/codecs/cs43130.c struct cs43130_private *cs43130 = i2c_get_clientdata(client); cs43130 1705 sound/soc/codecs/cs43130.c if (cs43130->hpload_done && cs43130->ac_meas) { cs43130 1708 sound/soc/codecs/cs43130.c cs43130->hpload_ac[i][ch]); cs43130 1923 sound/soc/codecs/cs43130.c struct cs43130_private *cs43130) cs43130 1929 sound/soc/codecs/cs43130.c struct snd_soc_component *component = cs43130->component; cs43130 1939 sound/soc/codecs/cs43130.c regmap_read(cs43130->regmap, CS43130_HP_LOAD_1, ®); cs43130 1948 sound/soc/codecs/cs43130.c regmap_read(cs43130->regmap, addr, ®); cs43130 1950 sound/soc/codecs/cs43130.c regmap_read(cs43130->regmap, addr + 1, ®); cs43130 1955 sound/soc/codecs/cs43130.c cs43130->hpload_dc[HP_LEFT] = impedance; cs43130 1957 sound/soc/codecs/cs43130.c cs43130->hpload_dc[HP_RIGHT] = impedance; cs43130 1963 sound/soc/codecs/cs43130.c cs43130->hpload_ac[ac_idx][HP_LEFT] = impedance; cs43130 1965 sound/soc/codecs/cs43130.c cs43130->hpload_ac[ac_idx][HP_RIGHT] = impedance; cs43130 1968 sound/soc/codecs/cs43130.c cs43130->ac_freq[ac_idx], !left_ch, impedance); cs43130 1974 sound/soc/codecs/cs43130.c static int cs43130_hpload_proc(struct cs43130_private *cs43130, cs43130 1981 sound/soc/codecs/cs43130.c struct snd_soc_component *component = cs43130->component; cs43130 1983 sound/soc/codecs/cs43130.c reinit_completion(&cs43130->hpload_evt); cs43130 1986 sound/soc/codecs/cs43130.c ac_reg_val = cs43130_get_ac_reg_val(cs43130->ac_freq[ac_idx]); cs43130 1987 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_HP_LOAD_1, cs43130 1989 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_HP_MEAS_LOAD_1, cs43130 1992 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_HP_MEAS_LOAD_2, cs43130 1997 sound/soc/codecs/cs43130.c regmap_multi_reg_write(cs43130->regmap, seq, cs43130 2000 sound/soc/codecs/cs43130.c ret = wait_for_completion_timeout(&cs43130->hpload_evt, cs43130 2002 sound/soc/codecs/cs43130.c regmap_read(cs43130->regmap, CS43130_INT_MASK_4, &msk); cs43130 2009 sound/soc/codecs/cs43130.c cs43130->hpload_stat, msk); cs43130 2010 sound/soc/codecs/cs43130.c if ((cs43130->hpload_stat & (CS43130_HPLOAD_NO_DC_INT | cs43130 2013 sound/soc/codecs/cs43130.c !(cs43130->hpload_stat & rslt_msk)) { cs43130 2055 sound/soc/codecs/cs43130.c struct cs43130_private *cs43130; cs43130 2059 sound/soc/codecs/cs43130.c cs43130 = container_of(wk, struct cs43130_private, work); cs43130 2060 sound/soc/codecs/cs43130.c component = cs43130->component; cs43130 2062 sound/soc/codecs/cs43130.c if (!cs43130->mclk) cs43130 2065 sound/soc/codecs/cs43130.c cs43130->hpload_done = false; cs43130 2067 sound/soc/codecs/cs43130.c mutex_lock(&cs43130->clk_mutex); cs43130 2068 sound/soc/codecs/cs43130.c if (!cs43130->clk_req) { cs43130 2070 sound/soc/codecs/cs43130.c cs43130_set_pll(component, 0, 0, cs43130->mclk, CS43130_MCLK_22M); cs43130 2071 sound/soc/codecs/cs43130.c if (cs43130->pll_bypass) cs43130 2077 sound/soc/codecs/cs43130.c cs43130->clk_req++; cs43130 2078 sound/soc/codecs/cs43130.c mutex_unlock(&cs43130->clk_mutex); cs43130 2080 sound/soc/codecs/cs43130.c regmap_read(cs43130->regmap, CS43130_INT_STATUS_4, ®); cs43130 2082 sound/soc/codecs/cs43130.c switch (cs43130->dev_id) { cs43130 2092 sound/soc/codecs/cs43130.c WARN(1, "Invalid dev_id for meas: %d", cs43130->dev_id); cs43130 2099 sound/soc/codecs/cs43130.c ret = cs43130_hpload_proc(cs43130, hpload_seq[i].seq, cs43130 2105 sound/soc/codecs/cs43130.c cs43130_update_hpload(hpload_seq[i].msk, ac_idx, cs43130); cs43130 2107 sound/soc/codecs/cs43130.c if (cs43130->ac_meas && cs43130 2116 sound/soc/codecs/cs43130.c cs43130->hpload_done = true; cs43130 2118 sound/soc/codecs/cs43130.c if (cs43130->hpload_dc[HP_LEFT] >= CS43130_LINEOUT_LOAD) cs43130 2119 sound/soc/codecs/cs43130.c snd_soc_jack_report(&cs43130->jack, CS43130_JACK_LINEOUT, cs43130 2122 sound/soc/codecs/cs43130.c snd_soc_jack_report(&cs43130->jack, CS43130_JACK_HEADPHONE, cs43130 2128 sound/soc/codecs/cs43130.c cs43130->dc_threshold[i]); cs43130 2130 sound/soc/codecs/cs43130.c cs43130_set_hv(cs43130->regmap, cs43130->hpload_dc[HP_LEFT], cs43130 2131 sound/soc/codecs/cs43130.c cs43130->dc_threshold); cs43130 2134 sound/soc/codecs/cs43130.c switch (cs43130->dev_id) { cs43130 2136 sound/soc/codecs/cs43130.c cs43130_hpload_proc(cs43130, hp_dis_cal_seq, cs43130 2141 sound/soc/codecs/cs43130.c cs43130_hpload_proc(cs43130, hp_dis_cal_seq2, cs43130 2147 sound/soc/codecs/cs43130.c regmap_multi_reg_write(cs43130->regmap, hp_cln_seq, cs43130 2150 sound/soc/codecs/cs43130.c mutex_lock(&cs43130->clk_mutex); cs43130 2151 sound/soc/codecs/cs43130.c cs43130->clk_req--; cs43130 2153 sound/soc/codecs/cs43130.c if (!cs43130->clk_req) cs43130 2155 sound/soc/codecs/cs43130.c mutex_unlock(&cs43130->clk_mutex); cs43130 2160 sound/soc/codecs/cs43130.c struct cs43130_private *cs43130 = (struct cs43130_private *)data; cs43130 2161 sound/soc/codecs/cs43130.c struct snd_soc_component *component = cs43130->component; cs43130 2168 sound/soc/codecs/cs43130.c regmap_read(cs43130->regmap, CS43130_INT_STATUS_1 + i, cs43130 2170 sound/soc/codecs/cs43130.c regmap_read(cs43130->regmap, CS43130_INT_MASK_1 + i, cs43130 2186 sound/soc/codecs/cs43130.c complete(&cs43130->xtal_rdy); cs43130 2191 sound/soc/codecs/cs43130.c complete(&cs43130->pll_rdy); cs43130 2196 sound/soc/codecs/cs43130.c cs43130->hpload_stat = stickies[3]; cs43130 2199 sound/soc/codecs/cs43130.c cs43130->hpload_stat); cs43130 2200 sound/soc/codecs/cs43130.c complete(&cs43130->hpload_evt); cs43130 2205 sound/soc/codecs/cs43130.c cs43130->hpload_stat = stickies[3]; cs43130 2207 sound/soc/codecs/cs43130.c cs43130->hpload_stat); cs43130 2208 sound/soc/codecs/cs43130.c complete(&cs43130->hpload_evt); cs43130 2213 sound/soc/codecs/cs43130.c cs43130->hpload_stat = stickies[3]; cs43130 2215 sound/soc/codecs/cs43130.c cs43130->hpload_stat); cs43130 2216 sound/soc/codecs/cs43130.c complete(&cs43130->hpload_evt); cs43130 2221 sound/soc/codecs/cs43130.c cs43130->hpload_stat = stickies[3]; cs43130 2223 sound/soc/codecs/cs43130.c cs43130->hpload_stat); cs43130 2224 sound/soc/codecs/cs43130.c complete(&cs43130->hpload_evt); cs43130 2229 sound/soc/codecs/cs43130.c cs43130->hpload_stat = stickies[3]; cs43130 2231 sound/soc/codecs/cs43130.c cs43130->hpload_stat); cs43130 2232 sound/soc/codecs/cs43130.c complete(&cs43130->hpload_evt); cs43130 2237 sound/soc/codecs/cs43130.c cs43130->hpload_stat = stickies[3]; cs43130 2239 sound/soc/codecs/cs43130.c cs43130->hpload_stat); cs43130 2240 sound/soc/codecs/cs43130.c complete(&cs43130->hpload_evt); cs43130 2245 sound/soc/codecs/cs43130.c cs43130->hpload_stat = stickies[3]; cs43130 2247 sound/soc/codecs/cs43130.c cs43130->hpload_stat); cs43130 2248 sound/soc/codecs/cs43130.c complete(&cs43130->hpload_evt); cs43130 2259 sound/soc/codecs/cs43130.c cs43130->hpload_done = false; cs43130 2260 sound/soc/codecs/cs43130.c snd_soc_jack_report(&cs43130->jack, 0, CS43130_JACK_MASK); cs43130 2265 sound/soc/codecs/cs43130.c if (cs43130->dc_meas && !cs43130->hpload_done && cs43130 2266 sound/soc/codecs/cs43130.c !work_busy(&cs43130->work)) { cs43130 2268 sound/soc/codecs/cs43130.c queue_work(cs43130->wq, &cs43130->work); cs43130 2271 sound/soc/codecs/cs43130.c snd_soc_jack_report(&cs43130->jack, SND_JACK_MECHANICAL, cs43130 2282 sound/soc/codecs/cs43130.c struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); cs43130 2286 sound/soc/codecs/cs43130.c cs43130->component = component; cs43130 2288 sound/soc/codecs/cs43130.c if (cs43130->xtal_ibias != CS43130_XTAL_UNUSED) { cs43130 2289 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_CRYSTAL_SET, cs43130 2291 sound/soc/codecs/cs43130.c cs43130->xtal_ibias); cs43130 2292 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_INT_MASK_1, cs43130 2297 sound/soc/codecs/cs43130.c &cs43130->jack, NULL, 0); cs43130 2303 sound/soc/codecs/cs43130.c cs43130->hpload_done = false; cs43130 2304 sound/soc/codecs/cs43130.c if (cs43130->dc_meas) { cs43130 2321 sound/soc/codecs/cs43130.c cs43130->wq = create_singlethread_workqueue("cs43130_hp"); cs43130 2322 sound/soc/codecs/cs43130.c if (!cs43130->wq) cs43130 2324 sound/soc/codecs/cs43130.c INIT_WORK(&cs43130->work, cs43130_imp_meas); cs43130 2327 sound/soc/codecs/cs43130.c regmap_read(cs43130->regmap, CS43130_INT_STATUS_1, ®); cs43130 2328 sound/soc/codecs/cs43130.c regmap_read(cs43130->regmap, CS43130_HP_STATUS, ®); cs43130 2329 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_INT_MASK_1, cs43130 2331 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_HP_DETECT, cs43130 2333 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_HP_DETECT, cs43130 2375 sound/soc/codecs/cs43130.c struct cs43130_private *cs43130) cs43130 2383 sound/soc/codecs/cs43130.c cs43130->xtal_ibias = CS43130_XTAL_UNUSED; cs43130 2389 sound/soc/codecs/cs43130.c cs43130->xtal_ibias = CS43130_XTAL_IBIAS_7_5UA; cs43130 2392 sound/soc/codecs/cs43130.c cs43130->xtal_ibias = CS43130_XTAL_IBIAS_12_5UA; cs43130 2395 sound/soc/codecs/cs43130.c cs43130->xtal_ibias = CS43130_XTAL_IBIAS_15UA; cs43130 2403 sound/soc/codecs/cs43130.c cs43130->dc_meas = of_property_read_bool(np, "cirrus,dc-measure"); cs43130 2404 sound/soc/codecs/cs43130.c cs43130->ac_meas = of_property_read_bool(np, "cirrus,ac-measure"); cs43130 2406 sound/soc/codecs/cs43130.c if (of_property_read_u16_array(np, "cirrus,ac-freq", cs43130->ac_freq, cs43130 2409 sound/soc/codecs/cs43130.c cs43130->ac_freq[i] = cs43130_ac_freq[i]; cs43130 2413 sound/soc/codecs/cs43130.c cs43130->dc_threshold, cs43130 2416 sound/soc/codecs/cs43130.c cs43130->dc_threshold[i] = cs43130_dc_threshold[i]; cs43130 2425 sound/soc/codecs/cs43130.c struct cs43130_private *cs43130; cs43130 2431 sound/soc/codecs/cs43130.c cs43130 = devm_kzalloc(&client->dev, sizeof(*cs43130), GFP_KERNEL); cs43130 2432 sound/soc/codecs/cs43130.c if (!cs43130) cs43130 2435 sound/soc/codecs/cs43130.c i2c_set_clientdata(client, cs43130); cs43130 2437 sound/soc/codecs/cs43130.c cs43130->regmap = devm_regmap_init_i2c(client, &cs43130_regmap); cs43130 2438 sound/soc/codecs/cs43130.c if (IS_ERR(cs43130->regmap)) { cs43130 2439 sound/soc/codecs/cs43130.c ret = PTR_ERR(cs43130->regmap); cs43130 2444 sound/soc/codecs/cs43130.c ret = cs43130_handle_device_data(client, cs43130); cs43130 2448 sound/soc/codecs/cs43130.c for (i = 0; i < ARRAY_SIZE(cs43130->supplies); i++) cs43130 2449 sound/soc/codecs/cs43130.c cs43130->supplies[i].supply = cs43130_supply_names[i]; cs43130 2452 sound/soc/codecs/cs43130.c ARRAY_SIZE(cs43130->supplies), cs43130 2453 sound/soc/codecs/cs43130.c cs43130->supplies); cs43130 2458 sound/soc/codecs/cs43130.c ret = regulator_bulk_enable(ARRAY_SIZE(cs43130->supplies), cs43130 2459 sound/soc/codecs/cs43130.c cs43130->supplies); cs43130 2465 sound/soc/codecs/cs43130.c cs43130->reset_gpio = devm_gpiod_get_optional(&client->dev, cs43130 2467 sound/soc/codecs/cs43130.c if (IS_ERR(cs43130->reset_gpio)) cs43130 2468 sound/soc/codecs/cs43130.c return PTR_ERR(cs43130->reset_gpio); cs43130 2470 sound/soc/codecs/cs43130.c gpiod_set_value_cansleep(cs43130->reset_gpio, 1); cs43130 2474 sound/soc/codecs/cs43130.c ret = regmap_read(cs43130->regmap, CS43130_DEVID_AB, ®); cs43130 2477 sound/soc/codecs/cs43130.c ret = regmap_read(cs43130->regmap, CS43130_DEVID_CD, ®); cs43130 2479 sound/soc/codecs/cs43130.c ret = regmap_read(cs43130->regmap, CS43130_DEVID_E, ®); cs43130 2497 sound/soc/codecs/cs43130.c cs43130->dev_id = devid; cs43130 2498 sound/soc/codecs/cs43130.c ret = regmap_read(cs43130->regmap, CS43130_REV_ID, ®); cs43130 2508 sound/soc/codecs/cs43130.c mutex_init(&cs43130->clk_mutex); cs43130 2510 sound/soc/codecs/cs43130.c init_completion(&cs43130->xtal_rdy); cs43130 2511 sound/soc/codecs/cs43130.c init_completion(&cs43130->pll_rdy); cs43130 2512 sound/soc/codecs/cs43130.c init_completion(&cs43130->hpload_evt); cs43130 2517 sound/soc/codecs/cs43130.c "cs43130", cs43130); cs43130 2523 sound/soc/codecs/cs43130.c cs43130->mclk_int_src = CS43130_MCLK_SRC_RCO; cs43130 2530 sound/soc/codecs/cs43130.c switch (cs43130->dev_id) { cs43130 2573 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_PAD_INT_CFG, cs43130 2575 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_PAD_INT_CFG, cs43130 2585 sound/soc/codecs/cs43130.c struct cs43130_private *cs43130 = i2c_get_clientdata(client); cs43130 2587 sound/soc/codecs/cs43130.c if (cs43130->xtal_ibias != CS43130_XTAL_UNUSED) cs43130 2588 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_INT_MASK_1, cs43130 2592 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_INT_MASK_1, cs43130 2596 sound/soc/codecs/cs43130.c if (cs43130->dc_meas) { cs43130 2597 sound/soc/codecs/cs43130.c cancel_work_sync(&cs43130->work); cs43130 2598 sound/soc/codecs/cs43130.c flush_workqueue(cs43130->wq); cs43130 2606 sound/soc/codecs/cs43130.c gpiod_set_value_cansleep(cs43130->reset_gpio, 0); cs43130 2609 sound/soc/codecs/cs43130.c regulator_bulk_disable(CS43130_NUM_SUPPLIES, cs43130->supplies); cs43130 2616 sound/soc/codecs/cs43130.c struct cs43130_private *cs43130 = dev_get_drvdata(dev); cs43130 2618 sound/soc/codecs/cs43130.c if (cs43130->xtal_ibias != CS43130_XTAL_UNUSED) cs43130 2619 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_INT_MASK_1, cs43130 2623 sound/soc/codecs/cs43130.c regcache_cache_only(cs43130->regmap, true); cs43130 2624 sound/soc/codecs/cs43130.c regcache_mark_dirty(cs43130->regmap); cs43130 2626 sound/soc/codecs/cs43130.c gpiod_set_value_cansleep(cs43130->reset_gpio, 0); cs43130 2628 sound/soc/codecs/cs43130.c regulator_bulk_disable(CS43130_NUM_SUPPLIES, cs43130->supplies); cs43130 2635 sound/soc/codecs/cs43130.c struct cs43130_private *cs43130 = dev_get_drvdata(dev); cs43130 2638 sound/soc/codecs/cs43130.c ret = regulator_bulk_enable(CS43130_NUM_SUPPLIES, cs43130->supplies); cs43130 2644 sound/soc/codecs/cs43130.c regcache_cache_only(cs43130->regmap, false); cs43130 2646 sound/soc/codecs/cs43130.c gpiod_set_value_cansleep(cs43130->reset_gpio, 1); cs43130 2650 sound/soc/codecs/cs43130.c ret = regcache_sync(cs43130->regmap); cs43130 2656 sound/soc/codecs/cs43130.c if (cs43130->xtal_ibias != CS43130_XTAL_UNUSED) cs43130 2657 sound/soc/codecs/cs43130.c regmap_update_bits(cs43130->regmap, CS43130_INT_MASK_1, cs43130 2662 sound/soc/codecs/cs43130.c regcache_cache_only(cs43130->regmap, true); cs43130 2663 sound/soc/codecs/cs43130.c regulator_bulk_disable(CS43130_NUM_SUPPLIES, cs43130->supplies);