Lines Matching refs:rt5651

294 	struct rt5651_priv *rt5651 = snd_soc_component_get_drvdata(component);  in rt5651_asrc_get()  local
296 ucontrol->value.integer.value[0] = rt5651->asrc_en; in rt5651_asrc_get()
305 struct rt5651_priv *rt5651 = snd_soc_component_get_drvdata(component); in rt5651_asrc_put() local
307 rt5651->asrc_en = ucontrol->value.integer.value[0]; in rt5651_asrc_put()
308 if (rt5651->asrc_en) { in rt5651_asrc_put()
309 regmap_write(rt5651->regmap, 0x80, 0x4000); in rt5651_asrc_put()
310 regmap_write(rt5651->regmap, 0x81, 0x0302); in rt5651_asrc_put()
311 regmap_write(rt5651->regmap, 0x82, 0x0800); in rt5651_asrc_put()
312 regmap_write(rt5651->regmap, 0x73, 0x1004); in rt5651_asrc_put()
313 regmap_write(rt5651->regmap, 0x83, 0x1000); in rt5651_asrc_put()
314 regmap_write(rt5651->regmap, 0x84, 0x7000); in rt5651_asrc_put()
318 regmap_write(rt5651->regmap, 0x83, 0x0); in rt5651_asrc_put()
319 regmap_write(rt5651->regmap, 0x84, 0x0); in rt5651_asrc_put()
424 struct rt5651_priv *rt5651 = snd_soc_component_get_drvdata(component); in set_dmic_clk() local
427 rate = rt5651->sysclk / rl6231_get_pre_div(rt5651->regmap, in set_dmic_clk()
729 struct rt5651_priv *rt5651 = snd_soc_component_get_drvdata(component); in rt5651_amp_power_event() local
734 regmap_update_bits(rt5651->regmap, RT5651_PR_BASE + in rt5651_amp_power_event()
736 regmap_update_bits(rt5651->regmap, RT5651_DEPOP_M2, in rt5651_amp_power_event()
738 regmap_update_bits(rt5651->regmap, RT5651_DEPOP_M1, in rt5651_amp_power_event()
742 regmap_write(rt5651->regmap, RT5651_PR_BASE + in rt5651_amp_power_event()
745 regmap_update_bits(rt5651->regmap, RT5651_PWR_ANLG1, in rt5651_amp_power_event()
747 regmap_update_bits(rt5651->regmap, RT5651_PWR_ANLG1, in rt5651_amp_power_event()
751 regmap_update_bits(rt5651->regmap, RT5651_PWR_ANLG1, in rt5651_amp_power_event()
767 struct rt5651_priv *rt5651 = snd_soc_component_get_drvdata(component); in rt5651_hp_event() local
772 regmap_update_bits(rt5651->regmap, RT5651_DEPOP_M2, in rt5651_hp_event()
775 regmap_update_bits(rt5651->regmap, RT5651_CHARGE_PUMP, in rt5651_hp_event()
778 regmap_update_bits(rt5651->regmap, RT5651_DEPOP_M3, in rt5651_hp_event()
785 regmap_write(rt5651->regmap, RT5651_PR_BASE + in rt5651_hp_event()
787 regmap_update_bits(rt5651->regmap, RT5651_DEPOP_M1, in rt5651_hp_event()
790 regmap_update_bits(rt5651->regmap, RT5651_PR_BASE + in rt5651_hp_event()
792 rt5651->hp_mute = false; in rt5651_hp_event()
796 rt5651->hp_mute = true; in rt5651_hp_event()
812 struct rt5651_priv *rt5651 = snd_soc_component_get_drvdata(component); in rt5651_hp_post_event() local
816 if (!rt5651->hp_mute) in rt5651_hp_post_event()
1329 struct rt5651_priv *rt5651 = snd_soc_component_get_drvdata(component); in rt5651_hw_params() local
1333 rt5651->lrck[dai->id] = params_rate(params); in rt5651_hw_params()
1334 pre_div = rl6231_get_clk_info(rt5651->sysclk, rt5651->lrck[dai->id]); in rt5651_hw_params()
1346 rt5651->bclk[dai->id] = rt5651->lrck[dai->id] * (32 << bclk_ms); in rt5651_hw_params()
1349 rt5651->bclk[dai->id], rt5651->lrck[dai->id]); in rt5651_hw_params()
1395 struct rt5651_priv *rt5651 = snd_soc_component_get_drvdata(component); in rt5651_set_dai_fmt() local
1400 rt5651->master[dai->id] = 1; in rt5651_set_dai_fmt()
1404 rt5651->master[dai->id] = 0; in rt5651_set_dai_fmt()
1458 struct rt5651_priv *rt5651 = snd_soc_component_get_drvdata(component); in rt5651_set_dai_sysclk() local
1462 if (freq == rt5651->sysclk && clk_id == rt5651->sysclk_src) in rt5651_set_dai_sysclk()
1484 rt5651->sysclk = freq; in rt5651_set_dai_sysclk()
1485 rt5651->sysclk_src = clk_id; in rt5651_set_dai_sysclk()
1496 struct rt5651_priv *rt5651 = snd_soc_component_get_drvdata(component); in rt5651_set_dai_pll() local
1500 if (source == rt5651->pll_src && freq_in == rt5651->pll_in && in rt5651_set_dai_pll()
1501 freq_out == rt5651->pll_out) in rt5651_set_dai_pll()
1507 rt5651->pll_in = 0; in rt5651_set_dai_pll()
1508 rt5651->pll_out = 0; in rt5651_set_dai_pll()
1548 rt5651->pll_in = freq_in; in rt5651_set_dai_pll()
1549 rt5651->pll_out = freq_out; in rt5651_set_dai_pll()
1550 rt5651->pll_src = source; in rt5651_set_dai_pll()
1558 struct rt5651_priv *rt5651 = snd_soc_component_get_drvdata(component); in rt5651_set_bias_level() local
1563 if (!IS_ERR(rt5651->mclk)) in rt5651_set_bias_level()
1564 clk_prepare_enable(rt5651->mclk); in rt5651_set_bias_level()
1583 if (!IS_ERR(rt5651->mclk)) in rt5651_set_bias_level()
1584 clk_disable_unprepare(rt5651->mclk); in rt5651_set_bias_level()
1636 struct rt5651_priv *rt5651 = snd_soc_component_get_drvdata(component); in rt5651_enable_micbias1_ovcd_irq() local
1640 rt5651->ovcd_irq_enabled = true; in rt5651_enable_micbias1_ovcd_irq()
1645 struct rt5651_priv *rt5651 = snd_soc_component_get_drvdata(component); in rt5651_disable_micbias1_ovcd_irq() local
1649 rt5651->ovcd_irq_enabled = false; in rt5651_disable_micbias1_ovcd_irq()
1670 struct rt5651_priv *rt5651 = snd_soc_component_get_drvdata(component); in rt5651_jack_inserted() local
1673 if (rt5651->gpiod_hp_det) { in rt5651_jack_inserted()
1674 val = gpiod_get_value_cansleep(rt5651->gpiod_hp_det); in rt5651_jack_inserted()
1682 switch (rt5651->jd_src) { in rt5651_jack_inserted()
1696 if (rt5651->jd_active_high) in rt5651_jack_inserted()
1713 struct rt5651_priv *rt5651 = snd_soc_component_get_drvdata(component); in rt5651_start_button_press_work() local
1715 rt5651->poll_count = 0; in rt5651_start_button_press_work()
1716 rt5651->press_count = 0; in rt5651_start_button_press_work()
1717 rt5651->release_count = 0; in rt5651_start_button_press_work()
1718 rt5651->pressed = false; in rt5651_start_button_press_work()
1719 rt5651->press_reported = false; in rt5651_start_button_press_work()
1721 schedule_delayed_work(&rt5651->bp_work, msecs_to_jiffies(BP_POLL_TIME)); in rt5651_start_button_press_work()
1726 struct rt5651_priv *rt5651 = in rt5651_button_press_work() local
1728 struct snd_soc_component *component = rt5651->component; in rt5651_button_press_work()
1735 rt5651->release_count = 0; in rt5651_button_press_work()
1736 rt5651->press_count++; in rt5651_button_press_work()
1738 if (rt5651->press_count >= BP_THRESHOLD) in rt5651_button_press_work()
1739 rt5651->pressed = true; in rt5651_button_press_work()
1742 rt5651->press_count = 0; in rt5651_button_press_work()
1743 rt5651->release_count++; in rt5651_button_press_work()
1750 rt5651->poll_count++; in rt5651_button_press_work()
1751 if (rt5651->poll_count < (JACK_UNPLUG_TIME / BP_POLL_TIME)) { in rt5651_button_press_work()
1752 schedule_delayed_work(&rt5651->bp_work, in rt5651_button_press_work()
1757 if (rt5651->pressed && !rt5651->press_reported) { in rt5651_button_press_work()
1759 snd_soc_jack_report(rt5651->hp_jack, SND_JACK_BTN_0, in rt5651_button_press_work()
1761 rt5651->press_reported = true; in rt5651_button_press_work()
1764 if (rt5651->release_count >= BP_THRESHOLD) { in rt5651_button_press_work()
1765 if (rt5651->press_reported) { in rt5651_button_press_work()
1767 snd_soc_jack_report(rt5651->hp_jack, 0, SND_JACK_BTN_0); in rt5651_button_press_work()
1774 schedule_delayed_work(&rt5651->bp_work, msecs_to_jiffies(BP_POLL_TIME)); in rt5651_button_press_work()
1822 static bool rt5651_support_button_press(struct rt5651_priv *rt5651) in rt5651_support_button_press() argument
1824 if (!rt5651->hp_jack) in rt5651_support_button_press()
1828 return (rt5651->hp_jack->status & SND_JACK_MICROPHONE) && in rt5651_support_button_press()
1829 rt5651->gpiod_hp_det == NULL; in rt5651_support_button_press()
1834 struct rt5651_priv *rt5651 = in rt5651_jack_detect_work() local
1836 struct snd_soc_component *component = rt5651->component; in rt5651_jack_detect_work()
1841 if (rt5651->hp_jack->status & SND_JACK_HEADPHONE) { in rt5651_jack_detect_work()
1842 if (rt5651->hp_jack->status & SND_JACK_MICROPHONE) { in rt5651_jack_detect_work()
1843 cancel_delayed_work_sync(&rt5651->bp_work); in rt5651_jack_detect_work()
1847 snd_soc_jack_report(rt5651->hp_jack, 0, in rt5651_jack_detect_work()
1851 } else if (!(rt5651->hp_jack->status & SND_JACK_HEADPHONE)) { in rt5651_jack_detect_work()
1853 WARN_ON(rt5651->ovcd_irq_enabled); in rt5651_jack_detect_work()
1857 snd_soc_jack_report(rt5651->hp_jack, report, SND_JACK_HEADSET); in rt5651_jack_detect_work()
1858 if (rt5651_support_button_press(rt5651)) { in rt5651_jack_detect_work()
1865 } else if (rt5651->ovcd_irq_enabled && rt5651_micbias1_ovcd(component)) { in rt5651_jack_detect_work()
1886 queue_work(system_long_wq, &rt5651->jack_detect_work); in rt5651_jack_detect_work()
1892 struct rt5651_priv *rt5651 = data; in rt5651_irq() local
1894 queue_work(system_power_efficient_wq, &rt5651->jack_detect_work); in rt5651_irq()
1901 struct rt5651_priv *rt5651 = data; in rt5651_cancel_work() local
1903 cancel_work_sync(&rt5651->jack_detect_work); in rt5651_cancel_work()
1904 cancel_delayed_work_sync(&rt5651->bp_work); in rt5651_cancel_work()
1911 struct rt5651_priv *rt5651 = snd_soc_component_get_drvdata(component); in rt5651_enable_jack_detect() local
1915 switch (rt5651->jd_src) { in rt5651_enable_jack_detect()
1917 rt5651->gpiod_hp_det = gpiod_hp_det; in rt5651_enable_jack_detect()
1918 if (!rt5651->gpiod_hp_det) in rt5651_enable_jack_detect()
1926 if (rt5651->jd_active_high) in rt5651_enable_jack_detect()
1941 if (rt5651->jd_active_high) in rt5651_enable_jack_detect()
1956 if (rt5651->jd_active_high) in rt5651_enable_jack_detect()
1984 0xa800 | rt5651->ovcd_sf); in rt5651_enable_jack_detect()
1992 rt5651->ovcd_th | in rt5651_enable_jack_detect()
2008 rt5651->hp_jack = hp_jack; in rt5651_enable_jack_detect()
2009 if (rt5651_support_button_press(rt5651)) { in rt5651_enable_jack_detect()
2014 enable_irq(rt5651->irq); in rt5651_enable_jack_detect()
2016 queue_work(system_power_efficient_wq, &rt5651->jack_detect_work); in rt5651_enable_jack_detect()
2021 struct rt5651_priv *rt5651 = snd_soc_component_get_drvdata(component); in rt5651_disable_jack_detect() local
2023 disable_irq(rt5651->irq); in rt5651_disable_jack_detect()
2024 rt5651_cancel_work(rt5651); in rt5651_disable_jack_detect()
2026 if (rt5651_support_button_press(rt5651)) { in rt5651_disable_jack_detect()
2029 snd_soc_jack_report(rt5651->hp_jack, 0, SND_JACK_BTN_0); in rt5651_disable_jack_detect()
2032 rt5651->hp_jack = NULL; in rt5651_disable_jack_detect()
2055 struct rt5651_priv *rt5651 = snd_soc_component_get_drvdata(component); in rt5651_apply_properties() local
2068 rt5651->jd_src = val; in rt5651_apply_properties()
2071 rt5651->jd_active_high = true; in rt5651_apply_properties()
2078 rt5651->ovcd_th = RT5651_MIC1_OVTH_2000UA; in rt5651_apply_properties()
2079 rt5651->ovcd_sf = RT5651_MIC_OVCD_SF_0P75; in rt5651_apply_properties()
2085 rt5651->ovcd_th = RT5651_MIC1_OVTH_600UA; in rt5651_apply_properties()
2088 rt5651->ovcd_th = RT5651_MIC1_OVTH_1500UA; in rt5651_apply_properties()
2091 rt5651->ovcd_th = RT5651_MIC1_OVTH_2000UA; in rt5651_apply_properties()
2102 rt5651->ovcd_sf = val << RT5651_MIC_OVCD_SF_SFT; in rt5651_apply_properties()
2111 struct rt5651_priv *rt5651 = snd_soc_component_get_drvdata(component); in rt5651_probe() local
2113 rt5651->component = component; in rt5651_probe()
2115 rt5651->mclk = devm_clk_get(component->dev, "mclk"); in rt5651_probe()
2116 if (PTR_ERR(rt5651->mclk) == -EPROBE_DEFER) in rt5651_probe()
2129 static void rt5651_enable_spk(struct rt5651_priv *rt5651, bool enable) in rt5651_enable_spk() argument
2131 if (!rt5651 || !rt5651->gpiod_spk_ctl) in rt5651_enable_spk()
2133 gpiod_set_value(rt5651->gpiod_spk_ctl, enable); in rt5651_enable_spk()
2139 struct rt5651_priv *rt5651 = snd_soc_component_get_drvdata(component); in rt5651_mute() local
2142 rt5651_enable_spk(rt5651, false); in rt5651_mute()
2144 rt5651_enable_spk(rt5651, true); in rt5651_mute()
2151 struct rt5651_priv *rt5651 = snd_soc_component_get_drvdata(component); in rt5651_suspend() local
2153 regcache_cache_only(rt5651->regmap, true); in rt5651_suspend()
2154 regcache_mark_dirty(rt5651->regmap); in rt5651_suspend()
2160 struct rt5651_priv *rt5651 = snd_soc_component_get_drvdata(component); in rt5651_resume() local
2162 regcache_cache_only(rt5651->regmap, false); in rt5651_resume()
2291 struct rt5651_priv *rt5651; in rt5651_i2c_probe() local
2295 rt5651 = devm_kzalloc(&i2c->dev, sizeof(*rt5651), in rt5651_i2c_probe()
2297 if (NULL == rt5651) in rt5651_i2c_probe()
2300 i2c_set_clientdata(i2c, rt5651); in rt5651_i2c_probe()
2302 rt5651->regmap = devm_regmap_init_i2c(i2c, &rt5651_regmap); in rt5651_i2c_probe()
2303 if (IS_ERR(rt5651->regmap)) { in rt5651_i2c_probe()
2304 ret = PTR_ERR(rt5651->regmap); in rt5651_i2c_probe()
2310 err = regmap_read(rt5651->regmap, RT5651_DEVICE_ID, &ret); in rt5651_i2c_probe()
2320 regmap_write(rt5651->regmap, RT5651_RESET, 0); in rt5651_i2c_probe()
2322 ret = regmap_register_patch(rt5651->regmap, init_list, in rt5651_i2c_probe()
2327 rt5651->irq = i2c->irq; in rt5651_i2c_probe()
2328 rt5651->hp_mute = true; in rt5651_i2c_probe()
2330 INIT_DELAYED_WORK(&rt5651->bp_work, rt5651_button_press_work); in rt5651_i2c_probe()
2331 INIT_WORK(&rt5651->jack_detect_work, rt5651_jack_detect_work); in rt5651_i2c_probe()
2334 ret = devm_add_action_or_reset(&i2c->dev, rt5651_cancel_work, rt5651); in rt5651_i2c_probe()
2338 ret = devm_request_irq(&i2c->dev, rt5651->irq, rt5651_irq, in rt5651_i2c_probe()
2340 | IRQF_ONESHOT, "rt5651", rt5651); in rt5651_i2c_probe()
2343 disable_irq(rt5651->irq); in rt5651_i2c_probe()
2346 rt5651->irq, ret); in rt5651_i2c_probe()
2347 rt5651->irq = -ENXIO; in rt5651_i2c_probe()
2349 rt5651->gpiod_spk_ctl = devm_gpiod_get(&i2c->dev, in rt5651_i2c_probe()
2352 if (IS_ERR(rt5651->gpiod_spk_ctl)) { in rt5651_i2c_probe()
2353 ret = IS_ERR(rt5651->gpiod_spk_ctl); in rt5651_i2c_probe()
2354 rt5651->gpiod_spk_ctl = NULL; in rt5651_i2c_probe()