Lines Matching +full:use +full:- +full:jd2

1 // SPDX-License-Identifier: GPL-2.0-only
3 // rt711-sdca.c -- rt711 SDCA ALSA SoC audio driver
22 #include <sound/soc-dapm.h>
27 #include "rt711-sdca.h"
33 struct regmap *regmap = rt711->mbq_regmap; in rt711_sdca_index_write()
38 dev_err(&rt711->slave->dev, in rt711_sdca_index_write()
49 struct regmap *regmap = rt711->mbq_regmap; in rt711_sdca_index_read()
54 dev_err(&rt711->slave->dev, in rt711_sdca_index_read()
88 struct regmap *regmap = rt711->regmap; in rt711_sdca_calibration()
92 mutex_lock(&rt711->calibrate_mutex); in rt711_sdca_calibration()
95 regmap_read(rt711->regmap, RT711_RC_CAL_STATUS, &val); in rt711_sdca_calibration()
103 ret = regmap_read(rt711->regmap, RT711_RC_CAL_STATUS, &val); in rt711_sdca_calibration()
108 dev_err(dev, "%s, RC calibration time-out!\n", __func__); in rt711_sdca_calibration()
126 if (rt711->hw_ver == RT711_VER_VD0) in rt711_sdca_calibration()
149 dev_err(dev, "%s, calibration time-out!\n", __func__); in rt711_sdca_calibration()
152 ret = -ETIMEDOUT; in rt711_sdca_calibration()
159 /* release HP-JD and trigger FSM */ in rt711_sdca_calibration()
163 mutex_unlock(&rt711->calibrate_mutex); in rt711_sdca_calibration()
175 ret = regmap_read(rt711->regmap, in rt711_sdca_button_detect()
186 ret = regmap_read(rt711->regmap, in rt711_sdca_button_detect()
193 ret = regmap_read(rt711->regmap, in rt711_sdca_button_detect()
239 regmap_write(rt711->regmap, in rt711_sdca_button_detect()
252 ret = regmap_read(rt711->regmap, in rt711_sdca_headset_detect()
260 rt711->jack_type = 0; in rt711_sdca_headset_detect()
263 rt711->jack_type = SND_JACK_HEADPHONE; in rt711_sdca_headset_detect()
266 rt711->jack_type = SND_JACK_HEADSET; in rt711_sdca_headset_detect()
272 ret = regmap_write(rt711->regmap, in rt711_sdca_headset_detect()
279 dev_dbg(&rt711->slave->dev, in rt711_sdca_headset_detect()
295 if (!rt711->hs_jack) in rt711_sdca_jack_detect_handler()
298 if (!snd_soc_card_is_instantiated(rt711->component->card)) in rt711_sdca_jack_detect_handler()
302 if (rt711->scp_sdca_stat1 & SDW_SCP_SDCA_INT_SDCA_0) { in rt711_sdca_jack_detect_handler()
309 if (rt711->scp_sdca_stat2 & SDW_SCP_SDCA_INT_SDCA_8) in rt711_sdca_jack_detect_handler()
312 if (rt711->jack_type == 0) in rt711_sdca_jack_detect_handler()
315 dev_dbg(&rt711->slave->dev, in rt711_sdca_jack_detect_handler()
316 "in %s, jack_type=0x%x\n", __func__, rt711->jack_type); in rt711_sdca_jack_detect_handler()
317 dev_dbg(&rt711->slave->dev, in rt711_sdca_jack_detect_handler()
319 dev_dbg(&rt711->slave->dev, in rt711_sdca_jack_detect_handler()
321 rt711->scp_sdca_stat1, rt711->scp_sdca_stat2); in rt711_sdca_jack_detect_handler()
323 snd_soc_jack_report(rt711->hs_jack, rt711->jack_type | btn_type, in rt711_sdca_jack_detect_handler()
330 snd_soc_jack_report(rt711->hs_jack, rt711->jack_type, in rt711_sdca_jack_detect_handler()
336 &rt711->jack_btn_check_work, msecs_to_jiffies(200)); in rt711_sdca_jack_detect_handler()
348 ret = regmap_read(rt711->regmap, in rt711_sdca_btn_check_handler()
357 ret = regmap_read(rt711->regmap, in rt711_sdca_btn_check_handler()
364 ret = regmap_read(rt711->regmap, in rt711_sdca_btn_check_handler()
406 rt711->jack_type = 0; in rt711_sdca_btn_check_handler()
408 dev_dbg(&rt711->slave->dev, "%s, btn_type=0x%x\n", __func__, btn_type); in rt711_sdca_btn_check_handler()
409 snd_soc_jack_report(rt711->hs_jack, rt711->jack_type | btn_type, in rt711_sdca_btn_check_handler()
416 snd_soc_jack_report(rt711->hs_jack, rt711->jack_type, in rt711_sdca_btn_check_handler()
422 &rt711->jack_btn_check_work, msecs_to_jiffies(200)); in rt711_sdca_btn_check_handler()
433 mutex_lock(&rt711->calibrate_mutex); in rt711_sdca_jack_init()
435 if (rt711->hs_jack) { in rt711_sdca_jack_init()
450 switch (rt711->jd_src) { in rt711_sdca_jack_init()
482 dev_warn(rt711->component->dev, "Wrong JD source\n"); in rt711_sdca_jack_init()
487 sdw_write_no_pm(rt711->slave, SDW_SCP_SDCA_INTMASK1, SDW_SCP_SDCA_INTMASK_SDCA_0); in rt711_sdca_jack_init()
489 sdw_write_no_pm(rt711->slave, SDW_SCP_SDCA_INTMASK2, SDW_SCP_SDCA_INTMASK_SDCA_8); in rt711_sdca_jack_init()
490 dev_dbg(&rt711->slave->dev, "in %s enable\n", __func__); in rt711_sdca_jack_init()
496 dev_dbg(&rt711->slave->dev, "in %s disable\n", __func__); in rt711_sdca_jack_init()
499 mutex_unlock(&rt711->calibrate_mutex); in rt711_sdca_jack_init()
508 rt711->hs_jack = hs_jack; in rt711_sdca_set_jack_detect()
511 if (!rt711->first_hw_init) in rt711_sdca_set_jack_detect()
514 ret = pm_runtime_resume_and_get(component->dev); in rt711_sdca_set_jack_detect()
516 if (ret != -EACCES) { in rt711_sdca_set_jack_detect()
517 dev_err(component->dev, "%s: failed to resume %d\n", __func__, ret); in rt711_sdca_set_jack_detect()
522 dev_dbg(component->dev, "%s: skipping jack init for now\n", __func__); in rt711_sdca_set_jack_detect()
528 pm_runtime_mark_last_busy(component->dev); in rt711_sdca_set_jack_detect()
529 pm_runtime_put_autosuspend(component->dev); in rt711_sdca_set_jack_detect()
540 (struct soc_mixer_control *)kcontrol->private_value; in rt711_sdca_set_gain_put()
546 if (strstr(ucontrol->id.name, "FU1E Capture Volume") || in rt711_sdca_set_gain_put()
547 strstr(ucontrol->id.name, "FU0F Capture Volume")) in rt711_sdca_set_gain_put()
550 regmap_read(rt711->mbq_regmap, mc->reg, &lvalue); in rt711_sdca_set_gain_put()
551 regmap_read(rt711->mbq_regmap, mc->rreg, &rvalue); in rt711_sdca_set_gain_put()
555 gain_l_val = ucontrol->value.integer.value[0]; in rt711_sdca_set_gain_put()
556 if (gain_l_val > mc->max) in rt711_sdca_set_gain_put()
557 gain_l_val = mc->max; in rt711_sdca_set_gain_put()
560 if (mc->shift == 8) /* boost gain */ in rt711_sdca_set_gain_put()
561 gain_l_val = (gain_l_val * 10) << mc->shift; in rt711_sdca_set_gain_put()
563 if (adc_vol_flag && gain_l_val > mc->shift) in rt711_sdca_set_gain_put()
564 gain_l_val = (gain_l_val - mc->shift) * 75; in rt711_sdca_set_gain_put()
566 gain_l_val = (mc->shift - gain_l_val) * 75; in rt711_sdca_set_gain_put()
569 if (!(adc_vol_flag && read_l > mc->shift)) { in rt711_sdca_set_gain_put()
577 gain_r_val = ucontrol->value.integer.value[1]; in rt711_sdca_set_gain_put()
578 if (gain_r_val > mc->max) in rt711_sdca_set_gain_put()
579 gain_r_val = mc->max; in rt711_sdca_set_gain_put()
582 if (mc->shift == 8) /* boost gain */ in rt711_sdca_set_gain_put()
583 gain_r_val = (gain_r_val * 10) << mc->shift; in rt711_sdca_set_gain_put()
585 if (adc_vol_flag && gain_r_val > mc->shift) in rt711_sdca_set_gain_put()
586 gain_r_val = (gain_r_val - mc->shift) * 75; in rt711_sdca_set_gain_put()
588 gain_r_val = (mc->shift - gain_r_val) * 75; in rt711_sdca_set_gain_put()
591 if (!(adc_vol_flag && read_r > mc->shift)) { in rt711_sdca_set_gain_put()
605 regmap_write(rt711->mbq_regmap, mc->reg, gain_l_val); in rt711_sdca_set_gain_put()
608 regmap_write(rt711->mbq_regmap, mc->rreg, gain_r_val); in rt711_sdca_set_gain_put()
610 regmap_read(rt711->mbq_regmap, mc->reg, &read_l); in rt711_sdca_set_gain_put()
611 regmap_read(rt711->mbq_regmap, mc->rreg, &read_r); in rt711_sdca_set_gain_put()
616 return i == 3 ? -EIO : changed; in rt711_sdca_set_gain_put()
625 (struct soc_mixer_control *)kcontrol->private_value; in rt711_sdca_set_gain_get()
629 if (strstr(ucontrol->id.name, "FU1E Capture Volume") || in rt711_sdca_set_gain_get()
630 strstr(ucontrol->id.name, "FU0F Capture Volume")) in rt711_sdca_set_gain_get()
633 regmap_read(rt711->mbq_regmap, mc->reg, &read_l); in rt711_sdca_set_gain_get()
634 regmap_read(rt711->mbq_regmap, mc->rreg, &read_r); in rt711_sdca_set_gain_get()
637 if (mc->shift == 8) /* boost gain */ in rt711_sdca_set_gain_get()
638 ctl_l = (read_l >> mc->shift) / 10; in rt711_sdca_set_gain_get()
642 ctl_l = 0xffff & ~(read_l - 1); in rt711_sdca_set_gain_get()
649 ctl_l = mc->shift - (ctl_l / 75); in rt711_sdca_set_gain_get()
651 ctl_l = mc->shift + (ctl_l / 75); in rt711_sdca_set_gain_get()
653 ctl_l = mc->max - (ctl_l / 75); in rt711_sdca_set_gain_get()
658 if (mc->shift == 8) /* boost gain */ in rt711_sdca_set_gain_get()
659 ctl_r = (read_r >> mc->shift) / 10; in rt711_sdca_set_gain_get()
663 ctl_r = 0xffff & ~(read_r - 1); in rt711_sdca_set_gain_get()
670 ctl_r = mc->shift - (ctl_r / 75); in rt711_sdca_set_gain_get()
672 ctl_r = mc->shift + (ctl_r / 75); in rt711_sdca_set_gain_get()
674 ctl_r = mc->max - (ctl_r / 75); in rt711_sdca_set_gain_get()
679 ucontrol->value.integer.value[0] = ctl_l; in rt711_sdca_set_gain_get()
680 ucontrol->value.integer.value[1] = ctl_r; in rt711_sdca_set_gain_get()
690 ch_l = (rt711->fu0f_dapm_mute || rt711->fu0f_mixer_l_mute) ? 0x01 : 0x00; in rt711_sdca_set_fu0f_capture_ctl()
691 ch_r = (rt711->fu0f_dapm_mute || rt711->fu0f_mixer_r_mute) ? 0x01 : 0x00; in rt711_sdca_set_fu0f_capture_ctl()
693 err = regmap_write(rt711->regmap, in rt711_sdca_set_fu0f_capture_ctl()
699 err = regmap_write(rt711->regmap, in rt711_sdca_set_fu0f_capture_ctl()
713 ch_l = (rt711->fu1e_dapm_mute || rt711->fu1e_mixer_l_mute) ? 0x01 : 0x00; in rt711_sdca_set_fu1e_capture_ctl()
714 ch_r = (rt711->fu1e_dapm_mute || rt711->fu1e_mixer_r_mute) ? 0x01 : 0x00; in rt711_sdca_set_fu1e_capture_ctl()
716 err = regmap_write(rt711->regmap, in rt711_sdca_set_fu1e_capture_ctl()
722 err = regmap_write(rt711->regmap, in rt711_sdca_set_fu1e_capture_ctl()
737 ucontrol->value.integer.value[0] = !rt711->fu1e_mixer_l_mute; in rt711_sdca_fu1e_capture_get()
738 ucontrol->value.integer.value[1] = !rt711->fu1e_mixer_r_mute; in rt711_sdca_fu1e_capture_get()
749 if (rt711->fu1e_mixer_l_mute != !ucontrol->value.integer.value[0] || in rt711_sdca_fu1e_capture_put()
750 rt711->fu1e_mixer_r_mute != !ucontrol->value.integer.value[1]) in rt711_sdca_fu1e_capture_put()
753 rt711->fu1e_mixer_l_mute = !ucontrol->value.integer.value[0]; in rt711_sdca_fu1e_capture_put()
754 rt711->fu1e_mixer_r_mute = !ucontrol->value.integer.value[1]; in rt711_sdca_fu1e_capture_put()
768 ucontrol->value.integer.value[0] = !rt711->fu0f_mixer_l_mute; in rt711_sdca_fu0f_capture_get()
769 ucontrol->value.integer.value[1] = !rt711->fu0f_mixer_r_mute; in rt711_sdca_fu0f_capture_get()
780 if (rt711->fu0f_mixer_l_mute != !ucontrol->value.integer.value[0] || in rt711_sdca_fu0f_capture_put()
781 rt711->fu0f_mixer_r_mute != !ucontrol->value.integer.value[1]) in rt711_sdca_fu0f_capture_put()
784 rt711->fu0f_mixer_l_mute = !ucontrol->value.integer.value[0]; in rt711_sdca_fu0f_capture_put()
785 rt711->fu0f_mixer_r_mute = !ucontrol->value.integer.value[1]; in rt711_sdca_fu0f_capture_put()
793 static const DECLARE_TLV_DB_SCALE(out_vol_tlv, -6525, 75, 0);
794 static const DECLARE_TLV_DB_SCALE(in_vol_tlv, -1725, 75, 0);
837 if (strstr(ucontrol->id.name, "ADC 22 Mux")) in rt711_sdca_mux_get()
839 else if (strstr(ucontrol->id.name, "ADC 23 Mux")) in rt711_sdca_mux_get()
842 return -EINVAL; in rt711_sdca_mux_get()
847 ucontrol->value.enumerated.item[0] = (val >> mask_sft) & 0x7; in rt711_sdca_mux_get()
860 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value; in rt711_sdca_mux_put()
861 unsigned int *item = ucontrol->value.enumerated.item; in rt711_sdca_mux_put()
864 if (item[0] >= e->items) in rt711_sdca_mux_put()
865 return -EINVAL; in rt711_sdca_mux_put()
867 if (strstr(ucontrol->id.name, "ADC 22 Mux")) in rt711_sdca_mux_put()
869 else if (strstr(ucontrol->id.name, "ADC 23 Mux")) in rt711_sdca_mux_put()
872 return -EINVAL; in rt711_sdca_mux_put()
874 val = snd_soc_enum_item_to_val(e, item[0]) << e->shift_l; in rt711_sdca_mux_put()
921 snd_soc_dapm_to_component(w->dapm); in rt711_sdca_fu05_event()
927 regmap_write(rt711->regmap, in rt711_sdca_fu05_event()
931 regmap_write(rt711->regmap, in rt711_sdca_fu05_event()
937 regmap_write(rt711->regmap, in rt711_sdca_fu05_event()
941 regmap_write(rt711->regmap, in rt711_sdca_fu05_event()
954 snd_soc_dapm_to_component(w->dapm); in rt711_sdca_fu0f_event()
959 rt711->fu0f_dapm_mute = false; in rt711_sdca_fu0f_event()
963 rt711->fu0f_dapm_mute = true; in rt711_sdca_fu0f_event()
974 snd_soc_dapm_to_component(w->dapm); in rt711_sdca_fu1e_event()
979 rt711->fu1e_dapm_mute = false; in rt711_sdca_fu1e_event()
983 rt711->fu1e_dapm_mute = true; in rt711_sdca_fu1e_event()
994 snd_soc_dapm_to_component(w->dapm); in rt711_sdca_pde28_event()
1000 regmap_write(rt711->regmap, in rt711_sdca_pde28_event()
1006 regmap_write(rt711->regmap, in rt711_sdca_pde28_event()
1019 snd_soc_dapm_to_component(w->dapm); in rt711_sdca_pde29_event()
1025 regmap_write(rt711->regmap, in rt711_sdca_pde29_event()
1031 regmap_write(rt711->regmap, in rt711_sdca_pde29_event()
1044 snd_soc_dapm_to_component(w->dapm); in rt711_sdca_pde2a_event()
1050 regmap_write(rt711->regmap, in rt711_sdca_pde2a_event()
1056 regmap_write(rt711->regmap, in rt711_sdca_pde2a_event()
1069 snd_soc_dapm_to_component(w->dapm); in rt711_sdca_line1_power_event()
1075 regmap_read(rt711->regmap, in rt711_sdca_line1_power_event()
1079 regmap_write(rt711->regmap, in rt711_sdca_line1_power_event()
1083 regmap_write(rt711->regmap, in rt711_sdca_line1_power_event()
1089 regmap_write(rt711->regmap, in rt711_sdca_line1_power_event()
1094 regmap_write(rt711->regmap, in rt711_sdca_line1_power_event()
1108 snd_soc_dapm_to_component(w->dapm); in rt711_sdca_line2_power_event()
1114 regmap_write(rt711->regmap, in rt711_sdca_line2_power_event()
1118 regmap_write(rt711->regmap, in rt711_sdca_line2_power_event()
1124 regmap_write(rt711->regmap, in rt711_sdca_line2_power_event()
1128 regmap_write(rt711->regmap, in rt711_sdca_line2_power_event()
1209 device_property_read_u32(dev, "realtek,jd-src", &rt711->jd_src); in rt711_sdca_parse_dt()
1219 rt711_sdca_parse_dt(rt711, &rt711->slave->dev); in rt711_sdca_probe()
1220 rt711->component = component; in rt711_sdca_probe()
1222 if (!rt711->first_hw_init) in rt711_sdca_probe()
1225 ret = pm_runtime_resume(component->dev); in rt711_sdca_probe()
1226 if (ret < 0 && ret != -EACCES) in rt711_sdca_probe()
1262 struct snd_soc_component *component = dai->component; in rt711_sdca_pcm_hw_params()
1270 dev_dbg(dai->dev, "%s %s", __func__, dai->name); in rt711_sdca_pcm_hw_params()
1274 return -EINVAL; in rt711_sdca_pcm_hw_params()
1276 if (!rt711->slave) in rt711_sdca_pcm_hw_params()
1277 return -EINVAL; in rt711_sdca_pcm_hw_params()
1282 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) { in rt711_sdca_pcm_hw_params()
1285 if (dai->id == RT711_AIF1) in rt711_sdca_pcm_hw_params()
1287 else if (dai->id == RT711_AIF2) in rt711_sdca_pcm_hw_params()
1290 return -EINVAL; in rt711_sdca_pcm_hw_params()
1293 retval = sdw_stream_add_slave(rt711->slave, &stream_config, in rt711_sdca_pcm_hw_params()
1296 dev_err(dai->dev, "Unable to configure port\n"); in rt711_sdca_pcm_hw_params()
1301 dev_err(component->dev, "Unsupported channels %d\n", in rt711_sdca_pcm_hw_params()
1303 return -EINVAL; in rt711_sdca_pcm_hw_params()
1321 dev_err(component->dev, "Rate %d is not supported\n", in rt711_sdca_pcm_hw_params()
1323 return -EINVAL; in rt711_sdca_pcm_hw_params()
1327 regmap_write(rt711->regmap, in rt711_sdca_pcm_hw_params()
1330 regmap_write(rt711->regmap, in rt711_sdca_pcm_hw_params()
1333 regmap_write(rt711->regmap, in rt711_sdca_pcm_hw_params()
1343 struct snd_soc_component *component = dai->component; in rt711_sdca_pcm_hw_free()
1348 if (!rt711->slave) in rt711_sdca_pcm_hw_free()
1349 return -EINVAL; in rt711_sdca_pcm_hw_free()
1351 sdw_stream_remove_slave(rt711->slave, sdw_stream); in rt711_sdca_pcm_hw_free()
1369 .name = "rt711-sdca-aif1",
1388 .name = "rt711-sdca-aif2",
1409 return -ENOMEM; in rt711_sdca_init()
1412 rt711->slave = slave; in rt711_sdca_init()
1413 rt711->regmap = regmap; in rt711_sdca_init()
1414 rt711->mbq_regmap = mbq_regmap; in rt711_sdca_init()
1416 regcache_cache_only(rt711->regmap, true); in rt711_sdca_init()
1417 regcache_cache_only(rt711->mbq_regmap, true); in rt711_sdca_init()
1419 mutex_init(&rt711->calibrate_mutex); in rt711_sdca_init()
1420 mutex_init(&rt711->disable_irq_lock); in rt711_sdca_init()
1422 INIT_DELAYED_WORK(&rt711->jack_detect_work, rt711_sdca_jack_detect_handler); in rt711_sdca_init()
1423 INIT_DELAYED_WORK(&rt711->jack_btn_check_work, rt711_sdca_btn_check_handler); in rt711_sdca_init()
1429 rt711->hw_init = false; in rt711_sdca_init()
1430 rt711->first_hw_init = false; in rt711_sdca_init()
1431 rt711->fu0f_dapm_mute = true; in rt711_sdca_init()
1432 rt711->fu1e_dapm_mute = true; in rt711_sdca_init()
1433 rt711->fu0f_mixer_l_mute = rt711->fu0f_mixer_r_mute = true; in rt711_sdca_init()
1434 rt711->fu1e_mixer_l_mute = rt711->fu1e_mixer_r_mute = true; in rt711_sdca_init()
1436 /* JD source uses JD2 in default */ in rt711_sdca_init()
1437 rt711->jd_src = RT711_JD2; in rt711_sdca_init()
1458 * to make sure the ASoC framework use of pm_runtime_get_sync() does not silently in rt711_sdca_init()
1459 * fail with -EACCESS because of race conditions between card creation and enumeration in rt711_sdca_init()
1474 regmap_write(rt711->regmap, 0x2f5a, 0x01); in rt711_sdca_vd0_io_init()
1482 regmap_write(rt711->regmap, 0x2f50, 0x02); in rt711_sdca_vd0_io_init()
1505 regmap_write(rt711->regmap, 0x2f5a, 0x05); in rt711_sdca_vd1_io_init()
1526 rt711->disable_irq = false; in rt711_sdca_io_init()
1528 if (rt711->hw_init) in rt711_sdca_io_init()
1531 regcache_cache_only(rt711->regmap, false); in rt711_sdca_io_init()
1532 regcache_cache_only(rt711->mbq_regmap, false); in rt711_sdca_io_init()
1534 if (rt711->first_hw_init) { in rt711_sdca_io_init()
1535 regcache_cache_bypass(rt711->regmap, true); in rt711_sdca_io_init()
1536 regcache_cache_bypass(rt711->mbq_regmap, true); in rt711_sdca_io_init()
1543 pm_runtime_set_active(&slave->dev); in rt711_sdca_io_init()
1546 pm_runtime_get_noresume(&slave->dev); in rt711_sdca_io_init()
1551 rt711->hw_ver = val & 0xf; in rt711_sdca_io_init()
1553 if (rt711->hw_ver == RT711_VER_VD0) in rt711_sdca_io_init()
1572 regmap_write(rt711->regmap, in rt711_sdca_io_init()
1579 if (rt711->hs_jack) in rt711_sdca_io_init()
1582 if (rt711->first_hw_init) { in rt711_sdca_io_init()
1583 regcache_cache_bypass(rt711->regmap, false); in rt711_sdca_io_init()
1584 regcache_mark_dirty(rt711->regmap); in rt711_sdca_io_init()
1585 regcache_cache_bypass(rt711->mbq_regmap, false); in rt711_sdca_io_init()
1586 regcache_mark_dirty(rt711->mbq_regmap); in rt711_sdca_io_init()
1588 rt711->first_hw_init = true; in rt711_sdca_io_init()
1591 rt711->hw_init = true; in rt711_sdca_io_init()
1593 pm_runtime_mark_last_busy(&slave->dev); in rt711_sdca_io_init()
1594 pm_runtime_put_autosuspend(&slave->dev); in rt711_sdca_io_init()
1596 dev_dbg(&slave->dev, "%s hw_init complete\n", __func__); in rt711_sdca_io_init()