Lines Matching refs:rt5682

3 // rt5682-sdw.c  --  RT5682 ALSA SoC audio component driver
31 #include "rt5682.h"
42 struct rt5682_priv *rt5682 = dev_get_drvdata(dev);
45 regmap_write(rt5682->sdw_regmap, RT5682_SDW_CMD, 0);
46 regmap_write(rt5682->sdw_regmap, RT5682_SDW_ADDR_H, (reg >> 8) & 0xff);
47 regmap_write(rt5682->sdw_regmap, RT5682_SDW_ADDR_L, (reg & 0xff));
48 regmap_read(rt5682->sdw_regmap, RT5682_SDW_DATA_H, &data_h);
49 regmap_read(rt5682->sdw_regmap, RT5682_SDW_DATA_L, &data_l);
61 struct rt5682_priv *rt5682 = dev_get_drvdata(dev);
63 regmap_write(rt5682->sdw_regmap, RT5682_SDW_CMD, 1);
64 regmap_write(rt5682->sdw_regmap, RT5682_SDW_ADDR_H, (reg >> 8) & 0xff);
65 regmap_write(rt5682->sdw_regmap, RT5682_SDW_ADDR_L, (reg & 0xff));
66 regmap_write(rt5682->sdw_regmap, RT5682_SDW_DATA_H, (val >> 8) & 0xff);
67 regmap_write(rt5682->sdw_regmap, RT5682_SDW_DATA_L, (val & 0xff));
108 struct rt5682_priv *rt5682 = snd_soc_component_get_drvdata(component);
121 if (!rt5682->slave)
132 retval = sdw_stream_add_slave(rt5682->slave, &stream_config,
208 regmap_update_bits(rt5682->regmap, RT5682_SDW_REF_CLK,
210 regmap_update_bits(rt5682->regmap, RT5682_ADDA_CLK_1,
213 regmap_update_bits(rt5682->regmap, RT5682_SDW_REF_CLK,
215 regmap_update_bits(rt5682->regmap, RT5682_ADDA_CLK_1,
226 struct rt5682_priv *rt5682 = snd_soc_component_get_drvdata(component);
230 if (!rt5682->slave)
233 sdw_stream_remove_slave(rt5682->slave, sdw_stream);
246 .name = "rt5682-aif1",
265 .name = "rt5682-aif2",
277 .name = "rt5682-sdw",
300 struct rt5682_priv *rt5682;
303 rt5682 = devm_kzalloc(dev, sizeof(*rt5682), GFP_KERNEL);
304 if (!rt5682)
307 dev_set_drvdata(dev, rt5682);
308 rt5682->slave = slave;
309 rt5682->sdw_regmap = regmap;
310 rt5682->is_sdw = true;
312 mutex_init(&rt5682->disable_irq_lock);
314 rt5682->regmap = devm_regmap_init(dev, NULL, dev,
316 if (IS_ERR(rt5682->regmap)) {
317 ret = PTR_ERR(rt5682->regmap);
324 ret = rt5682_get_ldo1(rt5682, dev);
328 regcache_cache_only(rt5682->sdw_regmap, true);
329 regcache_cache_only(rt5682->regmap, true);
335 rt5682->hw_init = false;
336 rt5682->first_hw_init = false;
338 mutex_init(&rt5682->calibrate_mutex);
339 INIT_DELAYED_WORK(&rt5682->jack_detect_work,
370 struct rt5682_priv *rt5682 = dev_get_drvdata(dev);
374 rt5682->disable_irq = false;
376 if (rt5682->hw_init)
379 regcache_cache_only(rt5682->sdw_regmap, false);
380 regcache_cache_only(rt5682->regmap, false);
381 if (rt5682->first_hw_init)
382 regcache_cache_bypass(rt5682->regmap, true);
387 if (!rt5682->first_hw_init)
394 regmap_read(rt5682->regmap, RT5682_DEVICE_ID, &val);
397 dev_warn(dev, "Device with ID register %x is not rt5682\n", val);
403 dev_err(dev, "Device with ID register %x is not rt5682\n", val);
408 rt5682_calibrate(rt5682);
410 if (rt5682->first_hw_init) {
411 regcache_cache_bypass(rt5682->regmap, false);
412 regcache_mark_dirty(rt5682->regmap);
413 regcache_sync(rt5682->regmap);
416 regmap_update_bits(rt5682->regmap, RT5682_CBJ_CTRL_2,
422 rt5682_apply_patch_list(rt5682, dev);
424 regmap_write(rt5682->regmap, RT5682_DEPOP_1, 0x0000);
426 regmap_update_bits(rt5682->regmap, RT5682_PWR_ANLG_1,
429 regmap_write(rt5682->regmap, RT5682_MICBIAS_2, 0x0080);
430 regmap_write(rt5682->regmap, RT5682_TEST_MODE_CTRL_1, 0x0000);
431 regmap_update_bits(rt5682->regmap, RT5682_BIAS_CUR_CTRL_8,
433 regmap_update_bits(rt5682->regmap, RT5682_CHARGE_PUMP_1,
435 regmap_update_bits(rt5682->regmap, RT5682_HP_CHARGE_PUMP_1,
439 regmap_write(rt5682->regmap, RT5682_PLL2_INTERNAL, 0xa266);
440 regmap_write(rt5682->regmap, RT5682_PLL2_CTRL_1, 0x1700);
441 regmap_write(rt5682->regmap, RT5682_PLL2_CTRL_2, 0x0006);
442 regmap_write(rt5682->regmap, RT5682_PLL2_CTRL_3, 0x2600);
443 regmap_write(rt5682->regmap, RT5682_PLL2_CTRL_4, 0x0c8f);
444 regmap_write(rt5682->regmap, RT5682_PLL_TRACK_2, 0x3000);
445 regmap_write(rt5682->regmap, RT5682_PLL_TRACK_3, 0x4000);
446 regmap_update_bits(rt5682->regmap, RT5682_GLB_CLK,
450 regmap_update_bits(rt5682->regmap, RT5682_CBJ_CTRL_2,
452 regmap_write(rt5682->regmap, RT5682_CBJ_CTRL_1, 0xd142);
453 regmap_update_bits(rt5682->regmap, RT5682_CBJ_CTRL_5, 0x0700, 0x0600);
454 regmap_update_bits(rt5682->regmap, RT5682_CBJ_CTRL_3,
456 regmap_update_bits(rt5682->regmap, RT5682_SAR_IL_CMD_1,
458 regmap_update_bits(rt5682->regmap, RT5682_RC_CLK_CTRL,
462 regmap_update_bits(rt5682->regmap, RT5682_PWR_ANLG_2,
464 regmap_update_bits(rt5682->regmap, RT5682_IRQ_CTRL_2,
470 &rt5682->jack_detect_work, msecs_to_jiffies(250));
473 rt5682->hw_init = true;
474 rt5682->first_hw_init = true;
515 struct rt5682_priv *rt5682 = dev_get_drvdata(&slave->dev);
518 rt5682->hw_init = false;
524 if (rt5682->hw_init || status != SDW_SLAVE_ATTACHED)
605 struct rt5682_priv *rt5682 = dev_get_drvdata(dev);
608 clk_freq = (rt5682->params.curr_dr_freq >> 1);
633 regmap_write(rt5682->sdw_regmap, 0xe0, value);
634 regmap_write(rt5682->sdw_regmap, 0xf0, value);
644 struct rt5682_priv *rt5682 = dev_get_drvdata(&slave->dev);
647 memcpy(&rt5682->params, params, sizeof(*params));
659 struct rt5682_priv *rt5682 = dev_get_drvdata(&slave->dev);
664 mutex_lock(&rt5682->disable_irq_lock);
665 if (status->control_port & 0x4 && !rt5682->disable_irq) {
667 &rt5682->jack_detect_work, msecs_to_jiffies(rt5682->irq_work_delay_time));
669 mutex_unlock(&rt5682->disable_irq_lock);
696 struct rt5682_priv *rt5682 = dev_get_drvdata(&slave->dev);
698 if (rt5682->hw_init)
699 cancel_delayed_work_sync(&rt5682->jack_detect_work);
714 struct rt5682_priv *rt5682 = dev_get_drvdata(dev);
716 if (!rt5682->hw_init)
719 cancel_delayed_work_sync(&rt5682->jack_detect_work);
721 regcache_cache_only(rt5682->sdw_regmap, true);
722 regcache_cache_only(rt5682->regmap, true);
723 regcache_mark_dirty(rt5682->regmap);
730 struct rt5682_priv *rt5682 = dev_get_drvdata(dev);
734 if (!rt5682->hw_init)
742 mutex_lock(&rt5682->disable_irq_lock);
743 rt5682->disable_irq = true;
746 mutex_unlock(&rt5682->disable_irq_lock);
759 struct rt5682_priv *rt5682 = dev_get_drvdata(dev);
762 if (!rt5682->first_hw_init)
766 if (rt5682->disable_irq == true) {
767 mutex_lock(&rt5682->disable_irq_lock);
769 rt5682->disable_irq = false;
770 mutex_unlock(&rt5682->disable_irq_lock);
786 regcache_cache_only(rt5682->sdw_regmap, false);
787 regcache_cache_only(rt5682->regmap, false);
788 regcache_sync(rt5682->regmap);
800 .name = "rt5682",