Lines Matching refs:rt5640

462 	struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component);  in set_dmic_clk()  local
465 rate = rt5640->sysclk / rl6231_get_pre_div(rt5640->regmap, in set_dmic_clk()
480 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component); in is_using_asrc() local
482 if (!rt5640->asrc_en) in is_using_asrc()
918 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component); in hp_amp_power_on() local
921 regmap_update_bits(rt5640->regmap, RT5640_PR_BASE + in hp_amp_power_on()
923 regmap_update_bits(rt5640->regmap, RT5640_DEPOP_M2, in hp_amp_power_on()
925 regmap_update_bits(rt5640->regmap, RT5640_DEPOP_M1, in hp_amp_power_on()
928 regmap_write(rt5640->regmap, RT5640_PR_BASE + RT5640_HP_DCC_INT1, in hp_amp_power_on()
931 regmap_update_bits(rt5640->regmap, RT5640_PWR_ANLG1, in hp_amp_power_on()
933 regmap_update_bits(rt5640->regmap, RT5640_PWR_ANLG1, in hp_amp_power_on()
937 regmap_update_bits(rt5640->regmap, RT5640_PWR_ANLG1, in hp_amp_power_on()
944 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component); in rt5640_pmu_depop() local
946 regmap_update_bits(rt5640->regmap, RT5640_DEPOP_M2, in rt5640_pmu_depop()
949 regmap_update_bits(rt5640->regmap, RT5640_CHARGE_PUMP, in rt5640_pmu_depop()
952 regmap_update_bits(rt5640->regmap, RT5640_DEPOP_M3, in rt5640_pmu_depop()
958 regmap_write(rt5640->regmap, RT5640_PR_BASE + in rt5640_pmu_depop()
960 regmap_update_bits(rt5640->regmap, RT5640_DEPOP_M1, in rt5640_pmu_depop()
963 regmap_update_bits(rt5640->regmap, RT5640_PR_BASE + in rt5640_pmu_depop()
971 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component); in rt5640_hp_event() local
976 rt5640->hp_mute = false; in rt5640_hp_event()
980 rt5640->hp_mute = true; in rt5640_hp_event()
1040 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component); in rt5640_hp_post_event() local
1044 if (!rt5640->hp_mute) in rt5640_hp_post_event()
1700 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component); in rt5640_hw_params() local
1704 rt5640->lrck[dai->id] = params_rate(params); in rt5640_hw_params()
1705 pre_div = rl6231_get_clk_info(rt5640->sysclk, rt5640->lrck[dai->id]); in rt5640_hw_params()
1708 rt5640->lrck[dai->id], dai->id); in rt5640_hw_params()
1720 rt5640->bclk[dai->id] = rt5640->lrck[dai->id] * (32 << bclk_ms); in rt5640_hw_params()
1723 rt5640->bclk[dai->id], rt5640->lrck[dai->id]); in rt5640_hw_params()
1771 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component); in rt5640_set_dai_fmt() local
1777 rt5640->master[dai->id] = 1; in rt5640_set_dai_fmt()
1781 rt5640->master[dai->id] = 0; in rt5640_set_dai_fmt()
1836 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component); in rt5640_set_dai_sysclk() local
1843 ret = clk_set_rate(rt5640->mclk, freq); in rt5640_set_dai_sysclk()
1864 rt5640->sysclk = freq; in rt5640_set_dai_sysclk()
1865 rt5640->sysclk_src = clk_id; in rt5640_set_dai_sysclk()
1875 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component); in rt5640_set_dai_pll() local
1879 if (source == rt5640->pll_src && freq_in == rt5640->pll_in && in rt5640_set_dai_pll()
1880 freq_out == rt5640->pll_out) in rt5640_set_dai_pll()
1886 rt5640->pll_in = 0; in rt5640_set_dai_pll()
1887 rt5640->pll_out = 0; in rt5640_set_dai_pll()
1927 rt5640->pll_in = freq_in; in rt5640_set_dai_pll()
1928 rt5640->pll_out = freq_out; in rt5640_set_dai_pll()
1929 rt5640->pll_src = source; in rt5640_set_dai_pll()
1937 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component); in rt5640_set_bias_level() local
1952 if (IS_ERR(rt5640->mclk)) in rt5640_set_bias_level()
1956 clk_disable_unprepare(rt5640->mclk); in rt5640_set_bias_level()
1958 ret = clk_prepare_enable(rt5640->mclk); in rt5640_set_bias_level()
1990 if (rt5640->jd_src == RT5640_JD_SRC_HDA_HEADER) in rt5640_set_bias_level()
2009 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component); in rt5640_dmic_enable() local
2011 regmap_update_bits(rt5640->regmap, RT5640_GPIO_CTRL1, in rt5640_dmic_enable()
2015 regmap_update_bits(rt5640->regmap, RT5640_DMIC, in rt5640_dmic_enable()
2017 regmap_update_bits(rt5640->regmap, RT5640_GPIO_CTRL1, in rt5640_dmic_enable()
2022 regmap_update_bits(rt5640->regmap, RT5640_DMIC, in rt5640_dmic_enable()
2024 regmap_update_bits(rt5640->regmap, RT5640_GPIO_CTRL1, in rt5640_dmic_enable()
2035 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component); in rt5640_sel_asrc_clk_src() local
2091 rt5640->asrc_en = true; in rt5640_sel_asrc_clk_src()
2094 rt5640->asrc_en = false; in rt5640_sel_asrc_clk_src()
2105 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component); in rt5640_enable_micbias1_for_ovcd() local
2111 if (rt5640->use_platform_clock) in rt5640_enable_micbias1_for_ovcd()
2121 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component); in rt5640_disable_micbias1_for_ovcd() local
2124 if (rt5640->use_platform_clock) in rt5640_disable_micbias1_for_ovcd()
2135 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component); in rt5640_enable_micbias1_ovcd_irq() local
2139 rt5640->ovcd_irq_enabled = true; in rt5640_enable_micbias1_ovcd_irq()
2144 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component); in rt5640_disable_micbias1_ovcd_irq() local
2148 rt5640->ovcd_irq_enabled = false; in rt5640_disable_micbias1_ovcd_irq()
2169 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component); in rt5640_jack_inserted() local
2172 if (rt5640->jd_gpio) in rt5640_jack_inserted()
2173 val = gpiod_get_value(rt5640->jd_gpio) ? RT5640_JD_STATUS : 0; in rt5640_jack_inserted()
2179 if (rt5640->jd_inverted) in rt5640_jack_inserted()
2196 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component); in rt5640_start_button_press_work() local
2198 rt5640->poll_count = 0; in rt5640_start_button_press_work()
2199 rt5640->press_count = 0; in rt5640_start_button_press_work()
2200 rt5640->release_count = 0; in rt5640_start_button_press_work()
2201 rt5640->pressed = false; in rt5640_start_button_press_work()
2202 rt5640->press_reported = false; in rt5640_start_button_press_work()
2204 schedule_delayed_work(&rt5640->bp_work, msecs_to_jiffies(BP_POLL_TIME)); in rt5640_start_button_press_work()
2209 struct rt5640_priv *rt5640 = in rt5640_button_press_work() local
2211 struct snd_soc_component *component = rt5640->component; in rt5640_button_press_work()
2218 rt5640->release_count = 0; in rt5640_button_press_work()
2219 rt5640->press_count++; in rt5640_button_press_work()
2221 if (rt5640->press_count >= BP_THRESHOLD) in rt5640_button_press_work()
2222 rt5640->pressed = true; in rt5640_button_press_work()
2225 rt5640->press_count = 0; in rt5640_button_press_work()
2226 rt5640->release_count++; in rt5640_button_press_work()
2233 rt5640->poll_count++; in rt5640_button_press_work()
2234 if (rt5640->poll_count < (JACK_UNPLUG_TIME / BP_POLL_TIME)) { in rt5640_button_press_work()
2235 schedule_delayed_work(&rt5640->bp_work, in rt5640_button_press_work()
2240 if (rt5640->pressed && !rt5640->press_reported) { in rt5640_button_press_work()
2242 snd_soc_jack_report(rt5640->jack, SND_JACK_BTN_0, in rt5640_button_press_work()
2244 rt5640->press_reported = true; in rt5640_button_press_work()
2247 if (rt5640->release_count >= BP_THRESHOLD) { in rt5640_button_press_work()
2248 if (rt5640->press_reported) { in rt5640_button_press_work()
2250 snd_soc_jack_report(rt5640->jack, 0, SND_JACK_BTN_0); in rt5640_button_press_work()
2257 schedule_delayed_work(&rt5640->bp_work, msecs_to_jiffies(BP_POLL_TIME)); in rt5640_button_press_work()
2313 struct rt5640_priv *rt5640 = in rt5640_jack_work() local
2315 struct snd_soc_component *component = rt5640->component; in rt5640_jack_work()
2318 if (rt5640->jd_src == RT5640_JD_SRC_HDA_HEADER) { in rt5640_jack_work()
2345 snd_soc_jack_report(rt5640->jack, jack_type, SND_JACK_HEADSET); in rt5640_jack_work()
2352 if (rt5640->jack->status & SND_JACK_HEADPHONE) { in rt5640_jack_work()
2353 if (rt5640->jack->status & SND_JACK_MICROPHONE) { in rt5640_jack_work()
2354 cancel_delayed_work_sync(&rt5640->bp_work); in rt5640_jack_work()
2358 snd_soc_jack_report(rt5640->jack, 0, in rt5640_jack_work()
2362 } else if (!(rt5640->jack->status & SND_JACK_HEADPHONE)) { in rt5640_jack_work()
2364 WARN_ON(rt5640->ovcd_irq_enabled); in rt5640_jack_work()
2375 snd_soc_jack_report(rt5640->jack, status, SND_JACK_HEADSET); in rt5640_jack_work()
2376 } else if (rt5640->ovcd_irq_enabled && rt5640_micbias1_ovcd(component)) { in rt5640_jack_work()
2397 queue_delayed_work(system_long_wq, &rt5640->jack_work, 0); in rt5640_jack_work()
2403 struct rt5640_priv *rt5640 = data; in rt5640_irq() local
2406 if (rt5640->jd_src == RT5640_JD_SRC_HDA_HEADER) in rt5640_irq()
2409 if (rt5640->jack) in rt5640_irq()
2410 mod_delayed_work(system_long_wq, &rt5640->jack_work, delay); in rt5640_irq()
2417 struct rt5640_priv *rt5640 = data; in rt5640_jd_gpio_irq() local
2419 queue_delayed_work(system_long_wq, &rt5640->jack_work, in rt5640_jd_gpio_irq()
2427 struct rt5640_priv *rt5640 = data; in rt5640_cancel_work() local
2429 cancel_delayed_work_sync(&rt5640->jack_work); in rt5640_cancel_work()
2430 cancel_delayed_work_sync(&rt5640->bp_work); in rt5640_cancel_work()
2435 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component); in rt5640_set_ovcd_params() local
2438 0xa800 | rt5640->ovcd_sf); in rt5640_set_ovcd_params()
2442 rt5640->ovcd_th | RT5640_MIC1_OVCD_EN); in rt5640_set_ovcd_params()
2460 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component); in rt5640_disable_jack_detect() local
2466 if (!rt5640->jack) in rt5640_disable_jack_detect()
2469 if (rt5640->jd_gpio_irq_requested) in rt5640_disable_jack_detect()
2470 free_irq(rt5640->jd_gpio_irq, rt5640); in rt5640_disable_jack_detect()
2472 if (rt5640->irq_requested) in rt5640_disable_jack_detect()
2473 free_irq(rt5640->irq, rt5640); in rt5640_disable_jack_detect()
2475 rt5640_cancel_work(rt5640); in rt5640_disable_jack_detect()
2477 if (rt5640->jack->status & SND_JACK_MICROPHONE) { in rt5640_disable_jack_detect()
2480 snd_soc_jack_report(rt5640->jack, 0, SND_JACK_BTN_0); in rt5640_disable_jack_detect()
2483 rt5640->jd_gpio_irq_requested = false; in rt5640_disable_jack_detect()
2484 rt5640->irq_requested = false; in rt5640_disable_jack_detect()
2485 rt5640->jd_gpio = NULL; in rt5640_disable_jack_detect()
2486 rt5640->jack = NULL; in rt5640_disable_jack_detect()
2493 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component); in rt5640_enable_jack_detect() local
2498 RT5640_JD_MASK, rt5640->jd_src << RT5640_JD_SFT); in rt5640_enable_jack_detect()
2518 if (rt5640->jd_inverted) { in rt5640_enable_jack_detect()
2519 if (rt5640->jd_src == RT5640_JD_SRC_JD1_IN4P) in rt5640_enable_jack_detect()
2522 else if (rt5640->jd_src == RT5640_JD_SRC_JD2_IN4N) in rt5640_enable_jack_detect()
2527 if (rt5640->jd_src == RT5640_JD_SRC_JD1_IN4P) in rt5640_enable_jack_detect()
2530 else if (rt5640->jd_src == RT5640_JD_SRC_JD2_IN4N) in rt5640_enable_jack_detect()
2538 rt5640->jack = jack; in rt5640_enable_jack_detect()
2539 if (rt5640->jack->status & SND_JACK_MICROPHONE) { in rt5640_enable_jack_detect()
2545 rt5640->irq = jack_data->codec_irq_override; in rt5640_enable_jack_detect()
2548 rt5640->jd_gpio = jack_data->jd_gpio; in rt5640_enable_jack_detect()
2549 rt5640->jd_gpio_irq = gpiod_to_irq(rt5640->jd_gpio); in rt5640_enable_jack_detect()
2551 ret = request_irq(rt5640->jd_gpio_irq, rt5640_jd_gpio_irq, in rt5640_enable_jack_detect()
2553 "rt5640-jd-gpio", rt5640); in rt5640_enable_jack_detect()
2556 rt5640->jd_gpio_irq, ret); in rt5640_enable_jack_detect()
2560 rt5640->jd_gpio_irq_requested = true; in rt5640_enable_jack_detect()
2564 rt5640->use_platform_clock = jack_data->use_platform_clock; in rt5640_enable_jack_detect()
2566 ret = request_irq(rt5640->irq, rt5640_irq, in rt5640_enable_jack_detect()
2568 "rt5640", rt5640); in rt5640_enable_jack_detect()
2570 dev_warn(component->dev, "Failed to request IRQ %d: %d\n", rt5640->irq, ret); in rt5640_enable_jack_detect()
2574 rt5640->irq_requested = true; in rt5640_enable_jack_detect()
2577 queue_delayed_work(system_long_wq, &rt5640->jack_work, 0); in rt5640_enable_jack_detect()
2589 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component); in rt5640_enable_hda_jack_detect() local
2619 rt5640->jack = jack; in rt5640_enable_hda_jack_detect()
2621 ret = request_irq(rt5640->irq, rt5640_irq, in rt5640_enable_hda_jack_detect()
2622 IRQF_TRIGGER_RISING | IRQF_ONESHOT, "rt5640", rt5640); in rt5640_enable_hda_jack_detect()
2624 dev_warn(component->dev, "Failed to request IRQ %d: %d\n", rt5640->irq, ret); in rt5640_enable_hda_jack_detect()
2625 rt5640->jack = NULL; in rt5640_enable_hda_jack_detect()
2628 rt5640->irq_requested = true; in rt5640_enable_hda_jack_detect()
2631 queue_delayed_work(system_long_wq, &rt5640->jack_work, 0); in rt5640_enable_hda_jack_detect()
2640 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component); in rt5640_set_jack() local
2643 if (rt5640->jd_src == RT5640_JD_SRC_HDA_HEADER) in rt5640_set_jack()
2657 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component); in rt5640_probe() local
2664 rt5640->mclk = devm_clk_get(component->dev, "mclk"); in rt5640_probe()
2665 if (PTR_ERR(rt5640->mclk) == -EPROBE_DEFER) in rt5640_probe()
2668 rt5640->component = component; in rt5640_probe()
2744 rt5640->jd_src = val; in rt5640_probe()
2751 rt5640->jd_inverted = true; in rt5640_probe()
2758 rt5640->ovcd_th = RT5640_MIC1_OVTH_2000UA; in rt5640_probe()
2759 rt5640->ovcd_sf = RT5640_MIC_OVCD_SF_0P75; in rt5640_probe()
2765 rt5640->ovcd_th = RT5640_MIC1_OVTH_600UA; in rt5640_probe()
2768 rt5640->ovcd_th = RT5640_MIC1_OVTH_1500UA; in rt5640_probe()
2771 rt5640->ovcd_th = RT5640_MIC1_OVTH_2000UA; in rt5640_probe()
2782 rt5640->ovcd_sf = val << RT5640_MIC_OVCD_SF_SFT; in rt5640_probe()
2799 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component); in rt5640_suspend() local
2801 if (rt5640->jack) { in rt5640_suspend()
2803 disable_irq(rt5640->irq); in rt5640_suspend()
2804 rt5640_cancel_work(rt5640); in rt5640_suspend()
2809 regcache_cache_only(rt5640->regmap, true); in rt5640_suspend()
2810 regcache_mark_dirty(rt5640->regmap); in rt5640_suspend()
2811 if (rt5640->ldo1_en) in rt5640_suspend()
2812 gpiod_set_value_cansleep(rt5640->ldo1_en, 0); in rt5640_suspend()
2819 struct rt5640_priv *rt5640 = snd_soc_component_get_drvdata(component); in rt5640_resume() local
2821 if (rt5640->ldo1_en) { in rt5640_resume()
2822 gpiod_set_value_cansleep(rt5640->ldo1_en, 1); in rt5640_resume()
2826 regcache_cache_only(rt5640->regmap, false); in rt5640_resume()
2827 regcache_sync(rt5640->regmap); in rt5640_resume()
2829 if (rt5640->jack) { in rt5640_resume()
2830 if (rt5640->jd_src == RT5640_JD_SRC_HDA_HEADER) { in rt5640_resume()
2834 if (rt5640->jd_inverted) { in rt5640_resume()
2835 if (rt5640->jd_src == RT5640_JD_SRC_JD2_IN4N) in rt5640_resume()
2844 if (rt5640->jd_src == RT5640_JD_SRC_JD2_IN4N) in rt5640_resume()
2856 enable_irq(rt5640->irq); in rt5640_resume()
2857 queue_delayed_work(system_long_wq, &rt5640->jack_work, 0); in rt5640_resume()
2985 struct rt5640_priv *rt5640; in rt5640_i2c_probe() local
2989 rt5640 = devm_kzalloc(&i2c->dev, in rt5640_i2c_probe()
2992 if (NULL == rt5640) in rt5640_i2c_probe()
2994 i2c_set_clientdata(i2c, rt5640); in rt5640_i2c_probe()
2996 rt5640->ldo1_en = devm_gpiod_get_optional(&i2c->dev, in rt5640_i2c_probe()
2999 if (IS_ERR(rt5640->ldo1_en)) in rt5640_i2c_probe()
3000 return PTR_ERR(rt5640->ldo1_en); in rt5640_i2c_probe()
3002 if (rt5640->ldo1_en) { in rt5640_i2c_probe()
3003 gpiod_set_consumer_name(rt5640->ldo1_en, "RT5640 LDO1_EN"); in rt5640_i2c_probe()
3007 rt5640->regmap = devm_regmap_init_i2c(i2c, &rt5640_regmap); in rt5640_i2c_probe()
3008 if (IS_ERR(rt5640->regmap)) { in rt5640_i2c_probe()
3009 ret = PTR_ERR(rt5640->regmap); in rt5640_i2c_probe()
3015 regmap_read(rt5640->regmap, RT5640_VENDOR_ID2, &val); in rt5640_i2c_probe()
3022 regmap_write(rt5640->regmap, RT5640_RESET, 0); in rt5640_i2c_probe()
3024 ret = regmap_register_patch(rt5640->regmap, init_list, in rt5640_i2c_probe()
3029 regmap_update_bits(rt5640->regmap, RT5640_DUMMY1, in rt5640_i2c_probe()
3032 rt5640->hp_mute = true; in rt5640_i2c_probe()
3033 rt5640->irq = i2c->irq; in rt5640_i2c_probe()
3034 INIT_DELAYED_WORK(&rt5640->bp_work, rt5640_button_press_work); in rt5640_i2c_probe()
3035 INIT_DELAYED_WORK(&rt5640->jack_work, rt5640_jack_work); in rt5640_i2c_probe()
3038 ret = devm_add_action_or_reset(&i2c->dev, rt5640_cancel_work, rt5640); in rt5640_i2c_probe()