• Home
  • Raw
  • Download

Lines Matching +full:spk +full:- +full:shutdown

2  * rt5659.c  --  RT5659/RT5658 ALSA SoC audio codec driver
29 #include <sound/soc-dapm.h>
1140 static const DECLARE_TLV_DB_SCALE(hp_vol_tlv, -2325, 75, 0);
1141 static const DECLARE_TLV_DB_SCALE(out_vol_tlv, -4650, 150, 0);
1142 static const DECLARE_TLV_DB_SCALE(dac_vol_tlv, -65625, 375, 0);
1143 static const DECLARE_TLV_DB_SCALE(in_vol_tlv, -3450, 150, 0);
1144 static const DECLARE_TLV_DB_SCALE(adc_vol_tlv, -17625, 375, 0);
1146 static const DECLARE_TLV_DB_SCALE(in_bst_tlv, -1200, 75, 0);
1290 * rt5659_headset_detect - Detect headset.
1337 rt5659->jack_type = SND_JACK_HEADSET; in rt5659_headset_detect()
1342 rt5659->jack_type = SND_JACK_HEADPHONE; in rt5659_headset_detect()
1350 if (rt5659->jack_type == SND_JACK_HEADSET) in rt5659_headset_detect()
1352 rt5659->jack_type = 0; in rt5659_headset_detect()
1355 dev_dbg(component->dev, "jack_type = %d\n", rt5659->jack_type); in rt5659_headset_detect()
1356 return rt5659->jack_type; in rt5659_headset_detect()
1375 &rt5659->jack_detect_work, msecs_to_jiffies(250)); in rt5659_irq()
1385 rt5659->hs_jack = hs_jack; in rt5659_set_jack_detect()
1399 if (!rt5659->component) in rt5659_jack_detect_work()
1402 val = snd_soc_component_read32(rt5659->component, RT5659_INT_ST_1) & 0x0080; in rt5659_jack_detect_work()
1405 if (rt5659->jack_type == 0) { in rt5659_jack_detect_work()
1407 report = rt5659_headset_detect(rt5659->component, 1); in rt5659_jack_detect_work()
1411 btn_type = rt5659_button_detect(rt5659->component); in rt5659_jack_detect_work()
1444 dev_err(rt5659->component->dev, in rt5659_jack_detect_work()
1452 report = rt5659->jack_type; in rt5659_jack_detect_work()
1456 report = rt5659_headset_detect(rt5659->component, 0); in rt5659_jack_detect_work()
1459 snd_soc_jack_report(rt5659->hs_jack, report, SND_JACK_HEADSET | in rt5659_jack_detect_work()
1471 if (!rt5659->hs_jack) in rt5659_jack_detect_intel_hd_header()
1475 regmap_read(rt5659->regmap, RT5659_GPIO_STA, &value); in rt5659_jack_detect_intel_hd_header()
1478 if (hp_flag != rt5659->hda_hp_plugged) { in rt5659_jack_detect_intel_hd_header()
1479 rt5659->hda_hp_plugged = hp_flag; in rt5659_jack_detect_intel_hd_header()
1482 regmap_update_bits(rt5659->regmap, RT5659_IRQ_CTRL_1, in rt5659_jack_detect_intel_hd_header()
1484 rt5659->jack_type |= SND_JACK_HEADPHONE; in rt5659_jack_detect_intel_hd_header()
1486 regmap_update_bits(rt5659->regmap, RT5659_IRQ_CTRL_1, in rt5659_jack_detect_intel_hd_header()
1488 rt5659->jack_type = rt5659->jack_type & in rt5659_jack_detect_intel_hd_header()
1492 snd_soc_jack_report(rt5659->hs_jack, rt5659->jack_type, in rt5659_jack_detect_intel_hd_header()
1497 regmap_read(rt5659->regmap, RT5659_4BTN_IL_CMD_1, &value); in rt5659_jack_detect_intel_hd_header()
1498 regmap_write(rt5659->regmap, RT5659_4BTN_IL_CMD_1, value); in rt5659_jack_detect_intel_hd_header()
1501 if (mic_flag != rt5659->hda_mic_plugged) { in rt5659_jack_detect_intel_hd_header()
1502 rt5659->hda_mic_plugged = mic_flag; in rt5659_jack_detect_intel_hd_header()
1504 regmap_update_bits(rt5659->regmap, RT5659_IRQ_CTRL_2, in rt5659_jack_detect_intel_hd_header()
1506 rt5659->jack_type |= SND_JACK_MICROPHONE; in rt5659_jack_detect_intel_hd_header()
1508 regmap_update_bits(rt5659->regmap, RT5659_IRQ_CTRL_2, in rt5659_jack_detect_intel_hd_header()
1510 rt5659->jack_type = rt5659->jack_type in rt5659_jack_detect_intel_hd_header()
1514 snd_soc_jack_report(rt5659->hs_jack, rt5659->jack_type, in rt5659_jack_detect_intel_hd_header()
1596 * set_dmic_clk - Set parameter of dmic.
1608 struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm); in set_dmic_clk()
1610 int pd, idx = -EINVAL; in set_dmic_clk()
1612 pd = rl6231_get_pre_div(rt5659->regmap, in set_dmic_clk()
1614 idx = rl6231_calc_dmic_clk(rt5659->sysclk / pd); in set_dmic_clk()
1617 dev_err(component->dev, "Failed to set DMIC clock\n"); in set_dmic_clk()
1628 struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm); in set_adc1_clk()
1654 snd_soc_dapm_to_component(w->dapm); in set_adc2_clk()
1679 struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm); in rt5659_charge_pump_event()
1700 struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm); in is_sys_clk_from_pll()
1714 struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm); in is_using_asrc()
1716 switch (w->shift) { in is_using_asrc()
2009 /*MX-1B [6:4], MX-1B [2:0]*/
2030 /* MX-26 [13] */
2043 /* MX-26 [12] */
2056 /* MX-26 [11] */
2069 /* MX-26 [8] */
2083 /* MX-27 [12] */
2097 /* MX-27 [11] */
2110 /* MX-27 [10:9], MX-27 [2:1] */
2130 /* MX-27 [8] */
2143 /* MX-27 [4] */
2156 /* MX-27 [3] */
2169 /* MX-27 [0] */
2183 /* MX-29 [11:10], MX-29 [9:8]*/
2203 /* MX-2C [6], MX-2C [4]*/
2223 /* MX-2D [3], MX-2D [2]*/
2243 /* MX-2D [1], MX-2D [0]*/
2263 /* MX-2F [13:12] */
2276 /* MX-2F [1:0] */
2289 /* MX-31 [15] [13] */
2309 /* MX-36 [1:0] */
2322 /* MX-78[4:0] */
2387 struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm); in rt5659_spk_event()
2419 struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm); in rt5659_mono_event()
2441 struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm); in rt5659_hp_event()
2785 SND_SOC_DAPM_MIXER("SPK MIXL", RT5659_PWR_MIXER, RT5659_PWR_SM_L_BIT,
2787 SND_SOC_DAPM_MIXER("SPK MIXR", RT5659_PWR_MIXER, RT5659_PWR_SM_R_BIT,
2820 SND_SOC_DAPM_PGA_S("SPK Amp", 1, RT5659_PWR_DIG_1, RT5659_PWR_CLS_D_BIT,
3221 { "SPK MIXL", "DAC L2 Switch", "DAC L2" },
3222 { "SPK MIXL", "BST1 Switch", "BST1" },
3223 { "SPK MIXL", "INL Switch", "INL VOL" },
3224 { "SPK MIXL", "INR Switch", "INR VOL" },
3225 { "SPK MIXL", "BST3 Switch", "BST3" },
3226 { "SPK MIXR", "DAC R2 Switch", "DAC R2" },
3227 { "SPK MIXR", "BST4 Switch", "BST4" },
3228 { "SPK MIXR", "INL Switch", "INL VOL" },
3229 { "SPK MIXR", "INR Switch", "INR VOL" },
3230 { "SPK MIXR", "BST3 Switch", "BST3" },
3249 { "SPKVOL L", "Switch", "SPK MIXL" },
3250 { "SPKVOL R", "Switch", "SPK MIXR" },
3255 { "SPK Amp", NULL, "SPO L MIX" },
3256 { "SPK Amp", NULL, "SPO R MIX" },
3257 { "SPK Amp", NULL, "SYS CLK DET" },
3258 { "SPO Playback", "Switch", "SPK Amp" },
3316 struct snd_soc_component *component = dai->component; in rt5659_hw_params()
3321 rt5659->lrck[dai->id] = params_rate(params); in rt5659_hw_params()
3322 pre_div = rl6231_get_clk_info(rt5659->sysclk, rt5659->lrck[dai->id]); in rt5659_hw_params()
3324 dev_err(component->dev, "Unsupported clock setting %d for DAI %d\n", in rt5659_hw_params()
3325 rt5659->lrck[dai->id], dai->id); in rt5659_hw_params()
3326 return -EINVAL; in rt5659_hw_params()
3330 dev_err(component->dev, "Unsupported frame size: %d\n", frame_size); in rt5659_hw_params()
3331 return -EINVAL; in rt5659_hw_params()
3334 dev_dbg(dai->dev, "lrck is %dHz and pre_div is %d for iis %d\n", in rt5659_hw_params()
3335 rt5659->lrck[dai->id], pre_div, dai->id); in rt5659_hw_params()
3350 return -EINVAL; in rt5659_hw_params()
3353 switch (dai->id) { in rt5659_hw_params()
3373 dev_err(component->dev, "Invalid dai->id: %d\n", dai->id); in rt5659_hw_params()
3374 return -EINVAL; in rt5659_hw_params()
3379 switch (rt5659->lrck[dai->id]) { in rt5659_hw_params()
3399 struct snd_soc_component *component = dai->component; in rt5659_set_dai_fmt()
3405 rt5659->master[dai->id] = 1; in rt5659_set_dai_fmt()
3409 rt5659->master[dai->id] = 0; in rt5659_set_dai_fmt()
3412 return -EINVAL; in rt5659_set_dai_fmt()
3422 return -EINVAL; in rt5659_set_dai_fmt()
3438 return -EINVAL; in rt5659_set_dai_fmt()
3441 switch (dai->id) { in rt5659_set_dai_fmt()
3458 dev_err(component->dev, "Invalid dai->id: %d\n", dai->id); in rt5659_set_dai_fmt()
3459 return -EINVAL; in rt5659_set_dai_fmt()
3470 if (freq == rt5659->sysclk && clk_id == rt5659->sysclk_src) in rt5659_set_component_sysclk()
3484 dev_err(component->dev, "Invalid clock id (%d)\n", clk_id); in rt5659_set_component_sysclk()
3485 return -EINVAL; in rt5659_set_component_sysclk()
3489 rt5659->sysclk = freq; in rt5659_set_component_sysclk()
3490 rt5659->sysclk_src = clk_id; in rt5659_set_component_sysclk()
3492 dev_dbg(component->dev, "Sysclk is %dHz and clock id is %d\n", in rt5659_set_component_sysclk()
3506 if (source == rt5659->pll_src && freq_in == rt5659->pll_in && in rt5659_set_component_pll()
3507 freq_out == rt5659->pll_out) in rt5659_set_component_pll()
3511 dev_dbg(component->dev, "PLL disabled\n"); in rt5659_set_component_pll()
3513 rt5659->pll_in = 0; in rt5659_set_component_pll()
3514 rt5659->pll_out = 0; in rt5659_set_component_pll()
3538 dev_err(component->dev, "Unknown PLL source %d\n", source); in rt5659_set_component_pll()
3539 return -EINVAL; in rt5659_set_component_pll()
3544 dev_err(component->dev, "Unsupport input clock %d\n", freq_in); in rt5659_set_component_pll()
3548 dev_dbg(component->dev, "bypass=%d m=%d n=%d k=%d\n", in rt5659_set_component_pll()
3558 rt5659->pll_in = freq_in; in rt5659_set_component_pll()
3559 rt5659->pll_out = freq_out; in rt5659_set_component_pll()
3560 rt5659->pll_src = source; in rt5659_set_component_pll()
3568 struct snd_soc_component *component = dai->component; in rt5659_set_tdm_slot()
3590 return -EINVAL; in rt5659_set_tdm_slot()
3609 return -EINVAL; in rt5659_set_tdm_slot()
3619 struct snd_soc_component *component = dai->component; in rt5659_set_bclk_ratio()
3622 dev_dbg(component->dev, "%s ratio=%d\n", __func__, ratio); in rt5659_set_bclk_ratio()
3624 rt5659->bclk[dai->id] = ratio; in rt5659_set_bclk_ratio()
3627 switch (dai->id) { in rt5659_set_bclk_ratio()
3653 regmap_update_bits(rt5659->regmap, RT5659_DIG_MISC, in rt5659_set_bias_level()
3655 regmap_update_bits(rt5659->regmap, RT5659_PWR_DIG_1, in rt5659_set_bias_level()
3657 regmap_update_bits(rt5659->regmap, RT5659_PWR_ANLG_1, in rt5659_set_bias_level()
3661 regmap_update_bits(rt5659->regmap, RT5659_PWR_ANLG_1, in rt5659_set_bias_level()
3667 if (dapm->bias_level == SND_SOC_BIAS_OFF) { in rt5659_set_bias_level()
3668 ret = clk_prepare_enable(rt5659->mclk); in rt5659_set_bias_level()
3670 dev_err(component->dev, in rt5659_set_bias_level()
3678 regmap_update_bits(rt5659->regmap, RT5659_PWR_DIG_1, in rt5659_set_bias_level()
3680 regmap_update_bits(rt5659->regmap, RT5659_PWR_ANLG_1, in rt5659_set_bias_level()
3684 regmap_update_bits(rt5659->regmap, RT5659_DIG_MISC, in rt5659_set_bias_level()
3686 clk_disable_unprepare(rt5659->mclk); in rt5659_set_bias_level()
3700 rt5659->component = component; in rt5659_probe()
3709 regmap_write(rt5659->regmap, RT5659_RESET, 0); in rt5659_remove()
3717 regcache_cache_only(rt5659->regmap, true); in rt5659_suspend()
3718 regcache_mark_dirty(rt5659->regmap); in rt5659_suspend()
3726 regcache_cache_only(rt5659->regmap, false); in rt5659_resume()
3727 regcache_sync(rt5659->regmap); in rt5659_resume()
3749 .name = "rt5659-aif1",
3768 .name = "rt5659-aif2",
3787 .name = "rt5659-aif3",
3847 rt5659->pdata.in1_diff = device_property_read_bool(dev, in rt5659_parse_dt()
3848 "realtek,in1-differential"); in rt5659_parse_dt()
3849 rt5659->pdata.in3_diff = device_property_read_bool(dev, in rt5659_parse_dt()
3850 "realtek,in3-differential"); in rt5659_parse_dt()
3851 rt5659->pdata.in4_diff = device_property_read_bool(dev, in rt5659_parse_dt()
3852 "realtek,in4-differential"); in rt5659_parse_dt()
3855 device_property_read_u32(dev, "realtek,dmic1-data-pin", in rt5659_parse_dt()
3856 &rt5659->pdata.dmic1_data_pin); in rt5659_parse_dt()
3857 device_property_read_u32(dev, "realtek,dmic2-data-pin", in rt5659_parse_dt()
3858 &rt5659->pdata.dmic2_data_pin); in rt5659_parse_dt()
3859 device_property_read_u32(dev, "realtek,jd-src", in rt5659_parse_dt()
3860 &rt5659->pdata.jd_src); in rt5659_parse_dt()
3871 regmap_write(rt5659->regmap, RT5659_BIAS_CUR_CTRL_8, 0xa502); in rt5659_calibrate()
3872 regmap_write(rt5659->regmap, RT5659_CHOP_DAC, 0x3030); in rt5659_calibrate()
3874 regmap_write(rt5659->regmap, RT5659_PRE_DIV_1, 0xef00); in rt5659_calibrate()
3875 regmap_write(rt5659->regmap, RT5659_PRE_DIV_2, 0xeffc); in rt5659_calibrate()
3876 regmap_write(rt5659->regmap, RT5659_MICBIAS_2, 0x0280); in rt5659_calibrate()
3877 regmap_write(rt5659->regmap, RT5659_DIG_MISC, 0x0001); in rt5659_calibrate()
3878 regmap_write(rt5659->regmap, RT5659_GLB_CLK, 0x8000); in rt5659_calibrate()
3880 regmap_write(rt5659->regmap, RT5659_PWR_ANLG_1, 0xaa7e); in rt5659_calibrate()
3882 regmap_write(rt5659->regmap, RT5659_PWR_ANLG_1, 0xfe7e); in rt5659_calibrate()
3884 regmap_write(rt5659->regmap, RT5659_PWR_ANLG_3, 0x0004); in rt5659_calibrate()
3885 regmap_write(rt5659->regmap, RT5659_PWR_DIG_2, 0x0400); in rt5659_calibrate()
3887 regmap_write(rt5659->regmap, RT5659_PWR_DIG_1, 0x0080); in rt5659_calibrate()
3889 regmap_write(rt5659->regmap, RT5659_DEPOP_1, 0x0009); in rt5659_calibrate()
3891 regmap_write(rt5659->regmap, RT5659_PWR_DIG_1, 0x0f80); in rt5659_calibrate()
3893 regmap_write(rt5659->regmap, RT5659_HP_CHARGE_PUMP_1, 0x0e16); in rt5659_calibrate()
3897 regmap_write(rt5659->regmap, RT5659_CAL_REC, 0x0505); in rt5659_calibrate()
3899 regmap_write(rt5659->regmap, RT5659_PWR_ANLG_3, 0x0184); in rt5659_calibrate()
3900 regmap_write(rt5659->regmap, RT5659_CALIB_ADC_CTRL, 0x3c05); in rt5659_calibrate()
3901 regmap_write(rt5659->regmap, RT5659_HP_CALIB_CTRL_2, 0x20c1); in rt5659_calibrate()
3904 regmap_write(rt5659->regmap, RT5659_HP_CALIB_CTRL_2, 0x2cc1); in rt5659_calibrate()
3905 regmap_write(rt5659->regmap, RT5659_HP_CALIB_CTRL_1, 0x5100); in rt5659_calibrate()
3906 regmap_write(rt5659->regmap, RT5659_HP_CALIB_CTRL_7, 0x0014); in rt5659_calibrate()
3907 regmap_write(rt5659->regmap, RT5659_HP_CALIB_CTRL_1, 0xd100); in rt5659_calibrate()
3911 regmap_write(rt5659->regmap, RT5659_HP_CALIB_CTRL_2, 0x2cc1); in rt5659_calibrate()
3912 regmap_write(rt5659->regmap, RT5659_HP_CALIB_CTRL_1, 0x4900); in rt5659_calibrate()
3913 regmap_write(rt5659->regmap, RT5659_HP_CALIB_CTRL_7, 0x0016); in rt5659_calibrate()
3914 regmap_update_bits(rt5659->regmap, RT5659_HP_CALIB_CTRL_1, in rt5659_calibrate()
3919 regmap_read(rt5659->regmap, RT5659_HP_CALIB_CTRL_1, &value); in rt5659_calibrate()
3926 dev_err(rt5659->component->dev, in rt5659_calibrate()
3935 regmap_write(rt5659->regmap, RT5659_HP_CALIB_CTRL_2, 0x2cc1); in rt5659_calibrate()
3936 regmap_write(rt5659->regmap, RT5659_HP_VOL, 0x0000); in rt5659_calibrate()
3937 regmap_write(rt5659->regmap, RT5659_HP_CALIB_CTRL_1, 0x4500); in rt5659_calibrate()
3938 regmap_write(rt5659->regmap, RT5659_HP_CALIB_CTRL_7, 0x001f); in rt5659_calibrate()
3939 regmap_update_bits(rt5659->regmap, RT5659_HP_CALIB_CTRL_1, in rt5659_calibrate()
3944 regmap_read(rt5659->regmap, RT5659_HP_CALIB_CTRL_1, &value); in rt5659_calibrate()
3951 dev_err(rt5659->component->dev, in rt5659_calibrate()
3959 regmap_write(rt5659->regmap, RT5659_HP_CALIB_CTRL_7, 0x0000); in rt5659_calibrate()
3960 regmap_write(rt5659->regmap, RT5659_HP_CALIB_CTRL_2, 0x20c0); in rt5659_calibrate()
3964 regmap_write(rt5659->regmap, RT5659_CLASSD_0, 0x2021); in rt5659_calibrate()
3965 regmap_write(rt5659->regmap, RT5659_CLASSD_CTRL_1, 0x0260); in rt5659_calibrate()
3966 regmap_write(rt5659->regmap, RT5659_PWR_MIXER, 0x3000); in rt5659_calibrate()
3967 regmap_write(rt5659->regmap, RT5659_PWR_VOL, 0xc000); in rt5659_calibrate()
3968 regmap_write(rt5659->regmap, RT5659_A_DAC_MUX, 0x000c); in rt5659_calibrate()
3969 regmap_write(rt5659->regmap, RT5659_DIG_MISC, 0x8000); in rt5659_calibrate()
3970 regmap_write(rt5659->regmap, RT5659_SPO_VOL, 0x0808); in rt5659_calibrate()
3971 regmap_write(rt5659->regmap, RT5659_SPK_L_MIXER, 0x001e); in rt5659_calibrate()
3972 regmap_write(rt5659->regmap, RT5659_SPK_R_MIXER, 0x001e); in rt5659_calibrate()
3973 regmap_write(rt5659->regmap, RT5659_CLASSD_1, 0x0803); in rt5659_calibrate()
3974 regmap_write(rt5659->regmap, RT5659_CLASSD_2, 0x0554); in rt5659_calibrate()
3975 regmap_write(rt5659->regmap, RT5659_SPO_AMP_GAIN, 0x1103); in rt5659_calibrate()
3978 regmap_write(rt5659->regmap, RT5659_CAL_REC, 0x0909); in rt5659_calibrate()
3979 regmap_update_bits(rt5659->regmap, RT5659_HP_CALIB_CTRL_2, 0x0001, in rt5659_calibrate()
3983 regmap_write(rt5659->regmap, RT5659_SPK_DC_CAILB_CTRL_3, 0x0000); in rt5659_calibrate()
3984 regmap_write(rt5659->regmap, RT5659_CLASSD_0, 0x0021); in rt5659_calibrate()
3985 regmap_write(rt5659->regmap, RT5659_SPK_DC_CAILB_CTRL_1, 0x3e80); in rt5659_calibrate()
3986 regmap_update_bits(rt5659->regmap, RT5659_SPK_DC_CAILB_CTRL_1, in rt5659_calibrate()
3991 regmap_read(rt5659->regmap, in rt5659_calibrate()
3999 dev_err(rt5659->component->dev, in rt5659_calibrate()
4000 "SPK Calibration Failure\n"); in rt5659_calibrate()
4009 regmap_write(rt5659->regmap, RT5659_DIG_MISC, 0x0000); in rt5659_calibrate()
4010 regmap_write(rt5659->regmap, RT5659_MONOMIX_IN_GAIN, 0x021f); in rt5659_calibrate()
4011 regmap_write(rt5659->regmap, RT5659_MONO_OUT, 0x480a); in rt5659_calibrate()
4013 regmap_write(rt5659->regmap, RT5659_MONO_GAIN, 0x0003); in rt5659_calibrate()
4014 regmap_write(rt5659->regmap, RT5659_MONO_NG2_CTRL_5, 0x0009); in rt5659_calibrate()
4017 regmap_write(rt5659->regmap, RT5659_SPK_DC_CAILB_CTRL_3, 0x000f); in rt5659_calibrate()
4018 regmap_write(rt5659->regmap, RT5659_MONO_AMP_CALIB_CTRL_1, 0x1e00); in rt5659_calibrate()
4019 regmap_update_bits(rt5659->regmap, RT5659_MONO_AMP_CALIB_CTRL_1, in rt5659_calibrate()
4024 regmap_read(rt5659->regmap, RT5659_MONO_AMP_CALIB_CTRL_1, in rt5659_calibrate()
4032 dev_err(rt5659->component->dev, in rt5659_calibrate()
4040 regmap_write(rt5659->regmap, RT5659_SPK_DC_CAILB_CTRL_3, 0x0003); in rt5659_calibrate()
4044 regmap_write(rt5659->regmap, RT5659_CAL_REC, 0x0808); in rt5659_calibrate()
4045 regmap_write(rt5659->regmap, RT5659_PWR_ANLG_3, 0x0000); in rt5659_calibrate()
4046 regmap_write(rt5659->regmap, RT5659_CALIB_ADC_CTRL, 0x2005); in rt5659_calibrate()
4047 regmap_write(rt5659->regmap, RT5659_HP_CALIB_CTRL_2, 0x20c0); in rt5659_calibrate()
4048 regmap_write(rt5659->regmap, RT5659_DEPOP_1, 0x0000); in rt5659_calibrate()
4049 regmap_write(rt5659->regmap, RT5659_CLASSD_1, 0x0011); in rt5659_calibrate()
4050 regmap_write(rt5659->regmap, RT5659_CLASSD_2, 0x0150); in rt5659_calibrate()
4051 regmap_write(rt5659->regmap, RT5659_PWR_ANLG_1, 0xfe3e); in rt5659_calibrate()
4052 regmap_write(rt5659->regmap, RT5659_MONO_OUT, 0xc80a); in rt5659_calibrate()
4053 regmap_write(rt5659->regmap, RT5659_MONO_AMP_CALIB_CTRL_1, 0x1e04); in rt5659_calibrate()
4054 regmap_write(rt5659->regmap, RT5659_PWR_MIXER, 0x0000); in rt5659_calibrate()
4055 regmap_write(rt5659->regmap, RT5659_PWR_VOL, 0x0000); in rt5659_calibrate()
4056 regmap_write(rt5659->regmap, RT5659_PWR_DIG_1, 0x0000); in rt5659_calibrate()
4057 regmap_write(rt5659->regmap, RT5659_PWR_DIG_2, 0x0000); in rt5659_calibrate()
4058 regmap_write(rt5659->regmap, RT5659_PWR_ANLG_1, 0x003e); in rt5659_calibrate()
4059 regmap_write(rt5659->regmap, RT5659_CLASSD_CTRL_1, 0x0060); in rt5659_calibrate()
4060 regmap_write(rt5659->regmap, RT5659_CLASSD_0, 0x2021); in rt5659_calibrate()
4061 regmap_write(rt5659->regmap, RT5659_GLB_CLK, 0x0000); in rt5659_calibrate()
4062 regmap_write(rt5659->regmap, RT5659_MICBIAS_2, 0x0080); in rt5659_calibrate()
4063 regmap_write(rt5659->regmap, RT5659_HP_VOL, 0x8080); in rt5659_calibrate()
4064 regmap_write(rt5659->regmap, RT5659_HP_CHARGE_PUMP_1, 0x0c16); in rt5659_calibrate()
4071 regmap_read(rt5659->regmap, RT5659_GPIO_STA, &value); in rt5659_intel_hd_header_probe_setup()
4073 rt5659->hda_hp_plugged = true; in rt5659_intel_hd_header_probe_setup()
4074 regmap_update_bits(rt5659->regmap, RT5659_IRQ_CTRL_1, in rt5659_intel_hd_header_probe_setup()
4077 regmap_update_bits(rt5659->regmap, RT5659_IRQ_CTRL_1, in rt5659_intel_hd_header_probe_setup()
4081 regmap_update_bits(rt5659->regmap, RT5659_PWR_ANLG_1, in rt5659_intel_hd_header_probe_setup()
4085 regmap_update_bits(rt5659->regmap, RT5659_PWR_ANLG_1, in rt5659_intel_hd_header_probe_setup()
4088 regmap_update_bits(rt5659->regmap, RT5659_PWR_ANLG_3, RT5659_PWR_LDO2, in rt5659_intel_hd_header_probe_setup()
4090 regmap_update_bits(rt5659->regmap, RT5659_PWR_ANLG_2, RT5659_PWR_MB1, in rt5659_intel_hd_header_probe_setup()
4092 regmap_update_bits(rt5659->regmap, RT5659_PWR_VOL, RT5659_PWR_MIC_DET, in rt5659_intel_hd_header_probe_setup()
4096 regmap_update_bits(rt5659->regmap, RT5659_4BTN_IL_CMD_2, in rt5659_intel_hd_header_probe_setup()
4098 regmap_read(rt5659->regmap, RT5659_4BTN_IL_CMD_1, &value); in rt5659_intel_hd_header_probe_setup()
4099 regmap_write(rt5659->regmap, RT5659_4BTN_IL_CMD_1, value); in rt5659_intel_hd_header_probe_setup()
4100 regmap_read(rt5659->regmap, RT5659_4BTN_IL_CMD_1, &value); in rt5659_intel_hd_header_probe_setup()
4103 rt5659->hda_mic_plugged = true; in rt5659_intel_hd_header_probe_setup()
4104 regmap_update_bits(rt5659->regmap, RT5659_IRQ_CTRL_2, in rt5659_intel_hd_header_probe_setup()
4107 regmap_update_bits(rt5659->regmap, RT5659_IRQ_CTRL_2, in rt5659_intel_hd_header_probe_setup()
4111 regmap_update_bits(rt5659->regmap, RT5659_IRQ_CTRL_2, in rt5659_intel_hd_header_probe_setup()
4118 struct rt5659_platform_data *pdata = dev_get_platdata(&i2c->dev); in rt5659_i2c_probe()
4123 rt5659 = devm_kzalloc(&i2c->dev, sizeof(struct rt5659_priv), in rt5659_i2c_probe()
4127 return -ENOMEM; in rt5659_i2c_probe()
4132 rt5659->pdata = *pdata; in rt5659_i2c_probe()
4134 rt5659_parse_dt(rt5659, &i2c->dev); in rt5659_i2c_probe()
4136 rt5659->gpiod_ldo1_en = devm_gpiod_get_optional(&i2c->dev, "ldo1-en", in rt5659_i2c_probe()
4138 if (IS_ERR(rt5659->gpiod_ldo1_en)) in rt5659_i2c_probe()
4139 dev_warn(&i2c->dev, "Request ldo1-en GPIO failed\n"); in rt5659_i2c_probe()
4141 rt5659->gpiod_reset = devm_gpiod_get_optional(&i2c->dev, "reset", in rt5659_i2c_probe()
4147 rt5659->regmap = devm_regmap_init_i2c(i2c, &rt5659_regmap); in rt5659_i2c_probe()
4148 if (IS_ERR(rt5659->regmap)) { in rt5659_i2c_probe()
4149 ret = PTR_ERR(rt5659->regmap); in rt5659_i2c_probe()
4150 dev_err(&i2c->dev, "Failed to allocate register map: %d\n", in rt5659_i2c_probe()
4155 regmap_read(rt5659->regmap, RT5659_DEVICE_ID, &val); in rt5659_i2c_probe()
4157 dev_err(&i2c->dev, in rt5659_i2c_probe()
4159 return -ENODEV; in rt5659_i2c_probe()
4162 regmap_write(rt5659->regmap, RT5659_RESET, 0); in rt5659_i2c_probe()
4165 rt5659->mclk = devm_clk_get(&i2c->dev, "mclk"); in rt5659_i2c_probe()
4166 if (IS_ERR(rt5659->mclk)) { in rt5659_i2c_probe()
4167 if (PTR_ERR(rt5659->mclk) != -ENOENT) in rt5659_i2c_probe()
4168 return PTR_ERR(rt5659->mclk); in rt5659_i2c_probe()
4170 rt5659->mclk = NULL; in rt5659_i2c_probe()
4176 if (rt5659->pdata.in1_diff) in rt5659_i2c_probe()
4177 regmap_update_bits(rt5659->regmap, RT5659_IN1_IN2, in rt5659_i2c_probe()
4179 if (rt5659->pdata.in3_diff) in rt5659_i2c_probe()
4180 regmap_update_bits(rt5659->regmap, RT5659_IN3_IN4, in rt5659_i2c_probe()
4182 if (rt5659->pdata.in4_diff) in rt5659_i2c_probe()
4183 regmap_update_bits(rt5659->regmap, RT5659_IN3_IN4, in rt5659_i2c_probe()
4187 if (rt5659->pdata.dmic1_data_pin != RT5659_DMIC1_NULL || in rt5659_i2c_probe()
4188 rt5659->pdata.dmic2_data_pin != RT5659_DMIC2_NULL) { in rt5659_i2c_probe()
4189 regmap_update_bits(rt5659->regmap, RT5659_GPIO_CTRL_1, in rt5659_i2c_probe()
4192 switch (rt5659->pdata.dmic1_data_pin) { in rt5659_i2c_probe()
4194 regmap_update_bits(rt5659->regmap, RT5659_DMIC_CTRL_1, in rt5659_i2c_probe()
4199 regmap_update_bits(rt5659->regmap, in rt5659_i2c_probe()
4203 regmap_update_bits(rt5659->regmap, RT5659_DMIC_CTRL_1, in rt5659_i2c_probe()
4205 regmap_update_bits(rt5659->regmap, RT5659_GPIO_CTRL_1, in rt5659_i2c_probe()
4210 regmap_update_bits(rt5659->regmap, RT5659_DMIC_CTRL_1, in rt5659_i2c_probe()
4212 regmap_update_bits(rt5659->regmap, RT5659_GPIO_CTRL_1, in rt5659_i2c_probe()
4217 regmap_update_bits(rt5659->regmap, RT5659_DMIC_CTRL_1, in rt5659_i2c_probe()
4219 regmap_update_bits(rt5659->regmap, RT5659_GPIO_CTRL_1, in rt5659_i2c_probe()
4225 dev_dbg(&i2c->dev, "no DMIC1\n"); in rt5659_i2c_probe()
4229 switch (rt5659->pdata.dmic2_data_pin) { in rt5659_i2c_probe()
4231 regmap_update_bits(rt5659->regmap, in rt5659_i2c_probe()
4238 regmap_update_bits(rt5659->regmap, in rt5659_i2c_probe()
4242 regmap_update_bits(rt5659->regmap, in rt5659_i2c_probe()
4249 regmap_update_bits(rt5659->regmap, in rt5659_i2c_probe()
4253 regmap_update_bits(rt5659->regmap, in rt5659_i2c_probe()
4260 regmap_update_bits(rt5659->regmap, in rt5659_i2c_probe()
4264 regmap_update_bits(rt5659->regmap, in rt5659_i2c_probe()
4271 dev_dbg(&i2c->dev, "no DMIC2\n"); in rt5659_i2c_probe()
4276 regmap_update_bits(rt5659->regmap, RT5659_GPIO_CTRL_1, in rt5659_i2c_probe()
4285 regmap_update_bits(rt5659->regmap, RT5659_DMIC_CTRL_1, in rt5659_i2c_probe()
4290 switch (rt5659->pdata.jd_src) { in rt5659_i2c_probe()
4292 regmap_write(rt5659->regmap, RT5659_EJD_CTRL_1, 0xa880); in rt5659_i2c_probe()
4293 regmap_write(rt5659->regmap, RT5659_RC_CLK_CTRL, 0x9000); in rt5659_i2c_probe()
4294 regmap_write(rt5659->regmap, RT5659_GPIO_CTRL_1, 0xc800); in rt5659_i2c_probe()
4295 regmap_update_bits(rt5659->regmap, RT5659_PWR_ANLG_1, in rt5659_i2c_probe()
4297 regmap_write(rt5659->regmap, RT5659_PWR_ANLG_2, 0x0001); in rt5659_i2c_probe()
4298 regmap_write(rt5659->regmap, RT5659_IRQ_CTRL_2, 0x0040); in rt5659_i2c_probe()
4299 INIT_DELAYED_WORK(&rt5659->jack_detect_work, in rt5659_i2c_probe()
4303 regmap_write(rt5659->regmap, RT5659_GPIO_CTRL_3, 0x8000); in rt5659_i2c_probe()
4304 regmap_write(rt5659->regmap, RT5659_RC_CLK_CTRL, 0x0900); in rt5659_i2c_probe()
4305 regmap_write(rt5659->regmap, RT5659_EJD_CTRL_1, 0x70c0); in rt5659_i2c_probe()
4306 regmap_write(rt5659->regmap, RT5659_JD_CTRL_1, 0x2000); in rt5659_i2c_probe()
4307 regmap_write(rt5659->regmap, RT5659_IRQ_CTRL_1, 0x0040); in rt5659_i2c_probe()
4308 INIT_DELAYED_WORK(&rt5659->jack_detect_work, in rt5659_i2c_probe()
4316 if (i2c->irq) { in rt5659_i2c_probe()
4317 ret = devm_request_threaded_irq(&i2c->dev, i2c->irq, NULL, in rt5659_i2c_probe()
4321 dev_err(&i2c->dev, "Failed to reguest IRQ: %d\n", ret); in rt5659_i2c_probe()
4324 regmap_update_bits(rt5659->regmap, RT5659_GPIO_CTRL_1, in rt5659_i2c_probe()
4328 return devm_snd_soc_register_component(&i2c->dev, in rt5659_i2c_probe()
4337 regmap_write(rt5659->regmap, RT5659_RESET, 0); in rt5659_i2c_shutdown()
4365 .shutdown = rt5659_i2c_shutdown,