• Home
  • Raw
  • Download

Lines Matching +full:codec +full:- +full:aif3

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()
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()
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()
1022 u32 reg_aif3, aif3; in da732x_set_dai_fmt() local
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()
1056 aif3 = DA732X_AIF_I2S_MODE; in da732x_set_dai_fmt()
1059 aif3 = DA732X_AIF_RIGHT_J_MODE; in da732x_set_dai_fmt()
1062 aif3 = DA732X_AIF_LEFT_J_MODE; in da732x_set_dai_fmt()
1065 aif3 = DA732X_AIF_DSP_MODE; in da732x_set_dai_fmt()
1068 return -EINVAL; in da732x_set_dai_fmt()
1078 aif3 |= DA732X_AIF_BCLK_INV; in da732x_set_dai_fmt()
1081 return -EINVAL; in da732x_set_dai_fmt()
1091 aif3 |= DA732X_AIF_BCLK_INV | DA732X_AIF_WCLK_INV; in da732x_set_dai_fmt()
1094 aif3 |= DA732X_AIF_BCLK_INV; in da732x_set_dai_fmt()
1097 aif3 |= DA732X_AIF_WCLK_INV; in da732x_set_dai_fmt()
1100 return -EINVAL; in da732x_set_dai_fmt()
1104 return -EINVAL; in da732x_set_dai_fmt()
1110 DA732X_AIF_WCLK_INV | DA732X_AIF_MODE_MASK, aif3); 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()
1427 /* Init Codec */ in da732x_set_bias_level()
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, &reg); 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()