Lines Matching refs:rt5665

1169 	struct rt5665_priv *rt5665 = snd_soc_component_get_drvdata(component);  in rt5665_headset_detect()  local
1177 regmap_update_bits(rt5665->regmap, RT5665_MICBIAS_2, 0x100, in rt5665_headset_detect()
1180 regmap_read(rt5665->regmap, RT5665_GPIO_STA, &val); in rt5665_headset_detect()
1182 regmap_update_bits(rt5665->regmap, RT5665_EJD_CTRL_1, in rt5665_headset_detect()
1185 regmap_read(rt5665->regmap, RT5665_GPIO_STA, &val); in rt5665_headset_detect()
1188 regmap_read(rt5665->regmap, RT5665_GPIO_STA, in rt5665_headset_detect()
1193 regmap_update_bits(rt5665->regmap, RT5665_EJD_CTRL_1, in rt5665_headset_detect()
1195 regmap_write(rt5665->regmap, RT5665_EJD_CTRL_3, 0x3424); in rt5665_headset_detect()
1196 regmap_write(rt5665->regmap, RT5665_IL_CMD_1, 0x0048); in rt5665_headset_detect()
1197 regmap_write(rt5665->regmap, RT5665_SAR_IL_CMD_1, 0xa291); in rt5665_headset_detect()
1201 rt5665->sar_adc_value = snd_soc_component_read(rt5665->component, in rt5665_headset_detect()
1204 sar_hs_type = rt5665->pdata.sar_hs_type ? in rt5665_headset_detect()
1205 rt5665->pdata.sar_hs_type : 729; in rt5665_headset_detect()
1207 if (rt5665->sar_adc_value > sar_hs_type) { in rt5665_headset_detect()
1208 rt5665->jack_type = SND_JACK_HEADSET; in rt5665_headset_detect()
1211 rt5665->jack_type = SND_JACK_HEADPHONE; in rt5665_headset_detect()
1212 regmap_write(rt5665->regmap, RT5665_SAR_IL_CMD_1, in rt5665_headset_detect()
1214 regmap_update_bits(rt5665->regmap, RT5665_MICBIAS_2, in rt5665_headset_detect()
1220 regmap_write(rt5665->regmap, RT5665_SAR_IL_CMD_1, 0x2291); in rt5665_headset_detect()
1221 regmap_update_bits(rt5665->regmap, RT5665_MICBIAS_2, 0x100, 0); in rt5665_headset_detect()
1224 if (rt5665->jack_type == SND_JACK_HEADSET) in rt5665_headset_detect()
1226 rt5665->jack_type = 0; in rt5665_headset_detect()
1229 dev_dbg(component->dev, "jack_type = %d\n", rt5665->jack_type); in rt5665_headset_detect()
1230 return rt5665->jack_type; in rt5665_headset_detect()
1235 struct rt5665_priv *rt5665 = data; in rt5665_irq() local
1238 &rt5665->jack_detect_work, msecs_to_jiffies(250)); in rt5665_irq()
1245 struct rt5665_priv *rt5665 = container_of(work, struct rt5665_priv, in rt5665_jd_check_handler() local
1248 if (snd_soc_component_read(rt5665->component, RT5665_AJD1_CTRL) & 0x0010) { in rt5665_jd_check_handler()
1250 rt5665->jack_type = rt5665_headset_detect(rt5665->component, 0); in rt5665_jd_check_handler()
1252 snd_soc_jack_report(rt5665->hs_jack, rt5665->jack_type, in rt5665_jd_check_handler()
1257 schedule_delayed_work(&rt5665->jd_check_work, 500); in rt5665_jd_check_handler()
1264 struct rt5665_priv *rt5665 = snd_soc_component_get_drvdata(component); in rt5665_set_jack_detect() local
1266 switch (rt5665->pdata.jd_src) { in rt5665_set_jack_detect()
1268 regmap_update_bits(rt5665->regmap, RT5665_GPIO_CTRL_1, in rt5665_set_jack_detect()
1270 regmap_update_bits(rt5665->regmap, RT5665_RC_CLK_CTRL, in rt5665_set_jack_detect()
1272 regmap_update_bits(rt5665->regmap, RT5665_PWR_ANLG_2, in rt5665_set_jack_detect()
1274 regmap_update_bits(rt5665->regmap, RT5665_IRQ_CTRL_1, 0x8, 0x8); in rt5665_set_jack_detect()
1285 rt5665->hs_jack = hs_jack; in rt5665_set_jack_detect()
1292 struct rt5665_priv *rt5665 = in rt5665_jack_detect_handler() local
1296 while (!rt5665->component) { in rt5665_jack_detect_handler()
1301 while (!rt5665->component->card->instantiated) { in rt5665_jack_detect_handler()
1306 while (!rt5665->calibration_done) { in rt5665_jack_detect_handler()
1311 mutex_lock(&rt5665->calibrate_mutex); in rt5665_jack_detect_handler()
1313 val = snd_soc_component_read(rt5665->component, RT5665_AJD1_CTRL) & 0x0010; in rt5665_jack_detect_handler()
1316 if (rt5665->jack_type == 0) { in rt5665_jack_detect_handler()
1318 rt5665->jack_type = in rt5665_jack_detect_handler()
1319 rt5665_headset_detect(rt5665->component, 1); in rt5665_jack_detect_handler()
1322 rt5665->jack_type = SND_JACK_HEADSET; in rt5665_jack_detect_handler()
1323 btn_type = rt5665_button_detect(rt5665->component); in rt5665_jack_detect_handler()
1335 rt5665->jack_type |= SND_JACK_BTN_0; in rt5665_jack_detect_handler()
1340 rt5665->jack_type |= SND_JACK_BTN_1; in rt5665_jack_detect_handler()
1345 rt5665->jack_type |= SND_JACK_BTN_2; in rt5665_jack_detect_handler()
1350 rt5665->jack_type |= SND_JACK_BTN_3; in rt5665_jack_detect_handler()
1356 dev_err(rt5665->component->dev, in rt5665_jack_detect_handler()
1364 rt5665->jack_type = rt5665_headset_detect(rt5665->component, 0); in rt5665_jack_detect_handler()
1367 snd_soc_jack_report(rt5665->hs_jack, rt5665->jack_type, in rt5665_jack_detect_handler()
1372 if (rt5665->jack_type & (SND_JACK_BTN_0 | SND_JACK_BTN_1 | in rt5665_jack_detect_handler()
1374 schedule_delayed_work(&rt5665->jd_check_work, 0); in rt5665_jack_detect_handler()
1376 cancel_delayed_work_sync(&rt5665->jd_check_work); in rt5665_jack_detect_handler()
1378 mutex_unlock(&rt5665->calibrate_mutex); in rt5665_jack_detect_handler()
1480 struct rt5665_priv *rt5665 = snd_soc_component_get_drvdata(component); in set_dmic_clk() local
1483 pd = rl6231_get_pre_div(rt5665->regmap, in set_dmic_clk()
1485 idx = rl6231_calc_dmic_clk(rt5665->sysclk / pd); in set_dmic_clk()
4109 struct rt5665_priv *rt5665 = snd_soc_component_get_drvdata(component); in rt5665_hw_params() local
4113 rt5665->lrck[dai->id] = params_rate(params); in rt5665_hw_params()
4114 pre_div = rl6231_get_clk_info(rt5665->sysclk, rt5665->lrck[dai->id]); in rt5665_hw_params()
4118 rt5665->sysclk, rt5665->lrck[dai->id] * 512); in rt5665_hw_params()
4120 rt5665->lrck[dai->id] * 512, 0); in rt5665_hw_params()
4130 rt5665->lrck[dai->id], pre_div, dai->id); in rt5665_hw_params()
4186 switch (rt5665->lrck[dai->id]) { in rt5665_hw_params()
4204 if (rt5665->master[RT5665_AIF2_1] || rt5665->master[RT5665_AIF2_2]) { in rt5665_hw_params()
4208 if (rt5665->master[RT5665_AIF3]) { in rt5665_hw_params()
4219 struct rt5665_priv *rt5665 = snd_soc_component_get_drvdata(component); in rt5665_set_dai_fmt() local
4224 rt5665->master[dai->id] = 1; in rt5665_set_dai_fmt()
4228 rt5665->master[dai->id] = 0; in rt5665_set_dai_fmt()
4288 struct rt5665_priv *rt5665 = snd_soc_component_get_drvdata(component); in rt5665_set_component_sysclk() local
4291 if (freq == rt5665->sysclk && clk_id == rt5665->sysclk_src) in rt5665_set_component_sysclk()
4314 if (rt5665->master[RT5665_AIF2_1] || rt5665->master[RT5665_AIF2_2]) { in rt5665_set_component_sysclk()
4318 if (rt5665->master[RT5665_AIF3]) { in rt5665_set_component_sysclk()
4323 rt5665->sysclk = freq; in rt5665_set_component_sysclk()
4324 rt5665->sysclk_src = clk_id; in rt5665_set_component_sysclk()
4335 struct rt5665_priv *rt5665 = snd_soc_component_get_drvdata(component); in rt5665_set_component_pll() local
4339 if (source == rt5665->pll_src && freq_in == rt5665->pll_in && in rt5665_set_component_pll()
4340 freq_out == rt5665->pll_out) in rt5665_set_component_pll()
4346 rt5665->pll_in = 0; in rt5665_set_component_pll()
4347 rt5665->pll_out = 0; in rt5665_set_component_pll()
4391 rt5665->pll_in = freq_in; in rt5665_set_component_pll()
4392 rt5665->pll_out = freq_out; in rt5665_set_component_pll()
4393 rt5665->pll_src = source; in rt5665_set_component_pll()
4401 struct rt5665_priv *rt5665 = snd_soc_component_get_drvdata(component); in rt5665_set_bclk_ratio() local
4405 rt5665->bclk[dai->id] = ratio; in rt5665_set_bclk_ratio()
4429 struct rt5665_priv *rt5665 = snd_soc_component_get_drvdata(component); in rt5665_set_bias_level() local
4433 regmap_update_bits(rt5665->regmap, RT5665_DIG_MISC, in rt5665_set_bias_level()
4438 regmap_update_bits(rt5665->regmap, RT5665_PWR_DIG_1, in rt5665_set_bias_level()
4440 regmap_update_bits(rt5665->regmap, RT5665_PWR_ANLG_1, in rt5665_set_bias_level()
4442 regmap_update_bits(rt5665->regmap, RT5665_DIG_MISC, in rt5665_set_bias_level()
4446 regmap_update_bits(rt5665->regmap, RT5665_PWR_DIG_1, in rt5665_set_bias_level()
4448 regmap_update_bits(rt5665->regmap, RT5665_PWR_ANLG_1, in rt5665_set_bias_level()
4461 struct rt5665_priv *rt5665 = snd_soc_component_get_drvdata(component); in rt5665_probe() local
4463 rt5665->component = component; in rt5665_probe()
4465 schedule_delayed_work(&rt5665->calibrate_work, msecs_to_jiffies(100)); in rt5665_probe()
4472 struct rt5665_priv *rt5665 = snd_soc_component_get_drvdata(component); in rt5665_remove() local
4474 regmap_write(rt5665->regmap, RT5665_RESET, 0); in rt5665_remove()
4480 struct rt5665_priv *rt5665 = snd_soc_component_get_drvdata(component); in rt5665_suspend() local
4482 regcache_cache_only(rt5665->regmap, true); in rt5665_suspend()
4483 regcache_mark_dirty(rt5665->regmap); in rt5665_suspend()
4489 struct rt5665_priv *rt5665 = snd_soc_component_get_drvdata(component); in rt5665_resume() local
4491 regcache_cache_only(rt5665->regmap, false); in rt5665_resume()
4492 regcache_sync(rt5665->regmap); in rt5665_resume()
4643 static int rt5665_parse_dt(struct rt5665_priv *rt5665, struct device *dev) in rt5665_parse_dt() argument
4645 rt5665->pdata.in1_diff = of_property_read_bool(dev->of_node, in rt5665_parse_dt()
4647 rt5665->pdata.in2_diff = of_property_read_bool(dev->of_node, in rt5665_parse_dt()
4649 rt5665->pdata.in3_diff = of_property_read_bool(dev->of_node, in rt5665_parse_dt()
4651 rt5665->pdata.in4_diff = of_property_read_bool(dev->of_node, in rt5665_parse_dt()
4655 &rt5665->pdata.dmic1_data_pin); in rt5665_parse_dt()
4657 &rt5665->pdata.dmic2_data_pin); in rt5665_parse_dt()
4659 &rt5665->pdata.jd_src); in rt5665_parse_dt()
4661 rt5665->pdata.ldo1_en = of_get_named_gpio(dev->of_node, in rt5665_parse_dt()
4667 static void rt5665_calibrate(struct rt5665_priv *rt5665) in rt5665_calibrate() argument
4671 mutex_lock(&rt5665->calibrate_mutex); in rt5665_calibrate()
4673 regcache_cache_bypass(rt5665->regmap, true); in rt5665_calibrate()
4675 regmap_write(rt5665->regmap, RT5665_RESET, 0); in rt5665_calibrate()
4676 regmap_write(rt5665->regmap, RT5665_BIAS_CUR_CTRL_8, 0xa602); in rt5665_calibrate()
4677 regmap_write(rt5665->regmap, RT5665_HP_CHARGE_PUMP_1, 0x0c26); in rt5665_calibrate()
4678 regmap_write(rt5665->regmap, RT5665_MONOMIX_IN_GAIN, 0x021f); in rt5665_calibrate()
4679 regmap_write(rt5665->regmap, RT5665_MONO_OUT, 0x480a); in rt5665_calibrate()
4680 regmap_write(rt5665->regmap, RT5665_PWR_MIXER, 0x083f); in rt5665_calibrate()
4681 regmap_write(rt5665->regmap, RT5665_PWR_DIG_1, 0x0180); in rt5665_calibrate()
4682 regmap_write(rt5665->regmap, RT5665_EJD_CTRL_1, 0x4040); in rt5665_calibrate()
4683 regmap_write(rt5665->regmap, RT5665_HP_LOGIC_CTRL_2, 0x0000); in rt5665_calibrate()
4684 regmap_write(rt5665->regmap, RT5665_DIG_MISC, 0x0001); in rt5665_calibrate()
4685 regmap_write(rt5665->regmap, RT5665_MICBIAS_2, 0x0380); in rt5665_calibrate()
4686 regmap_write(rt5665->regmap, RT5665_GLB_CLK, 0x8000); in rt5665_calibrate()
4687 regmap_write(rt5665->regmap, RT5665_ADDA_CLK_1, 0x1000); in rt5665_calibrate()
4688 regmap_write(rt5665->regmap, RT5665_CHOP_DAC, 0x3030); in rt5665_calibrate()
4689 regmap_write(rt5665->regmap, RT5665_CALIB_ADC_CTRL, 0x3c05); in rt5665_calibrate()
4690 regmap_write(rt5665->regmap, RT5665_PWR_ANLG_1, 0xaa3e); in rt5665_calibrate()
4692 regmap_write(rt5665->regmap, RT5665_PWR_ANLG_1, 0xfe7e); in rt5665_calibrate()
4693 regmap_write(rt5665->regmap, RT5665_HP_CALIB_CTRL_2, 0x0321); in rt5665_calibrate()
4695 regmap_write(rt5665->regmap, RT5665_HP_CALIB_CTRL_1, 0xfc00); in rt5665_calibrate()
4698 regmap_read(rt5665->regmap, RT5665_HP_CALIB_STA_1, &value); in rt5665_calibrate()
4706 regmap_write(rt5665->regmap, RT5665_RESET, 0); in rt5665_calibrate()
4707 regcache_cache_bypass(rt5665->regmap, false); in rt5665_calibrate()
4714 regmap_write(rt5665->regmap, RT5665_MONO_AMP_CALIB_CTRL_1, 0x9e24); in rt5665_calibrate()
4717 regmap_read(rt5665->regmap, RT5665_MONO_AMP_CALIB_STA1, &value); in rt5665_calibrate()
4725 regmap_write(rt5665->regmap, RT5665_RESET, 0); in rt5665_calibrate()
4726 regcache_cache_bypass(rt5665->regmap, false); in rt5665_calibrate()
4733 regmap_write(rt5665->regmap, RT5665_RESET, 0); in rt5665_calibrate()
4734 regcache_cache_bypass(rt5665->regmap, false); in rt5665_calibrate()
4736 regcache_mark_dirty(rt5665->regmap); in rt5665_calibrate()
4737 regcache_sync(rt5665->regmap); in rt5665_calibrate()
4739 regmap_write(rt5665->regmap, RT5665_BIAS_CUR_CTRL_8, 0xa602); in rt5665_calibrate()
4740 regmap_write(rt5665->regmap, RT5665_ASRC_8, 0x0120); in rt5665_calibrate()
4743 rt5665->calibration_done = true; in rt5665_calibrate()
4744 mutex_unlock(&rt5665->calibrate_mutex); in rt5665_calibrate()
4749 struct rt5665_priv *rt5665 = container_of(work, struct rt5665_priv, in rt5665_calibrate_handler() local
4752 while (!rt5665->component->card->instantiated) { in rt5665_calibrate_handler()
4757 rt5665_calibrate(rt5665); in rt5665_calibrate_handler()
4764 struct rt5665_priv *rt5665; in rt5665_i2c_probe() local
4768 rt5665 = devm_kzalloc(&i2c->dev, sizeof(struct rt5665_priv), in rt5665_i2c_probe()
4771 if (rt5665 == NULL) in rt5665_i2c_probe()
4774 i2c_set_clientdata(i2c, rt5665); in rt5665_i2c_probe()
4777 rt5665->pdata = *pdata; in rt5665_i2c_probe()
4779 rt5665_parse_dt(rt5665, &i2c->dev); in rt5665_i2c_probe()
4781 for (i = 0; i < ARRAY_SIZE(rt5665->supplies); i++) in rt5665_i2c_probe()
4782 rt5665->supplies[i].supply = rt5665_supply_names[i]; in rt5665_i2c_probe()
4784 ret = devm_regulator_bulk_get(&i2c->dev, ARRAY_SIZE(rt5665->supplies), in rt5665_i2c_probe()
4785 rt5665->supplies); in rt5665_i2c_probe()
4791 ret = regulator_bulk_enable(ARRAY_SIZE(rt5665->supplies), in rt5665_i2c_probe()
4792 rt5665->supplies); in rt5665_i2c_probe()
4798 if (gpio_is_valid(rt5665->pdata.ldo1_en)) { in rt5665_i2c_probe()
4799 if (devm_gpio_request_one(&i2c->dev, rt5665->pdata.ldo1_en, in rt5665_i2c_probe()
4807 rt5665->regmap = devm_regmap_init_i2c(i2c, &rt5665_regmap); in rt5665_i2c_probe()
4808 if (IS_ERR(rt5665->regmap)) { in rt5665_i2c_probe()
4809 ret = PTR_ERR(rt5665->regmap); in rt5665_i2c_probe()
4815 regmap_read(rt5665->regmap, RT5665_DEVICE_ID, &val); in rt5665_i2c_probe()
4822 regmap_read(rt5665->regmap, RT5665_RESET, &val); in rt5665_i2c_probe()
4825 rt5665->id = CODEC_5666; in rt5665_i2c_probe()
4829 rt5665->id = CODEC_5665; in rt5665_i2c_probe()
4833 regmap_write(rt5665->regmap, RT5665_RESET, 0); in rt5665_i2c_probe()
4836 if (rt5665->pdata.in1_diff) in rt5665_i2c_probe()
4837 regmap_update_bits(rt5665->regmap, RT5665_IN1_IN2, in rt5665_i2c_probe()
4839 if (rt5665->pdata.in2_diff) in rt5665_i2c_probe()
4840 regmap_update_bits(rt5665->regmap, RT5665_IN1_IN2, in rt5665_i2c_probe()
4842 if (rt5665->pdata.in3_diff) in rt5665_i2c_probe()
4843 regmap_update_bits(rt5665->regmap, RT5665_IN3_IN4, in rt5665_i2c_probe()
4845 if (rt5665->pdata.in4_diff) in rt5665_i2c_probe()
4846 regmap_update_bits(rt5665->regmap, RT5665_IN3_IN4, in rt5665_i2c_probe()
4850 if (rt5665->pdata.dmic1_data_pin != RT5665_DMIC1_NULL || in rt5665_i2c_probe()
4851 rt5665->pdata.dmic2_data_pin != RT5665_DMIC2_NULL) { in rt5665_i2c_probe()
4852 regmap_update_bits(rt5665->regmap, RT5665_GPIO_CTRL_2, in rt5665_i2c_probe()
4854 regmap_update_bits(rt5665->regmap, RT5665_GPIO_CTRL_1, in rt5665_i2c_probe()
4856 switch (rt5665->pdata.dmic1_data_pin) { in rt5665_i2c_probe()
4858 regmap_update_bits(rt5665->regmap, RT5665_DMIC_CTRL_1, in rt5665_i2c_probe()
4863 regmap_update_bits(rt5665->regmap, RT5665_DMIC_CTRL_1, in rt5665_i2c_probe()
4865 regmap_update_bits(rt5665->regmap, RT5665_GPIO_CTRL_1, in rt5665_i2c_probe()
4874 switch (rt5665->pdata.dmic2_data_pin) { in rt5665_i2c_probe()
4876 regmap_update_bits(rt5665->regmap, RT5665_DMIC_CTRL_1, in rt5665_i2c_probe()
4881 regmap_update_bits(rt5665->regmap, in rt5665_i2c_probe()
4885 regmap_update_bits(rt5665->regmap, RT5665_GPIO_CTRL_1, in rt5665_i2c_probe()
4896 regmap_write(rt5665->regmap, RT5665_HP_LOGIC_CTRL_2, 0x0002); in rt5665_i2c_probe()
4897 regmap_update_bits(rt5665->regmap, RT5665_EJD_CTRL_1, in rt5665_i2c_probe()
4900 regmap_update_bits(rt5665->regmap, RT5665_STO1_DAC_SIL_DET, in rt5665_i2c_probe()
4903 regmap_update_bits(rt5665->regmap, RT5665_HP_CHARGE_PUMP_1, in rt5665_i2c_probe()
4907 if (rt5665->id == CODEC_5666) { in rt5665_i2c_probe()
4908 regmap_update_bits(rt5665->regmap, RT5665_GPIO_CTRL_2, in rt5665_i2c_probe()
4910 regmap_update_bits(rt5665->regmap, RT5665_GPIO_CTRL_3, in rt5665_i2c_probe()
4915 regmap_update_bits(rt5665->regmap, RT5665_PWR_ANLG_1, in rt5665_i2c_probe()
4919 INIT_DELAYED_WORK(&rt5665->jack_detect_work, in rt5665_i2c_probe()
4921 INIT_DELAYED_WORK(&rt5665->calibrate_work, in rt5665_i2c_probe()
4923 INIT_DELAYED_WORK(&rt5665->jd_check_work, in rt5665_i2c_probe()
4926 mutex_init(&rt5665->calibrate_mutex); in rt5665_i2c_probe()
4931 | IRQF_ONESHOT, "rt5665", rt5665); in rt5665_i2c_probe()
4944 struct rt5665_priv *rt5665 = i2c_get_clientdata(client); in rt5665_i2c_shutdown() local
4946 regmap_write(rt5665->regmap, RT5665_RESET, 0); in rt5665_i2c_shutdown()