diff options
author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2012-04-16 14:40:27 -0400 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2012-04-16 14:40:27 -0400 |
commit | d5efccd5b6843c504042735c1e20d9252daefd98 (patch) | |
tree | 87994943963bf2f34b3f1fa982d909fd82f56746 /sound/soc | |
parent | 516541a00c6a6bced133158f0146b602a18dcbe5 (diff) | |
parent | e816b57a337ea3b755de72bec38c10c864f23015 (diff) |
ASoC: Merge tag 'v3.4-rc3' into for-3.5
Linux 3.4-rc3 contains a bunch of Tegra changes which are conflicting
annoyingly with the new development that's going on for Tegra so merge
it up to resolve those conflicts.
Conflicts:
sound/soc/soc-core.c
sound/soc/tegra/tegra_i2s.c
sound/soc/tegra/tegra_spdif.c
Diffstat (limited to 'sound/soc')
-rw-r--r-- | sound/soc/codecs/ak4642.c | 2 | ||||
-rw-r--r-- | sound/soc/codecs/sgtl5000.c | 25 | ||||
-rw-r--r-- | sound/soc/fsl/imx-audmux.c | 5 | ||||
-rw-r--r-- | sound/soc/pxa/pxa2xx-i2s.c | 1 | ||||
-rw-r--r-- | sound/soc/soc-core.c | 2 |
5 files changed, 21 insertions, 14 deletions
diff --git a/sound/soc/codecs/ak4642.c b/sound/soc/codecs/ak4642.c index f8e10ced244a..b3e24f289421 100644 --- a/sound/soc/codecs/ak4642.c +++ b/sound/soc/codecs/ak4642.c | |||
@@ -140,7 +140,7 @@ | |||
140 | * min : 0xFE : -115.0 dB | 140 | * min : 0xFE : -115.0 dB |
141 | * mute: 0xFF | 141 | * mute: 0xFF |
142 | */ | 142 | */ |
143 | static const DECLARE_TLV_DB_SCALE(out_tlv, -11500, 50, 1); | 143 | static const DECLARE_TLV_DB_SCALE(out_tlv, -11550, 50, 1); |
144 | 144 | ||
145 | static const struct snd_kcontrol_new ak4642_snd_controls[] = { | 145 | static const struct snd_kcontrol_new ak4642_snd_controls[] = { |
146 | 146 | ||
diff --git a/sound/soc/codecs/sgtl5000.c b/sound/soc/codecs/sgtl5000.c index 9538d41c1e5c..8005fe6db66f 100644 --- a/sound/soc/codecs/sgtl5000.c +++ b/sound/soc/codecs/sgtl5000.c | |||
@@ -143,11 +143,11 @@ static int mic_bias_event(struct snd_soc_dapm_widget *w, | |||
143 | } | 143 | } |
144 | 144 | ||
145 | /* | 145 | /* |
146 | * using codec assist to small pop, hp_powerup or lineout_powerup | 146 | * As manual described, ADC/DAC only works when VAG powerup, |
147 | * should stay setting until vag_powerup is fully ramped down, | 147 | * So enabled VAG before ADC/DAC up. |
148 | * vag fully ramped down require 400ms. | 148 | * In power down case, we need wait 400ms when vag fully ramped down. |
149 | */ | 149 | */ |
150 | static int small_pop_event(struct snd_soc_dapm_widget *w, | 150 | static int power_vag_event(struct snd_soc_dapm_widget *w, |
151 | struct snd_kcontrol *kcontrol, int event) | 151 | struct snd_kcontrol *kcontrol, int event) |
152 | { | 152 | { |
153 | switch (event) { | 153 | switch (event) { |
@@ -156,7 +156,7 @@ static int small_pop_event(struct snd_soc_dapm_widget *w, | |||
156 | SGTL5000_VAG_POWERUP, SGTL5000_VAG_POWERUP); | 156 | SGTL5000_VAG_POWERUP, SGTL5000_VAG_POWERUP); |
157 | break; | 157 | break; |
158 | 158 | ||
159 | case SND_SOC_DAPM_PRE_PMD: | 159 | case SND_SOC_DAPM_POST_PMD: |
160 | snd_soc_update_bits(w->codec, SGTL5000_CHIP_ANA_POWER, | 160 | snd_soc_update_bits(w->codec, SGTL5000_CHIP_ANA_POWER, |
161 | SGTL5000_VAG_POWERUP, 0); | 161 | SGTL5000_VAG_POWERUP, 0); |
162 | msleep(400); | 162 | msleep(400); |
@@ -201,12 +201,8 @@ static const struct snd_soc_dapm_widget sgtl5000_dapm_widgets[] = { | |||
201 | mic_bias_event, | 201 | mic_bias_event, |
202 | SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD), | 202 | SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD), |
203 | 203 | ||
204 | SND_SOC_DAPM_PGA_E("HP", SGTL5000_CHIP_ANA_POWER, 4, 0, NULL, 0, | 204 | SND_SOC_DAPM_PGA("HP", SGTL5000_CHIP_ANA_POWER, 4, 0, NULL, 0), |
205 | small_pop_event, | 205 | SND_SOC_DAPM_PGA("LO", SGTL5000_CHIP_ANA_POWER, 0, 0, NULL, 0), |
206 | SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_PRE_PMD), | ||
207 | SND_SOC_DAPM_PGA_E("LO", SGTL5000_CHIP_ANA_POWER, 0, 0, NULL, 0, | ||
208 | small_pop_event, | ||
209 | SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_PRE_PMD), | ||
210 | 206 | ||
211 | SND_SOC_DAPM_MUX("Capture Mux", SND_SOC_NOPM, 0, 0, &adc_mux), | 207 | SND_SOC_DAPM_MUX("Capture Mux", SND_SOC_NOPM, 0, 0, &adc_mux), |
212 | SND_SOC_DAPM_MUX("Headphone Mux", SND_SOC_NOPM, 0, 0, &dac_mux), | 208 | SND_SOC_DAPM_MUX("Headphone Mux", SND_SOC_NOPM, 0, 0, &dac_mux), |
@@ -221,8 +217,11 @@ static const struct snd_soc_dapm_widget sgtl5000_dapm_widgets[] = { | |||
221 | 0, SGTL5000_CHIP_DIG_POWER, | 217 | 0, SGTL5000_CHIP_DIG_POWER, |
222 | 1, 0), | 218 | 1, 0), |
223 | 219 | ||
224 | SND_SOC_DAPM_ADC("ADC", "Capture", SGTL5000_CHIP_ANA_POWER, 1, 0), | 220 | SND_SOC_DAPM_SUPPLY("VAG_POWER", SGTL5000_CHIP_ANA_POWER, 7, 0, |
221 | power_vag_event, | ||
222 | SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD), | ||
225 | 223 | ||
224 | SND_SOC_DAPM_ADC("ADC", "Capture", SGTL5000_CHIP_ANA_POWER, 1, 0), | ||
226 | SND_SOC_DAPM_DAC("DAC", "Playback", SGTL5000_CHIP_ANA_POWER, 3, 0), | 225 | SND_SOC_DAPM_DAC("DAC", "Playback", SGTL5000_CHIP_ANA_POWER, 3, 0), |
227 | }; | 226 | }; |
228 | 227 | ||
@@ -231,9 +230,11 @@ static const struct snd_soc_dapm_route sgtl5000_dapm_routes[] = { | |||
231 | {"Capture Mux", "LINE_IN", "LINE_IN"}, /* line_in --> adc_mux */ | 230 | {"Capture Mux", "LINE_IN", "LINE_IN"}, /* line_in --> adc_mux */ |
232 | {"Capture Mux", "MIC_IN", "MIC_IN"}, /* mic_in --> adc_mux */ | 231 | {"Capture Mux", "MIC_IN", "MIC_IN"}, /* mic_in --> adc_mux */ |
233 | 232 | ||
233 | {"ADC", NULL, "VAG_POWER"}, | ||
234 | {"ADC", NULL, "Capture Mux"}, /* adc_mux --> adc */ | 234 | {"ADC", NULL, "Capture Mux"}, /* adc_mux --> adc */ |
235 | {"AIFOUT", NULL, "ADC"}, /* adc --> i2s_out */ | 235 | {"AIFOUT", NULL, "ADC"}, /* adc --> i2s_out */ |
236 | 236 | ||
237 | {"DAC", NULL, "VAG_POWER"}, | ||
237 | {"DAC", NULL, "AIFIN"}, /* i2s-->dac,skip audio mux */ | 238 | {"DAC", NULL, "AIFIN"}, /* i2s-->dac,skip audio mux */ |
238 | {"Headphone Mux", "DAC", "DAC"}, /* dac --> hp_mux */ | 239 | {"Headphone Mux", "DAC", "DAC"}, /* dac --> hp_mux */ |
239 | {"LO", NULL, "DAC"}, /* dac --> line_out */ | 240 | {"LO", NULL, "DAC"}, /* dac --> line_out */ |
diff --git a/sound/soc/fsl/imx-audmux.c b/sound/soc/fsl/imx-audmux.c index 1765a197acb0..f23700359c67 100644 --- a/sound/soc/fsl/imx-audmux.c +++ b/sound/soc/fsl/imx-audmux.c | |||
@@ -73,6 +73,9 @@ static ssize_t audmux_read_file(struct file *file, char __user *user_buf, | |||
73 | if (!buf) | 73 | if (!buf) |
74 | return -ENOMEM; | 74 | return -ENOMEM; |
75 | 75 | ||
76 | if (!audmux_base) | ||
77 | return -ENOSYS; | ||
78 | |||
76 | if (audmux_clk) | 79 | if (audmux_clk) |
77 | clk_prepare_enable(audmux_clk); | 80 | clk_prepare_enable(audmux_clk); |
78 | 81 | ||
@@ -152,7 +155,7 @@ static void __init audmux_debugfs_init(void) | |||
152 | return; | 155 | return; |
153 | } | 156 | } |
154 | 157 | ||
155 | for (i = 1; i < 8; i++) { | 158 | for (i = 0; i < MX31_AUDMUX_PORT6_SSI_PINS_6 + 1; i++) { |
156 | snprintf(buf, sizeof(buf), "ssi%d", i); | 159 | snprintf(buf, sizeof(buf), "ssi%d", i); |
157 | if (!debugfs_create_file(buf, 0444, audmux_debugfs_root, | 160 | if (!debugfs_create_file(buf, 0444, audmux_debugfs_root, |
158 | (void *)i, &audmux_debugfs_fops)) | 161 | (void *)i, &audmux_debugfs_fops)) |
diff --git a/sound/soc/pxa/pxa2xx-i2s.c b/sound/soc/pxa/pxa2xx-i2s.c index 453b0925a0b5..3075a426124c 100644 --- a/sound/soc/pxa/pxa2xx-i2s.c +++ b/sound/soc/pxa/pxa2xx-i2s.c | |||
@@ -17,6 +17,7 @@ | |||
17 | #include <linux/delay.h> | 17 | #include <linux/delay.h> |
18 | #include <linux/clk.h> | 18 | #include <linux/clk.h> |
19 | #include <linux/platform_device.h> | 19 | #include <linux/platform_device.h> |
20 | #include <linux/io.h> | ||
20 | #include <sound/core.h> | 21 | #include <sound/core.h> |
21 | #include <sound/pcm.h> | 22 | #include <sound/pcm.h> |
22 | #include <sound/initval.h> | 23 | #include <sound/initval.h> |
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index 77f35292f1b0..5d308e92f9b0 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c | |||
@@ -1072,6 +1072,8 @@ static int soc_probe_platform(struct snd_soc_card *card, | |||
1072 | snd_soc_dapm_new_dai_widgets(&platform->dapm, dai); | 1072 | snd_soc_dapm_new_dai_widgets(&platform->dapm, dai); |
1073 | } | 1073 | } |
1074 | 1074 | ||
1075 | platform->dapm.idle_bias_off = 1; | ||
1076 | |||
1075 | if (driver->probe) { | 1077 | if (driver->probe) { |
1076 | ret = driver->probe(platform); | 1078 | ret = driver->probe(platform); |
1077 | if (ret < 0) { | 1079 | if (ret < 0) { |