Lines Matching +full:vref +full:- +full:source
5 * Author: Lars-Peter Clausen <lars@metafoo.de>
7 * Licensed under the GPL-2.
157 static const DECLARE_TLV_DB_MINMAX_MUTE(adau1977_adc_gain, -3562, 6000);
165 SND_SOC_DAPM_SUPPLY("Vref", ADAU1977_REG_BLOCK_POWER_SAI,
178 SND_SOC_DAPM_OUTPUT("VREF"),
187 { "ADC1", NULL, "Vref" },
188 { "ADC2", NULL, "Vref" },
189 { "ADC3", NULL, "Vref" },
190 { "ADC4", NULL, "Vref" },
192 { "VREF", NULL, "Vref" },
197 ADAU1977_REG_POST_ADC_GAIN((x) - 1), \
201 SOC_SINGLE("ADC" #x " Highpass-Filter Capture Switch", \
202 ADAU1977_REG_DC_HPF_CAL, (x) - 1, 1, 0)
235 regcache_cache_bypass(adau1977->regmap, true); in adau1977_reset()
236 ret = regmap_write(adau1977->regmap, ADAU1977_REG_POWER, in adau1977_reset()
238 regcache_cache_bypass(adau1977->regmap, false); in adau1977_reset()
262 return -EINVAL; in adau1977_lookup_fs()
278 if (adau1977->sysclk % rate != 0) in adau1977_lookup_mcs()
279 return -EINVAL; in adau1977_lookup_mcs()
281 mcs = adau1977->sysclk / rate; in adau1977_lookup_mcs()
285 return -EINVAL; in adau1977_lookup_mcs()
287 mcs = mcs - 1; in adau1977_lookup_mcs()
297 struct snd_soc_component *component = dai->component; in adau1977_hw_params()
310 if (adau1977->sysclk_src == ADAU1977_SYSCLK_SRC_MCLK) { in adau1977_hw_params()
321 if (adau1977->right_j) { in adau1977_hw_params()
330 return -EINVAL; in adau1977_hw_params()
335 if (adau1977->master) { in adau1977_hw_params()
347 return -EINVAL; in adau1977_hw_params()
351 if (adau1977->slot_width) in adau1977_hw_params()
352 slot_width = adau1977->slot_width; in adau1977_hw_params()
359 ret = regmap_update_bits(adau1977->regmap, in adau1977_hw_params()
368 ret = regmap_update_bits(adau1977->regmap, ADAU1977_REG_SAI_CTRL0, in adau1977_hw_params()
373 return regmap_update_bits(adau1977->regmap, ADAU1977_REG_PLL, in adau1977_hw_params()
381 if (!adau1977->enabled) in adau1977_power_disable()
384 ret = regmap_update_bits(adau1977->regmap, ADAU1977_REG_POWER, in adau1977_power_disable()
389 regcache_mark_dirty(adau1977->regmap); in adau1977_power_disable()
391 gpiod_set_value_cansleep(adau1977->reset_gpio, 0); in adau1977_power_disable()
393 regcache_cache_only(adau1977->regmap, true); in adau1977_power_disable()
395 regulator_disable(adau1977->avdd_reg); in adau1977_power_disable()
396 if (adau1977->dvdd_reg) in adau1977_power_disable()
397 regulator_disable(adau1977->dvdd_reg); in adau1977_power_disable()
399 adau1977->enabled = false; in adau1977_power_disable()
409 if (adau1977->enabled) in adau1977_power_enable()
412 ret = regulator_enable(adau1977->avdd_reg); in adau1977_power_enable()
416 if (adau1977->dvdd_reg) { in adau1977_power_enable()
417 ret = regulator_enable(adau1977->dvdd_reg); in adau1977_power_enable()
422 gpiod_set_value_cansleep(adau1977->reset_gpio, 1); in adau1977_power_enable()
424 regcache_cache_only(adau1977->regmap, false); in adau1977_power_enable()
426 if (adau1977->switch_mode) in adau1977_power_enable()
427 adau1977->switch_mode(adau1977->dev); in adau1977_power_enable()
433 ret = regmap_update_bits(adau1977->regmap, ADAU1977_REG_POWER, in adau1977_power_enable()
438 ret = regcache_sync(adau1977->regmap); in adau1977_power_enable()
449 ret = regmap_read(adau1977->regmap, ADAU1977_REG_PLL, &val); in adau1977_power_enable()
454 regcache_cache_bypass(adau1977->regmap, true); in adau1977_power_enable()
455 ret = regmap_write(adau1977->regmap, ADAU1977_REG_PLL, in adau1977_power_enable()
459 regcache_cache_bypass(adau1977->regmap, false); in adau1977_power_enable()
462 adau1977->enabled = true; in adau1977_power_enable()
467 if (adau1977->dvdd_reg) in adau1977_power_enable()
468 regulator_disable(adau1977->dvdd_reg); in adau1977_power_enable()
470 regulator_disable(adau1977->avdd_reg); in adau1977_power_enable()
500 struct adau1977 *adau1977 = snd_soc_component_get_drvdata(dai->component); in adau1977_set_tdm_slot()
508 adau1977->slot_width = 0; in adau1977_set_tdm_slot()
509 adau1977->max_master_fs = 192000; in adau1977_set_tdm_slot()
510 return regmap_update_bits(adau1977->regmap, in adau1977_set_tdm_slot()
516 return -EINVAL; in adau1977_set_tdm_slot()
524 return -EINVAL; in adau1977_set_tdm_slot()
530 return -EINVAL; in adau1977_set_tdm_slot()
538 if (adau1977->master) in adau1977_set_tdm_slot()
539 return -EINVAL; in adau1977_set_tdm_slot()
546 return -EINVAL; in adau1977_set_tdm_slot()
563 return -EINVAL; in adau1977_set_tdm_slot()
566 ret = regmap_update_bits(adau1977->regmap, ADAU1977_REG_SAI_OVERTEMP, in adau1977_set_tdm_slot()
574 ret = regmap_write(adau1977->regmap, ADAU1977_REG_CMAP12, in adau1977_set_tdm_slot()
580 ret = regmap_write(adau1977->regmap, ADAU1977_REG_CMAP34, in adau1977_set_tdm_slot()
586 ret = regmap_update_bits(adau1977->regmap, ADAU1977_REG_SAI_CTRL0, in adau1977_set_tdm_slot()
591 ret = regmap_update_bits(adau1977->regmap, ADAU1977_REG_SAI_CTRL1, in adau1977_set_tdm_slot()
596 adau1977->slot_width = width; in adau1977_set_tdm_slot()
599 adau1977->max_master_fs = min(192000, 24576000 / width / slots); in adau1977_set_tdm_slot()
606 struct adau1977 *adau1977 = snd_soc_component_get_drvdata(dai->component); in adau1977_mute()
614 return regmap_update_bits(adau1977->regmap, ADAU1977_REG_MISC_CONTROL, in adau1977_mute()
620 struct adau1977 *adau1977 = snd_soc_component_get_drvdata(dai->component); in adau1977_set_dai_fmt()
627 adau1977->master = false; in adau1977_set_dai_fmt()
631 adau1977->master = true; in adau1977_set_dai_fmt()
634 return -EINVAL; in adau1977_set_dai_fmt()
653 return -EINVAL; in adau1977_set_dai_fmt()
656 adau1977->right_j = false; in adau1977_set_dai_fmt()
667 adau1977->right_j = true; in adau1977_set_dai_fmt()
681 return -EINVAL; in adau1977_set_dai_fmt()
687 ret = regmap_update_bits(adau1977->regmap, ADAU1977_REG_BLOCK_POWER_SAI, in adau1977_set_dai_fmt()
693 ret = regmap_update_bits(adau1977->regmap, ADAU1977_REG_SAI_CTRL0, in adau1977_set_dai_fmt()
699 return regmap_update_bits(adau1977->regmap, ADAU1977_REG_SAI_CTRL1, in adau1977_set_dai_fmt()
707 struct adau1977 *adau1977 = snd_soc_component_get_drvdata(dai->component); in adau1977_startup()
710 if (adau1977->slot_width == 16) in adau1977_startup()
712 else if (adau1977->right_j || adau1977->slot_width == 24) in adau1977_startup()
716 snd_pcm_hw_constraint_list(substream->runtime, 0, in adau1977_startup()
717 SNDRV_PCM_HW_PARAM_RATE, &adau1977->constraints); in adau1977_startup()
719 if (adau1977->master) in adau1977_startup()
720 snd_pcm_hw_constraint_minmax(substream->runtime, in adau1977_startup()
721 SNDRV_PCM_HW_PARAM_RATE, 8000, adau1977->max_master_fs); in adau1977_startup()
724 snd_pcm_hw_constraint_mask64(substream->runtime, in adau1977_startup()
732 struct adau1977 *adau1977 = snd_soc_component_get_drvdata(dai->component); in adau1977_set_tristate()
740 return regmap_update_bits(adau1977->regmap, ADAU1977_REG_SAI_OVERTEMP, in adau1977_set_tristate()
754 .name = "adau1977-hifi",
794 int clk_id, int source, unsigned int freq, int dir) in adau1977_set_sysclk() argument
802 return -EINVAL; in adau1977_set_sysclk()
805 return -EINVAL; in adau1977_set_sysclk()
807 switch (source) { in adau1977_set_sysclk()
815 return -EINVAL; in adau1977_set_sysclk()
818 if (freq != 0 && source == ADAU1977_SYSCLK_SRC_MCLK) { in adau1977_set_sysclk()
820 return -EINVAL; in adau1977_set_sysclk()
830 return -EINVAL; in adau1977_set_sysclk()
831 } else if (source == ADAU1977_SYSCLK_SRC_LRCLK) { in adau1977_set_sysclk()
835 ret = regmap_update_bits(adau1977->regmap, ADAU1977_REG_PLL, in adau1977_set_sysclk()
840 adau1977->constraints.mask = mask; in adau1977_set_sysclk()
841 adau1977->sysclk_src = source; in adau1977_set_sysclk()
842 adau1977->sysclk = freq; in adau1977_set_sysclk()
853 switch (adau1977->type) { in adau1977_component_probe()
885 struct adau1977_platform_data *pdata = adau1977->dev->platform_data; in adau1977_setup_micbias()
889 micbias = pdata->micbias; in adau1977_setup_micbias()
891 return -EINVAL; in adau1977_setup_micbias()
897 return regmap_update_bits(adau1977->regmap, ADAU1977_REG_MICBIAS, in adau1977_setup_micbias()
914 return -ENOMEM; in adau1977_probe()
916 adau1977->dev = dev; in adau1977_probe()
917 adau1977->type = type; in adau1977_probe()
918 adau1977->regmap = regmap; in adau1977_probe()
919 adau1977->switch_mode = switch_mode; in adau1977_probe()
920 adau1977->max_master_fs = 192000; in adau1977_probe()
922 adau1977->constraints.list = adau1977_rates; in adau1977_probe()
923 adau1977->constraints.count = ARRAY_SIZE(adau1977_rates); in adau1977_probe()
925 adau1977->avdd_reg = devm_regulator_get(dev, "AVDD"); in adau1977_probe()
926 if (IS_ERR(adau1977->avdd_reg)) in adau1977_probe()
927 return PTR_ERR(adau1977->avdd_reg); in adau1977_probe()
929 adau1977->dvdd_reg = devm_regulator_get_optional(dev, "DVDD"); in adau1977_probe()
930 if (IS_ERR(adau1977->dvdd_reg)) { in adau1977_probe()
931 if (PTR_ERR(adau1977->dvdd_reg) != -ENODEV) in adau1977_probe()
932 return PTR_ERR(adau1977->dvdd_reg); in adau1977_probe()
933 adau1977->dvdd_reg = NULL; in adau1977_probe()
936 adau1977->reset_gpio = devm_gpiod_get_optional(dev, "reset", in adau1977_probe()
938 if (IS_ERR(adau1977->reset_gpio)) in adau1977_probe()
939 return PTR_ERR(adau1977->reset_gpio); in adau1977_probe()
943 if (adau1977->reset_gpio) in adau1977_probe()
956 if (adau1977->dvdd_reg) in adau1977_probe()
961 ret = regmap_update_bits(adau1977->regmap, ADAU1977_REG_BLOCK_POWER_SAI, in adau1977_probe()
1005 MODULE_AUTHOR("Lars-Peter Clausen <lars@metafoo.de>");