Lines Matching +full:codec +full:- +full:analog +full:- +full:controls

1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * This driver supports the analog controls for the internal codec
6 * Copyright 2016 Chen-Yu Tsai <wens@csie.org>
18 #include <sound/soc-dapm.h>
21 #include "sun8i-adda-pr-regmap.h"
23 /* Codec analog control register offsets and bit fields */
116 /* mixer controls */
140 /* mixer controls */
156 /* ADC mixer controls */
180 /* ADC mixer controls */
196 /* volume / mute controls */
198 -450, 150, 0);
205 /* Mixer pre-gain */
234 * Due to this component and the codec belonging to separate DAPM
316 /* headphone specific controls, widgets, and routes */
317 static const DECLARE_TLV_DB_SCALE(sun8i_codec_hp_vol_scale, -6300, 100, 1);
347 struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm); in sun8i_headphone_amp_event()
395 struct device *dev = cmpnt->dev; in sun8i_codec_add_headphone()
402 dev_err(dev, "Failed to add Headphone controls: %d\n", ret); in sun8i_codec_add_headphone()
433 struct device *dev = cmpnt->dev; in sun8i_codec_add_mbias()
454 struct device *dev = cmpnt->dev; in sun8i_codec_add_hmic()
465 /* line in specific controls, widgets and rines */
467 /* Mixer pre-gain */
491 struct device *dev = cmpnt->dev; in sun8i_codec_add_linein()
498 dev_err(dev, "Failed to add Line In controls: %d\n", ret); in sun8i_codec_add_linein()
520 /* line out specific controls, widgets and routes */
523 2, 31, TLV_DB_SCALE_ITEM(-4350, 150, 0),
572 struct device *dev = cmpnt->dev; in sun8i_codec_add_lineout()
579 dev_err(dev, "Failed to add Line Out controls: %d\n", ret); in sun8i_codec_add_lineout()
600 /* mic2 specific controls, widgets and routes */
602 /* Mixer pre-gain */
637 struct device *dev = cmpnt->dev; in sun8i_codec_add_mic2()
644 dev_err(dev, "Failed to add MIC2 controls: %d\n", ret); in sun8i_codec_add_mic2()
693 struct device *dev = cmpnt->dev; in sun8i_codec_analog_add_mixer()
696 if (!quirks->has_mic2 && !quirks->has_linein) { in sun8i_codec_analog_add_mixer()
738 struct device *dev = cmpnt->dev; in sun8i_codec_analog_cmpnt_probe()
749 /* Add controls, widgets, and routes for individual features */ in sun8i_codec_analog_cmpnt_probe()
754 if (quirks->has_headphone) { in sun8i_codec_analog_cmpnt_probe()
760 if (quirks->has_hmic) { in sun8i_codec_analog_cmpnt_probe()
766 if (quirks->has_linein) { in sun8i_codec_analog_cmpnt_probe()
772 if (quirks->has_lineout) { in sun8i_codec_analog_cmpnt_probe()
778 if (quirks->has_mbias) { in sun8i_codec_analog_cmpnt_probe()
784 if (quirks->has_mic2) { in sun8i_codec_analog_cmpnt_probe()
794 .controls = sun8i_codec_common_controls,
805 .compatible = "allwinner,sun8i-a23-codec-analog",
809 .compatible = "allwinner,sun8i-h3-codec-analog",
813 .compatible = "allwinner,sun8i-v3s-codec-analog",
827 dev_err(&pdev->dev, "Failed to map the registers\n"); in sun8i_codec_analog_probe()
831 regmap = sun8i_adda_pr_regmap_init(&pdev->dev, base); in sun8i_codec_analog_probe()
833 dev_err(&pdev->dev, "Failed to create regmap\n"); in sun8i_codec_analog_probe()
837 return devm_snd_soc_register_component(&pdev->dev, in sun8i_codec_analog_probe()
844 .name = "sun8i-codec-analog",
851 MODULE_DESCRIPTION("Allwinner internal codec analog controls driver");
852 MODULE_AUTHOR("Chen-Yu Tsai <wens@csie.org>");
854 MODULE_ALIAS("platform:sun8i-codec-analog");