Lines Matching refs:rt711
84 static int rt711_calibration(struct rt711_priv *rt711) in rt711_calibration() argument
88 struct regmap *regmap = rt711->regmap; in rt711_calibration()
91 mutex_lock(&rt711->calibrate_mutex); in rt711_calibration()
92 regmap_write(rt711->regmap, in rt711_calibration()
128 regmap_write(rt711->regmap, in rt711_calibration()
130 mutex_unlock(&rt711->calibrate_mutex); in rt711_calibration()
136 static unsigned int rt711_button_detect(struct rt711_priv *rt711) in rt711_button_detect() argument
141 ret = rt711_index_read(rt711->regmap, RT711_VENDOR_REG, in rt711_button_detect()
145 ret = rt711_index_read(rt711->regmap, RT711_VENDOR_REG, in rt711_button_detect()
183 static int rt711_headset_detect(struct rt711_priv *rt711) in rt711_headset_detect() argument
189 ret = rt711_index_read(rt711->regmap, RT711_VENDOR_REG, in rt711_headset_detect()
199 ret = rt711_index_read(rt711->regmap, RT711_VENDOR_REG, in rt711_headset_detect()
205 ret = regmap_read(rt711->regmap, reg, &jack_status); in rt711_headset_detect()
216 rt711->jack_type = SND_JACK_HEADPHONE; in rt711_headset_detect()
219 rt711->jack_type = SND_JACK_HEADSET; in rt711_headset_detect()
237 struct rt711_priv *rt711 = in rt711_jack_detect_handler() local
242 if (!rt711->hs_jack) in rt711_jack_detect_handler()
245 if (!rt711->component->card->instantiated) in rt711_jack_detect_handler()
249 ret = regmap_read(rt711->regmap, reg, &jack_status); in rt711_jack_detect_handler()
256 if (rt711->jack_type == 0) { in rt711_jack_detect_handler()
257 ret = rt711_headset_detect(rt711); in rt711_jack_detect_handler()
260 if (rt711->jack_type == SND_JACK_HEADSET) in rt711_jack_detect_handler()
261 btn_type = rt711_button_detect(rt711); in rt711_jack_detect_handler()
262 } else if (rt711->jack_type == SND_JACK_HEADSET) { in rt711_jack_detect_handler()
264 btn_type = rt711_button_detect(rt711); in rt711_jack_detect_handler()
268 rt711->jack_type = 0; in rt711_jack_detect_handler()
271 dev_dbg(&rt711->slave->dev, in rt711_jack_detect_handler()
272 "in %s, jack_type=0x%x\n", __func__, rt711->jack_type); in rt711_jack_detect_handler()
273 dev_dbg(&rt711->slave->dev, in rt711_jack_detect_handler()
276 snd_soc_jack_report(rt711->hs_jack, rt711->jack_type | btn_type, in rt711_jack_detect_handler()
283 snd_soc_jack_report(rt711->hs_jack, rt711->jack_type, in rt711_jack_detect_handler()
289 &rt711->jack_btn_check_work, msecs_to_jiffies(200)); in rt711_jack_detect_handler()
300 struct rt711_priv *rt711 = container_of(work, struct rt711_priv, in rt711_btn_check_handler() local
306 ret = regmap_read(rt711->regmap, reg, &jack_status); in rt711_btn_check_handler()
312 if (rt711->jack_type == SND_JACK_HEADSET) { in rt711_btn_check_handler()
314 btn_type = rt711_button_detect(rt711); in rt711_btn_check_handler()
317 rt711->jack_type = 0; in rt711_btn_check_handler()
321 ret = rt711_index_read(rt711->regmap, RT711_VENDOR_REG, in rt711_btn_check_handler()
329 dev_dbg(&rt711->slave->dev, in rt711_btn_check_handler()
331 snd_soc_jack_report(rt711->hs_jack, rt711->jack_type | btn_type, in rt711_btn_check_handler()
338 snd_soc_jack_report(rt711->hs_jack, rt711->jack_type, in rt711_btn_check_handler()
344 &rt711->jack_btn_check_work, msecs_to_jiffies(200)); in rt711_btn_check_handler()
353 static void rt711_jack_init(struct rt711_priv *rt711) in rt711_jack_init() argument
356 snd_soc_component_get_dapm(rt711->component); in rt711_jack_init()
358 mutex_lock(&rt711->calibrate_mutex); in rt711_jack_init()
361 regmap_write(rt711->regmap, in rt711_jack_init()
364 if (rt711->hs_jack) { in rt711_jack_init()
366 regmap_write(rt711->regmap, in rt711_jack_init()
368 regmap_write(rt711->regmap, in rt711_jack_init()
370 regmap_write(rt711->regmap, in rt711_jack_init()
372 rt711_index_write(rt711->regmap, RT711_VENDOR_REG, in rt711_jack_init()
374 rt711_index_write(rt711->regmap, RT711_VENDOR_REG, in rt711_jack_init()
377 switch (rt711->jd_src) { in rt711_jack_init()
382 rt711_index_update_bits(rt711->regmap, RT711_VENDOR_REG, in rt711_jack_init()
387 rt711_index_update_bits(rt711->regmap, RT711_VENDOR_REG, in rt711_jack_init()
393 dev_warn(rt711->component->dev, "Wrong JD source\n"); in rt711_jack_init()
397 dev_dbg(&rt711->slave->dev, "in %s enable\n", __func__); in rt711_jack_init()
400 &rt711->jack_detect_work, msecs_to_jiffies(250)); in rt711_jack_init()
402 regmap_write(rt711->regmap, in rt711_jack_init()
404 regmap_write(rt711->regmap, in rt711_jack_init()
406 regmap_write(rt711->regmap, in rt711_jack_init()
409 dev_dbg(&rt711->slave->dev, "in %s disable\n", __func__); in rt711_jack_init()
414 regmap_write(rt711->regmap, in rt711_jack_init()
416 mutex_unlock(&rt711->calibrate_mutex); in rt711_jack_init()
422 struct rt711_priv *rt711 = snd_soc_component_get_drvdata(component); in rt711_set_jack_detect() local
424 rt711->hs_jack = hs_jack; in rt711_set_jack_detect()
426 if (!rt711->hw_init) { in rt711_set_jack_detect()
427 dev_dbg(&rt711->slave->dev, in rt711_set_jack_detect()
432 rt711_jack_init(rt711); in rt711_set_jack_detect()
437 static void rt711_get_gain(struct rt711_priv *rt711, unsigned int addr_h, in rt711_get_gain() argument
443 regmap_read(rt711->regmap, addr_l, r_val); in rt711_get_gain()
448 regmap_read(rt711->regmap, addr_h, l_val); in rt711_get_gain()
460 struct rt711_priv *rt711 = snd_soc_component_get_drvdata(component); in rt711_set_amp_gain_put() local
465 mutex_lock(&rt711->calibrate_mutex); in rt711_set_amp_gain_put()
475 rt711_get_gain(rt711, addr_h, addr_l, val_h, &read_rl, &read_ll); in rt711_set_amp_gain_put()
496 regmap_write(rt711->regmap, in rt711_set_amp_gain_put()
522 regmap_write(rt711->regmap, in rt711_set_amp_gain_put()
524 regmap_write(rt711->regmap, in rt711_set_amp_gain_put()
529 regmap_write(rt711->regmap, in rt711_set_amp_gain_put()
534 regmap_write(rt711->regmap, in rt711_set_amp_gain_put()
543 rt711_get_gain(rt711, addr_h, addr_l, val_h, in rt711_set_amp_gain_put()
550 regmap_write(rt711->regmap, in rt711_set_amp_gain_put()
553 mutex_unlock(&rt711->calibrate_mutex); in rt711_set_amp_gain_put()
561 struct rt711_priv *rt711 = snd_soc_component_get_drvdata(component); in rt711_set_amp_gain_get() local
575 rt711_get_gain(rt711, addr_h, addr_l, val_h, &read_rl, &read_ll); in rt711_set_amp_gain_get()
636 struct rt711_priv *rt711 = snd_soc_component_get_drvdata(component); in rt711_mux_get() local
649 ret = regmap_read(rt711->regmap, reg, &val); in rt711_mux_get()
668 struct rt711_priv *rt711 = snd_soc_component_get_drvdata(component); in rt711_mux_put() local
688 ret = regmap_read(rt711->regmap, reg, &val2); in rt711_mux_put()
702 regmap_write(rt711->regmap, reg, val); in rt711_mux_put()
737 struct rt711_priv *rt711 = snd_soc_component_get_drvdata(component); in rt711_dac_surround_event() local
743 regmap_write(rt711->regmap, in rt711_dac_surround_event()
747 regmap_write(rt711->regmap, in rt711_dac_surround_event()
752 regmap_write(rt711->regmap, in rt711_dac_surround_event()
756 regmap_write(rt711->regmap, in rt711_dac_surround_event()
768 struct rt711_priv *rt711 = snd_soc_component_get_drvdata(component); in rt711_adc_09_event() local
772 regmap_write(rt711->regmap, in rt711_adc_09_event()
776 regmap_write(rt711->regmap, in rt711_adc_09_event()
788 struct rt711_priv *rt711 = snd_soc_component_get_drvdata(component); in rt711_adc_08_event() local
792 regmap_write(rt711->regmap, in rt711_adc_08_event()
796 regmap_write(rt711->regmap, in rt711_adc_08_event()
854 struct rt711_priv *rt711 = snd_soc_component_get_drvdata(component); in rt711_set_bias_level() local
859 regmap_write(rt711->regmap, in rt711_set_bias_level()
866 mutex_lock(&rt711->calibrate_mutex); in rt711_set_bias_level()
867 regmap_write(rt711->regmap, in rt711_set_bias_level()
870 mutex_unlock(&rt711->calibrate_mutex); in rt711_set_bias_level()
880 static int rt711_parse_dt(struct rt711_priv *rt711, struct device *dev) in rt711_parse_dt() argument
883 &rt711->jd_src); in rt711_parse_dt()
890 struct rt711_priv *rt711 = snd_soc_component_get_drvdata(component); in rt711_probe() local
892 rt711_parse_dt(rt711, &rt711->slave->dev); in rt711_probe()
893 rt711->component = component; in rt711_probe()
900 struct rt711_priv *rt711 = snd_soc_component_get_drvdata(component); in rt711_remove() local
902 regcache_cache_only(rt711->regmap, true); in rt711_remove()
956 struct rt711_priv *rt711 = snd_soc_component_get_drvdata(component); in rt711_pcm_hw_params() local
970 if (!rt711->slave) in rt711_pcm_hw_params()
996 retval = sdw_stream_add_slave(rt711->slave, &stream_config, in rt711_pcm_hw_params()
1033 regmap_write(rt711->regmap, RT711_DAC_FORMAT_H, val); in rt711_pcm_hw_params()
1034 regmap_write(rt711->regmap, RT711_ADC1_FORMAT_H, val); in rt711_pcm_hw_params()
1035 regmap_write(rt711->regmap, RT711_ADC2_FORMAT_H, val); in rt711_pcm_hw_params()
1044 struct rt711_priv *rt711 = snd_soc_component_get_drvdata(component); in rt711_pcm_hw_free() local
1048 if (!rt711->slave) in rt711_pcm_hw_free()
1051 sdw_stream_remove_slave(rt711->slave, stream->sdw_stream); in rt711_pcm_hw_free()
1110 struct rt711_priv *rt711 = dev_get_drvdata(dev); in rt711_clock_config() local
1113 clk_freq = (rt711->params.curr_dr_freq >> 1); in rt711_clock_config()
1138 regmap_write(rt711->regmap, 0xe0, value); in rt711_clock_config()
1139 regmap_write(rt711->regmap, 0xf0, value); in rt711_clock_config()
1148 struct rt711_priv *rt711 = in rt711_calibration_work() local
1151 rt711_calibration(rt711); in rt711_calibration_work()
1157 struct rt711_priv *rt711; in rt711_init() local
1160 rt711 = devm_kzalloc(dev, sizeof(*rt711), GFP_KERNEL); in rt711_init()
1161 if (!rt711) in rt711_init()
1164 dev_set_drvdata(dev, rt711); in rt711_init()
1165 rt711->slave = slave; in rt711_init()
1166 rt711->sdw_regmap = sdw_regmap; in rt711_init()
1167 rt711->regmap = regmap; in rt711_init()
1173 rt711->hw_init = false; in rt711_init()
1174 rt711->first_hw_init = false; in rt711_init()
1177 rt711->jd_src = RT711_JD2; in rt711_init()
1191 struct rt711_priv *rt711 = dev_get_drvdata(dev); in rt711_io_init() local
1193 if (rt711->hw_init) in rt711_io_init()
1196 if (rt711->first_hw_init) { in rt711_io_init()
1197 regcache_cache_only(rt711->regmap, false); in rt711_io_init()
1198 regcache_cache_bypass(rt711->regmap, true); in rt711_io_init()
1204 if (!rt711->first_hw_init) { in rt711_io_init()
1220 rt711_reset(rt711->regmap); in rt711_io_init()
1223 regmap_write(rt711->regmap, RT711_SET_AUDIO_POWER_STATE, AC_PWRST_D0); in rt711_io_init()
1226 regmap_write(rt711->regmap, RT711_SET_PIN_MIC2, 0x25); in rt711_io_init()
1227 regmap_write(rt711->regmap, RT711_SET_PIN_HP, 0xc0); in rt711_io_init()
1228 regmap_write(rt711->regmap, RT711_SET_PIN_DMIC1, 0x20); in rt711_io_init()
1229 regmap_write(rt711->regmap, RT711_SET_PIN_DMIC2, 0x20); in rt711_io_init()
1230 regmap_write(rt711->regmap, RT711_SET_PIN_LINE1, 0x20); in rt711_io_init()
1231 regmap_write(rt711->regmap, RT711_SET_PIN_LINE2, 0x20); in rt711_io_init()
1234 regmap_write(rt711->regmap, RT711_SET_GAIN_HP_H, 0xa080); in rt711_io_init()
1235 regmap_write(rt711->regmap, RT711_SET_GAIN_HP_H, 0x9080); in rt711_io_init()
1236 regmap_write(rt711->regmap, RT711_SET_GAIN_ADC2_H, 0x6080); in rt711_io_init()
1237 regmap_write(rt711->regmap, RT711_SET_GAIN_ADC2_H, 0x5080); in rt711_io_init()
1238 regmap_write(rt711->regmap, RT711_SET_GAIN_ADC1_H, 0x6080); in rt711_io_init()
1239 regmap_write(rt711->regmap, RT711_SET_GAIN_ADC1_H, 0x5080); in rt711_io_init()
1242 regmap_write(rt711->regmap, 0x4f12, 0x91); in rt711_io_init()
1243 regmap_write(rt711->regmap, 0x4e12, 0xd6); in rt711_io_init()
1244 regmap_write(rt711->regmap, 0x4d12, 0x11); in rt711_io_init()
1245 regmap_write(rt711->regmap, 0x4c12, 0x20); in rt711_io_init()
1246 regmap_write(rt711->regmap, 0x4f13, 0x91); in rt711_io_init()
1247 regmap_write(rt711->regmap, 0x4e13, 0xd6); in rt711_io_init()
1248 regmap_write(rt711->regmap, 0x4d13, 0x11); in rt711_io_init()
1249 regmap_write(rt711->regmap, 0x4c13, 0x21); in rt711_io_init()
1250 regmap_write(rt711->regmap, 0x4c21, 0xf0); in rt711_io_init()
1251 regmap_write(rt711->regmap, 0x4d21, 0x11); in rt711_io_init()
1252 regmap_write(rt711->regmap, 0x4e21, 0x11); in rt711_io_init()
1253 regmap_write(rt711->regmap, 0x4f21, 0x01); in rt711_io_init()
1256 rt711_index_write(rt711->regmap, RT711_VENDOR_REG, in rt711_io_init()
1260 rt711_index_write(rt711->regmap, RT711_VENDOR_REG, in rt711_io_init()
1262 rt711_index_write(rt711->regmap, RT711_VENDOR_REG, in rt711_io_init()
1264 rt711_index_write(rt711->regmap, RT711_VENDOR_REG, in rt711_io_init()
1266 rt711_index_write(rt711->regmap, RT711_VENDOR_REG, in rt711_io_init()
1270 regmap_write(rt711->regmap, RT711_SET_AUDIO_POWER_STATE, AC_PWRST_D3); in rt711_io_init()
1272 if (rt711->first_hw_init) in rt711_io_init()
1273 rt711_calibration(rt711); in rt711_io_init()
1275 INIT_DELAYED_WORK(&rt711->jack_detect_work, in rt711_io_init()
1277 INIT_DELAYED_WORK(&rt711->jack_btn_check_work, in rt711_io_init()
1279 mutex_init(&rt711->calibrate_mutex); in rt711_io_init()
1280 INIT_WORK(&rt711->calibration_work, rt711_calibration_work); in rt711_io_init()
1281 schedule_work(&rt711->calibration_work); in rt711_io_init()
1288 if (rt711->hs_jack) in rt711_io_init()
1289 rt711_jack_init(rt711); in rt711_io_init()
1291 if (rt711->first_hw_init) { in rt711_io_init()
1292 regcache_cache_bypass(rt711->regmap, false); in rt711_io_init()
1293 regcache_mark_dirty(rt711->regmap); in rt711_io_init()
1295 rt711->first_hw_init = true; in rt711_io_init()
1298 rt711->hw_init = true; in rt711_io_init()