Lines Matching +full:high +full:- +full:volume
1 // SPDX-License-Identifier: GPL-2.0-only
3 * da732x.c --- Dialog DA732X ALSA SoC Audio Driver
24 #include <sound/soc-dapm.h>
41 * da732x register cache - default settings
189 return -EINVAL; in da732x_get_input_div()
254 /* High Pass Filter */
332 struct soc_enum *enum_ctrl = (struct soc_enum *)kcontrol->private_value; in da732x_hpf_set()
333 unsigned int reg = enum_ctrl->reg; in da732x_hpf_set()
334 unsigned int sel = ucontrol->value.enumerated.item[0]; in da732x_hpf_set()
348 return -EINVAL; in da732x_hpf_set()
360 struct soc_enum *enum_ctrl = (struct soc_enum *)kcontrol->private_value; in da732x_hpf_get()
361 unsigned int reg = enum_ctrl->reg; in da732x_hpf_get()
368 ucontrol->value.enumerated.item[0] = DA732X_HPF_VOICE; in da732x_hpf_get()
371 ucontrol->value.enumerated.item[0] = DA732X_HPF_MUSIC; in da732x_hpf_get()
374 ucontrol->value.enumerated.item[0] = DA732X_HPF_DISABLED; in da732x_hpf_get()
383 SOC_SINGLE_RANGE_TLV("MIC1 Boost Volume", DA732X_REG_MIC1_PRE,
386 SOC_SINGLE_RANGE_TLV("MIC2 Boost Volume", DA732X_REG_MIC2_PRE,
389 SOC_SINGLE_RANGE_TLV("MIC3 Boost Volume", DA732X_REG_MIC3_PRE,
396 SOC_SINGLE_RANGE_TLV("MIC1 Volume", DA732X_REG_MIC1,
401 SOC_SINGLE_RANGE_TLV("MIC2 Volume", DA732X_REG_MIC2,
406 SOC_SINGLE_RANGE_TLV("MIC3 Volume", DA732X_REG_MIC3,
413 SOC_SINGLE_TLV("AUX1L Volume", DA732X_REG_AUX1L,
418 SOC_SINGLE_TLV("AUX1R Volume", DA732X_REG_AUX1R,
423 SOC_DOUBLE_TLV("ADC1 Volume", DA732X_REG_ADC1_SEL,
427 SOC_DOUBLE_TLV("ADC2 Volume", DA732X_REG_ADC2_SEL,
435 SOC_DOUBLE_R_TLV("Digital Playback DAC12 Volume", DA732X_REG_DAC1_L_VOL,
440 SOC_SINGLE_TLV("Digital Playback DAC3 Volume", DA732X_REG_DAC2_L_VOL,
445 SOC_SINGLE_TLV("Digital Playback DAC4 Volume", DA732X_REG_DAC2_R_VOL,
450 SOC_SINGLE_TLV("Digital Playback DAC5 Volume", DA732X_REG_DAC3_VOL,
454 /* High Pass Filters */
455 SOC_ENUM_EXT("DAC1 High Pass Filter Mode",
457 SOC_ENUM("DAC1 High Pass Filter", da732x_dac1_hp_filter_enum),
460 SOC_ENUM_EXT("DAC2 High Pass Filter Mode",
462 SOC_ENUM("DAC2 High Pass Filter", da732x_dac2_hp_filter_enum),
465 SOC_ENUM_EXT("DAC3 High Pass Filter Mode",
467 SOC_ENUM("DAC3 High Pass Filter", da732x_dac3_hp_filter_enum),
470 SOC_ENUM_EXT("ADC1 High Pass Filter Mode",
472 SOC_ENUM("ADC1 High Pass Filter", da732x_adc1_hp_filter_enum),
475 SOC_ENUM_EXT("ADC2 High Pass Filter Mode",
477 SOC_ENUM("ADC2 High Pass Filter", da732x_adc2_hp_filter_enum),
483 SOC_SINGLE_TLV("ADC1 EQ Band 1 Volume", DA732X_REG_ADC1_EQ12,
486 SOC_SINGLE_TLV("ADC1 EQ Band 2 Volume", DA732X_REG_ADC1_EQ12,
489 SOC_SINGLE_TLV("ADC1 EQ Band 3 Volume", DA732X_REG_ADC1_EQ34,
492 SOC_SINGLE_TLV("ADC1 EQ Band 4 Volume", DA732X_REG_ADC1_EQ34,
495 SOC_SINGLE_TLV("ADC1 EQ Band 5 Volume", DA732X_REG_ADC1_EQ5,
498 SOC_SINGLE_TLV("ADC1 EQ Overall Volume", DA732X_REG_ADC1_EQ5,
504 SOC_SINGLE_TLV("ADC2 EQ Band 1 Volume", DA732X_REG_ADC2_EQ12,
507 SOC_SINGLE_TLV("ADC2 EQ Band 2 Volume", DA732X_REG_ADC2_EQ12,
510 SOC_SINGLE_TLV("ADC2 EQ Band 3 Volume", DA732X_REG_ADC2_EQ34,
513 SOC_SINGLE_TLV("ACD2 EQ Band 4 Volume", DA732X_REG_ADC2_EQ34,
516 SOC_SINGLE_TLV("ACD2 EQ Band 5 Volume", DA732X_REG_ADC2_EQ5,
519 SOC_SINGLE_TLV("ADC2 EQ Overall Volume", DA732X_REG_ADC1_EQ5,
525 SOC_SINGLE_TLV("DAC1 EQ Band 1 Volume", DA732X_REG_DAC1_EQ12,
528 SOC_SINGLE_TLV("DAC1 EQ Band 2 Volume", DA732X_REG_DAC1_EQ12,
531 SOC_SINGLE_TLV("DAC1 EQ Band 3 Volume", DA732X_REG_DAC1_EQ34,
534 SOC_SINGLE_TLV("DAC1 EQ Band 4 Volume", DA732X_REG_DAC1_EQ34,
537 SOC_SINGLE_TLV("DAC1 EQ Band 5 Volume", DA732X_REG_DAC1_EQ5,
543 SOC_SINGLE_TLV("DAC2 EQ Band 1 Volume", DA732X_REG_DAC2_EQ12,
546 SOC_SINGLE_TLV("DAC2 EQ Band 2 Volume", DA732X_REG_DAC2_EQ12,
549 SOC_SINGLE_TLV("DAC2 EQ Band 3 Volume", DA732X_REG_DAC2_EQ34,
552 SOC_SINGLE_TLV("DAC2 EQ Band 4 Volume", DA732X_REG_DAC2_EQ34,
555 SOC_SINGLE_TLV("DAC2 EQ Band 5 Volume", DA732X_REG_DAC2_EQ5,
561 SOC_SINGLE_TLV("DAC3 EQ Band 1 Volume", DA732X_REG_DAC3_EQ12,
564 SOC_SINGLE_TLV("DAC3 EQ Band 2 Volume", DA732X_REG_DAC3_EQ12,
567 SOC_SINGLE_TLV("DAC3 EQ Band 3 Volume", DA732X_REG_DAC3_EQ34,
570 SOC_SINGLE_TLV("DAC3 EQ Band 4 Volume", DA732X_REG_DAC3_EQ34,
573 SOC_SINGLE_TLV("DAC3 EQ Band 5 Volume", DA732X_REG_DAC3_EQ5,
580 SOC_SINGLE_TLV("Lineout 2 Volume", DA732X_REG_LIN2,
587 SOC_SINGLE_TLV("Lineout 3 Volume", DA732X_REG_LIN3,
594 SOC_SINGLE_TLV("Lineout 4 Volume", DA732X_REG_LIN4,
601 SOC_DOUBLE_R_TLV("Headphone Volume", DA732X_REG_HPL_VOL,
609 struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm); in da732x_adc_event()
613 switch (w->reg) { in da732x_adc_event()
625 return -EINVAL; in da732x_adc_event()
628 snd_soc_component_update_bits(component, w->reg, DA732X_ADC_RST_MASK, in da732x_adc_event()
630 snd_soc_component_update_bits(component, w->reg, DA732X_ADC_PD_MASK, in da732x_adc_event()
634 snd_soc_component_update_bits(component, w->reg, DA732X_ADC_PD_MASK, in da732x_adc_event()
636 snd_soc_component_update_bits(component, w->reg, DA732X_ADC_RST_MASK, in da732x_adc_event()
639 switch (w->reg) { in da732x_adc_event()
649 return -EINVAL; in da732x_adc_event()
654 return -EINVAL; in da732x_adc_event()
663 struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm); in da732x_out_pga_event()
667 snd_soc_component_update_bits(component, w->reg, in da732x_out_pga_event()
668 (1 << w->shift) | DA732X_OUT_HIZ_EN, in da732x_out_pga_event()
669 (1 << w->shift) | DA732X_OUT_HIZ_EN); in da732x_out_pga_event()
672 snd_soc_component_update_bits(component, w->reg, in da732x_out_pga_event()
673 (1 << w->shift) | DA732X_OUT_HIZ_EN, in da732x_out_pga_event()
674 (1 << w->shift) | DA732X_OUT_HIZ_DIS); in da732x_out_pga_event()
677 return -EINVAL; in da732x_out_pga_event()
949 struct snd_soc_component *component = dai->component; in da732x_hw_params()
954 reg_aif = dai->driver->base; in da732x_hw_params()
970 return -EINVAL; in da732x_hw_params()
1008 return -EINVAL; in da732x_hw_params()
1019 struct snd_soc_component *component = dai->component; in da732x_set_dai_fmt()
1024 switch (dai->id) { in da732x_set_dai_fmt()
1038 return -EINVAL; in da732x_set_dai_fmt()
1051 return -EINVAL; in da732x_set_dai_fmt()
1068 return -EINVAL; in da732x_set_dai_fmt()
1081 return -EINVAL; in da732x_set_dai_fmt()
1100 return -EINVAL; in da732x_set_dai_fmt()
1104 return -EINVAL; in da732x_set_dai_fmt()
1131 da732x->pll_en = false; in da732x_set_dai_pll()
1135 if (da732x->pll_en) in da732x_set_dai_pll()
1136 return -EBUSY; in da732x_set_dai_pll()
1140 switch (da732x->sysclk) { in da732x_set_dai_pll()
1151 dev_err(component->dev, in da732x_set_dai_pll()
1153 return -EINVAL; in da732x_set_dai_pll()
1157 indiv = da732x_get_input_div(component, da732x->sysclk); in da732x_set_dai_pll()
1161 fref = (da732x->sysclk / indiv); in da732x_set_dai_pll()
1175 da732x->pll_en = true; in da732x_set_dai_pll()
1183 struct snd_soc_component *component = dai->component; in da732x_set_dai_sysclk()
1186 da732x->sysclk = freq; in da732x_set_dai_sysclk()
1476 regcache_cache_only(da732x->regmap, false); in da732x_set_bias_level()
1477 regcache_sync(da732x->regmap); in da732x_set_bias_level()
1484 da732x->pll_en = false; in da732x_set_bias_level()
1488 regcache_cache_only(da732x->regmap, true); in da732x_set_bias_level()
1492 da732x->pll_en = false; in da732x_set_bias_level()
1521 da732x = devm_kzalloc(&i2c->dev, sizeof(struct da732x_priv), in da732x_i2c_probe()
1524 return -ENOMEM; in da732x_i2c_probe()
1528 da732x->regmap = devm_regmap_init_i2c(i2c, &da732x_regmap); in da732x_i2c_probe()
1529 if (IS_ERR(da732x->regmap)) { in da732x_i2c_probe()
1530 ret = PTR_ERR(da732x->regmap); in da732x_i2c_probe()
1531 dev_err(&i2c->dev, "Failed to initialize regmap\n"); in da732x_i2c_probe()
1535 ret = regmap_read(da732x->regmap, DA732X_REG_ID, ®); in da732x_i2c_probe()
1537 dev_err(&i2c->dev, "Failed to read ID register: %d\n", ret); in da732x_i2c_probe()
1541 dev_info(&i2c->dev, "Revision: %d.%d\n", in da732x_i2c_probe()
1545 ret = devm_snd_soc_register_component(&i2c->dev, in da732x_i2c_probe()
1549 dev_err(&i2c->dev, "Failed to register component.\n"); in da732x_i2c_probe()