• Home
  • Raw
  • Download

Lines Matching +full:mic2 +full:- +full:src

1 // SPDX-License-Identifier: GPL-2.0-only
3 // rt722-sdca.c -- rt722 SDCA ALSA SoC audio driver
23 #include <sound/soc-dapm.h>
26 #include "rt722-sdca.h"
31 struct regmap *regmap = rt722->mbq_regmap; in rt722_sdca_index_write()
37 dev_err(&rt722->slave->dev, in rt722_sdca_index_write()
48 struct regmap *regmap = rt722->mbq_regmap; in rt722_sdca_index_read()
53 dev_err(&rt722->slave->dev, in rt722_sdca_index_read()
99 ret = regmap_read(rt722->regmap, in rt722_sdca_button_detect()
110 ret = regmap_read(rt722->regmap, in rt722_sdca_button_detect()
117 ret = regmap_read(rt722->regmap, in rt722_sdca_button_detect()
131 regmap_write(rt722->regmap, in rt722_sdca_button_detect()
144 ret = regmap_read(rt722->regmap, in rt722_sdca_headset_detect()
152 rt722->jack_type = 0; in rt722_sdca_headset_detect()
155 rt722->jack_type = SND_JACK_HEADPHONE; in rt722_sdca_headset_detect()
158 rt722->jack_type = SND_JACK_HEADSET; in rt722_sdca_headset_detect()
164 ret = regmap_write(rt722->regmap, in rt722_sdca_headset_detect()
171 dev_dbg(&rt722->slave->dev, in rt722_sdca_headset_detect()
187 if (!rt722->hs_jack) in rt722_sdca_jack_detect_handler()
190 if (!rt722->component->card || !rt722->component->card->instantiated) in rt722_sdca_jack_detect_handler()
194 if (rt722->scp_sdca_stat1 & SDW_SCP_SDCA_INT_SDCA_6) { in rt722_sdca_jack_detect_handler()
201 if (rt722->scp_sdca_stat2 & SDW_SCP_SDCA_INT_SDCA_8) in rt722_sdca_jack_detect_handler()
204 if (rt722->jack_type == 0) in rt722_sdca_jack_detect_handler()
207 dev_dbg(&rt722->slave->dev, in rt722_sdca_jack_detect_handler()
208 "in %s, jack_type=%d\n", __func__, rt722->jack_type); in rt722_sdca_jack_detect_handler()
209 dev_dbg(&rt722->slave->dev, in rt722_sdca_jack_detect_handler()
211 dev_dbg(&rt722->slave->dev, in rt722_sdca_jack_detect_handler()
213 rt722->scp_sdca_stat1, rt722->scp_sdca_stat2); in rt722_sdca_jack_detect_handler()
215 snd_soc_jack_report(rt722->hs_jack, rt722->jack_type | btn_type, in rt722_sdca_jack_detect_handler()
222 snd_soc_jack_report(rt722->hs_jack, rt722->jack_type, in rt722_sdca_jack_detect_handler()
228 &rt722->jack_btn_check_work, msecs_to_jiffies(200)); in rt722_sdca_jack_detect_handler()
240 ret = regmap_read(rt722->regmap, in rt722_sdca_btn_check_handler()
249 ret = regmap_read(rt722->regmap, in rt722_sdca_btn_check_handler()
256 ret = regmap_read(rt722->regmap, in rt722_sdca_btn_check_handler()
266 rt722->jack_type = 0; in rt722_sdca_btn_check_handler()
268 dev_dbg(&rt722->slave->dev, "%s, btn_type=0x%x\n", __func__, btn_type); in rt722_sdca_btn_check_handler()
269 snd_soc_jack_report(rt722->hs_jack, rt722->jack_type | btn_type, in rt722_sdca_btn_check_handler()
276 snd_soc_jack_report(rt722->hs_jack, rt722->jack_type, in rt722_sdca_btn_check_handler()
282 &rt722->jack_btn_check_work, msecs_to_jiffies(200)); in rt722_sdca_btn_check_handler()
293 mutex_lock(&rt722->calibrate_mutex); in rt722_sdca_jack_init()
294 if (rt722->hs_jack) { in rt722_sdca_jack_init()
296 sdw_write_no_pm(rt722->slave, SDW_SCP_SDCA_INTMASK1, in rt722_sdca_jack_init()
299 sdw_write_no_pm(rt722->slave, SDW_SCP_SDCA_INTMASK2, in rt722_sdca_jack_init()
301 dev_dbg(&rt722->slave->dev, "in %s enable\n", __func__); in rt722_sdca_jack_init()
305 regmap_write(rt722->regmap, in rt722_sdca_jack_init()
308 regmap_write(rt722->regmap, in rt722_sdca_jack_init()
315 mutex_unlock(&rt722->calibrate_mutex); in rt722_sdca_jack_init()
324 rt722->hs_jack = hs_jack; in rt722_sdca_set_jack_detect()
326 ret = pm_runtime_resume_and_get(component->dev); in rt722_sdca_set_jack_detect()
328 if (ret != -EACCES) { in rt722_sdca_set_jack_detect()
329 dev_err(component->dev, "%s: failed to resume %d\n", __func__, ret); in rt722_sdca_set_jack_detect()
333 dev_dbg(component->dev, "%s: skipping jack init for now\n", __func__); in rt722_sdca_set_jack_detect()
339 pm_runtime_mark_last_busy(component->dev); in rt722_sdca_set_jack_detect()
340 pm_runtime_put_autosuspend(component->dev); in rt722_sdca_set_jack_detect()
351 (struct soc_mixer_control *)kcontrol->private_value; in rt722_sdca_set_gain_put()
359 if (strstr(ucontrol->id.name, "FU1E Capture Volume") || in rt722_sdca_set_gain_put()
360 strstr(ucontrol->id.name, "FU0F Capture Volume")) in rt722_sdca_set_gain_put()
363 regmap_read(rt722->mbq_regmap, mc->reg, &lvalue); in rt722_sdca_set_gain_put()
364 regmap_read(rt722->mbq_regmap, mc->rreg, &rvalue); in rt722_sdca_set_gain_put()
367 gain_l_val = ucontrol->value.integer.value[0]; in rt722_sdca_set_gain_put()
368 if (gain_l_val > mc->max) in rt722_sdca_set_gain_put()
369 gain_l_val = mc->max; in rt722_sdca_set_gain_put()
371 if (mc->shift == 8) /* boost gain */ in rt722_sdca_set_gain_put()
376 gain_l_val = 0x1e00 - ((mc->max - gain_l_val) * interval_offset); in rt722_sdca_set_gain_put()
378 gain_l_val = 0 - ((mc->max - gain_l_val) * interval_offset); in rt722_sdca_set_gain_put()
383 gain_r_val = ucontrol->value.integer.value[1]; in rt722_sdca_set_gain_put()
384 if (gain_r_val > mc->max) in rt722_sdca_set_gain_put()
385 gain_r_val = mc->max; in rt722_sdca_set_gain_put()
387 if (mc->shift == 8) /* boost gain */ in rt722_sdca_set_gain_put()
392 gain_r_val = 0x1e00 - ((mc->max - gain_r_val) * interval_offset); in rt722_sdca_set_gain_put()
394 gain_r_val = 0 - ((mc->max - gain_r_val) * interval_offset); in rt722_sdca_set_gain_put()
404 regmap_write(rt722->mbq_regmap, mc->reg, gain_l_val); in rt722_sdca_set_gain_put()
407 regmap_write(rt722->mbq_regmap, mc->rreg, gain_r_val); in rt722_sdca_set_gain_put()
409 regmap_read(rt722->mbq_regmap, mc->reg, &read_l); in rt722_sdca_set_gain_put()
410 regmap_read(rt722->mbq_regmap, mc->rreg, &read_r); in rt722_sdca_set_gain_put()
414 return -EIO; in rt722_sdca_set_gain_put()
423 (struct soc_mixer_control *)kcontrol->private_value; in rt722_sdca_set_gain_get()
429 if (strstr(ucontrol->id.name, "FU1E Capture Volume") || in rt722_sdca_set_gain_get()
430 strstr(ucontrol->id.name, "FU0F Capture Volume")) in rt722_sdca_set_gain_get()
433 regmap_read(rt722->mbq_regmap, mc->reg, &read_l); in rt722_sdca_set_gain_get()
434 regmap_read(rt722->mbq_regmap, mc->rreg, &read_r); in rt722_sdca_set_gain_get()
436 if (mc->shift == 8) /* boost gain */ in rt722_sdca_set_gain_get()
440 ctl_l = mc->max - (((0x1e00 - read_l) & 0xffff) / interval_offset); in rt722_sdca_set_gain_get()
442 ctl_l = mc->max - (((0 - read_l) & 0xffff) / interval_offset); in rt722_sdca_set_gain_get()
446 if (mc->shift == 8) /* boost gain */ in rt722_sdca_set_gain_get()
450 ctl_r = mc->max - (((0x1e00 - read_r) & 0xffff) / interval_offset); in rt722_sdca_set_gain_get()
452 ctl_r = mc->max - (((0 - read_r) & 0xffff) / interval_offset); in rt722_sdca_set_gain_get()
458 ucontrol->value.integer.value[0] = ctl_l; in rt722_sdca_set_gain_get()
459 ucontrol->value.integer.value[1] = ctl_r; in rt722_sdca_set_gain_get()
469 for (i = 0; i < ARRAY_SIZE(rt722->fu1e_mixer_mute); i++) { in rt722_sdca_set_fu1e_capture_ctl()
470 ch_mute = rt722->fu1e_dapm_mute || rt722->fu1e_mixer_mute[i]; in rt722_sdca_set_fu1e_capture_ctl()
471 err = regmap_write(rt722->regmap, in rt722_sdca_set_fu1e_capture_ctl()
487 (struct rt722_sdca_dmic_kctrl_priv *)kcontrol->private_value; in rt722_sdca_fu1e_capture_get()
490 for (i = 0; i < p->count; i++) in rt722_sdca_fu1e_capture_get()
491 ucontrol->value.integer.value[i] = !rt722->fu1e_mixer_mute[i]; in rt722_sdca_fu1e_capture_get()
502 (struct rt722_sdca_dmic_kctrl_priv *)kcontrol->private_value; in rt722_sdca_fu1e_capture_put()
505 for (i = 0; i < p->count; i++) { in rt722_sdca_fu1e_capture_put()
506 if (rt722->fu1e_mixer_mute[i] != !ucontrol->value.integer.value[i]) in rt722_sdca_fu1e_capture_put()
508 rt722->fu1e_mixer_mute[i] = !ucontrol->value.integer.value[i]; in rt722_sdca_fu1e_capture_put()
523 ch_l = (rt722->fu0f_dapm_mute || rt722->fu0f_mixer_l_mute) ? 0x01 : 0x00; in rt722_sdca_set_fu0f_capture_ctl()
524 ch_r = (rt722->fu0f_dapm_mute || rt722->fu0f_mixer_r_mute) ? 0x01 : 0x00; in rt722_sdca_set_fu0f_capture_ctl()
526 err = regmap_write(rt722->regmap, in rt722_sdca_set_fu0f_capture_ctl()
532 err = regmap_write(rt722->regmap, in rt722_sdca_set_fu0f_capture_ctl()
547 ucontrol->value.integer.value[0] = !rt722->fu0f_mixer_l_mute; in rt722_sdca_fu0f_capture_get()
548 ucontrol->value.integer.value[1] = !rt722->fu0f_mixer_r_mute; in rt722_sdca_fu0f_capture_get()
559 if (rt722->fu0f_mixer_l_mute != !ucontrol->value.integer.value[0] || in rt722_sdca_fu0f_capture_put()
560 rt722->fu0f_mixer_r_mute != !ucontrol->value.integer.value[1]) in rt722_sdca_fu0f_capture_put()
563 rt722->fu0f_mixer_l_mute = !ucontrol->value.integer.value[0]; in rt722_sdca_fu0f_capture_put()
564 rt722->fu0f_mixer_r_mute = !ucontrol->value.integer.value[1]; in rt722_sdca_fu0f_capture_put()
576 (struct rt722_sdca_dmic_kctrl_priv *)kcontrol->private_value; in rt722_sdca_fu_info()
578 if (p->max == 1) in rt722_sdca_fu_info()
579 uinfo->type = SNDRV_CTL_ELEM_TYPE_BOOLEAN; in rt722_sdca_fu_info()
581 uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER; in rt722_sdca_fu_info()
582 uinfo->count = p->count; in rt722_sdca_fu_info()
583 uinfo->value.integer.min = 0; in rt722_sdca_fu_info()
584 uinfo->value.integer.max = p->max; in rt722_sdca_fu_info()
594 (struct rt722_sdca_dmic_kctrl_priv *)kcontrol->private_value; in rt722_sdca_dmic_set_gain_get()
601 if (strstr(ucontrol->id.name, "FU1E Capture Volume")) in rt722_sdca_dmic_set_gain_get()
605 for (i = 0; i < p->count; i++) { in rt722_sdca_dmic_set_gain_get()
606 regmap_read(rt722->mbq_regmap, p->reg_base + i, &regvalue); in rt722_sdca_dmic_set_gain_get()
612 ctl = p->max - (((vol_max - regvalue) & 0xffff) / interval_offset); in rt722_sdca_dmic_set_gain_get()
614 ctl = p->max - (((0 - regvalue) & 0xffff) / interval_offset); in rt722_sdca_dmic_set_gain_get()
617 ucontrol->value.integer.value[i] = ctl; in rt722_sdca_dmic_set_gain_get()
628 (struct rt722_sdca_dmic_kctrl_priv *)kcontrol->private_value; in rt722_sdca_dmic_set_gain_put()
638 if (strstr(ucontrol->id.name, "FU1E Capture Volume")) in rt722_sdca_dmic_set_gain_put()
642 for (i = 0; i < p->count; i++) { in rt722_sdca_dmic_set_gain_put()
643 regmap_read(rt722->mbq_regmap, p->reg_base + i, &regvalue[i]); in rt722_sdca_dmic_set_gain_put()
645 gain_val[i] = ucontrol->value.integer.value[i]; in rt722_sdca_dmic_set_gain_put()
646 if (gain_val[i] > p->max) in rt722_sdca_dmic_set_gain_put()
647 gain_val[i] = p->max; in rt722_sdca_dmic_set_gain_put()
652 gain_val[i] = vol_max - ((p->max - gain_val[i]) * interval_offset); in rt722_sdca_dmic_set_gain_put()
663 for (i = 0; i < p->count; i++) { in rt722_sdca_dmic_set_gain_put()
664 err = regmap_write(rt722->mbq_regmap, p->reg_base + i, gain_val[i]); in rt722_sdca_dmic_set_gain_put()
666 dev_err(&rt722->slave->dev, "%#08x can't be set\n", p->reg_base + i); in rt722_sdca_dmic_set_gain_put()
694 static const DECLARE_TLV_DB_SCALE(out_vol_tlv, -6525, 75, 0);
695 static const DECLARE_TLV_DB_SCALE(mic_vol_tlv, -1725, 75, 0);
752 if (strstr(ucontrol->id.name, "ADC 22 Mux")) in rt722_sdca_adc_mux_get()
754 else if (strstr(ucontrol->id.name, "ADC 24 Mux")) in rt722_sdca_adc_mux_get()
756 else if (strstr(ucontrol->id.name, "ADC 25 Mux")) in rt722_sdca_adc_mux_get()
759 return -EINVAL; in rt722_sdca_adc_mux_get()
764 ucontrol->value.enumerated.item[0] = (val >> mask_sft) & 0x7; in rt722_sdca_adc_mux_get()
777 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value; in rt722_sdca_adc_mux_put()
778 unsigned int *item = ucontrol->value.enumerated.item; in rt722_sdca_adc_mux_put()
781 if (item[0] >= e->items) in rt722_sdca_adc_mux_put()
782 return -EINVAL; in rt722_sdca_adc_mux_put()
784 if (strstr(ucontrol->id.name, "ADC 22 Mux")) in rt722_sdca_adc_mux_put()
786 else if (strstr(ucontrol->id.name, "ADC 24 Mux")) in rt722_sdca_adc_mux_put()
788 else if (strstr(ucontrol->id.name, "ADC 25 Mux")) in rt722_sdca_adc_mux_put()
791 return -EINVAL; in rt722_sdca_adc_mux_put()
793 val = snd_soc_enum_item_to_val(e, item[0]) << e->shift_l; in rt722_sdca_adc_mux_put()
816 "MIC2",
851 snd_soc_dapm_to_component(w->dapm); in rt722_sdca_fu42_event()
857 regmap_write(rt722->regmap, in rt722_sdca_fu42_event()
860 regmap_write(rt722->regmap, in rt722_sdca_fu42_event()
865 regmap_write(rt722->regmap, in rt722_sdca_fu42_event()
868 regmap_write(rt722->regmap, in rt722_sdca_fu42_event()
880 snd_soc_dapm_to_component(w->dapm); in rt722_sdca_fu21_event()
886 regmap_write(rt722->regmap, in rt722_sdca_fu21_event()
889 regmap_write(rt722->regmap, in rt722_sdca_fu21_event()
894 regmap_write(rt722->regmap, in rt722_sdca_fu21_event()
897 regmap_write(rt722->regmap, in rt722_sdca_fu21_event()
909 snd_soc_dapm_to_component(w->dapm); in rt722_sdca_fu113_event()
914 rt722->fu1e_dapm_mute = false; in rt722_sdca_fu113_event()
918 rt722->fu1e_dapm_mute = true; in rt722_sdca_fu113_event()
929 snd_soc_dapm_to_component(w->dapm); in rt722_sdca_fu36_event()
934 rt722->fu0f_dapm_mute = false; in rt722_sdca_fu36_event()
938 rt722->fu0f_dapm_mute = true; in rt722_sdca_fu36_event()
949 snd_soc_dapm_to_component(w->dapm); in rt722_sdca_pde47_event()
955 regmap_write(rt722->regmap, in rt722_sdca_pde47_event()
960 regmap_write(rt722->regmap, in rt722_sdca_pde47_event()
972 snd_soc_dapm_to_component(w->dapm); in rt722_sdca_pde23_event()
978 regmap_write(rt722->regmap, in rt722_sdca_pde23_event()
983 regmap_write(rt722->regmap, in rt722_sdca_pde23_event()
995 snd_soc_dapm_to_component(w->dapm); in rt722_sdca_pde11_event()
1001 regmap_write(rt722->regmap, in rt722_sdca_pde11_event()
1006 regmap_write(rt722->regmap, in rt722_sdca_pde11_event()
1018 snd_soc_dapm_to_component(w->dapm); in rt722_sdca_pde12_event()
1024 regmap_write(rt722->regmap, in rt722_sdca_pde12_event()
1029 regmap_write(rt722->regmap, in rt722_sdca_pde12_event()
1040 SND_SOC_DAPM_INPUT("MIC2"),
1088 {"ADC 22 Mux", "MIC2", "MIC2"},
1111 device_property_read_u32(dev, "realtek,jd-src", &rt722->jd_src); in rt722_sdca_parse_dt()
1121 rt722_sdca_parse_dt(rt722, &rt722->slave->dev); in rt722_sdca_probe()
1122 rt722->component = component; in rt722_sdca_probe()
1124 ret = pm_runtime_resume(component->dev); in rt722_sdca_probe()
1125 if (ret < 0 && ret != -EACCES) in rt722_sdca_probe()
1161 struct snd_soc_component *component = dai->component; in rt722_sdca_pcm_hw_params()
1170 dev_dbg(dai->dev, "%s %s", __func__, dai->name); in rt722_sdca_pcm_hw_params()
1174 return -EINVAL; in rt722_sdca_pcm_hw_params()
1176 if (!rt722->slave) in rt722_sdca_pcm_hw_params()
1177 return -EINVAL; in rt722_sdca_pcm_hw_params()
1181 * RT722_AIF1 with port = 2 for headset-mic capture in rt722_sdca_pcm_hw_params()
1183 * RT722_AIF3 with port = 6 for digital-mic capture in rt722_sdca_pcm_hw_params()
1185 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) { in rt722_sdca_pcm_hw_params()
1187 if (dai->id == RT722_AIF1) in rt722_sdca_pcm_hw_params()
1189 else if (dai->id == RT722_AIF2) in rt722_sdca_pcm_hw_params()
1192 return -EINVAL; in rt722_sdca_pcm_hw_params()
1195 if (dai->id == RT722_AIF1) in rt722_sdca_pcm_hw_params()
1197 else if (dai->id == RT722_AIF3) in rt722_sdca_pcm_hw_params()
1200 return -EINVAL; in rt722_sdca_pcm_hw_params()
1208 port_config.ch_mask = GENMASK(num_channels - 1, 0); in rt722_sdca_pcm_hw_params()
1211 retval = sdw_stream_add_slave(rt722->slave, &stream_config, in rt722_sdca_pcm_hw_params()
1214 dev_err(dai->dev, "Unable to configure port\n"); in rt722_sdca_pcm_hw_params()
1219 dev_err(component->dev, "Unsupported channels %d\n", in rt722_sdca_pcm_hw_params()
1221 return -EINVAL; in rt722_sdca_pcm_hw_params()
1239 dev_err(component->dev, "Rate %d is not supported\n", in rt722_sdca_pcm_hw_params()
1241 return -EINVAL; in rt722_sdca_pcm_hw_params()
1245 if (dai->id == RT722_AIF1) { in rt722_sdca_pcm_hw_params()
1246 regmap_write(rt722->regmap, in rt722_sdca_pcm_hw_params()
1249 regmap_write(rt722->regmap, in rt722_sdca_pcm_hw_params()
1254 if (dai->id == RT722_AIF2) in rt722_sdca_pcm_hw_params()
1255 regmap_write(rt722->regmap, in rt722_sdca_pcm_hw_params()
1259 if (dai->id == RT722_AIF3) in rt722_sdca_pcm_hw_params()
1260 regmap_write(rt722->regmap, in rt722_sdca_pcm_hw_params()
1270 struct snd_soc_component *component = dai->component; in rt722_sdca_pcm_hw_free()
1275 if (!rt722->slave) in rt722_sdca_pcm_hw_free()
1276 return -EINVAL; in rt722_sdca_pcm_hw_free()
1278 sdw_stream_remove_slave(rt722->slave, sdw_stream); in rt722_sdca_pcm_hw_free()
1296 .name = "rt722-sdca-aif1",
1315 .name = "rt722-sdca-aif2",
1327 .name = "rt722-sdca-aif3",
1347 return -ENOMEM; in rt722_sdca_init()
1350 rt722->slave = slave; in rt722_sdca_init()
1351 rt722->regmap = regmap; in rt722_sdca_init()
1352 rt722->mbq_regmap = mbq_regmap; in rt722_sdca_init()
1354 mutex_init(&rt722->calibrate_mutex); in rt722_sdca_init()
1355 mutex_init(&rt722->disable_irq_lock); in rt722_sdca_init()
1357 INIT_DELAYED_WORK(&rt722->jack_detect_work, rt722_sdca_jack_detect_handler); in rt722_sdca_init()
1358 INIT_DELAYED_WORK(&rt722->jack_btn_check_work, rt722_sdca_btn_check_handler); in rt722_sdca_init()
1364 rt722->hw_init = false; in rt722_sdca_init()
1365 rt722->first_hw_init = false; in rt722_sdca_init()
1366 rt722->fu1e_dapm_mute = true; in rt722_sdca_init()
1367 rt722->fu0f_dapm_mute = true; in rt722_sdca_init()
1368 rt722->fu0f_mixer_l_mute = rt722->fu0f_mixer_r_mute = true; in rt722_sdca_init()
1369 rt722->fu1e_mixer_mute[0] = rt722->fu1e_mixer_mute[1] = in rt722_sdca_init()
1370 rt722->fu1e_mixer_mute[2] = rt722->fu1e_mixer_mute[3] = true; in rt722_sdca_init()
1406 regmap_write(rt722->regmap, in rt722_sdca_dmic_preset()
1410 regmap_write(rt722->regmap, 0x2f5c, 0x25); in rt722_sdca_dmic_preset()
1431 regmap_write(rt722->regmap, in rt722_sdca_amp_preset()
1456 /* Set JD de-bounce clock control */ in rt722_sdca_jack_preset()
1473 dev_dbg(&rt722->slave->dev, "calibration failed!, ret=%d\n", ret); in rt722_sdca_jack_preset()
1477 /* Release HP-JD, EN_CBJ_TIE_GL/R open, en_osw gating auto done bit */ in rt722_sdca_jack_preset()
1483 /* Set MIC2 and LINE1 power entity floating control */ in rt722_sdca_jack_preset()
1493 regmap_write(rt722->regmap, 0x2f58, 0x07); in rt722_sdca_jack_preset()
1500 rt722->disable_irq = false; in rt722_sdca_io_init()
1502 if (rt722->hw_init) in rt722_sdca_io_init()
1505 if (rt722->first_hw_init) { in rt722_sdca_io_init()
1506 regcache_cache_only(rt722->regmap, false); in rt722_sdca_io_init()
1507 regcache_cache_bypass(rt722->regmap, true); in rt722_sdca_io_init()
1508 regcache_cache_only(rt722->mbq_regmap, false); in rt722_sdca_io_init()
1509 regcache_cache_bypass(rt722->mbq_regmap, true); in rt722_sdca_io_init()
1516 pm_runtime_set_autosuspend_delay(&slave->dev, 3000); in rt722_sdca_io_init()
1517 pm_runtime_use_autosuspend(&slave->dev); in rt722_sdca_io_init()
1520 pm_runtime_set_active(&slave->dev); in rt722_sdca_io_init()
1523 pm_runtime_mark_last_busy(&slave->dev); in rt722_sdca_io_init()
1525 pm_runtime_enable(&slave->dev); in rt722_sdca_io_init()
1528 pm_runtime_get_noresume(&slave->dev); in rt722_sdca_io_init()
1534 if (rt722->first_hw_init) { in rt722_sdca_io_init()
1535 regcache_cache_bypass(rt722->regmap, false); in rt722_sdca_io_init()
1536 regcache_mark_dirty(rt722->regmap); in rt722_sdca_io_init()
1537 regcache_cache_bypass(rt722->mbq_regmap, false); in rt722_sdca_io_init()
1538 regcache_mark_dirty(rt722->mbq_regmap); in rt722_sdca_io_init()
1540 rt722->first_hw_init = true; in rt722_sdca_io_init()
1543 rt722->hw_init = true; in rt722_sdca_io_init()
1545 pm_runtime_mark_last_busy(&slave->dev); in rt722_sdca_io_init()
1546 pm_runtime_put_autosuspend(&slave->dev); in rt722_sdca_io_init()
1548 dev_dbg(&slave->dev, "%s hw_init complete\n", __func__); in rt722_sdca_io_init()