aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc
diff options
context:
space:
mode:
Diffstat (limited to 'sound/soc')
-rw-r--r--sound/soc/codecs/ak4642.c2
-rw-r--r--sound/soc/codecs/sgtl5000.c25
-rw-r--r--sound/soc/codecs/wm8994.c25
-rw-r--r--sound/soc/imx/imx-audmux.c13
-rw-r--r--sound/soc/imx/imx-pcm-dma-mx2.c3
-rw-r--r--sound/soc/mxs/mxs-pcm.c2
-rw-r--r--sound/soc/mxs/mxs-saif.c2
-rw-r--r--sound/soc/omap/ams-delta.c34
-rw-r--r--sound/soc/pxa/pxa2xx-ac97.c1
-rw-r--r--sound/soc/pxa/pxa2xx-i2s.c1
-rw-r--r--sound/soc/samsung/Kconfig12
-rw-r--r--sound/soc/sh/siu_pcm.c4
-rw-r--r--sound/soc/soc-core.c2
-rw-r--r--sound/soc/tegra/tegra_i2s.c6
-rw-r--r--sound/soc/tegra/tegra_spdif.c4
-rw-r--r--sound/soc/txx9/txx9aclc.c2
16 files changed, 51 insertions, 87 deletions
diff --git a/sound/soc/codecs/ak4642.c b/sound/soc/codecs/ak4642.c
index f8e10ced244..b3e24f28942 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 */
143static const DECLARE_TLV_DB_SCALE(out_tlv, -11500, 50, 1); 143static const DECLARE_TLV_DB_SCALE(out_tlv, -11550, 50, 1);
144 144
145static const struct snd_kcontrol_new ak4642_snd_controls[] = { 145static 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 d1926266fe0..8e92fb88ed0 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 */
150static int small_pop_event(struct snd_soc_dapm_widget *w, 150static 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/codecs/wm8994.c b/sound/soc/codecs/wm8994.c
index 10d27890eed..7c49642af05 100644
--- a/sound/soc/codecs/wm8994.c
+++ b/sound/soc/codecs/wm8994.c
@@ -2181,26 +2181,9 @@ static int wm8994_set_bias_level(struct snd_soc_codec *codec,
2181 case SND_SOC_BIAS_STANDBY: 2181 case SND_SOC_BIAS_STANDBY:
2182 if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) { 2182 if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
2183 switch (control->type) { 2183 switch (control->type) {
2184 case WM8994:
2185 if (wm8994->revision < 4) {
2186 /* Tweak DC servo and DSP
2187 * configuration for improved
2188 * performance. */
2189 snd_soc_write(codec, 0x102, 0x3);
2190 snd_soc_write(codec, 0x56, 0x3);
2191 snd_soc_write(codec, 0x817, 0);
2192 snd_soc_write(codec, 0x102, 0);
2193 }
2194 break;
2195
2196 case WM8958: 2184 case WM8958:
2197 if (wm8994->revision == 0) { 2185 if (wm8994->revision == 0) {
2198 /* Optimise performance for rev A */ 2186 /* Optimise performance for rev A */
2199 snd_soc_write(codec, 0x102, 0x3);
2200 snd_soc_write(codec, 0xcb, 0x81);
2201 snd_soc_write(codec, 0x817, 0);
2202 snd_soc_write(codec, 0x102, 0);
2203
2204 snd_soc_update_bits(codec, 2187 snd_soc_update_bits(codec,
2205 WM8958_CHARGE_PUMP_2, 2188 WM8958_CHARGE_PUMP_2,
2206 WM8958_CP_DISCH, 2189 WM8958_CP_DISCH,
@@ -2208,13 +2191,7 @@ static int wm8994_set_bias_level(struct snd_soc_codec *codec,
2208 } 2191 }
2209 break; 2192 break;
2210 2193
2211 case WM1811: 2194 default:
2212 if (wm8994->revision < 2) {
2213 snd_soc_write(codec, 0x102, 0x3);
2214 snd_soc_write(codec, 0x5d, 0x7e);
2215 snd_soc_write(codec, 0x5e, 0x0);
2216 snd_soc_write(codec, 0x102, 0x0);
2217 }
2218 break; 2195 break;
2219 } 2196 }
2220 2197
diff --git a/sound/soc/imx/imx-audmux.c b/sound/soc/imx/imx-audmux.c
index a839494c5ea..0fe66c3dde1 100644
--- a/sound/soc/imx/imx-audmux.c
+++ b/sound/soc/imx/imx-audmux.c
@@ -79,14 +79,17 @@ static ssize_t audmux_read_file(struct file *file, char __user *user_buf,
79 if (!buf) 79 if (!buf)
80 return -ENOMEM; 80 return -ENOMEM;
81 81
82 if (!audmux_base)
83 return -ENOSYS;
84
82 if (audmux_clk) 85 if (audmux_clk)
83 clk_enable(audmux_clk); 86 clk_prepare_enable(audmux_clk);
84 87
85 ptcr = readl(audmux_base + IMX_AUDMUX_V2_PTCR(port)); 88 ptcr = readl(audmux_base + IMX_AUDMUX_V2_PTCR(port));
86 pdcr = readl(audmux_base + IMX_AUDMUX_V2_PDCR(port)); 89 pdcr = readl(audmux_base + IMX_AUDMUX_V2_PDCR(port));
87 90
88 if (audmux_clk) 91 if (audmux_clk)
89 clk_disable(audmux_clk); 92 clk_disable_unprepare(audmux_clk);
90 93
91 ret = snprintf(buf, PAGE_SIZE, "PDCR: %08x\nPTCR: %08x\n", 94 ret = snprintf(buf, PAGE_SIZE, "PDCR: %08x\nPTCR: %08x\n",
92 pdcr, ptcr); 95 pdcr, ptcr);
@@ -158,7 +161,7 @@ static void __init audmux_debugfs_init(void)
158 return; 161 return;
159 } 162 }
160 163
161 for (i = 1; i < 8; i++) { 164 for (i = 0; i < MX31_AUDMUX_PORT6_SSI_PINS_6 + 1; i++) {
162 snprintf(buf, sizeof(buf), "ssi%d", i); 165 snprintf(buf, sizeof(buf), "ssi%d", i);
163 if (!debugfs_create_file(buf, 0444, audmux_debugfs_root, 166 if (!debugfs_create_file(buf, 0444, audmux_debugfs_root,
164 (void *)i, &audmux_debugfs_fops)) 167 (void *)i, &audmux_debugfs_fops))
@@ -237,13 +240,13 @@ int imx_audmux_v2_configure_port(unsigned int port, unsigned int ptcr,
237 return -ENOSYS; 240 return -ENOSYS;
238 241
239 if (audmux_clk) 242 if (audmux_clk)
240 clk_enable(audmux_clk); 243 clk_prepare_enable(audmux_clk);
241 244
242 writel(ptcr, audmux_base + IMX_AUDMUX_V2_PTCR(port)); 245 writel(ptcr, audmux_base + IMX_AUDMUX_V2_PTCR(port));
243 writel(pdcr, audmux_base + IMX_AUDMUX_V2_PDCR(port)); 246 writel(pdcr, audmux_base + IMX_AUDMUX_V2_PDCR(port));
244 247
245 if (audmux_clk) 248 if (audmux_clk)
246 clk_disable(audmux_clk); 249 clk_disable_unprepare(audmux_clk);
247 250
248 return 0; 251 return 0;
249} 252}
diff --git a/sound/soc/imx/imx-pcm-dma-mx2.c b/sound/soc/imx/imx-pcm-dma-mx2.c
index e43c8fa2788..6b818de2fc0 100644
--- a/sound/soc/imx/imx-pcm-dma-mx2.c
+++ b/sound/soc/imx/imx-pcm-dma-mx2.c
@@ -21,6 +21,7 @@
21#include <linux/platform_device.h> 21#include <linux/platform_device.h>
22#include <linux/slab.h> 22#include <linux/slab.h>
23#include <linux/dmaengine.h> 23#include <linux/dmaengine.h>
24#include <linux/types.h>
24 25
25#include <sound/core.h> 26#include <sound/core.h>
26#include <sound/initval.h> 27#include <sound/initval.h>
@@ -58,6 +59,8 @@ static int snd_imx_pcm_hw_params(struct snd_pcm_substream *substream,
58 if (ret) 59 if (ret)
59 return ret; 60 return ret;
60 61
62 slave_config.device_fc = false;
63
61 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) { 64 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
62 slave_config.dst_addr = dma_params->dma_addr; 65 slave_config.dst_addr = dma_params->dma_addr;
63 slave_config.dst_maxburst = dma_params->burstsize; 66 slave_config.dst_maxburst = dma_params->burstsize;
diff --git a/sound/soc/mxs/mxs-pcm.c b/sound/soc/mxs/mxs-pcm.c
index 6ca1f46d84a..e373fbbc97a 100644
--- a/sound/soc/mxs/mxs-pcm.c
+++ b/sound/soc/mxs/mxs-pcm.c
@@ -28,6 +28,7 @@
28#include <linux/platform_device.h> 28#include <linux/platform_device.h>
29#include <linux/slab.h> 29#include <linux/slab.h>
30#include <linux/dmaengine.h> 30#include <linux/dmaengine.h>
31#include <linux/fsl/mxs-dma.h>
31 32
32#include <sound/core.h> 33#include <sound/core.h>
33#include <sound/initval.h> 34#include <sound/initval.h>
@@ -36,7 +37,6 @@
36#include <sound/soc.h> 37#include <sound/soc.h>
37#include <sound/dmaengine_pcm.h> 38#include <sound/dmaengine_pcm.h>
38 39
39#include <mach/dma.h>
40#include "mxs-pcm.h" 40#include "mxs-pcm.h"
41 41
42struct mxs_pcm_dma_data { 42struct mxs_pcm_dma_data {
diff --git a/sound/soc/mxs/mxs-saif.c b/sound/soc/mxs/mxs-saif.c
index 12be05b1688..53f4fd8fece 100644
--- a/sound/soc/mxs/mxs-saif.c
+++ b/sound/soc/mxs/mxs-saif.c
@@ -24,12 +24,12 @@
24#include <linux/clk.h> 24#include <linux/clk.h>
25#include <linux/delay.h> 25#include <linux/delay.h>
26#include <linux/time.h> 26#include <linux/time.h>
27#include <linux/fsl/mxs-dma.h>
27#include <sound/core.h> 28#include <sound/core.h>
28#include <sound/pcm.h> 29#include <sound/pcm.h>
29#include <sound/pcm_params.h> 30#include <sound/pcm_params.h>
30#include <sound/soc.h> 31#include <sound/soc.h>
31#include <sound/saif.h> 32#include <sound/saif.h>
32#include <mach/dma.h>
33#include <asm/mach-types.h> 33#include <asm/mach-types.h>
34#include <mach/hardware.h> 34#include <mach/hardware.h>
35#include <mach/mxs.h> 35#include <mach/mxs.h>
diff --git a/sound/soc/omap/ams-delta.c b/sound/soc/omap/ams-delta.c
index 49fe63ce51f..7d4fa8ed669 100644
--- a/sound/soc/omap/ams-delta.c
+++ b/sound/soc/omap/ams-delta.c
@@ -426,29 +426,6 @@ static struct snd_soc_ops ams_delta_ops = {
426}; 426};
427 427
428 428
429/* Board specific codec bias level control */
430static int ams_delta_set_bias_level(struct snd_soc_card *card,
431 struct snd_soc_dapm_context *dapm,
432 enum snd_soc_bias_level level)
433{
434 switch (level) {
435 case SND_SOC_BIAS_ON:
436 case SND_SOC_BIAS_PREPARE:
437 case SND_SOC_BIAS_STANDBY:
438 if (card->dapm.bias_level == SND_SOC_BIAS_OFF)
439 ams_delta_latch2_write(AMS_DELTA_LATCH2_MODEM_NRESET,
440 AMS_DELTA_LATCH2_MODEM_NRESET);
441 break;
442 case SND_SOC_BIAS_OFF:
443 if (card->dapm.bias_level != SND_SOC_BIAS_OFF)
444 ams_delta_latch2_write(AMS_DELTA_LATCH2_MODEM_NRESET,
445 0);
446 }
447 card->dapm.bias_level = level;
448
449 return 0;
450}
451
452/* Digital mute implemented using modem/CPU multiplexer. 429/* Digital mute implemented using modem/CPU multiplexer.
453 * Shares hardware with codec config pulse generation */ 430 * Shares hardware with codec config pulse generation */
454static bool ams_delta_muted = 1; 431static bool ams_delta_muted = 1;
@@ -512,9 +489,6 @@ static int ams_delta_cx20442_init(struct snd_soc_pcm_runtime *rtd)
512 ams_delta_ops.shutdown = ams_delta_shutdown; 489 ams_delta_ops.shutdown = ams_delta_shutdown;
513 } 490 }
514 491
515 /* Set codec bias level */
516 ams_delta_set_bias_level(card, dapm, SND_SOC_BIAS_STANDBY);
517
518 /* Add hook switch - can be used to control the codec from userspace 492 /* Add hook switch - can be used to control the codec from userspace
519 * even if line discipline fails */ 493 * even if line discipline fails */
520 ret = snd_soc_jack_new(rtd->codec, "hook_switch", 494 ret = snd_soc_jack_new(rtd->codec, "hook_switch",
@@ -598,7 +572,6 @@ static struct snd_soc_card ams_delta_audio_card = {
598 .owner = THIS_MODULE, 572 .owner = THIS_MODULE,
599 .dai_link = &ams_delta_dai_link, 573 .dai_link = &ams_delta_dai_link,
600 .num_links = 1, 574 .num_links = 1,
601 .set_bias_level = ams_delta_set_bias_level,
602}; 575};
603 576
604/* Module init/exit */ 577/* Module init/exit */
@@ -635,7 +608,7 @@ err:
635 platform_device_put(ams_delta_audio_platform_device); 608 platform_device_put(ams_delta_audio_platform_device);
636 return ret; 609 return ret;
637} 610}
638module_init(ams_delta_module_init); 611late_initcall(ams_delta_module_init);
639 612
640static void __exit ams_delta_module_exit(void) 613static void __exit ams_delta_module_exit(void)
641{ 614{
@@ -647,11 +620,6 @@ static void __exit ams_delta_module_exit(void)
647 ARRAY_SIZE(ams_delta_hook_switch_gpios), 620 ARRAY_SIZE(ams_delta_hook_switch_gpios),
648 ams_delta_hook_switch_gpios); 621 ams_delta_hook_switch_gpios);
649 622
650 /* Keep modem power on */
651 ams_delta_set_bias_level(&ams_delta_audio_card,
652 &ams_delta_audio_card.rtd[0].codec->dapm,
653 SND_SOC_BIAS_STANDBY);
654
655 platform_device_unregister(cx20442_platform_device); 623 platform_device_unregister(cx20442_platform_device);
656 platform_device_unregister(ams_delta_audio_platform_device); 624 platform_device_unregister(ams_delta_audio_platform_device);
657} 625}
diff --git a/sound/soc/pxa/pxa2xx-ac97.c b/sound/soc/pxa/pxa2xx-ac97.c
index 4800d5fe568..06ea2744cc8 100644
--- a/sound/soc/pxa/pxa2xx-ac97.c
+++ b/sound/soc/pxa/pxa2xx-ac97.c
@@ -11,6 +11,7 @@
11 */ 11 */
12 12
13#include <linux/init.h> 13#include <linux/init.h>
14#include <linux/io.h>
14#include <linux/module.h> 15#include <linux/module.h>
15#include <linux/platform_device.h> 16#include <linux/platform_device.h>
16 17
diff --git a/sound/soc/pxa/pxa2xx-i2s.c b/sound/soc/pxa/pxa2xx-i2s.c
index 609abd51e55..d08583790d2 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/samsung/Kconfig b/sound/soc/samsung/Kconfig
index f3417f2311b..fe3995ce9b3 100644
--- a/sound/soc/samsung/Kconfig
+++ b/sound/soc/samsung/Kconfig
@@ -1,8 +1,8 @@
1config SND_SOC_SAMSUNG 1config SND_SOC_SAMSUNG
2 tristate "ASoC support for Samsung" 2 tristate "ASoC support for Samsung"
3 depends on ARCH_S3C2410 || ARCH_S3C64XX || ARCH_S5PC100 || ARCH_S5PV210 || ARCH_S5P64X0 || ARCH_EXYNOS4 3 depends on ARCH_S3C24XX || ARCH_S3C64XX || ARCH_S5PC100 || ARCH_S5PV210 || ARCH_S5P64X0 || ARCH_EXYNOS4
4 select S3C64XX_DMA if ARCH_S3C64XX 4 select S3C64XX_DMA if ARCH_S3C64XX
5 select S3C2410_DMA if ARCH_S3C2410 5 select S3C2410_DMA if ARCH_S3C24XX
6 help 6 help
7 Say Y or M if you want to add support for codecs attached to 7 Say Y or M if you want to add support for codecs attached to
8 the Samsung SoCs' Audio interfaces. You will also need to 8 the Samsung SoCs' Audio interfaces. You will also need to
@@ -84,7 +84,7 @@ config SND_SOC_SAMSUNG_SMDK2443_WM9710
84 84
85config SND_SOC_SAMSUNG_LN2440SBC_ALC650 85config SND_SOC_SAMSUNG_LN2440SBC_ALC650
86 tristate "SoC AC97 Audio support for LN2440SBC - ALC650" 86 tristate "SoC AC97 Audio support for LN2440SBC - ALC650"
87 depends on SND_SOC_SAMSUNG && ARCH_S3C2410 87 depends on SND_SOC_SAMSUNG && ARCH_S3C24XX
88 select S3C2410_DMA 88 select S3C2410_DMA
89 select AC97_BUS 89 select AC97_BUS
90 select SND_SOC_AC97_CODEC 90 select SND_SOC_AC97_CODEC
@@ -95,7 +95,7 @@ config SND_SOC_SAMSUNG_LN2440SBC_ALC650
95 95
96config SND_SOC_SAMSUNG_S3C24XX_UDA134X 96config SND_SOC_SAMSUNG_S3C24XX_UDA134X
97 tristate "SoC I2S Audio support UDA134X wired to a S3C24XX" 97 tristate "SoC I2S Audio support UDA134X wired to a S3C24XX"
98 depends on SND_SOC_SAMSUNG && ARCH_S3C2410 98 depends on SND_SOC_SAMSUNG && ARCH_S3C24XX
99 select SND_S3C24XX_I2S 99 select SND_S3C24XX_I2S
100 select SND_SOC_L3 100 select SND_SOC_L3
101 select SND_SOC_UDA134X 101 select SND_SOC_UDA134X
@@ -107,14 +107,14 @@ config SND_SOC_SAMSUNG_SIMTEC
107 107
108config SND_SOC_SAMSUNG_SIMTEC_TLV320AIC23 108config SND_SOC_SAMSUNG_SIMTEC_TLV320AIC23
109 tristate "SoC I2S Audio support for TLV320AIC23 on Simtec boards" 109 tristate "SoC I2S Audio support for TLV320AIC23 on Simtec boards"
110 depends on SND_SOC_SAMSUNG && ARCH_S3C2410 110 depends on SND_SOC_SAMSUNG && ARCH_S3C24XX
111 select SND_S3C24XX_I2S 111 select SND_S3C24XX_I2S
112 select SND_SOC_TLV320AIC23 112 select SND_SOC_TLV320AIC23
113 select SND_SOC_SAMSUNG_SIMTEC 113 select SND_SOC_SAMSUNG_SIMTEC
114 114
115config SND_SOC_SAMSUNG_SIMTEC_HERMES 115config SND_SOC_SAMSUNG_SIMTEC_HERMES
116 tristate "SoC I2S Audio support for Simtec Hermes board" 116 tristate "SoC I2S Audio support for Simtec Hermes board"
117 depends on SND_SOC_SAMSUNG && ARCH_S3C2410 117 depends on SND_SOC_SAMSUNG && ARCH_S3C24XX
118 select SND_S3C24XX_I2S 118 select SND_S3C24XX_I2S
119 select SND_SOC_TLV320AIC3X 119 select SND_SOC_TLV320AIC3X
120 select SND_SOC_SAMSUNG_SIMTEC 120 select SND_SOC_SAMSUNG_SIMTEC
diff --git a/sound/soc/sh/siu_pcm.c b/sound/soc/sh/siu_pcm.c
index 0193e595d41..5cfcc655e95 100644
--- a/sound/soc/sh/siu_pcm.c
+++ b/sound/soc/sh/siu_pcm.c
@@ -130,7 +130,7 @@ static int siu_pcm_wr_set(struct siu_port *port_info,
130 sg_dma_len(&sg) = size; 130 sg_dma_len(&sg) = size;
131 sg_dma_address(&sg) = buff; 131 sg_dma_address(&sg) = buff;
132 132
133 desc = siu_stream->chan->device->device_prep_slave_sg(siu_stream->chan, 133 desc = dmaengine_prep_slave_sg(siu_stream->chan,
134 &sg, 1, DMA_MEM_TO_DEV, DMA_PREP_INTERRUPT | DMA_CTRL_ACK); 134 &sg, 1, DMA_MEM_TO_DEV, DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
135 if (!desc) { 135 if (!desc) {
136 dev_err(dev, "Failed to allocate a dma descriptor\n"); 136 dev_err(dev, "Failed to allocate a dma descriptor\n");
@@ -180,7 +180,7 @@ static int siu_pcm_rd_set(struct siu_port *port_info,
180 sg_dma_len(&sg) = size; 180 sg_dma_len(&sg) = size;
181 sg_dma_address(&sg) = buff; 181 sg_dma_address(&sg) = buff;
182 182
183 desc = siu_stream->chan->device->device_prep_slave_sg(siu_stream->chan, 183 desc = dmaengine_prep_slave_sg(siu_stream->chan,
184 &sg, 1, DMA_DEV_TO_MEM, DMA_PREP_INTERRUPT | DMA_CTRL_ACK); 184 &sg, 1, DMA_DEV_TO_MEM, DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
185 if (!desc) { 185 if (!desc) {
186 dev_err(dev, "Failed to allocate dma descriptor\n"); 186 dev_err(dev, "Failed to allocate dma descriptor\n");
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index a4deebc0801..8d2ebf502df 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -1087,6 +1087,8 @@ static int soc_probe_platform(struct snd_soc_card *card,
1087 snd_soc_dapm_new_controls(&platform->dapm, 1087 snd_soc_dapm_new_controls(&platform->dapm,
1088 driver->dapm_widgets, driver->num_dapm_widgets); 1088 driver->dapm_widgets, driver->num_dapm_widgets);
1089 1089
1090 platform->dapm.idle_bias_off = 1;
1091
1090 if (driver->probe) { 1092 if (driver->probe) {
1091 ret = driver->probe(platform); 1093 ret = driver->probe(platform);
1092 if (ret < 0) { 1094 if (ret < 0) {
diff --git a/sound/soc/tegra/tegra_i2s.c b/sound/soc/tegra/tegra_i2s.c
index 33509de5254..e53349912b2 100644
--- a/sound/soc/tegra/tegra_i2s.c
+++ b/sound/soc/tegra/tegra_i2s.c
@@ -79,11 +79,15 @@ static int tegra_i2s_show(struct seq_file *s, void *unused)
79 struct tegra_i2s *i2s = s->private; 79 struct tegra_i2s *i2s = s->private;
80 int i; 80 int i;
81 81
82 clk_enable(i2s->clk_i2s);
83
82 for (i = 0; i < ARRAY_SIZE(regs); i++) { 84 for (i = 0; i < ARRAY_SIZE(regs); i++) {
83 u32 val = tegra_i2s_read(i2s, regs[i].offset); 85 u32 val = tegra_i2s_read(i2s, regs[i].offset);
84 seq_printf(s, "%s = %08x\n", regs[i].name, val); 86 seq_printf(s, "%s = %08x\n", regs[i].name, val);
85 } 87 }
86 88
89 clk_disable(i2s->clk_i2s);
90
87 return 0; 91 return 0;
88} 92}
89 93
@@ -112,7 +116,7 @@ static void tegra_i2s_debug_remove(struct tegra_i2s *i2s)
112 debugfs_remove(i2s->debug); 116 debugfs_remove(i2s->debug);
113} 117}
114#else 118#else
115static inline void tegra_i2s_debug_add(struct tegra_i2s *i2s, int id) 119static inline void tegra_i2s_debug_add(struct tegra_i2s *i2s)
116{ 120{
117} 121}
118 122
diff --git a/sound/soc/tegra/tegra_spdif.c b/sound/soc/tegra/tegra_spdif.c
index 475428cf270..9ff2c601445 100644
--- a/sound/soc/tegra/tegra_spdif.c
+++ b/sound/soc/tegra/tegra_spdif.c
@@ -79,11 +79,15 @@ static int tegra_spdif_show(struct seq_file *s, void *unused)
79 struct tegra_spdif *spdif = s->private; 79 struct tegra_spdif *spdif = s->private;
80 int i; 80 int i;
81 81
82 clk_enable(spdif->clk_spdif_out);
83
82 for (i = 0; i < ARRAY_SIZE(regs); i++) { 84 for (i = 0; i < ARRAY_SIZE(regs); i++) {
83 u32 val = tegra_spdif_read(spdif, regs[i].offset); 85 u32 val = tegra_spdif_read(spdif, regs[i].offset);
84 seq_printf(s, "%s = %08x\n", regs[i].name, val); 86 seq_printf(s, "%s = %08x\n", regs[i].name, val);
85 } 87 }
86 88
89 clk_disable(spdif->clk_spdif_out);
90
87 return 0; 91 return 0;
88} 92}
89 93
diff --git a/sound/soc/txx9/txx9aclc.c b/sound/soc/txx9/txx9aclc.c
index 21554611557..b609d2c64c5 100644
--- a/sound/soc/txx9/txx9aclc.c
+++ b/sound/soc/txx9/txx9aclc.c
@@ -132,7 +132,7 @@ txx9aclc_dma_submit(struct txx9aclc_dmadata *dmadata, dma_addr_t buf_dma_addr)
132 sg_set_page(&sg, pfn_to_page(PFN_DOWN(buf_dma_addr)), 132 sg_set_page(&sg, pfn_to_page(PFN_DOWN(buf_dma_addr)),
133 dmadata->frag_bytes, buf_dma_addr & (PAGE_SIZE - 1)); 133 dmadata->frag_bytes, buf_dma_addr & (PAGE_SIZE - 1));
134 sg_dma_address(&sg) = buf_dma_addr; 134 sg_dma_address(&sg) = buf_dma_addr;
135 desc = chan->device->device_prep_slave_sg(chan, &sg, 1, 135 desc = dmaengine_prep_slave_sg(chan, &sg, 1,
136 dmadata->substream->stream == SNDRV_PCM_STREAM_PLAYBACK ? 136 dmadata->substream->stream == SNDRV_PCM_STREAM_PLAYBACK ?
137 DMA_MEM_TO_DEV : DMA_DEV_TO_MEM, 137 DMA_MEM_TO_DEV : DMA_DEV_TO_MEM,
138 DMA_PREP_INTERRUPT | DMA_CTRL_ACK); 138 DMA_PREP_INTERRUPT | DMA_CTRL_ACK);