Lines Matching refs:rt5640

463 	struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component);  in set_dmic_clk()  local
466 rate = rt5640->sysclk / rl6231_get_pre_div(rt5640->regmap, in set_dmic_clk()
481 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component); in is_using_asrc() local
483 if (!rt5640->asrc_en) in is_using_asrc()
919 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component); in hp_amp_power_on() local
922 regmap_update_bits(rt5640->regmap, RT5640_PR_BASE + in hp_amp_power_on()
924 regmap_update_bits(rt5640->regmap, RT5640_DEPOP_M2, in hp_amp_power_on()
926 regmap_update_bits(rt5640->regmap, RT5640_DEPOP_M1, in hp_amp_power_on()
929 regmap_write(rt5640->regmap, RT5640_PR_BASE + RT5640_HP_DCC_INT1, in hp_amp_power_on()
932 regmap_update_bits(rt5640->regmap, RT5640_PWR_ANLG1, in hp_amp_power_on()
934 regmap_update_bits(rt5640->regmap, RT5640_PWR_ANLG1, in hp_amp_power_on()
938 regmap_update_bits(rt5640->regmap, RT5640_PWR_ANLG1, in hp_amp_power_on()
945 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component); in rt5640_pmu_depop() local
947 regmap_update_bits(rt5640->regmap, RT5640_DEPOP_M2, in rt5640_pmu_depop()
950 regmap_update_bits(rt5640->regmap, RT5640_CHARGE_PUMP, in rt5640_pmu_depop()
953 regmap_update_bits(rt5640->regmap, RT5640_DEPOP_M3, in rt5640_pmu_depop()
959 regmap_write(rt5640->regmap, RT5640_PR_BASE + in rt5640_pmu_depop()
961 regmap_update_bits(rt5640->regmap, RT5640_DEPOP_M1, in rt5640_pmu_depop()
964 regmap_update_bits(rt5640->regmap, RT5640_PR_BASE + in rt5640_pmu_depop()
972 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component); in rt5640_hp_event() local
977 rt5640->hp_mute = false; in rt5640_hp_event()
981 rt5640->hp_mute = true; in rt5640_hp_event()
1041 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component); in rt5640_hp_post_event() local
1045 if (!rt5640->hp_mute) in rt5640_hp_post_event()
1703 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component); in rt5640_hw_params() local
1707 rt5640->lrck[dai->id] = params_rate(params); in rt5640_hw_params()
1708 pre_div = rl6231_get_clk_info(rt5640->sysclk, rt5640->lrck[dai->id]); in rt5640_hw_params()
1711 rt5640->lrck[dai->id], dai->id); in rt5640_hw_params()
1723 rt5640->bclk[dai->id] = rt5640->lrck[dai->id] * (32 << bclk_ms); in rt5640_hw_params()
1726 rt5640->bclk[dai->id], rt5640->lrck[dai->id]); in rt5640_hw_params()
1774 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component); in rt5640_set_dai_fmt() local
1780 rt5640->master[dai->id] = 1; in rt5640_set_dai_fmt()
1784 rt5640->master[dai->id] = 0; in rt5640_set_dai_fmt()
1839 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component); in rt5640_set_dai_sysclk() local
1843 if (freq == rt5640->sysclk && clk_id == rt5640->sysclk_src) in rt5640_set_dai_sysclk()
1865 rt5640->sysclk = freq; in rt5640_set_dai_sysclk()
1866 rt5640->sysclk_src = clk_id; in rt5640_set_dai_sysclk()
1876 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component); in rt5640_set_dai_pll() local
1880 if (source == rt5640->pll_src && freq_in == rt5640->pll_in && in rt5640_set_dai_pll()
1881 freq_out == rt5640->pll_out) in rt5640_set_dai_pll()
1887 rt5640->pll_in = 0; in rt5640_set_dai_pll()
1888 rt5640->pll_out = 0; in rt5640_set_dai_pll()
1928 rt5640->pll_in = freq_in; in rt5640_set_dai_pll()
1929 rt5640->pll_out = freq_out; in rt5640_set_dai_pll()
1930 rt5640->pll_src = source; in rt5640_set_dai_pll()
1938 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component); in rt5640_set_bias_level() local
1953 if (IS_ERR(rt5640->mclk)) in rt5640_set_bias_level()
1957 clk_disable_unprepare(rt5640->mclk); in rt5640_set_bias_level()
1959 ret = clk_prepare_enable(rt5640->mclk); in rt5640_set_bias_level()
2005 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component); in rt5640_dmic_enable() local
2007 regmap_update_bits(rt5640->regmap, RT5640_GPIO_CTRL1, in rt5640_dmic_enable()
2011 regmap_update_bits(rt5640->regmap, RT5640_DMIC, in rt5640_dmic_enable()
2013 regmap_update_bits(rt5640->regmap, RT5640_GPIO_CTRL1, in rt5640_dmic_enable()
2018 regmap_update_bits(rt5640->regmap, RT5640_DMIC, in rt5640_dmic_enable()
2020 regmap_update_bits(rt5640->regmap, RT5640_GPIO_CTRL1, in rt5640_dmic_enable()
2031 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component); in rt5640_sel_asrc_clk_src() local
2087 rt5640->asrc_en = true; in rt5640_sel_asrc_clk_src()
2090 rt5640->asrc_en = false; in rt5640_sel_asrc_clk_src()
2125 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component); in rt5640_enable_micbias1_ovcd_irq() local
2129 rt5640->ovcd_irq_enabled = true; in rt5640_enable_micbias1_ovcd_irq()
2134 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component); in rt5640_disable_micbias1_ovcd_irq() local
2138 rt5640->ovcd_irq_enabled = false; in rt5640_disable_micbias1_ovcd_irq()
2159 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component); in rt5640_jack_inserted() local
2165 if (rt5640->jd_inverted) in rt5640_jack_inserted()
2182 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component); in rt5640_start_button_press_work() local
2184 rt5640->poll_count = 0; in rt5640_start_button_press_work()
2185 rt5640->press_count = 0; in rt5640_start_button_press_work()
2186 rt5640->release_count = 0; in rt5640_start_button_press_work()
2187 rt5640->pressed = false; in rt5640_start_button_press_work()
2188 rt5640->press_reported = false; in rt5640_start_button_press_work()
2190 schedule_delayed_work(&rt5640->bp_work, msecs_to_jiffies(BP_POLL_TIME)); in rt5640_start_button_press_work()
2195 struct rt5640_priv *rt5640 = in rt5640_button_press_work() local
2197 struct snd_soc_component *component = rt5640->component; in rt5640_button_press_work()
2204 rt5640->release_count = 0; in rt5640_button_press_work()
2205 rt5640->press_count++; in rt5640_button_press_work()
2207 if (rt5640->press_count >= BP_THRESHOLD) in rt5640_button_press_work()
2208 rt5640->pressed = true; in rt5640_button_press_work()
2211 rt5640->press_count = 0; in rt5640_button_press_work()
2212 rt5640->release_count++; in rt5640_button_press_work()
2219 rt5640->poll_count++; in rt5640_button_press_work()
2220 if (rt5640->poll_count < (JACK_UNPLUG_TIME / BP_POLL_TIME)) { in rt5640_button_press_work()
2221 schedule_delayed_work(&rt5640->bp_work, in rt5640_button_press_work()
2226 if (rt5640->pressed && !rt5640->press_reported) { in rt5640_button_press_work()
2228 snd_soc_jack_report(rt5640->jack, SND_JACK_BTN_0, in rt5640_button_press_work()
2230 rt5640->press_reported = true; in rt5640_button_press_work()
2233 if (rt5640->release_count >= BP_THRESHOLD) { in rt5640_button_press_work()
2234 if (rt5640->press_reported) { in rt5640_button_press_work()
2236 snd_soc_jack_report(rt5640->jack, 0, SND_JACK_BTN_0); in rt5640_button_press_work()
2243 schedule_delayed_work(&rt5640->bp_work, msecs_to_jiffies(BP_POLL_TIME)); in rt5640_button_press_work()
2293 struct rt5640_priv *rt5640 = in rt5640_jack_work() local
2295 struct snd_soc_component *component = rt5640->component; in rt5640_jack_work()
2300 if (rt5640->jack->status & SND_JACK_HEADPHONE) { in rt5640_jack_work()
2301 if (rt5640->jack->status & SND_JACK_MICROPHONE) { in rt5640_jack_work()
2302 cancel_delayed_work_sync(&rt5640->bp_work); in rt5640_jack_work()
2306 snd_soc_jack_report(rt5640->jack, 0, in rt5640_jack_work()
2310 } else if (!(rt5640->jack->status & SND_JACK_HEADPHONE)) { in rt5640_jack_work()
2312 WARN_ON(rt5640->ovcd_irq_enabled); in rt5640_jack_work()
2323 snd_soc_jack_report(rt5640->jack, status, SND_JACK_HEADSET); in rt5640_jack_work()
2324 } else if (rt5640->ovcd_irq_enabled && rt5640_micbias1_ovcd(component)) { in rt5640_jack_work()
2345 queue_work(system_long_wq, &rt5640->jack_work); in rt5640_jack_work()
2351 struct rt5640_priv *rt5640 = data; in rt5640_irq() local
2353 if (rt5640->jack) in rt5640_irq()
2354 queue_work(system_long_wq, &rt5640->jack_work); in rt5640_irq()
2361 struct rt5640_priv *rt5640 = data; in rt5640_cancel_work() local
2363 cancel_work_sync(&rt5640->jack_work); in rt5640_cancel_work()
2364 cancel_delayed_work_sync(&rt5640->bp_work); in rt5640_cancel_work()
2370 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component); in rt5640_enable_jack_detect() local
2374 RT5640_JD_MASK, rt5640->jd_src); in rt5640_enable_jack_detect()
2391 0xa800 | rt5640->ovcd_sf); in rt5640_enable_jack_detect()
2395 rt5640->ovcd_th | RT5640_MIC1_OVCD_EN); in rt5640_enable_jack_detect()
2415 if (rt5640->jd_inverted) in rt5640_enable_jack_detect()
2422 rt5640->jack = jack; in rt5640_enable_jack_detect()
2423 if (rt5640->jack->status & SND_JACK_MICROPHONE) { in rt5640_enable_jack_detect()
2428 enable_irq(rt5640->irq); in rt5640_enable_jack_detect()
2430 queue_work(system_long_wq, &rt5640->jack_work); in rt5640_enable_jack_detect()
2435 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component); in rt5640_disable_jack_detect() local
2441 if (!rt5640->jack) in rt5640_disable_jack_detect()
2444 disable_irq(rt5640->irq); in rt5640_disable_jack_detect()
2445 rt5640_cancel_work(rt5640); in rt5640_disable_jack_detect()
2447 if (rt5640->jack->status & SND_JACK_MICROPHONE) { in rt5640_disable_jack_detect()
2450 snd_soc_jack_report(rt5640->jack, 0, SND_JACK_BTN_0); in rt5640_disable_jack_detect()
2453 rt5640->jack = NULL; in rt5640_disable_jack_detect()
2470 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component); in rt5640_probe() local
2477 rt5640->mclk = devm_clk_get(component->dev, "mclk"); in rt5640_probe()
2478 if (PTR_ERR(rt5640->mclk) == -EPROBE_DEFER) in rt5640_probe()
2481 rt5640->component = component; in rt5640_probe()
2553 rt5640->jd_src = val << RT5640_JD_SFT; in rt5640_probe()
2560 rt5640->jd_inverted = true; in rt5640_probe()
2567 rt5640->ovcd_th = RT5640_MIC1_OVTH_2000UA; in rt5640_probe()
2568 rt5640->ovcd_sf = RT5640_MIC_OVCD_SF_0P75; in rt5640_probe()
2574 rt5640->ovcd_th = RT5640_MIC1_OVTH_600UA; in rt5640_probe()
2577 rt5640->ovcd_th = RT5640_MIC1_OVTH_1500UA; in rt5640_probe()
2580 rt5640->ovcd_th = RT5640_MIC1_OVTH_2000UA; in rt5640_probe()
2591 rt5640->ovcd_sf = val << RT5640_MIC_OVCD_SF_SFT; in rt5640_probe()
2608 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component); in rt5640_suspend() local
2612 regcache_cache_only(rt5640->regmap, true); in rt5640_suspend()
2613 regcache_mark_dirty(rt5640->regmap); in rt5640_suspend()
2614 if (gpio_is_valid(rt5640->ldo1_en)) in rt5640_suspend()
2615 gpio_set_value_cansleep(rt5640->ldo1_en, 0); in rt5640_suspend()
2622 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component); in rt5640_resume() local
2624 if (gpio_is_valid(rt5640->ldo1_en)) { in rt5640_resume()
2625 gpio_set_value_cansleep(rt5640->ldo1_en, 1); in rt5640_resume()
2629 regcache_cache_only(rt5640->regmap, false); in rt5640_resume()
2630 regcache_sync(rt5640->regmap); in rt5640_resume()
2757 static int rt5640_parse_dt(struct rt5640_priv *rt5640, struct device_node *np) in rt5640_parse_dt() argument
2759 rt5640->ldo1_en = of_get_named_gpio(np, "realtek,ldo1-en-gpios", 0); in rt5640_parse_dt()
2766 if (!gpio_is_valid(rt5640->ldo1_en) && in rt5640_parse_dt()
2767 (rt5640->ldo1_en != -ENOENT)) in rt5640_parse_dt()
2768 return rt5640->ldo1_en; in rt5640_parse_dt()
2776 struct rt5640_priv *rt5640; in rt5640_i2c_probe() local
2780 rt5640 = devm_kzalloc(&i2c->dev, in rt5640_i2c_probe()
2783 if (NULL == rt5640) in rt5640_i2c_probe()
2785 i2c_set_clientdata(i2c, rt5640); in rt5640_i2c_probe()
2788 ret = rt5640_parse_dt(rt5640, i2c->dev.of_node); in rt5640_i2c_probe()
2792 rt5640->ldo1_en = -EINVAL; in rt5640_i2c_probe()
2794 rt5640->regmap = devm_regmap_init_i2c(i2c, &rt5640_regmap); in rt5640_i2c_probe()
2795 if (IS_ERR(rt5640->regmap)) { in rt5640_i2c_probe()
2796 ret = PTR_ERR(rt5640->regmap); in rt5640_i2c_probe()
2802 if (gpio_is_valid(rt5640->ldo1_en)) { in rt5640_i2c_probe()
2803 ret = devm_gpio_request_one(&i2c->dev, rt5640->ldo1_en, in rt5640_i2c_probe()
2808 rt5640->ldo1_en, ret); in rt5640_i2c_probe()
2814 regmap_read(rt5640->regmap, RT5640_VENDOR_ID2, &val); in rt5640_i2c_probe()
2821 regmap_write(rt5640->regmap, RT5640_RESET, 0); in rt5640_i2c_probe()
2823 ret = regmap_register_patch(rt5640->regmap, init_list, in rt5640_i2c_probe()
2828 regmap_update_bits(rt5640->regmap, RT5640_DUMMY1, in rt5640_i2c_probe()
2831 rt5640->hp_mute = true; in rt5640_i2c_probe()
2832 rt5640->irq = i2c->irq; in rt5640_i2c_probe()
2833 INIT_DELAYED_WORK(&rt5640->bp_work, rt5640_button_press_work); in rt5640_i2c_probe()
2834 INIT_WORK(&rt5640->jack_work, rt5640_jack_work); in rt5640_i2c_probe()
2837 ret = devm_add_action_or_reset(&i2c->dev, rt5640_cancel_work, rt5640); in rt5640_i2c_probe()
2841 ret = devm_request_irq(&i2c->dev, rt5640->irq, rt5640_irq, in rt5640_i2c_probe()
2843 | IRQF_ONESHOT, "rt5640", rt5640); in rt5640_i2c_probe()
2846 disable_irq(rt5640->irq); in rt5640_i2c_probe()
2849 rt5640->irq, ret); in rt5640_i2c_probe()
2850 rt5640->irq = -ENXIO; in rt5640_i2c_probe()