Lines Matching refs:rt1320
544 static int rt1320_pde_transition_delay(struct rt1320_sdw_priv *rt1320, unsigned char func, in rt1320_pde_transition_delay() argument
549 pm_runtime_mark_last_busy(&rt1320->sdw_slave->dev); in rt1320_pde_transition_delay()
553 regmap_read(rt1320->regmap, in rt1320_pde_transition_delay()
562 dev_warn(&rt1320->sdw_slave->dev, "%s PDE to %s is NOT ready", __func__, ps?"PS3":"PS0"); in rt1320_pde_transition_delay()
573 static void rt1320_load_mcu_patch(struct rt1320_sdw_priv *rt1320) in rt1320_load_mcu_patch() argument
575 struct sdw_slave *slave = rt1320->sdw_slave; in rt1320_load_mcu_patch()
582 if (rt1320->version_id <= RT1320_VB) in rt1320_load_mcu_patch()
591 regmap_write(rt1320->regmap, 0xc598, 0x00); in rt1320_load_mcu_patch()
592 regmap_write(rt1320->regmap, 0x10007000, 0x67); in rt1320_load_mcu_patch()
593 regmap_write(rt1320->regmap, 0x10007001, 0x80); in rt1320_load_mcu_patch()
594 regmap_write(rt1320->regmap, 0x10007002, 0x00); in rt1320_load_mcu_patch()
595 regmap_write(rt1320->regmap, 0x10007003, 0x00); in rt1320_load_mcu_patch()
613 regmap_write(rt1320->regmap, addr, val); in rt1320_load_mcu_patch()
621 static void rt1320_vab_preset(struct rt1320_sdw_priv *rt1320) in rt1320_vab_preset() argument
631 rt1320_load_mcu_patch(rt1320); in rt1320_vab_preset()
633 regmap_write(rt1320->regmap, reg, val); in rt1320_vab_preset()
639 static void rt1320_vc_preset(struct rt1320_sdw_priv *rt1320) in rt1320_vc_preset() argument
641 struct sdw_slave *slave = rt1320->sdw_slave; in rt1320_vc_preset()
650 rt1320_load_mcu_patch(rt1320); in rt1320_vc_preset()
656 regmap_read(rt1320->regmap, RT1320_KR0_INT_READY, &tmp); in rt1320_vc_preset()
666 regmap_write(rt1320->regmap, reg, val); in rt1320_vc_preset()
671 rt1320_pde_transition_delay(rt1320, FUNC_NUM_AMP, RT1320_SDCA_ENT_PDE23, val); in rt1320_vc_preset()
677 struct rt1320_sdw_priv *rt1320 = dev_get_drvdata(dev); in rt1320_io_init() local
680 if (rt1320->hw_init) in rt1320_io_init()
683 regcache_cache_only(rt1320->regmap, false); in rt1320_io_init()
684 regcache_cache_only(rt1320->mbq_regmap, false); in rt1320_io_init()
685 if (rt1320->first_hw_init) { in rt1320_io_init()
686 regcache_cache_bypass(rt1320->regmap, true); in rt1320_io_init()
687 regcache_cache_bypass(rt1320->mbq_regmap, true); in rt1320_io_init()
698 if (rt1320->version_id < 0) { in rt1320_io_init()
699 regmap_read(rt1320->regmap, RT1320_DEV_VERSION_ID_1, &val); in rt1320_io_init()
700 rt1320->version_id = val; in rt1320_io_init()
703 regmap_read(rt1320->regmap, in rt1320_io_init()
709 if (rt1320->version_id < RT1320_VC) in rt1320_io_init()
710 rt1320_vab_preset(rt1320); in rt1320_io_init()
712 rt1320_vc_preset(rt1320); in rt1320_io_init()
714 regmap_write(rt1320->regmap, in rt1320_io_init()
718 if (!rt1320->first_hw_init && rt1320->version_id == RT1320_VA) { in rt1320_io_init()
719 regmap_write(rt1320->regmap, SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT_PDE23, in rt1320_io_init()
721 regmap_read(rt1320->regmap, RT1320_HIFI_VER_0, &val); in rt1320_io_init()
722 regmap_read(rt1320->regmap, RT1320_HIFI_VER_1, &tmp); in rt1320_io_init()
724 regmap_read(rt1320->regmap, RT1320_HIFI_VER_2, &tmp); in rt1320_io_init()
726 regmap_read(rt1320->regmap, RT1320_HIFI_VER_3, &tmp); in rt1320_io_init()
734 rt1320->version_id = RT1320_VB; in rt1320_io_init()
735 regmap_write(rt1320->regmap, SDW_SDCA_CTL(FUNC_NUM_AMP, RT1320_SDCA_ENT_PDE23, in rt1320_io_init()
738 dev_dbg(dev, "%s version_id=%d\n", __func__, rt1320->version_id); in rt1320_io_init()
740 if (rt1320->first_hw_init) { in rt1320_io_init()
741 regcache_cache_bypass(rt1320->regmap, false); in rt1320_io_init()
742 regcache_cache_bypass(rt1320->mbq_regmap, false); in rt1320_io_init()
743 regcache_mark_dirty(rt1320->regmap); in rt1320_io_init()
744 regcache_mark_dirty(rt1320->mbq_regmap); in rt1320_io_init()
748 rt1320->first_hw_init = true; in rt1320_io_init()
749 rt1320->hw_init = true; in rt1320_io_init()
761 struct rt1320_sdw_priv *rt1320 = dev_get_drvdata(&slave->dev); in rt1320_update_status() local
764 rt1320->hw_init = false; in rt1320_update_status()
770 if (rt1320->hw_init || status != SDW_SLAVE_ATTACHED) in rt1320_update_status()
782 struct rt1320_sdw_priv *rt1320 = snd_soc_component_get_drvdata(component); in rt1320_pde11_event() local
787 regmap_write(rt1320->regmap, in rt1320_pde11_event()
790 rt1320_pde_transition_delay(rt1320, FUNC_NUM_MIC, RT1320_SDCA_ENT_PDE11, ps0); in rt1320_pde11_event()
793 regmap_write(rt1320->regmap, in rt1320_pde11_event()
796 rt1320_pde_transition_delay(rt1320, FUNC_NUM_MIC, RT1320_SDCA_ENT_PDE11, ps3); in rt1320_pde11_event()
810 struct rt1320_sdw_priv *rt1320 = snd_soc_component_get_drvdata(component); in rt1320_pde23_event() local
815 regmap_write(rt1320->regmap, in rt1320_pde23_event()
818 rt1320_pde_transition_delay(rt1320, FUNC_NUM_AMP, RT1320_SDCA_ENT_PDE23, ps0); in rt1320_pde23_event()
821 regmap_write(rt1320->regmap, in rt1320_pde23_event()
824 rt1320_pde_transition_delay(rt1320, FUNC_NUM_AMP, RT1320_SDCA_ENT_PDE23, ps3); in rt1320_pde23_event()
839 struct rt1320_sdw_priv *rt1320 = snd_soc_component_get_drvdata(component); in rt1320_set_gain_put() local
851 regmap_read(rt1320->mbq_regmap, mc->reg, &lvalue); in rt1320_set_gain_put()
852 regmap_read(rt1320->mbq_regmap, mc->rreg, &rvalue); in rt1320_set_gain_put()
872 regmap_write(rt1320->mbq_regmap, mc->reg, gain_l_val); in rt1320_set_gain_put()
874 regmap_write(rt1320->mbq_regmap, mc->rreg, gain_r_val); in rt1320_set_gain_put()
884 regmap_read(rt1320->mbq_regmap, reg_base + i, ®value[i]); in rt1320_set_gain_put()
887 regmap_read(rt1320->mbq_regmap, reg_base + i - 2, ®value[i]); in rt1320_set_gain_put()
906 err = regmap_write(rt1320->mbq_regmap, reg_base + i, gain_val[i]); in rt1320_set_gain_put()
909 err = regmap_write(rt1320->mbq_regmap, reg_base + i - 2, gain_val[i]); in rt1320_set_gain_put()
913 dev_err(&rt1320->sdw_slave->dev, "0x%08x can't be set\n", reg_base + i); in rt1320_set_gain_put()
924 struct rt1320_sdw_priv *rt1320 = snd_soc_component_get_drvdata(component); in rt1320_set_gain_get() local
935 regmap_read(rt1320->mbq_regmap, mc->reg, &read_l); in rt1320_set_gain_get()
936 regmap_read(rt1320->mbq_regmap, mc->rreg, &read_r); in rt1320_set_gain_get()
956 regmap_read(rt1320->mbq_regmap, reg_base + i, ®value); in rt1320_set_gain_get()
959 regmap_read(rt1320->mbq_regmap, reg_base + i - 2, ®value); in rt1320_set_gain_get()
969 static int rt1320_set_fu_capture_ctl(struct rt1320_sdw_priv *rt1320) in rt1320_set_fu_capture_ctl() argument
974 for (i = 0; i < ARRAY_SIZE(rt1320->fu_mixer_mute); i++) { in rt1320_set_fu_capture_ctl()
975 ch_mute = (rt1320->fu_dapm_mute || rt1320->fu_mixer_mute[i]) ? 0x01 : 0x00; in rt1320_set_fu_capture_ctl()
978 err = regmap_write(rt1320->regmap, in rt1320_set_fu_capture_ctl()
982 err = regmap_write(rt1320->regmap, in rt1320_set_fu_capture_ctl()
996 struct rt1320_sdw_priv *rt1320 = snd_soc_component_get_drvdata(component); in rt1320_dmic_fu_capture_get() local
1002 ucontrol->value.integer.value[i] = !rt1320->fu_mixer_mute[i]; in rt1320_dmic_fu_capture_get()
1011 struct rt1320_sdw_priv *rt1320 = snd_soc_component_get_drvdata(component); in rt1320_dmic_fu_capture_put() local
1017 if (rt1320->fu_mixer_mute[i] != !ucontrol->value.integer.value[i]) in rt1320_dmic_fu_capture_put()
1019 rt1320->fu_mixer_mute[i] = !ucontrol->value.integer.value[i]; in rt1320_dmic_fu_capture_put()
1022 err = rt1320_set_fu_capture_ctl(rt1320); in rt1320_dmic_fu_capture_put()
1050 struct rt1320_sdw_priv *rt1320 = snd_soc_component_get_drvdata(component); in rt1320_dmic_fu_event() local
1054 rt1320->fu_dapm_mute = false; in rt1320_dmic_fu_event()
1055 rt1320_set_fu_capture_ctl(rt1320); in rt1320_dmic_fu_event()
1058 rt1320->fu_dapm_mute = true; in rt1320_dmic_fu_event()
1059 rt1320_set_fu_capture_ctl(rt1320); in rt1320_dmic_fu_event()
1175 struct rt1320_sdw_priv *rt1320 = in rt1320_sdw_hw_params() local
1190 if (!rt1320->sdw_slave) in rt1320_sdw_hw_params()
1214 retval = sdw_stream_add_slave(rt1320->sdw_slave, &stream_config, in rt1320_sdw_hw_params()
1217 retval = sdw_stream_add_slave(rt1320->sdw_slave, &stream_config, in rt1320_sdw_hw_params()
1254 regmap_write(rt1320->regmap, in rt1320_sdw_hw_params()
1258 regmap_write(rt1320->regmap, in rt1320_sdw_hw_params()
1261 regmap_write(rt1320->regmap, in rt1320_sdw_hw_params()
1273 struct rt1320_sdw_priv *rt1320 = in rt1320_sdw_pcm_hw_free() local
1278 if (!rt1320->sdw_slave) in rt1320_sdw_pcm_hw_free()
1281 sdw_stream_remove_slave(rt1320->sdw_slave, sdw_stream); in rt1320_sdw_pcm_hw_free()
1297 struct rt1320_sdw_priv *rt1320 = snd_soc_component_get_drvdata(component); in rt1320_sdw_component_probe() local
1299 rt1320->component = component; in rt1320_sdw_component_probe()
1301 if (!rt1320->first_hw_init) in rt1320_sdw_component_probe()
1305 dev_dbg(&rt1320->sdw_slave->dev, "%s pm_runtime_resume, ret=%d", __func__, ret); in rt1320_sdw_component_probe()
1373 struct rt1320_sdw_priv *rt1320; in rt1320_sdw_init() local
1376 rt1320 = devm_kzalloc(dev, sizeof(*rt1320), GFP_KERNEL); in rt1320_sdw_init()
1377 if (!rt1320) in rt1320_sdw_init()
1380 dev_set_drvdata(dev, rt1320); in rt1320_sdw_init()
1381 rt1320->sdw_slave = slave; in rt1320_sdw_init()
1382 rt1320->mbq_regmap = mbq_regmap; in rt1320_sdw_init()
1383 rt1320->regmap = regmap; in rt1320_sdw_init()
1385 regcache_cache_only(rt1320->regmap, true); in rt1320_sdw_init()
1386 regcache_cache_only(rt1320->mbq_regmap, true); in rt1320_sdw_init()
1392 rt1320->hw_init = false; in rt1320_sdw_init()
1393 rt1320->first_hw_init = false; in rt1320_sdw_init()
1394 rt1320->version_id = -1; in rt1320_sdw_init()
1395 rt1320->fu_dapm_mute = true; in rt1320_sdw_init()
1396 rt1320->fu_mixer_mute[0] = rt1320->fu_mixer_mute[1] = in rt1320_sdw_init()
1397 rt1320->fu_mixer_mute[2] = rt1320->fu_mixer_mute[3] = true; in rt1320_sdw_init()
1463 struct rt1320_sdw_priv *rt1320 = dev_get_drvdata(dev); in rt1320_dev_suspend() local
1465 if (!rt1320->hw_init) in rt1320_dev_suspend()
1468 regcache_cache_only(rt1320->regmap, true); in rt1320_dev_suspend()
1469 regcache_cache_only(rt1320->mbq_regmap, true); in rt1320_dev_suspend()
1478 struct rt1320_sdw_priv *rt1320 = dev_get_drvdata(dev); in rt1320_dev_resume() local
1481 if (!rt1320->first_hw_init) in rt1320_dev_resume()
1496 regcache_cache_only(rt1320->regmap, false); in rt1320_dev_resume()
1497 regcache_sync(rt1320->regmap); in rt1320_dev_resume()
1498 regcache_cache_only(rt1320->mbq_regmap, false); in rt1320_dev_resume()
1499 regcache_sync(rt1320->mbq_regmap); in rt1320_dev_resume()