diff options
author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2012-12-18 08:48:36 -0500 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2012-12-24 10:39:09 -0500 |
commit | 50571263722452a57a67edee23b892b2607dc374 (patch) | |
tree | 7eaaebd2fa2995b4ccb832a708cf2037a90b51f0 /sound/soc/codecs/wm5102.c | |
parent | 845571cce6aebffd6de9b9024daf789f333a734d (diff) |
ASoC: wm5102: Add noise gate control
The references used for the noise gates and parameters for their triggering
are configurable, expose that to users.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'sound/soc/codecs/wm5102.c')
-rw-r--r-- | sound/soc/codecs/wm5102.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/sound/soc/codecs/wm5102.c b/sound/soc/codecs/wm5102.c index a16239f594e4..e64b968a8c9a 100644 --- a/sound/soc/codecs/wm5102.c +++ b/sound/soc/codecs/wm5102.c | |||
@@ -42,6 +42,7 @@ static DECLARE_TLV_DB_SCALE(ana_tlv, 0, 100, 0); | |||
42 | static DECLARE_TLV_DB_SCALE(eq_tlv, -1200, 100, 0); | 42 | static DECLARE_TLV_DB_SCALE(eq_tlv, -1200, 100, 0); |
43 | static DECLARE_TLV_DB_SCALE(digital_tlv, -6400, 50, 0); | 43 | static DECLARE_TLV_DB_SCALE(digital_tlv, -6400, 50, 0); |
44 | static DECLARE_TLV_DB_SCALE(noise_tlv, 0, 600, 0); | 44 | static DECLARE_TLV_DB_SCALE(noise_tlv, 0, 600, 0); |
45 | static DECLARE_TLV_DB_SCALE(ng_tlv, -10200, 600, 0); | ||
45 | 46 | ||
46 | static const struct wm_adsp_region wm5102_dsp1_regions[] = { | 47 | static const struct wm_adsp_region wm5102_dsp1_regions[] = { |
47 | { .type = WMFW_ADSP2_PM, .base = 0x100000 }, | 48 | { .type = WMFW_ADSP2_PM, .base = 0x100000 }, |
@@ -600,6 +601,17 @@ static int wm5102_sysclk_ev(struct snd_soc_dapm_widget *w, | |||
600 | return 0; | 601 | return 0; |
601 | } | 602 | } |
602 | 603 | ||
604 | #define WM5102_NG_SRC(name, base) \ | ||
605 | SOC_SINGLE(name " NG HPOUT1L Switch", base, 0, 1, 0), \ | ||
606 | SOC_SINGLE(name " NG HPOUT1R Switch", base, 1, 1, 0), \ | ||
607 | SOC_SINGLE(name " NG HPOUT2L Switch", base, 2, 1, 0), \ | ||
608 | SOC_SINGLE(name " NG HPOUT2R Switch", base, 3, 1, 0), \ | ||
609 | SOC_SINGLE(name " NG EPOUT Switch", base, 4, 1, 0), \ | ||
610 | SOC_SINGLE(name " NG SPKOUTL Switch", base, 6, 1, 0), \ | ||
611 | SOC_SINGLE(name " NG SPKOUTR Switch", base, 7, 1, 0), \ | ||
612 | SOC_SINGLE(name " NG SPKDAT1L Switch", base, 8, 1, 0), \ | ||
613 | SOC_SINGLE(name " NG SPKDAT1R Switch", base, 9, 1, 0) | ||
614 | |||
603 | static const struct snd_kcontrol_new wm5102_snd_controls[] = { | 615 | static const struct snd_kcontrol_new wm5102_snd_controls[] = { |
604 | SOC_SINGLE("IN1 High Performance Switch", ARIZONA_IN1L_CONTROL, | 616 | SOC_SINGLE("IN1 High Performance Switch", ARIZONA_IN1L_CONTROL, |
605 | ARIZONA_IN1_OSR_SHIFT, 1, 0), | 617 | ARIZONA_IN1_OSR_SHIFT, 1, 0), |
@@ -783,6 +795,22 @@ SOC_ENUM("Output Ramp Down", arizona_out_vd_ramp), | |||
783 | SOC_DOUBLE("SPKDAT1 Switch", ARIZONA_PDM_SPK1_CTRL_1, ARIZONA_SPK1L_MUTE_SHIFT, | 795 | SOC_DOUBLE("SPKDAT1 Switch", ARIZONA_PDM_SPK1_CTRL_1, ARIZONA_SPK1L_MUTE_SHIFT, |
784 | ARIZONA_SPK1R_MUTE_SHIFT, 1, 1), | 796 | ARIZONA_SPK1R_MUTE_SHIFT, 1, 1), |
785 | 797 | ||
798 | SOC_SINGLE("Noise Gate Switch", ARIZONA_NOISE_GATE_CONTROL, | ||
799 | ARIZONA_NGATE_ENA_SHIFT, 1, 0), | ||
800 | SOC_SINGLE_TLV("Noise Gate Threshold Volume", ARIZONA_NOISE_GATE_CONTROL, | ||
801 | ARIZONA_NGATE_THR_SHIFT, 7, 1, ng_tlv), | ||
802 | SOC_ENUM("Noise Gate Hold", arizona_ng_hold), | ||
803 | |||
804 | WM5102_NG_SRC("HPOUT1L", ARIZONA_NOISE_GATE_SELECT_1L), | ||
805 | WM5102_NG_SRC("HPOUT1R", ARIZONA_NOISE_GATE_SELECT_1R), | ||
806 | WM5102_NG_SRC("HPOUT2L", ARIZONA_NOISE_GATE_SELECT_2L), | ||
807 | WM5102_NG_SRC("HPOUT2R", ARIZONA_NOISE_GATE_SELECT_2R), | ||
808 | WM5102_NG_SRC("EPOUT", ARIZONA_NOISE_GATE_SELECT_3L), | ||
809 | WM5102_NG_SRC("SPKOUTL", ARIZONA_NOISE_GATE_SELECT_4L), | ||
810 | WM5102_NG_SRC("SPKOUTR", ARIZONA_NOISE_GATE_SELECT_4R), | ||
811 | WM5102_NG_SRC("SPKDAT1L", ARIZONA_NOISE_GATE_SELECT_5L), | ||
812 | WM5102_NG_SRC("SPKDAT1R", ARIZONA_NOISE_GATE_SELECT_5R), | ||
813 | |||
786 | ARIZONA_MIXER_CONTROLS("AIF1TX1", ARIZONA_AIF1TX1MIX_INPUT_1_SOURCE), | 814 | ARIZONA_MIXER_CONTROLS("AIF1TX1", ARIZONA_AIF1TX1MIX_INPUT_1_SOURCE), |
787 | ARIZONA_MIXER_CONTROLS("AIF1TX2", ARIZONA_AIF1TX2MIX_INPUT_1_SOURCE), | 815 | ARIZONA_MIXER_CONTROLS("AIF1TX2", ARIZONA_AIF1TX2MIX_INPUT_1_SOURCE), |
788 | ARIZONA_MIXER_CONTROLS("AIF1TX3", ARIZONA_AIF1TX3MIX_INPUT_1_SOURCE), | 816 | ARIZONA_MIXER_CONTROLS("AIF1TX3", ARIZONA_AIF1TX3MIX_INPUT_1_SOURCE), |