Lines Matching refs:rt5670
3 * rt5670.c -- RT5670 ALSA SoC audio codec driver
30 #include "rt5670.h"
31 #include "rt5670-dsp.h"
435 struct rt5670_priv *rt5670 = snd_soc_component_get_drvdata(component);
457 rt5670->jack_type = SND_JACK_HEADSET;
464 rt5670->jack_type = SND_JACK_HEADPHONE;
471 rt5670->jack_type = 0;
476 return rt5670->jack_type;
481 struct rt5670_priv *rt5670 = snd_soc_component_get_drvdata(component);
483 rt5670->jack_type_saved = rt5670->jack_type;
490 struct rt5670_priv *rt5670 = snd_soc_component_get_drvdata(component);
492 if (rt5670->jack_type_saved)
515 struct rt5670_priv *rt5670 = (struct rt5670_priv *)data;
516 struct snd_soc_jack_gpio *gpio = &rt5670->hp_gpio;
517 struct snd_soc_jack *jack = rt5670->jack;
520 if (rt5670->jd_mode == 1) /* 2 port */
521 val = snd_soc_component_read(rt5670->component, RT5670_A_JD_CTRL1) & 0x0070;
523 val = snd_soc_component_read(rt5670->component, RT5670_A_JD_CTRL1) & 0x0020;
529 if (rt5670->jack_type == 0) {
530 report = rt5670_headset_detect(rt5670->component, 1);
536 if (snd_soc_component_read(rt5670->component, RT5670_INT_IRQ_ST) & 0x4) {
539 btn_type = rt5670_button_detect(rt5670->component);
551 dev_err(rt5670->component->dev,
558 report = rt5670->jack_type;
566 snd_soc_component_update_bits(rt5670->component, RT5670_INT_IRQ_ST, 0x1, 0x0);
567 rt5670_headset_detect(rt5670->component, 0);
580 struct rt5670_priv *rt5670 = snd_soc_component_get_drvdata(component);
583 rt5670->jack = jack;
584 rt5670->hp_gpio.gpiod_dev = component->dev;
585 rt5670->hp_gpio.name = "headset";
586 rt5670->hp_gpio.report = SND_JACK_HEADSET |
588 rt5670->hp_gpio.debounce_time = 150;
589 rt5670->hp_gpio.wake = true;
590 rt5670->hp_gpio.data = (struct rt5670_priv *)rt5670;
591 rt5670->hp_gpio.jack_status_check = rt5670_irq_detection;
593 ret = snd_soc_jack_add_gpios(rt5670->jack, 1,
594 &rt5670->hp_gpio);
700 struct rt5670_priv *rt5670 = snd_soc_component_get_drvdata(component);
703 rate = rt5670->sysclk / rl6231_get_pre_div(rt5670->regmap,
718 struct rt5670_priv *rt5670 = snd_soc_component_get_drvdata(component);
720 if (rt5670->sysclk_src == RT5670_SCLK_S_PLL1)
782 struct rt5670_priv *rt5670 = snd_soc_component_get_drvdata(component);
784 if (rt5670->sysclk > rt5670->lrck[RT5670_AIF1] * 384)
1368 struct rt5670_priv *rt5670 = snd_soc_component_get_drvdata(component);
1372 regmap_update_bits(rt5670->regmap, RT5670_CHARGE_PUMP,
1374 regmap_update_bits(rt5670->regmap, RT5670_GEN_CTRL2,
1377 regmap_update_bits(rt5670->regmap, RT5670_PWR_ANLG1,
1382 regmap_write(rt5670->regmap, RT5670_DEPOP_M2, 0x3100);
1383 regmap_write(rt5670->regmap, RT5670_DEPOP_M1, 0x8009);
1384 regmap_write(rt5670->regmap, RT5670_PR_BASE +
1387 regmap_write(rt5670->regmap, RT5670_DEPOP_M1, 0x8019);
1390 regmap_write(rt5670->regmap, RT5670_DEPOP_M1, 0x0004);
1404 struct rt5670_priv *rt5670 = snd_soc_component_get_drvdata(component);
1409 regmap_write(rt5670->regmap, RT5670_PR_BASE +
1411 regmap_write(rt5670->regmap, RT5670_DEPOP_M3, 0x0772);
1412 regmap_write(rt5670->regmap, RT5670_DEPOP_M1, 0x805d);
1413 regmap_write(rt5670->regmap, RT5670_DEPOP_M1, 0x831d);
1414 regmap_update_bits(rt5670->regmap, RT5670_GEN_CTRL2,
1416 regmap_update_bits(rt5670->regmap, RT5670_HP_VOL,
1419 regmap_write(rt5670->regmap, RT5670_DEPOP_M1, 0x8019);
1424 regmap_write(rt5670->regmap, RT5670_PR_BASE +
1426 regmap_write(rt5670->regmap, RT5670_DEPOP_M3, 0x0772);
1427 regmap_write(rt5670->regmap, RT5670_DEPOP_M1, 0x803d);
1429 regmap_write(rt5670->regmap, RT5670_DEPOP_M1, 0x831d);
1431 regmap_update_bits(rt5670->regmap, RT5670_HP_VOL,
1435 regmap_update_bits(rt5670->regmap,
1437 regmap_write(rt5670->regmap, RT5670_DEPOP_M1, 0x8019);
1438 regmap_write(rt5670->regmap, RT5670_DEPOP_M3, 0x0707);
1439 regmap_write(rt5670->regmap, RT5670_PR_BASE +
1454 struct rt5670_priv *rt5670 = snd_soc_component_get_drvdata(component);
1456 if (!rt5670->gpio1_is_ext_spk_en)
1461 regmap_update_bits(rt5670->regmap, RT5670_GPIO_CTRL2,
1466 regmap_update_bits(rt5670->regmap, RT5670_GPIO_CTRL2,
2298 struct rt5670_priv *rt5670 = snd_soc_component_get_drvdata(component);
2302 rt5670->lrck[dai->id] = params_rate(params);
2303 pre_div = rl6231_get_clk_info(rt5670->sysclk, rt5670->lrck[dai->id]);
2306 rt5670->lrck[dai->id], dai->id);
2315 rt5670->bclk[dai->id] = rt5670->lrck[dai->id] * (32 << bclk_ms);
2318 rt5670->bclk[dai->id], rt5670->lrck[dai->id]);
2366 struct rt5670_priv *rt5670 = snd_soc_component_get_drvdata(component);
2371 rt5670->master[dai->id] = 1;
2375 rt5670->master[dai->id] = 0;
2428 struct rt5670_priv *rt5670 = snd_soc_component_get_drvdata(component);
2447 rt5670->sysclk = freq;
2449 rt5670->sysclk_src = clk_id;
2460 struct rt5670_priv *rt5670 = snd_soc_component_get_drvdata(component);
2464 if (source == rt5670->pll_src && freq_in == rt5670->pll_in &&
2465 freq_out == rt5670->pll_out)
2471 rt5670->pll_in = 0;
2472 rt5670->pll_out = 0;
2522 rt5670->pll_in = freq_in;
2523 rt5670->pll_out = freq_out;
2524 rt5670->pll_src = source;
2596 struct rt5670_priv *rt5670 = snd_soc_component_get_drvdata(component);
2626 if (rt5670->jd_mode)
2651 struct rt5670_priv *rt5670 = snd_soc_component_get_drvdata(component);
2676 rt5670->component = component;
2683 struct rt5670_priv *rt5670 = snd_soc_component_get_drvdata(component);
2685 regmap_write(rt5670->regmap, RT5670_RESET, 0);
2686 snd_soc_jack_free_gpios(rt5670->jack, 1, &rt5670->hp_gpio);
2692 struct rt5670_priv *rt5670 = snd_soc_component_get_drvdata(component);
2694 regcache_cache_only(rt5670->regmap, true);
2695 regcache_mark_dirty(rt5670->regmap);
2701 struct rt5670_priv *rt5670 = snd_soc_component_get_drvdata(component);
2703 regcache_cache_only(rt5670->regmap, false);
2704 regcache_sync(rt5670->regmap);
2727 .name = "rt5670-aif1",
2747 .name = "rt5670-aif2",
2803 { "rt5670", 0 },
2941 struct rt5670_priv *rt5670;
2945 rt5670 = devm_kzalloc(&i2c->dev,
2948 if (NULL == rt5670)
2951 i2c_set_clientdata(i2c, rt5670);
2961 rt5670->gpio1_is_irq = true;
2965 rt5670->gpio1_is_ext_spk_en = true;
2969 rt5670->in2_diff = true;
2973 rt5670->dmic_en = true;
2977 rt5670->dmic1_data_pin = RT5670_DMIC_DATA_IN2P;
2981 rt5670->dmic1_data_pin = RT5670_DMIC_DATA_GPIO6;
2985 rt5670->dmic1_data_pin = RT5670_DMIC_DATA_GPIO7;
2989 rt5670->dmic2_data_pin = RT5670_DMIC_DATA_IN3N;
2993 rt5670->dmic2_data_pin = RT5670_DMIC_DATA_GPIO8;
2997 rt5670->dmic3_data_pin = RT5670_DMIC_DATA_GPIO5;
3002 rt5670->jd_mode = 1;
3006 rt5670->jd_mode = 2;
3010 rt5670->jd_mode = 3;
3014 rt5670->regmap = devm_regmap_init_i2c(i2c, &rt5670_regmap);
3015 if (IS_ERR(rt5670->regmap)) {
3016 ret = PTR_ERR(rt5670->regmap);
3022 regmap_read(rt5670->regmap, RT5670_VENDOR_ID2, &val);
3025 "Device with ID register %#x is not rt5670/72\n", val);
3029 regmap_write(rt5670->regmap, RT5670_RESET, 0);
3030 regmap_update_bits(rt5670->regmap, RT5670_PWR_ANLG1,
3035 regmap_write(rt5670->regmap, RT5670_RESET, 0);
3037 regmap_read(rt5670->regmap, RT5670_VENDOR_ID, &val);
3039 regmap_write(rt5670->regmap, RT5670_GPIO_CTRL3, 0x0980);
3041 regmap_write(rt5670->regmap, RT5670_GPIO_CTRL3, 0x0d00);
3043 ret = regmap_register_patch(rt5670->regmap, init_list,
3048 regmap_update_bits(rt5670->regmap, RT5670_DIG_MISC,
3051 if (rt5670->in2_diff)
3052 regmap_update_bits(rt5670->regmap, RT5670_IN2,
3055 if (rt5670->gpio1_is_irq) {
3057 regmap_write(rt5670->regmap, RT5670_IL_CMD, 0x0000);
3058 regmap_write(rt5670->regmap, RT5670_IL_CMD2, 0x0010);
3059 regmap_write(rt5670->regmap, RT5670_IL_CMD3, 0x0014);
3061 regmap_update_bits(rt5670->regmap, RT5670_GPIO_CTRL1,
3063 regmap_update_bits(rt5670->regmap, RT5670_GPIO_CTRL2,
3067 if (rt5670->gpio1_is_ext_spk_en) {
3068 regmap_update_bits(rt5670->regmap, RT5670_GPIO_CTRL1,
3070 regmap_update_bits(rt5670->regmap, RT5670_GPIO_CTRL2,
3074 if (rt5670->jd_mode) {
3075 regmap_update_bits(rt5670->regmap, RT5670_GLB_CLK,
3077 rt5670->sysclk = 0;
3078 rt5670->sysclk_src = RT5670_SCLK_S_RCCLK;
3079 regmap_update_bits(rt5670->regmap, RT5670_PWR_ANLG1,
3081 regmap_update_bits(rt5670->regmap, RT5670_PWR_ANLG2,
3083 regmap_update_bits(rt5670->regmap, RT5670_IRQ_CTRL1,
3085 regmap_update_bits(rt5670->regmap, RT5670_JD_CTRL3,
3089 switch (rt5670->jd_mode) {
3091 regmap_update_bits(rt5670->regmap, RT5670_A_JD_CTRL1,
3096 regmap_update_bits(rt5670->regmap, RT5670_A_JD_CTRL1,
3101 regmap_update_bits(rt5670->regmap, RT5670_A_JD_CTRL1,
3110 if (rt5670->dmic_en) {
3111 regmap_update_bits(rt5670->regmap, RT5670_GPIO_CTRL1,
3115 switch (rt5670->dmic1_data_pin) {
3117 regmap_update_bits(rt5670->regmap, RT5670_DMIC_CTRL1,
3123 regmap_update_bits(rt5670->regmap, RT5670_DMIC_CTRL1,
3126 regmap_update_bits(rt5670->regmap, RT5670_GPIO_CTRL1,
3132 regmap_update_bits(rt5670->regmap, RT5670_DMIC_CTRL1,
3135 regmap_update_bits(rt5670->regmap, RT5670_GPIO_CTRL1,
3144 switch (rt5670->dmic2_data_pin) {
3146 regmap_update_bits(rt5670->regmap, RT5670_DMIC_CTRL1,
3152 regmap_update_bits(rt5670->regmap, RT5670_DMIC_CTRL1,
3155 regmap_update_bits(rt5670->regmap, RT5670_GPIO_CTRL1,
3164 switch (rt5670->dmic3_data_pin) {
3166 regmap_update_bits(rt5670->regmap, RT5670_DMIC_CTRL2,
3169 regmap_update_bits(rt5670->regmap, RT5670_GPIO_CTRL1,
3211 .name = "rt5670",