From 3f5cc1882b585db0d3aa8846cd8a2c305201e9f9 Mon Sep 17 00:00:00 2001 From: Florian Fainelli Date: Sat, 27 Sep 2014 19:11:37 +0000 Subject: brcm2708: add 3.14 support Signed-off-by: Florian Fainelli SVN-Revision: 42680 --- ...e-s-inverse-range-and-let-IQaudIO-DAC-use.patch | 56 ++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 target/linux/brcm2708/patches-3.14/0052-fix-soc-core-s-inverse-range-and-let-IQaudIO-DAC-use.patch (limited to 'target/linux/brcm2708/patches-3.14/0052-fix-soc-core-s-inverse-range-and-let-IQaudIO-DAC-use.patch') diff --git a/target/linux/brcm2708/patches-3.14/0052-fix-soc-core-s-inverse-range-and-let-IQaudIO-DAC-use.patch b/target/linux/brcm2708/patches-3.14/0052-fix-soc-core-s-inverse-range-and-let-IQaudIO-DAC-use.patch new file mode 100644 index 0000000000..9007bcd1de --- /dev/null +++ b/target/linux/brcm2708/patches-3.14/0052-fix-soc-core-s-inverse-range-and-let-IQaudIO-DAC-use.patch @@ -0,0 +1,56 @@ +From 7d86ec6d4ad388d8287a68d31ff3e3028477fd86 Mon Sep 17 00:00:00 2001 +From: Gordon Garrity +Date: Sun, 30 Mar 2014 13:52:33 +0100 +Subject: [PATCH 52/54] fix soc-core's inverse range and let IQaudIO DAC use + this fixed SOC_DOUBLE_R_RANGE_TLV support + +--- + sound/soc/codecs/pcm512x.c | 3 ++- + sound/soc/soc-core.c | 8 ++++---- + 2 files changed, 6 insertions(+), 5 deletions(-) + +diff --git a/sound/soc/codecs/pcm512x.c b/sound/soc/codecs/pcm512x.c +index 2653311..b669e15 100644 +--- a/sound/soc/codecs/pcm512x.c ++++ b/sound/soc/codecs/pcm512x.c +@@ -239,9 +239,10 @@ static const struct soc_enum pcm512x_veds = + SOC_ENUM_SINGLE(PCM512x_DIGITAL_MUTE_2, PCM512x_VEDS_SHIFT, 4, + pcm512x_ramp_step_text); + ++/* Don't let the DAC go into clipping by limiting the alsa volume control range */ + static const struct snd_kcontrol_new pcm512x_controls[] = { + SOC_DOUBLE_R_RANGE_TLV("Playback Digital Volume", PCM512x_DIGITAL_VOLUME_2, +- PCM512x_DIGITAL_VOLUME_3, 0, 48, 255, 1, digital_tlv), ++ PCM512x_DIGITAL_VOLUME_3, 0, 40, 255, 1, digital_tlv), + SOC_DOUBLE("Playback Digital Switch", PCM512x_MUTE, PCM512x_RQML_SHIFT, + PCM512x_RQMR_SHIFT, 1, 1), + +diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c +index c3f41e7..a8a753f 100644 +--- a/sound/soc/soc-core.c ++++ b/sound/soc/soc-core.c +@@ -3072,8 +3072,8 @@ int snd_soc_put_volsw_range(struct snd_kcontrol *kcontrol, + + if (invert) + val = ((max - ucontrol->value.integer.value[0] + min) & mask); +- else +- val = (ucontrol->value.integer.value[0] & mask); ++ else ++ val = (ucontrol->value.integer.value[0] & mask); + val_mask = mask << shift; + val = val << shift; + +@@ -3084,8 +3084,8 @@ int snd_soc_put_volsw_range(struct snd_kcontrol *kcontrol, + if (snd_soc_volsw_is_stereo(mc)) { + if (invert) + val = ((max - ucontrol->value.integer.value[1] + min) & mask); +- else +- val = (ucontrol->value.integer.value[1] & mask); ++ else ++ val = (ucontrol->value.integer.value[1] & mask); + val_mask = mask << shift; + val = val << shift; + +-- +1.9.1 + -- cgit v1.2.3