Lines Matching defs:rt5682s

3 // rt5682s.c  --  RT5682I-VS ALSA SoC audio component driver
28 #include <sound/rt5682s.h>
30 #include "rt5682s.h"
64 static void rt5682s_apply_patch_list(struct rt5682s_priv *rt5682s,
69 ret = regmap_multi_reg_write(rt5682s->regmap, patch_list, ARRAY_SIZE(patch_list));
622 static void rt5682s_reset(struct rt5682s_priv *rt5682s)
624 regmap_write(rt5682s->regmap, RT5682S_RESET, 0);
649 struct rt5682s_priv *rt5682s = snd_soc_component_get_drvdata(component);
651 mutex_lock(&rt5682s->sar_mutex);
699 mutex_unlock(&rt5682s->sar_mutex);
743 struct rt5682s_priv *rt5682s = snd_soc_component_get_drvdata(component);
810 if (!rt5682s->wclk_enabled) {
831 struct rt5682s_priv *rt5682s =
836 if (!rt5682s->component ||
837 !snd_soc_card_is_instantiated(rt5682s->component->card)) {
840 &rt5682s->jack_detect_work, msecs_to_jiffies(15));
844 dapm = snd_soc_component_get_dapm(rt5682s->component);
847 mutex_lock(&rt5682s->calibrate_mutex);
848 mutex_lock(&rt5682s->wclk_mutex);
850 val = snd_soc_component_read(rt5682s->component, RT5682S_AJD1_CTRL)
854 if (rt5682s->jack_type == 0) {
856 rt5682s->jack_type = rt5682s_headset_detect(rt5682s->component, 1);
857 rt5682s->irq_work_delay_time = 0;
858 } else if ((rt5682s->jack_type & SND_JACK_HEADSET) == SND_JACK_HEADSET) {
860 rt5682s->jack_type = SND_JACK_HEADSET;
861 btn_type = rt5682s_button_detect(rt5682s->component);
863 * rt5682s can report three kinds of button behavior,
873 rt5682s->jack_type |= SND_JACK_BTN_0;
878 rt5682s->jack_type |= SND_JACK_BTN_1;
883 rt5682s->jack_type |= SND_JACK_BTN_2;
888 rt5682s->jack_type |= SND_JACK_BTN_3;
893 dev_err(rt5682s->component->dev,
900 rt5682s->jack_type = rt5682s_headset_detect(rt5682s->component, 0);
901 rt5682s->irq_work_delay_time = 50;
904 mutex_unlock(&rt5682s->wclk_mutex);
905 mutex_unlock(&rt5682s->calibrate_mutex);
908 snd_soc_jack_report(rt5682s->hs_jack, rt5682s->jack_type,
912 if (rt5682s->jack_type & (SND_JACK_BTN_0 | SND_JACK_BTN_1 |
914 schedule_delayed_work(&rt5682s->jd_check_work, 0);
916 cancel_delayed_work_sync(&rt5682s->jd_check_work);
921 struct rt5682s_priv *rt5682s =
924 if (snd_soc_component_read(rt5682s->component, RT5682S_AJD1_CTRL) & RT5682S_JDH_RS_MASK) {
926 schedule_delayed_work(&rt5682s->jack_detect_work, 0);
928 schedule_delayed_work(&rt5682s->jd_check_work, 500);
934 struct rt5682s_priv *rt5682s = data;
936 mod_delayed_work(system_power_efficient_wq, &rt5682s->jack_detect_work,
937 msecs_to_jiffies(rt5682s->irq_work_delay_time));
945 struct rt5682s_priv *rt5682s = snd_soc_component_get_drvdata(component);
948 rt5682s->hs_jack = hs_jack;
951 regmap_update_bits(rt5682s->regmap, RT5682S_IRQ_CTRL_2,
953 regmap_update_bits(rt5682s->regmap, RT5682S_RC_CLK_CTRL,
955 cancel_delayed_work_sync(&rt5682s->jack_detect_work);
960 switch (rt5682s->pdata.jd_src) {
962 regmap_update_bits(rt5682s->regmap, RT5682S_CBJ_CTRL_5,
964 regmap_update_bits(rt5682s->regmap, RT5682S_CBJ_CTRL_2,
966 regmap_update_bits(rt5682s->regmap, RT5682S_CBJ_CTRL_1,
971 regmap_update_bits(rt5682s->regmap, RT5682S_SAR_IL_CMD_1,
973 regmap_update_bits(rt5682s->regmap, RT5682S_GPIO_CTRL_1,
975 regmap_update_bits(rt5682s->regmap, RT5682S_PWR_ANLG_3,
977 regmap_update_bits(rt5682s->regmap, RT5682S_PWR_ANLG_2,
979 regmap_update_bits(rt5682s->regmap, RT5682S_RC_CLK_CTRL,
981 regmap_update_bits(rt5682s->regmap, RT5682S_IRQ_CTRL_2,
984 regmap_update_bits(rt5682s->regmap, RT5682S_4BTN_IL_CMD_4,
987 regmap_update_bits(rt5682s->regmap, RT5682S_4BTN_IL_CMD_5,
990 regmap_update_bits(rt5682s->regmap, RT5682S_4BTN_IL_CMD_6,
993 regmap_update_bits(rt5682s->regmap, RT5682S_4BTN_IL_CMD_7,
998 &rt5682s->jack_detect_work, msecs_to_jiffies(250));
1002 regmap_update_bits(rt5682s->regmap, RT5682S_IRQ_CTRL_2,
1004 regmap_update_bits(rt5682s->regmap, RT5682S_RC_CLK_CTRL,
1085 static int rt5682s_div_sel(struct rt5682s_priv *rt5682s,
1090 if (rt5682s->sysclk < target) {
1091 dev_err(rt5682s->component->dev,
1092 "sysclk rate %d is too low\n", rt5682s->sysclk);
1097 dev_dbg(rt5682s->component->dev, "div[%d]=%d\n", i, div[i]);
1098 if (target * div[i] == rt5682s->sysclk)
1100 if (target * div[i + 1] > rt5682s->sysclk) {
1101 dev_dbg(rt5682s->component->dev,
1102 "can't find div for sysclk %d\n", rt5682s->sysclk);
1107 if (target * div[i] < rt5682s->sysclk)
1108 dev_err(rt5682s->component->dev,
1109 "sysclk rate %d is too high\n", rt5682s->sysclk);
1144 struct rt5682s_priv *rt5682s = snd_soc_component_get_drvdata(component);
1148 if (rt5682s->pdata.dmic_clk_rate)
1149 dmic_clk_rate = rt5682s->pdata.dmic_clk_rate;
1151 idx = rt5682s_div_sel(rt5682s, dmic_clk_rate, div, ARRAY_SIZE(div));
1160 static int rt5682s_set_pllb_power(struct rt5682s_priv *rt5682s, int on)
1162 struct snd_soc_component *component = rt5682s->component;
1183 struct rt5682s_priv *rt5682s = snd_soc_component_get_drvdata(component);
1186 if (rt5682s->wclk_enabled)
1192 rt5682s_set_pllb_power(rt5682s, on);
1197 static void rt5682s_set_filter_clk(struct rt5682s_priv *rt5682s, int reg, int ref)
1199 struct snd_soc_component *component = rt5682s->component;
1204 idx = rt5682s_div_sel(rt5682s, ref, div_f, ARRAY_SIZE(div_f));
1211 if (rt5682s->sysclk <= 12288000 * div_o[idx])
1224 struct rt5682s_priv *rt5682s = snd_soc_component_get_drvdata(component);
1231 ref = 256 * rt5682s->lrck[RT5682S_AIF2];
1233 ref = 256 * rt5682s->lrck[RT5682S_AIF1];
1240 rt5682s_set_filter_clk(rt5682s, reg, ref);
1249 struct rt5682s_priv *rt5682s = snd_soc_component_get_drvdata(component);
1252 if (rt5682s->pdata.dmic_delay)
1253 delay = rt5682s->pdata.dmic_delay;
1269 if (!rt5682s->jack_type && !rt5682s->wclk_enabled) {
1279 static void rt5682s_set_i2s(struct rt5682s_priv *rt5682s, int id, int on)
1281 struct snd_soc_component *component = rt5682s->component;
1302 if (on && rt5682s->master[id]) {
1303 pre_div = get_clk_info(rt5682s->sysclk, rt5682s->lrck[id]);
1310 rt5682s->lrck[id], pre_div, id);
1321 struct rt5682s_priv *rt5682s = snd_soc_component_get_drvdata(component);
1327 if (!snd_soc_dapm_widget_name_cmp(w, "I2S1") && !rt5682s->wclk_enabled)
1328 rt5682s_set_i2s(rt5682s, RT5682S_AIF1, on);
1330 rt5682s_set_i2s(rt5682s, RT5682S_AIF2, on);
1339 struct rt5682s_priv *rt5682s = snd_soc_component_get_drvdata(component);
1341 if ((rt5682s->sysclk_src == RT5682S_CLK_SRC_PLL1) ||
1342 (rt5682s->sysclk_src == RT5682S_CLK_SRC_PLL2 && rt5682s->pll_comb == USE_PLLAB))
1352 struct rt5682s_priv *rt5682s = snd_soc_component_get_drvdata(component);
1354 if (rt5682s->sysclk_src == RT5682S_CLK_SRC_PLL2)
1438 struct rt5682s_priv *rt5682s = snd_soc_component_get_drvdata(component);
1441 if (rt5682s->pdata.amic_delay)
1442 delay = rt5682s->pdata.amic_delay;
1463 struct rt5682s_priv *rt5682s = snd_soc_component_get_drvdata(component);
1465 if ((rt5682s->jack_type & SND_JACK_HEADSET) != SND_JACK_HEADSET)
2065 struct rt5682s_priv *rt5682s = snd_soc_component_get_drvdata(component);
2069 rt5682s->lrck[dai->id] = params_rate(params);
2132 struct rt5682s_priv *rt5682s = snd_soc_component_get_drvdata(component);
2137 rt5682s->master[dai->id] = 1;
2140 rt5682s->master[dai->id] = 0;
2197 tdm_ctrl | rt5682s->master[dai->id]);
2200 if (rt5682s->master[dai->id] == 0)
2216 struct rt5682s_priv *rt5682s = snd_soc_component_get_drvdata(component);
2219 if (freq == rt5682s->sysclk && clk_id == rt5682s->sysclk_src)
2247 rt5682s->sysclk = freq;
2248 rt5682s->sysclk_src = clk_id;
2334 struct rt5682s_priv *rt5682s = snd_soc_component_get_drvdata(component);
2337 if (source == rt5682s->pll_src[pll_id] && freq_in == rt5682s->pll_in[pll_id] &&
2338 freq_out == rt5682s->pll_out[pll_id])
2343 rt5682s->pll_in[pll_id] = 0;
2344 rt5682s->pll_out[pll_id] = 0;
2364 rt5682s->pll_comb = find_pll_inter_combination(freq_in, freq_out,
2367 if ((pll_id == RT5682S_PLL1 && rt5682s->pll_comb == USE_PLLA) ||
2368 (pll_id == RT5682S_PLL2 && (rt5682s->pll_comb == USE_PLLB ||
2369 rt5682s->pll_comb == USE_PLLAB))) {
2372 pll_id + 1, freq_in, freq_out, rt5682s->pll_comb);
2376 pll_id + 1, freq_in, freq_out, rt5682s->pll_comb);
2380 if (rt5682s->pll_comb == USE_PLLA || rt5682s->pll_comb == USE_PLLAB) {
2396 if (rt5682s->pll_comb == USE_PLLB || rt5682s->pll_comb == USE_PLLAB) {
2416 if (rt5682s->pll_comb == USE_PLLB)
2420 rt5682s->pll_in[pll_id] = freq_in;
2421 rt5682s->pll_out[pll_id] = freq_out;
2422 rt5682s->pll_src[pll_id] = source;
2431 struct rt5682s_priv *rt5682s = snd_soc_component_get_drvdata(component);
2433 rt5682s->bclk[dai->id] = ratio;
2463 struct rt5682s_priv *rt5682s = snd_soc_component_get_drvdata(component);
2465 rt5682s->bclk[dai->id] = ratio;
2487 struct rt5682s_priv *rt5682s = snd_soc_component_get_drvdata(component);
2491 regmap_update_bits(rt5682s->regmap, RT5682S_PWR_DIG_1,
2496 regmap_update_bits(rt5682s->regmap, RT5682S_PWR_DIG_1,
2500 regmap_update_bits(rt5682s->regmap, RT5682S_PWR_DIG_1, RT5682S_PWR_LDO, 0);
2501 if (!rt5682s->wclk_enabled)
2502 regmap_update_bits(rt5682s->regmap, RT5682S_PWR_DIG_1,
2517 static bool rt5682s_clk_check(struct rt5682s_priv *rt5682s)
2519 if (!rt5682s->master[RT5682S_AIF1]) {
2520 dev_dbg(rt5682s->component->dev, "dai clk fmt not set correctly\n");
2528 struct rt5682s_priv *rt5682s =
2530 struct snd_soc_component *component = rt5682s->component;
2533 if (!rt5682s_clk_check(rt5682s))
2536 mutex_lock(&rt5682s->wclk_mutex);
2548 rt5682s_set_i2s(rt5682s, RT5682S_AIF1, 1);
2552 ref = 256 * rt5682s->lrck[RT5682S_AIF1];
2553 rt5682s_set_filter_clk(rt5682s, reg, ref);
2554 rt5682s_set_pllb_power(rt5682s, 1);
2556 rt5682s->wclk_enabled = 1;
2558 mutex_unlock(&rt5682s->wclk_mutex);
2565 struct rt5682s_priv *rt5682s =
2567 struct snd_soc_component *component = rt5682s->component;
2569 if (!rt5682s_clk_check(rt5682s))
2572 mutex_lock(&rt5682s->wclk_mutex);
2574 if (!rt5682s->jack_type)
2579 rt5682s_set_i2s(rt5682s, RT5682S_AIF1, 0);
2584 rt5682s_set_pllb_power(rt5682s, 0);
2586 rt5682s->wclk_enabled = 0;
2588 mutex_unlock(&rt5682s->wclk_mutex);
2594 struct rt5682s_priv *rt5682s =
2596 struct snd_soc_component *component = rt5682s->component;
2599 if (!rt5682s_clk_check(rt5682s))
2604 if (rt5682s->lrck[RT5682S_AIF1] != CLK_48 &&
2605 rt5682s->lrck[RT5682S_AIF1] != CLK_44) {
2611 return rt5682s->lrck[RT5682S_AIF1];
2617 struct rt5682s_priv *rt5682s =
2619 struct snd_soc_component *component = rt5682s->component;
2622 if (!rt5682s_clk_check(rt5682s))
2640 struct rt5682s_priv *rt5682s =
2642 struct snd_soc_component *component = rt5682s->component;
2647 if (!rt5682s_clk_check(rt5682s))
2678 rt5682s->lrck[RT5682S_AIF1] = rate;
2686 struct rt5682s_priv *rt5682s =
2688 struct snd_soc_component *component = rt5682s->component;
2726 struct rt5682s_priv *rt5682s =
2730 if (!req->best_parent_rate || !rt5682s_clk_check(rt5682s))
2750 struct rt5682s_priv *rt5682s =
2752 struct snd_soc_component *component = rt5682s->component;
2756 if (!rt5682s_clk_check(rt5682s))
2788 struct rt5682s_priv *rt5682s = snd_soc_component_get_drvdata(component);
2789 struct rt5682s_platform_data *pdata = &rt5682s->pdata;
2798 dai_clk_hw = &rt5682s->dai_clks_hw[i];
2803 if (rt5682s->mclk) {
2813 parent = &rt5682s->dai_clks_hw[RT5682S_DAI_WCLK_IDX];
2850 struct rt5682s_priv *rt5682s = snd_soc_component_get_drvdata(component);
2854 rt5682s->mclk = devm_clk_get_optional(component->dev, "mclk");
2855 if (IS_ERR(rt5682s->mclk))
2856 return PTR_ERR(rt5682s->mclk);
2864 rt5682s->lrck[RT5682S_AIF1] = CLK_48;
2877 struct rt5682s_priv *rt5682s = snd_soc_component_get_drvdata(component);
2879 rt5682s->component = component;
2886 struct rt5682s_priv *rt5682s = snd_soc_component_get_drvdata(component);
2888 rt5682s_reset(rt5682s);
2894 struct rt5682s_priv *rt5682s = snd_soc_component_get_drvdata(component);
2896 if (rt5682s->irq)
2897 disable_irq(rt5682s->irq);
2899 cancel_delayed_work_sync(&rt5682s->jack_detect_work);
2900 cancel_delayed_work_sync(&rt5682s->jd_check_work);
2902 if (rt5682s->hs_jack)
2903 rt5682s->jack_type = rt5682s_headset_detect(component, 0);
2905 regcache_cache_only(rt5682s->regmap, true);
2906 regcache_mark_dirty(rt5682s->regmap);
2913 struct rt5682s_priv *rt5682s = snd_soc_component_get_drvdata(component);
2915 regcache_cache_only(rt5682s->regmap, false);
2916 regcache_sync(rt5682s->regmap);
2918 if (rt5682s->hs_jack) {
2920 &rt5682s->jack_detect_work, msecs_to_jiffies(0));
2923 if (rt5682s->irq)
2924 enable_irq(rt5682s->irq);
2965 static int rt5682s_parse_dt(struct rt5682s_priv *rt5682s, struct device *dev)
2968 &rt5682s->pdata.dmic1_data_pin);
2970 &rt5682s->pdata.dmic1_clk_pin);
2972 &rt5682s->pdata.jd_src);
2974 &rt5682s->pdata.dmic_clk_rate);
2976 &rt5682s->pdata.dmic_delay);
2978 &rt5682s->pdata.amic_delay);
2980 &rt5682s->pdata.ldo_dacref);
2983 rt5682s->pdata.dai_clk_names,
2986 rt5682s->pdata.dai_clk_names[RT5682S_DAI_WCLK_IDX],
2987 rt5682s->pdata.dai_clk_names[RT5682S_DAI_BCLK_IDX]);
2989 rt5682s->pdata.dmic_clk_driving_high = device_property_read_bool(dev,
2995 static void rt5682s_calibrate(struct rt5682s_priv *rt5682s)
2999 mutex_lock(&rt5682s->calibrate_mutex);
3001 regmap_write(rt5682s->regmap, RT5682S_PWR_ANLG_1, 0xaa80);
3003 regmap_write(rt5682s->regmap, RT5682S_PWR_ANLG_1, 0xfa80);
3004 regmap_write(rt5682s->regmap, RT5682S_PWR_DIG_1, 0x01c0);
3005 regmap_write(rt5682s->regmap, RT5682S_MICBIAS_2, 0x0380);
3006 regmap_write(rt5682s->regmap, RT5682S_GLB_CLK, 0x8000);
3007 regmap_write(rt5682s->regmap, RT5682S_ADDA_CLK_1, 0x1001);
3008 regmap_write(rt5682s->regmap, RT5682S_CHOP_DAC_2, 0x3030);
3009 regmap_write(rt5682s->regmap, RT5682S_CHOP_ADC, 0xb000);
3010 regmap_write(rt5682s->regmap, RT5682S_STO1_ADC_MIXER, 0x686c);
3011 regmap_write(rt5682s->regmap, RT5682S_CAL_REC, 0x5151);
3012 regmap_write(rt5682s->regmap, RT5682S_HP_CALIB_CTRL_2, 0x0321);
3013 regmap_write(rt5682s->regmap, RT5682S_HP_LOGIC_CTRL_2, 0x0004);
3014 regmap_write(rt5682s->regmap, RT5682S_HP_CALIB_CTRL_1, 0x7c00);
3015 regmap_write(rt5682s->regmap, RT5682S_HP_CALIB_CTRL_1, 0xfc00);
3018 regmap_read(rt5682s->regmap, RT5682S_HP_CALIB_ST_1, &value);
3026 dev_err(rt5682s->component->dev, "HP Calibration Failure\n");
3029 regmap_write(rt5682s->regmap, RT5682S_MICBIAS_2, 0x0180);
3030 regmap_write(rt5682s->regmap, RT5682S_CAL_REC, 0x5858);
3031 regmap_write(rt5682s->regmap, RT5682S_STO1_ADC_MIXER, 0xc0c4);
3032 regmap_write(rt5682s->regmap, RT5682S_HP_CALIB_CTRL_2, 0x0320);
3033 regmap_write(rt5682s->regmap, RT5682S_PWR_DIG_1, 0x00c0);
3034 regmap_write(rt5682s->regmap, RT5682S_PWR_ANLG_1, 0x0800);
3035 regmap_write(rt5682s->regmap, RT5682S_GLB_CLK, 0x0000);
3037 mutex_unlock(&rt5682s->calibrate_mutex);
3055 .name = "rt5682s-aif1",
3074 .name = "rt5682s-aif2",
3089 struct rt5682s_priv *rt5682s = data;
3090 struct device *dev = regmap_get_device(rt5682s->regmap);
3093 ret = regulator_disable(rt5682s->supplies[RT5682S_SUPPLY_AVDD].consumer);
3097 ret = regulator_disable(rt5682s->supplies[RT5682S_SUPPLY_DBVDD].consumer);
3101 ret = regulator_disable(rt5682s->supplies[RT5682S_SUPPLY_LDO1_IN].consumer);
3107 ret = regulator_disable(rt5682s->supplies[RT5682S_SUPPLY_MICVDD].consumer);
3115 struct rt5682s_priv *rt5682s;
3119 rt5682s = devm_kzalloc(&i2c->dev, sizeof(struct rt5682s_priv), GFP_KERNEL);
3120 if (!rt5682s)
3123 i2c_set_clientdata(i2c, rt5682s);
3125 rt5682s->pdata = i2s_default_platform_data;
3128 rt5682s->pdata = *pdata;
3130 rt5682s_parse_dt(rt5682s, &i2c->dev);
3132 rt5682s->regmap = devm_regmap_init_i2c(i2c, &rt5682s_regmap);
3133 if (IS_ERR(rt5682s->regmap)) {
3134 ret = PTR_ERR(rt5682s->regmap);
3139 for (i = 0; i < ARRAY_SIZE(rt5682s->supplies); i++)
3140 rt5682s->supplies[i].supply = rt5682s_supply_names[i];
3143 ARRAY_SIZE(rt5682s->supplies), rt5682s->supplies);
3149 ret = devm_add_action_or_reset(&i2c->dev, rt5682s_i2c_disable_regulators, rt5682s);
3153 ret = regulator_enable(rt5682s->supplies[RT5682S_SUPPLY_MICVDD].consumer);
3160 ret = regulator_enable(rt5682s->supplies[RT5682S_SUPPLY_AVDD].consumer);
3166 ret = regulator_enable(rt5682s->supplies[RT5682S_SUPPLY_DBVDD].consumer);
3172 ret = regulator_enable(rt5682s->supplies[RT5682S_SUPPLY_LDO1_IN].consumer);
3178 rt5682s->ldo1_en = devm_gpiod_get_optional(&i2c->dev,
3181 if (IS_ERR(rt5682s->ldo1_en)) {
3183 return PTR_ERR(rt5682s->ldo1_en);
3189 regmap_read(rt5682s->regmap, RT5682S_DEVICE_ID, &val);
3191 dev_err(&i2c->dev, "Device with ID register %x is not rt5682s\n", val);
3195 rt5682s_reset(rt5682s);
3196 rt5682s_apply_patch_list(rt5682s, &i2c->dev);
3198 regmap_update_bits(rt5682s->regmap, RT5682S_PWR_DIG_2,
3202 mutex_init(&rt5682s->calibrate_mutex);
3203 mutex_init(&rt5682s->sar_mutex);
3204 mutex_init(&rt5682s->wclk_mutex);
3205 rt5682s_calibrate(rt5682s);
3207 regmap_update_bits(rt5682s->regmap, RT5682S_MICBIAS_2,
3210 regmap_update_bits(rt5682s->regmap, RT5682S_PWR_ANLG_1,
3212 regmap_update_bits(rt5682s->regmap, RT5682S_HP_LOGIC_CTRL_2,
3214 regmap_update_bits(rt5682s->regmap, RT5682S_HP_CHARGE_PUMP_2,
3216 regmap_update_bits(rt5682s->regmap, RT5682S_HP_AMP_DET_CTL_1,
3220 switch (rt5682s->pdata.dmic1_data_pin) {
3224 regmap_update_bits(rt5682s->regmap, RT5682S_DMIC_CTRL_1,
3226 regmap_update_bits(rt5682s->regmap, RT5682S_GPIO_CTRL_1,
3230 regmap_update_bits(rt5682s->regmap, RT5682S_DMIC_CTRL_1,
3232 regmap_update_bits(rt5682s->regmap, RT5682S_GPIO_CTRL_1,
3241 switch (rt5682s->pdata.dmic1_clk_pin) {
3245 regmap_update_bits(rt5682s->regmap, RT5682S_GPIO_CTRL_1,
3249 regmap_update_bits(rt5682s->regmap, RT5682S_GPIO_CTRL_1,
3251 if (rt5682s->pdata.dmic_clk_driving_high)
3252 regmap_update_bits(rt5682s->regmap, RT5682S_PAD_DRIVING_CTRL,
3261 switch (rt5682s->pdata.ldo_dacref) {
3265 regmap_update_bits(rt5682s->regmap, RT5682S_BIAS_CUR_CTRL_7,
3269 regmap_update_bits(rt5682s->regmap, RT5682S_BIAS_CUR_CTRL_7,
3273 regmap_update_bits(rt5682s->regmap, RT5682S_BIAS_CUR_CTRL_7,
3281 INIT_DELAYED_WORK(&rt5682s->jack_detect_work, rt5682s_jack_detect_handler);
3282 INIT_DELAYED_WORK(&rt5682s->jd_check_work, rt5682s_jd_check_handler);
3287 "rt5682s", rt5682s);
3289 rt5682s->irq = i2c->irq;
3300 struct rt5682s_priv *rt5682s = i2c_get_clientdata(client);
3303 cancel_delayed_work_sync(&rt5682s->jack_detect_work);
3304 cancel_delayed_work_sync(&rt5682s->jd_check_work);
3306 rt5682s_reset(rt5682s);
3315 {.compatible = "realtek,rt5682s"},
3327 {"rt5682s"},
3334 .name = "rt5682s",