aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPadmavathi Venna <padma.v@samsung.com>2012-12-07 03:29:21 -0500
committerMark Brown <broonie@opensource.wolfsonmicro.com>2012-12-07 05:36:07 -0500
commita08485d8fdf6f67ca5f173b68d8f873c574745f2 (patch)
treefac9dbea634fef912a5e74434110ad769b8c963f
parent1974a042dd15f1f007a3a1a2dd7a23ca0e42c01d (diff)
ASoC: Samsung: Do not register samsung audio dma device as pdev
Previously, the ASoC 'platform' (PCM/DMA) object was instantiated via a platform_device. This didn't represent the hardware well, since there was no separate hardware associated with this platform_device; it was a virtual device with sole purpose to call snd_soc_register_platform(). This change removes the platform_device completely. Each Samsung DAI now registers the ASoC 'platform' itself. Machine drivers are adjusted for the new 'platform' name. Signed-off-by: Padmavathi Venna <padma.v@samsung.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
-rw-r--r--arch/arm/mach-exynos/mach-armlex4210.c1
-rw-r--r--arch/arm/mach-exynos/mach-smdkv310.c1
-rw-r--r--arch/arm/mach-s3c24xx/mach-gta02.c1
-rw-r--r--arch/arm/mach-s3c24xx/mach-h1940.c1
-rw-r--r--arch/arm/mach-s3c24xx/mach-mini2440.c1
-rw-r--r--arch/arm/mach-s3c24xx/mach-rx1950.c1
-rw-r--r--arch/arm/mach-s3c64xx/mach-crag6410.c1
-rw-r--r--arch/arm/mach-s3c64xx/mach-smdk6410.c1
-rw-r--r--arch/arm/mach-s5p64x0/mach-smdk6440.c1
-rw-r--r--arch/arm/mach-s5p64x0/mach-smdk6450.c1
-rw-r--r--arch/arm/mach-s5pc100/mach-smdkc100.c1
-rw-r--r--arch/arm/mach-s5pv210/mach-smdkc110.c1
-rw-r--r--arch/arm/mach-s5pv210/mach-smdkv210.c1
-rw-r--r--arch/arm/plat-samsung/devs.c9
-rw-r--r--arch/arm/plat-samsung/include/plat/devs.h1
-rw-r--r--sound/soc/samsung/ac97.c10
-rw-r--r--sound/soc/samsung/bells.c6
-rw-r--r--sound/soc/samsung/dma.c24
-rw-r--r--sound/soc/samsung/dma.h3
-rw-r--r--sound/soc/samsung/goni_wm8994.c2
-rw-r--r--sound/soc/samsung/h1940_uda1380.c2
-rw-r--r--sound/soc/samsung/i2s.c4
-rw-r--r--sound/soc/samsung/jive_wm8750.c2
-rw-r--r--sound/soc/samsung/littlemill.c2
-rw-r--r--sound/soc/samsung/ln2440sbc_alc650.c2
-rw-r--r--sound/soc/samsung/lowland.c2
-rw-r--r--sound/soc/samsung/neo1973_wm8753.c2
-rw-r--r--sound/soc/samsung/pcm.c9
-rw-r--r--sound/soc/samsung/rx1950_uda1380.c2
-rw-r--r--sound/soc/samsung/s3c2412-i2s.c20
-rw-r--r--sound/soc/samsung/s3c24xx-i2s.c20
-rw-r--r--sound/soc/samsung/s3c24xx_simtec_hermes.c2
-rw-r--r--sound/soc/samsung/s3c24xx_simtec_tlv320aic23.c2
-rw-r--r--sound/soc/samsung/s3c24xx_uda134x.c2
-rw-r--r--sound/soc/samsung/smartq_wm8987.c2
-rw-r--r--sound/soc/samsung/smdk2443_wm9710.c2
-rw-r--r--sound/soc/samsung/smdk_spdif.c2
-rw-r--r--sound/soc/samsung/smdk_wm8580.c6
-rw-r--r--sound/soc/samsung/smdk_wm8580pcm.c2
-rw-r--r--sound/soc/samsung/smdk_wm8994.c4
-rw-r--r--sound/soc/samsung/smdk_wm8994pcm.c2
-rw-r--r--sound/soc/samsung/smdk_wm9713.c2
-rw-r--r--sound/soc/samsung/spdif.c10
-rw-r--r--sound/soc/samsung/speyside.c2
-rw-r--r--sound/soc/samsung/tobermory.c2
45 files changed, 105 insertions, 72 deletions
diff --git a/arch/arm/mach-exynos/mach-armlex4210.c b/arch/arm/mach-exynos/mach-armlex4210.c
index 3f37a5e8a1f4..b938f9fc1dd1 100644
--- a/arch/arm/mach-exynos/mach-armlex4210.c
+++ b/arch/arm/mach-exynos/mach-armlex4210.c
@@ -147,7 +147,6 @@ static struct platform_device *armlex4210_devices[] __initdata = {
147 &s3c_device_hsmmc3, 147 &s3c_device_hsmmc3,
148 &s3c_device_rtc, 148 &s3c_device_rtc,
149 &s3c_device_wdt, 149 &s3c_device_wdt,
150 &samsung_asoc_dma,
151 &armlex4210_smsc911x, 150 &armlex4210_smsc911x,
152 &exynos4_device_ahci, 151 &exynos4_device_ahci,
153}; 152};
diff --git a/arch/arm/mach-exynos/mach-smdkv310.c b/arch/arm/mach-exynos/mach-smdkv310.c
index ee4fb1a9cb72..5de9ee28a508 100644
--- a/arch/arm/mach-exynos/mach-smdkv310.c
+++ b/arch/arm/mach-exynos/mach-smdkv310.c
@@ -311,7 +311,6 @@ static struct platform_device *smdkv310_devices[] __initdata = {
311 &s5p_device_mfc_l, 311 &s5p_device_mfc_l,
312 &s5p_device_mfc_r, 312 &s5p_device_mfc_r,
313 &exynos4_device_spdif, 313 &exynos4_device_spdif,
314 &samsung_asoc_dma,
315 &samsung_asoc_idma, 314 &samsung_asoc_idma,
316 &s5p_device_fimd0, 315 &s5p_device_fimd0,
317 &smdkv310_device_audio, 316 &smdkv310_device_audio,
diff --git a/arch/arm/mach-s3c24xx/mach-gta02.c b/arch/arm/mach-s3c24xx/mach-gta02.c
index 4a963467b7ee..973b87ca87f4 100644
--- a/arch/arm/mach-s3c24xx/mach-gta02.c
+++ b/arch/arm/mach-s3c24xx/mach-gta02.c
@@ -521,7 +521,6 @@ static struct platform_device *gta02_devices[] __initdata = {
521 &gta02_nor_flash, 521 &gta02_nor_flash,
522 &s3c24xx_pwm_device, 522 &s3c24xx_pwm_device,
523 &s3c_device_iis, 523 &s3c_device_iis,
524 &samsung_asoc_dma,
525 &s3c_device_i2c0, 524 &s3c_device_i2c0,
526 &gta02_dfbmcs320_device, 525 &gta02_dfbmcs320_device,
527 &gta02_buttons_device, 526 &gta02_buttons_device,
diff --git a/arch/arm/mach-s3c24xx/mach-h1940.c b/arch/arm/mach-s3c24xx/mach-h1940.c
index 63aaf076f611..b23dd1b106e8 100644
--- a/arch/arm/mach-s3c24xx/mach-h1940.c
+++ b/arch/arm/mach-s3c24xx/mach-h1940.c
@@ -632,7 +632,6 @@ static struct platform_device *h1940_devices[] __initdata = {
632 &s3c_device_wdt, 632 &s3c_device_wdt,
633 &s3c_device_i2c0, 633 &s3c_device_i2c0,
634 &s3c_device_iis, 634 &s3c_device_iis,
635 &samsung_asoc_dma,
636 &s3c_device_usbgadget, 635 &s3c_device_usbgadget,
637 &h1940_device_leds, 636 &h1940_device_leds,
638 &h1940_device_bluetooth, 637 &h1940_device_bluetooth,
diff --git a/arch/arm/mach-s3c24xx/mach-mini2440.c b/arch/arm/mach-s3c24xx/mach-mini2440.c
index 393c0f1ac11a..a31d5b83e5f7 100644
--- a/arch/arm/mach-s3c24xx/mach-mini2440.c
+++ b/arch/arm/mach-s3c24xx/mach-mini2440.c
@@ -519,7 +519,6 @@ static struct platform_device *mini2440_devices[] __initdata = {
519 &s3c_device_iis, 519 &s3c_device_iis,
520 &uda1340_codec, 520 &uda1340_codec,
521 &mini2440_audio, 521 &mini2440_audio,
522 &samsung_asoc_dma,
523}; 522};
524 523
525static void __init mini2440_map_io(void) 524static void __init mini2440_map_io(void)
diff --git a/arch/arm/mach-s3c24xx/mach-rx1950.c b/arch/arm/mach-s3c24xx/mach-rx1950.c
index 379fde521d37..0606f2faaa5c 100644
--- a/arch/arm/mach-s3c24xx/mach-rx1950.c
+++ b/arch/arm/mach-s3c24xx/mach-rx1950.c
@@ -712,7 +712,6 @@ static struct platform_device *rx1950_devices[] __initdata = {
712 &s3c_device_wdt, 712 &s3c_device_wdt,
713 &s3c_device_i2c0, 713 &s3c_device_i2c0,
714 &s3c_device_iis, 714 &s3c_device_iis,
715 &samsung_asoc_dma,
716 &s3c_device_usbgadget, 715 &s3c_device_usbgadget,
717 &s3c_device_rtc, 716 &s3c_device_rtc,
718 &s3c_device_nand, 717 &s3c_device_nand,
diff --git a/arch/arm/mach-s3c64xx/mach-crag6410.c b/arch/arm/mach-s3c64xx/mach-crag6410.c
index 13b7eaa45fd0..ef2117d7391b 100644
--- a/arch/arm/mach-s3c64xx/mach-crag6410.c
+++ b/arch/arm/mach-s3c64xx/mach-crag6410.c
@@ -357,7 +357,6 @@ static struct platform_device *crag6410_devices[] __initdata = {
357 &s3c_device_timer[0], 357 &s3c_device_timer[0],
358 &s3c64xx_device_iis0, 358 &s3c64xx_device_iis0,
359 &s3c64xx_device_iis1, 359 &s3c64xx_device_iis1,
360 &samsung_asoc_dma,
361 &samsung_device_keypad, 360 &samsung_device_keypad,
362 &crag6410_gpio_keydev, 361 &crag6410_gpio_keydev,
363 &crag6410_dm9k_device, 362 &crag6410_dm9k_device,
diff --git a/arch/arm/mach-s3c64xx/mach-smdk6410.c b/arch/arm/mach-s3c64xx/mach-smdk6410.c
index da1a771a29e9..574a9eef588d 100644
--- a/arch/arm/mach-s3c64xx/mach-smdk6410.c
+++ b/arch/arm/mach-s3c64xx/mach-smdk6410.c
@@ -275,7 +275,6 @@ static struct platform_device *smdk6410_devices[] __initdata = {
275 &s3c_device_fb, 275 &s3c_device_fb,
276 &s3c_device_ohci, 276 &s3c_device_ohci,
277 &s3c_device_usb_hsotg, 277 &s3c_device_usb_hsotg,
278 &samsung_asoc_dma,
279 &s3c64xx_device_iisv4, 278 &s3c64xx_device_iisv4,
280 &samsung_device_keypad, 279 &samsung_device_keypad,
281 280
diff --git a/arch/arm/mach-s5p64x0/mach-smdk6440.c b/arch/arm/mach-s5p64x0/mach-smdk6440.c
index 96ea1fe0ec94..1af823558c60 100644
--- a/arch/arm/mach-s5p64x0/mach-smdk6440.c
+++ b/arch/arm/mach-s5p64x0/mach-smdk6440.c
@@ -165,7 +165,6 @@ static struct platform_device *smdk6440_devices[] __initdata = {
165 &s3c_device_i2c1, 165 &s3c_device_i2c1,
166 &s3c_device_ts, 166 &s3c_device_ts,
167 &s3c_device_wdt, 167 &s3c_device_wdt,
168 &samsung_asoc_dma,
169 &s5p6440_device_iis, 168 &s5p6440_device_iis,
170 &s3c_device_fb, 169 &s3c_device_fb,
171 &smdk6440_lcd_lte480wv, 170 &smdk6440_lcd_lte480wv,
diff --git a/arch/arm/mach-s5p64x0/mach-smdk6450.c b/arch/arm/mach-s5p64x0/mach-smdk6450.c
index 12748b6eaa7b..62526ccf6b70 100644
--- a/arch/arm/mach-s5p64x0/mach-smdk6450.c
+++ b/arch/arm/mach-s5p64x0/mach-smdk6450.c
@@ -183,7 +183,6 @@ static struct platform_device *smdk6450_devices[] __initdata = {
183 &s3c_device_i2c1, 183 &s3c_device_i2c1,
184 &s3c_device_ts, 184 &s3c_device_ts,
185 &s3c_device_wdt, 185 &s3c_device_wdt,
186 &samsung_asoc_dma,
187 &s5p6450_device_iis0, 186 &s5p6450_device_iis0,
188 &s3c_device_fb, 187 &s3c_device_fb,
189 &smdk6450_lcd_lte480wv, 188 &smdk6450_lcd_lte480wv,
diff --git a/arch/arm/mach-s5pc100/mach-smdkc100.c b/arch/arm/mach-s5pc100/mach-smdkc100.c
index dba7384a87bd..9abe95e806ab 100644
--- a/arch/arm/mach-s5pc100/mach-smdkc100.c
+++ b/arch/arm/mach-s5pc100/mach-smdkc100.c
@@ -197,7 +197,6 @@ static struct platform_device *smdkc100_devices[] __initdata = {
197 &s3c_device_ts, 197 &s3c_device_ts,
198 &s3c_device_wdt, 198 &s3c_device_wdt,
199 &smdkc100_lcd_powerdev, 199 &smdkc100_lcd_powerdev,
200 &samsung_asoc_dma,
201 &s5pc100_device_iis0, 200 &s5pc100_device_iis0,
202 &samsung_device_keypad, 201 &samsung_device_keypad,
203 &s5pc100_device_ac97, 202 &s5pc100_device_ac97,
diff --git a/arch/arm/mach-s5pv210/mach-smdkc110.c b/arch/arm/mach-s5pv210/mach-smdkc110.c
index d9c99fcc1aa7..f1f3bd37ecda 100644
--- a/arch/arm/mach-s5pv210/mach-smdkc110.c
+++ b/arch/arm/mach-s5pv210/mach-smdkc110.c
@@ -85,7 +85,6 @@ static struct s3c_ide_platdata smdkc110_ide_pdata __initdata = {
85}; 85};
86 86
87static struct platform_device *smdkc110_devices[] __initdata = { 87static struct platform_device *smdkc110_devices[] __initdata = {
88 &samsung_asoc_dma,
89 &s5pv210_device_iis0, 88 &s5pv210_device_iis0,
90 &s5pv210_device_ac97, 89 &s5pv210_device_ac97,
91 &s5pv210_device_spdif, 90 &s5pv210_device_spdif,
diff --git a/arch/arm/mach-s5pv210/mach-smdkv210.c b/arch/arm/mach-s5pv210/mach-smdkv210.c
index 4cdb5bb7bbcf..6bc8404bf678 100644
--- a/arch/arm/mach-s5pv210/mach-smdkv210.c
+++ b/arch/arm/mach-s5pv210/mach-smdkv210.c
@@ -234,7 +234,6 @@ static struct platform_device *smdkv210_devices[] __initdata = {
234 &s5pv210_device_ac97, 234 &s5pv210_device_ac97,
235 &s5pv210_device_iis0, 235 &s5pv210_device_iis0,
236 &s5pv210_device_spdif, 236 &s5pv210_device_spdif,
237 &samsung_asoc_dma,
238 &samsung_asoc_idma, 237 &samsung_asoc_idma,
239 &samsung_device_keypad, 238 &samsung_device_keypad,
240 &smdkv210_dm9000, 239 &smdkv210_dm9000,
diff --git a/arch/arm/plat-samsung/devs.c b/arch/arm/plat-samsung/devs.c
index 03f654d55eff..7d27a241f984 100644
--- a/arch/arm/plat-samsung/devs.c
+++ b/arch/arm/plat-samsung/devs.c
@@ -146,15 +146,6 @@ struct platform_device s3c_device_camif = {
146 146
147/* ASOC DMA */ 147/* ASOC DMA */
148 148
149struct platform_device samsung_asoc_dma = {
150 .name = "samsung-audio",
151 .id = -1,
152 .dev = {
153 .dma_mask = &samsung_device_dma_mask,
154 .coherent_dma_mask = DMA_BIT_MASK(32),
155 }
156};
157
158struct platform_device samsung_asoc_idma = { 149struct platform_device samsung_asoc_idma = {
159 .name = "samsung-idma", 150 .name = "samsung-idma",
160 .id = -1, 151 .id = -1,
diff --git a/arch/arm/plat-samsung/include/plat/devs.h b/arch/arm/plat-samsung/include/plat/devs.h
index 5da4b4f38f40..c45f70cbbfb7 100644
--- a/arch/arm/plat-samsung/include/plat/devs.h
+++ b/arch/arm/plat-samsung/include/plat/devs.h
@@ -135,7 +135,6 @@ extern struct platform_device exynos4_device_spdif;
135 135
136extern struct platform_device exynos_device_drm; 136extern struct platform_device exynos_device_drm;
137 137
138extern struct platform_device samsung_asoc_dma;
139extern struct platform_device samsung_asoc_idma; 138extern struct platform_device samsung_asoc_idma;
140extern struct platform_device samsung_device_keypad; 139extern struct platform_device samsung_device_keypad;
141 140
diff --git a/sound/soc/samsung/ac97.c b/sound/soc/samsung/ac97.c
index 386bab1f99ab..cd6c7073c50d 100644
--- a/sound/soc/samsung/ac97.c
+++ b/sound/soc/samsung/ac97.c
@@ -462,8 +462,15 @@ static __devinit int s3c_ac97_probe(struct platform_device *pdev)
462 if (ret) 462 if (ret)
463 goto err5; 463 goto err5;
464 464
465 return 0; 465 ret = asoc_dma_platform_register(&pdev->dev);
466 if (ret) {
467 dev_err(&pdev->dev, "failed to get register DMA: %d\n", ret);
468 goto err6;
469 }
466 470
471 return 0;
472err6:
473 snd_soc_unregister_dais(&pdev->dev, ARRAY_SIZE(s3c_ac97_dai));
467err5: 474err5:
468 free_irq(irq_res->start, NULL); 475 free_irq(irq_res->start, NULL);
469err4: 476err4:
@@ -482,6 +489,7 @@ static __devexit int s3c_ac97_remove(struct platform_device *pdev)
482{ 489{
483 struct resource *mem_res, *irq_res; 490 struct resource *mem_res, *irq_res;
484 491
492 asoc_dma_platform_unregister(&pdev->dev);
485 snd_soc_unregister_dais(&pdev->dev, ARRAY_SIZE(s3c_ac97_dai)); 493 snd_soc_unregister_dais(&pdev->dev, ARRAY_SIZE(s3c_ac97_dai));
486 494
487 irq_res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); 495 irq_res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
diff --git a/sound/soc/samsung/bells.c b/sound/soc/samsung/bells.c
index 59ffd6c7ee30..01c1c5a2d321 100644
--- a/sound/soc/samsung/bells.c
+++ b/sound/soc/samsung/bells.c
@@ -233,7 +233,7 @@ static struct snd_soc_dai_link bells_dai_wm2200[] = {
233 .stream_name = "CPU-DSP", 233 .stream_name = "CPU-DSP",
234 .cpu_dai_name = "samsung-i2s.0", 234 .cpu_dai_name = "samsung-i2s.0",
235 .codec_dai_name = "wm0010-sdi1", 235 .codec_dai_name = "wm0010-sdi1",
236 .platform_name = "samsung-audio", 236 .platform_name = "samsung-i2s.0",
237 .codec_name = "spi0.0", 237 .codec_name = "spi0.0",
238 .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF 238 .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF
239 | SND_SOC_DAIFMT_CBM_CFM, 239 | SND_SOC_DAIFMT_CBM_CFM,
@@ -257,7 +257,7 @@ static struct snd_soc_dai_link bells_dai_wm5102[] = {
257 .stream_name = "CPU-DSP", 257 .stream_name = "CPU-DSP",
258 .cpu_dai_name = "samsung-i2s.0", 258 .cpu_dai_name = "samsung-i2s.0",
259 .codec_dai_name = "wm0010-sdi1", 259 .codec_dai_name = "wm0010-sdi1",
260 .platform_name = "samsung-audio", 260 .platform_name = "samsung-i2s.0",
261 .codec_name = "spi0.0", 261 .codec_name = "spi0.0",
262 .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF 262 .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF
263 | SND_SOC_DAIFMT_CBM_CFM, 263 | SND_SOC_DAIFMT_CBM_CFM,
@@ -303,7 +303,7 @@ static struct snd_soc_dai_link bells_dai_wm5110[] = {
303 .stream_name = "CPU-DSP", 303 .stream_name = "CPU-DSP",
304 .cpu_dai_name = "samsung-i2s.0", 304 .cpu_dai_name = "samsung-i2s.0",
305 .codec_dai_name = "wm0010-sdi1", 305 .codec_dai_name = "wm0010-sdi1",
306 .platform_name = "samsung-audio", 306 .platform_name = "samsung-i2s.0",
307 .codec_name = "spi0.0", 307 .codec_name = "spi0.0",
308 .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF 308 .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF
309 | SND_SOC_DAIFMT_CBM_CFM, 309 | SND_SOC_DAIFMT_CBM_CFM,
diff --git a/sound/soc/samsung/dma.c b/sound/soc/samsung/dma.c
index b70964ea448c..64529904a95f 100644
--- a/sound/soc/samsung/dma.c
+++ b/sound/soc/samsung/dma.c
@@ -432,30 +432,18 @@ static struct snd_soc_platform_driver samsung_asoc_platform = {
432 .pcm_free = dma_free_dma_buffers, 432 .pcm_free = dma_free_dma_buffers,
433}; 433};
434 434
435static int __devinit samsung_asoc_platform_probe(struct platform_device *pdev) 435int __devinit asoc_dma_platform_register(struct device *dev)
436{ 436{
437 return snd_soc_register_platform(&pdev->dev, &samsung_asoc_platform); 437 return snd_soc_register_platform(dev, &samsung_asoc_platform);
438} 438}
439EXPORT_SYMBOL_GPL(asoc_dma_platform_register);
439 440
440static int __devexit samsung_asoc_platform_remove(struct platform_device *pdev) 441void __devexit asoc_dma_platform_unregister(struct device *dev)
441{ 442{
442 snd_soc_unregister_platform(&pdev->dev); 443 snd_soc_unregister_platform(dev);
443 return 0;
444} 444}
445 445EXPORT_SYMBOL_GPL(asoc_dma_platform_unregister);
446static struct platform_driver asoc_dma_driver = {
447 .driver = {
448 .name = "samsung-audio",
449 .owner = THIS_MODULE,
450 },
451
452 .probe = samsung_asoc_platform_probe,
453 .remove = __devexit_p(samsung_asoc_platform_remove),
454};
455
456module_platform_driver(asoc_dma_driver);
457 446
458MODULE_AUTHOR("Ben Dooks, <ben@simtec.co.uk>"); 447MODULE_AUTHOR("Ben Dooks, <ben@simtec.co.uk>");
459MODULE_DESCRIPTION("Samsung ASoC DMA Driver"); 448MODULE_DESCRIPTION("Samsung ASoC DMA Driver");
460MODULE_LICENSE("GPL"); 449MODULE_LICENSE("GPL");
461MODULE_ALIAS("platform:samsung-audio");
diff --git a/sound/soc/samsung/dma.h b/sound/soc/samsung/dma.h
index 7d1ead77ef21..73d8c7c8a1e8 100644
--- a/sound/soc/samsung/dma.h
+++ b/sound/soc/samsung/dma.h
@@ -21,4 +21,7 @@ struct s3c_dma_params {
21 struct samsung_dma_ops *ops; 21 struct samsung_dma_ops *ops;
22}; 22};
23 23
24int asoc_dma_platform_register(struct device *dev);
25void asoc_dma_platform_unregister(struct device *dev);
26
24#endif 27#endif
diff --git a/sound/soc/samsung/goni_wm8994.c b/sound/soc/samsung/goni_wm8994.c
index c23c2ae91f58..d37ede58e0a8 100644
--- a/sound/soc/samsung/goni_wm8994.c
+++ b/sound/soc/samsung/goni_wm8994.c
@@ -228,7 +228,7 @@ static struct snd_soc_dai_link goni_dai[] = {
228 .stream_name = "WM8994 HiFi", 228 .stream_name = "WM8994 HiFi",
229 .cpu_dai_name = "samsung-i2s.0", 229 .cpu_dai_name = "samsung-i2s.0",
230 .codec_dai_name = "wm8994-aif1", 230 .codec_dai_name = "wm8994-aif1",
231 .platform_name = "samsung-audio", 231 .platform_name = "samsung-i2s.0",
232 .codec_name = "wm8994-codec.0-001a", 232 .codec_name = "wm8994-codec.0-001a",
233 .init = goni_wm8994_init, 233 .init = goni_wm8994_init,
234 .ops = &goni_hifi_ops, 234 .ops = &goni_hifi_ops,
diff --git a/sound/soc/samsung/h1940_uda1380.c b/sound/soc/samsung/h1940_uda1380.c
index 6e3257717c54..3870e9678b5d 100644
--- a/sound/soc/samsung/h1940_uda1380.c
+++ b/sound/soc/samsung/h1940_uda1380.c
@@ -207,7 +207,7 @@ static struct snd_soc_dai_link h1940_uda1380_dai[] = {
207 .cpu_dai_name = "s3c24xx-iis", 207 .cpu_dai_name = "s3c24xx-iis",
208 .codec_dai_name = "uda1380-hifi", 208 .codec_dai_name = "uda1380-hifi",
209 .init = h1940_uda1380_init, 209 .init = h1940_uda1380_init,
210 .platform_name = "samsung-audio", 210 .platform_name = "s3c24xx-iis",
211 .codec_name = "uda1380-codec.0-001a", 211 .codec_name = "uda1380-codec.0-001a",
212 .ops = &h1940_ops, 212 .ops = &h1940_ops,
213 }, 213 },
diff --git a/sound/soc/samsung/i2s.c b/sound/soc/samsung/i2s.c
index aaf57b7caebb..0aa0451823ce 100644
--- a/sound/soc/samsung/i2s.c
+++ b/sound/soc/samsung/i2s.c
@@ -1009,6 +1009,7 @@ static __devinit int samsung_i2s_probe(struct platform_device *pdev)
1009 sec_dai = dev_get_drvdata(&pdev->dev); 1009 sec_dai = dev_get_drvdata(&pdev->dev);
1010 snd_soc_register_dai(&sec_dai->pdev->dev, 1010 snd_soc_register_dai(&sec_dai->pdev->dev,
1011 &sec_dai->i2s_dai_drv); 1011 &sec_dai->i2s_dai_drv);
1012 asoc_dma_platform_register(&pdev->dev);
1012 return 0; 1013 return 0;
1013 } 1014 }
1014 1015
@@ -1107,6 +1108,8 @@ static __devinit int samsung_i2s_probe(struct platform_device *pdev)
1107 1108
1108 pm_runtime_enable(&pdev->dev); 1109 pm_runtime_enable(&pdev->dev);
1109 1110
1111 asoc_dma_platform_register(&pdev->dev);
1112
1110 return 0; 1113 return 0;
1111err: 1114err:
1112 release_mem_region(regs_base, resource_size(res)); 1115 release_mem_region(regs_base, resource_size(res));
@@ -1135,6 +1138,7 @@ static __devexit int samsung_i2s_remove(struct platform_device *pdev)
1135 i2s->pri_dai = NULL; 1138 i2s->pri_dai = NULL;
1136 i2s->sec_dai = NULL; 1139 i2s->sec_dai = NULL;
1137 1140
1141 asoc_dma_platform_unregister(&pdev->dev);
1138 snd_soc_unregister_dai(&pdev->dev); 1142 snd_soc_unregister_dai(&pdev->dev);
1139 1143
1140 return 0; 1144 return 0;
diff --git a/sound/soc/samsung/jive_wm8750.c b/sound/soc/samsung/jive_wm8750.c
index 1578663a1faa..b5f6abd9d221 100644
--- a/sound/soc/samsung/jive_wm8750.c
+++ b/sound/soc/samsung/jive_wm8750.c
@@ -118,7 +118,7 @@ static struct snd_soc_dai_link jive_dai = {
118 .stream_name = "WM8750", 118 .stream_name = "WM8750",
119 .cpu_dai_name = "s3c2412-i2s", 119 .cpu_dai_name = "s3c2412-i2s",
120 .codec_dai_name = "wm8750-hifi", 120 .codec_dai_name = "wm8750-hifi",
121 .platform_name = "samsung-audio", 121 .platform_name = "s3c2412-i2s",
122 .codec_name = "wm8750.0-001a", 122 .codec_name = "wm8750.0-001a",
123 .init = jive_wm8750_init, 123 .init = jive_wm8750_init,
124 .ops = &jive_ops, 124 .ops = &jive_ops,
diff --git a/sound/soc/samsung/littlemill.c b/sound/soc/samsung/littlemill.c
index ee52c8a00779..0908bb05a5e7 100644
--- a/sound/soc/samsung/littlemill.c
+++ b/sound/soc/samsung/littlemill.c
@@ -145,7 +145,7 @@ static struct snd_soc_dai_link littlemill_dai[] = {
145 .stream_name = "CPU", 145 .stream_name = "CPU",
146 .cpu_dai_name = "samsung-i2s.0", 146 .cpu_dai_name = "samsung-i2s.0",
147 .codec_dai_name = "wm8994-aif1", 147 .codec_dai_name = "wm8994-aif1",
148 .platform_name = "samsung-audio", 148 .platform_name = "samsung-i2s.0",
149 .codec_name = "wm8994-codec", 149 .codec_name = "wm8994-codec",
150 .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF 150 .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF
151 | SND_SOC_DAIFMT_CBM_CFM, 151 | SND_SOC_DAIFMT_CBM_CFM,
diff --git a/sound/soc/samsung/ln2440sbc_alc650.c b/sound/soc/samsung/ln2440sbc_alc650.c
index 69c4a5934a4d..9342fc270c2b 100644
--- a/sound/soc/samsung/ln2440sbc_alc650.c
+++ b/sound/soc/samsung/ln2440sbc_alc650.c
@@ -28,7 +28,7 @@ static struct snd_soc_dai_link ln2440sbc_dai[] = {
28 .cpu_dai_name = "samsung-ac97", 28 .cpu_dai_name = "samsung-ac97",
29 .codec_dai_name = "ac97-hifi", 29 .codec_dai_name = "ac97-hifi",
30 .codec_name = "ac97-codec", 30 .codec_name = "ac97-codec",
31 .platform_name = "samsung-audio", 31 .platform_name = "samsung-ac97",
32}, 32},
33}; 33};
34 34
diff --git a/sound/soc/samsung/lowland.c b/sound/soc/samsung/lowland.c
index 6abf341c4a2a..a71c31af4e0e 100644
--- a/sound/soc/samsung/lowland.c
+++ b/sound/soc/samsung/lowland.c
@@ -99,7 +99,7 @@ static struct snd_soc_dai_link lowland_dai[] = {
99 .stream_name = "CPU", 99 .stream_name = "CPU",
100 .cpu_dai_name = "samsung-i2s.0", 100 .cpu_dai_name = "samsung-i2s.0",
101 .codec_dai_name = "wm5100-aif1", 101 .codec_dai_name = "wm5100-aif1",
102 .platform_name = "samsung-audio", 102 .platform_name = "samsung-i2s.0",
103 .codec_name = "wm5100.1-001a", 103 .codec_name = "wm5100.1-001a",
104 .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | 104 .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF |
105 SND_SOC_DAIFMT_CBM_CFM, 105 SND_SOC_DAIFMT_CBM_CFM,
diff --git a/sound/soc/samsung/neo1973_wm8753.c b/sound/soc/samsung/neo1973_wm8753.c
index 321d51134e47..c7e965f80d2e 100644
--- a/sound/soc/samsung/neo1973_wm8753.c
+++ b/sound/soc/samsung/neo1973_wm8753.c
@@ -364,7 +364,7 @@ static struct snd_soc_dai_link neo1973_dai[] = {
364{ /* Hifi Playback - for similatious use with voice below */ 364{ /* Hifi Playback - for similatious use with voice below */
365 .name = "WM8753", 365 .name = "WM8753",
366 .stream_name = "WM8753 HiFi", 366 .stream_name = "WM8753 HiFi",
367 .platform_name = "samsung-audio", 367 .platform_name = "s3c24xx-iis",
368 .cpu_dai_name = "s3c24xx-iis", 368 .cpu_dai_name = "s3c24xx-iis",
369 .codec_dai_name = "wm8753-hifi", 369 .codec_dai_name = "wm8753-hifi",
370 .codec_name = "wm8753.0-001a", 370 .codec_name = "wm8753.0-001a",
diff --git a/sound/soc/samsung/pcm.c b/sound/soc/samsung/pcm.c
index 45f4a752d2a0..ecd509048771 100644
--- a/sound/soc/samsung/pcm.c
+++ b/sound/soc/samsung/pcm.c
@@ -589,8 +589,16 @@ static __devinit int s3c_pcm_dev_probe(struct platform_device *pdev)
589 goto err5; 589 goto err5;
590 } 590 }
591 591
592 ret = asoc_dma_platform_register(&pdev->dev);
593 if (ret) {
594 dev_err(&pdev->dev, "failed to get register DMA: %d\n", ret);
595 goto err6;
596 }
597
592 return 0; 598 return 0;
593 599
600err6:
601 snd_soc_unregister_dai(&pdev->dev);
594err5: 602err5:
595 clk_disable_unprepare(pcm->pclk); 603 clk_disable_unprepare(pcm->pclk);
596 clk_put(pcm->pclk); 604 clk_put(pcm->pclk);
@@ -610,6 +618,7 @@ static __devexit int s3c_pcm_dev_remove(struct platform_device *pdev)
610 struct s3c_pcm_info *pcm = &s3c_pcm[pdev->id]; 618 struct s3c_pcm_info *pcm = &s3c_pcm[pdev->id];
611 struct resource *mem_res; 619 struct resource *mem_res;
612 620
621 asoc_dma_platform_unregister(&pdev->dev);
613 snd_soc_unregister_dai(&pdev->dev); 622 snd_soc_unregister_dai(&pdev->dev);
614 623
615 pm_runtime_disable(&pdev->dev); 624 pm_runtime_disable(&pdev->dev);
diff --git a/sound/soc/samsung/rx1950_uda1380.c b/sound/soc/samsung/rx1950_uda1380.c
index 21e12361a9cd..a5826ea9cad6 100644
--- a/sound/soc/samsung/rx1950_uda1380.c
+++ b/sound/soc/samsung/rx1950_uda1380.c
@@ -85,7 +85,7 @@ static struct snd_soc_dai_link rx1950_uda1380_dai[] = {
85 .cpu_dai_name = "s3c24xx-iis", 85 .cpu_dai_name = "s3c24xx-iis",
86 .codec_dai_name = "uda1380-hifi", 86 .codec_dai_name = "uda1380-hifi",
87 .init = rx1950_uda1380_init, 87 .init = rx1950_uda1380_init,
88 .platform_name = "samsung-audio", 88 .platform_name = "s3c24xx-iis",
89 .codec_name = "uda1380-codec.0-001a", 89 .codec_name = "uda1380-codec.0-001a",
90 .ops = &rx1950_ops, 90 .ops = &rx1950_ops,
91 }, 91 },
diff --git a/sound/soc/samsung/s3c2412-i2s.c b/sound/soc/samsung/s3c2412-i2s.c
index ac7701b3c5dc..edf5f527c5a2 100644
--- a/sound/soc/samsung/s3c2412-i2s.c
+++ b/sound/soc/samsung/s3c2412-i2s.c
@@ -162,11 +162,29 @@ static struct snd_soc_dai_driver s3c2412_i2s_dai = {
162 162
163static __devinit int s3c2412_iis_dev_probe(struct platform_device *pdev) 163static __devinit int s3c2412_iis_dev_probe(struct platform_device *pdev)
164{ 164{
165 return s3c_i2sv2_register_dai(&pdev->dev, -1, &s3c2412_i2s_dai); 165 int ret = 0;
166
167 ret = s3c_i2sv2_register_dai(&pdev->dev, -1, &s3c2412_i2s_dai);
168 if (ret) {
169 pr_err("failed to register the dai\n");
170 return ret;
171 }
172
173 ret = asoc_dma_platform_register(&pdev->dev);
174 if (ret) {
175 pr_err("failed to register the DMA: %d\n", ret);
176 goto err;
177 }
178
179 return 0;
180err:
181 snd_soc_unregister_dai(&pdev->dev);
182 return ret;
166} 183}
167 184
168static __devexit int s3c2412_iis_dev_remove(struct platform_device *pdev) 185static __devexit int s3c2412_iis_dev_remove(struct platform_device *pdev)
169{ 186{
187 asoc_dma_platform_unregister(&pdev->dev);
170 snd_soc_unregister_dai(&pdev->dev); 188 snd_soc_unregister_dai(&pdev->dev);
171 return 0; 189 return 0;
172} 190}
diff --git a/sound/soc/samsung/s3c24xx-i2s.c b/sound/soc/samsung/s3c24xx-i2s.c
index 0aae3a3883dc..0022d51fd160 100644
--- a/sound/soc/samsung/s3c24xx-i2s.c
+++ b/sound/soc/samsung/s3c24xx-i2s.c
@@ -467,11 +467,29 @@ static struct snd_soc_dai_driver s3c24xx_i2s_dai = {
467 467
468static __devinit int s3c24xx_iis_dev_probe(struct platform_device *pdev) 468static __devinit int s3c24xx_iis_dev_probe(struct platform_device *pdev)
469{ 469{
470 return snd_soc_register_dai(&pdev->dev, &s3c24xx_i2s_dai); 470 int ret = 0;
471
472 ret = s3c_i2sv2_register_dai(&pdev->dev, -1, &s3c2412_i2s_dai);
473 if (ret) {
474 pr_err("failed to register the dai\n");
475 return ret;
476 }
477
478 ret = asoc_dma_platform_register(&pdev->dev);
479 if (ret) {
480 pr_err("failed to register the dma: %d\n", ret);
481 goto err;
482 }
483
484 return 0;
485err:
486 snd_soc_unregister_dai(&pdev->dev);
487 return ret;
471} 488}
472 489
473static __devexit int s3c24xx_iis_dev_remove(struct platform_device *pdev) 490static __devexit int s3c24xx_iis_dev_remove(struct platform_device *pdev)
474{ 491{
492 asoc_dma_platform_unregister(&pdev->dev);
475 snd_soc_unregister_dai(&pdev->dev); 493 snd_soc_unregister_dai(&pdev->dev);
476 return 0; 494 return 0;
477} 495}
diff --git a/sound/soc/samsung/s3c24xx_simtec_hermes.c b/sound/soc/samsung/s3c24xx_simtec_hermes.c
index 7ace6a87f41b..befabe8979f7 100644
--- a/sound/soc/samsung/s3c24xx_simtec_hermes.c
+++ b/sound/soc/samsung/s3c24xx_simtec_hermes.c
@@ -82,7 +82,7 @@ static struct snd_soc_dai_link simtec_dai_aic33 = {
82 .codec_name = "tlv320aic3x-codec.0-001a", 82 .codec_name = "tlv320aic3x-codec.0-001a",
83 .cpu_dai_name = "s3c24xx-iis", 83 .cpu_dai_name = "s3c24xx-iis",
84 .codec_dai_name = "tlv320aic3x-hifi", 84 .codec_dai_name = "tlv320aic3x-hifi",
85 .platform_name = "samsung-audio", 85 .platform_name = "s3c24xx-iis",
86 .init = simtec_hermes_init, 86 .init = simtec_hermes_init,
87}; 87};
88 88
diff --git a/sound/soc/samsung/s3c24xx_simtec_tlv320aic23.c b/sound/soc/samsung/s3c24xx_simtec_tlv320aic23.c
index c42d5f00b0e1..5552f82c92a7 100644
--- a/sound/soc/samsung/s3c24xx_simtec_tlv320aic23.c
+++ b/sound/soc/samsung/s3c24xx_simtec_tlv320aic23.c
@@ -71,7 +71,7 @@ static struct snd_soc_dai_link simtec_dai_aic23 = {
71 .codec_name = "tlv320aic3x-codec.0-001a", 71 .codec_name = "tlv320aic3x-codec.0-001a",
72 .cpu_dai_name = "s3c24xx-iis", 72 .cpu_dai_name = "s3c24xx-iis",
73 .codec_dai_name = "tlv320aic3x-hifi", 73 .codec_dai_name = "tlv320aic3x-hifi",
74 .platform_name = "samsung-audio", 74 .platform_name = "s3c24xx-iis",
75 .init = simtec_tlv320aic23_init, 75 .init = simtec_tlv320aic23_init,
76}; 76};
77 77
diff --git a/sound/soc/samsung/s3c24xx_uda134x.c b/sound/soc/samsung/s3c24xx_uda134x.c
index d731042e51b0..333e1b7f06c7 100644
--- a/sound/soc/samsung/s3c24xx_uda134x.c
+++ b/sound/soc/samsung/s3c24xx_uda134x.c
@@ -224,7 +224,7 @@ static struct snd_soc_dai_link s3c24xx_uda134x_dai_link = {
224 .codec_dai_name = "uda134x-hifi", 224 .codec_dai_name = "uda134x-hifi",
225 .cpu_dai_name = "s3c24xx-iis", 225 .cpu_dai_name = "s3c24xx-iis",
226 .ops = &s3c24xx_uda134x_ops, 226 .ops = &s3c24xx_uda134x_ops,
227 .platform_name = "samsung-audio", 227 .platform_name = "s3c24xx-iis",
228}; 228};
229 229
230static struct snd_soc_card snd_soc_s3c24xx_uda134x = { 230static struct snd_soc_card snd_soc_s3c24xx_uda134x = {
diff --git a/sound/soc/samsung/smartq_wm8987.c b/sound/soc/samsung/smartq_wm8987.c
index f2dcb424ea25..58ae3237ef69 100644
--- a/sound/soc/samsung/smartq_wm8987.c
+++ b/sound/soc/samsung/smartq_wm8987.c
@@ -189,7 +189,7 @@ static struct snd_soc_dai_link smartq_dai[] = {
189 .stream_name = "SmartQ Hi-Fi", 189 .stream_name = "SmartQ Hi-Fi",
190 .cpu_dai_name = "samsung-i2s.0", 190 .cpu_dai_name = "samsung-i2s.0",
191 .codec_dai_name = "wm8750-hifi", 191 .codec_dai_name = "wm8750-hifi",
192 .platform_name = "samsung-audio", 192 .platform_name = "samsung-i2s.0",
193 .codec_name = "wm8750.0-0x1a", 193 .codec_name = "wm8750.0-0x1a",
194 .init = smartq_wm8987_init, 194 .init = smartq_wm8987_init,
195 .ops = &smartq_hifi_ops, 195 .ops = &smartq_hifi_ops,
diff --git a/sound/soc/samsung/smdk2443_wm9710.c b/sound/soc/samsung/smdk2443_wm9710.c
index 720ba29bb7e4..c390aad68cfb 100644
--- a/sound/soc/samsung/smdk2443_wm9710.c
+++ b/sound/soc/samsung/smdk2443_wm9710.c
@@ -24,7 +24,7 @@ static struct snd_soc_dai_link smdk2443_dai[] = {
24 .cpu_dai_name = "samsung-ac97", 24 .cpu_dai_name = "samsung-ac97",
25 .codec_dai_name = "ac97-hifi", 25 .codec_dai_name = "ac97-hifi",
26 .codec_name = "ac97-codec", 26 .codec_name = "ac97-codec",
27 .platform_name = "samsung-audio", 27 .platform_name = "samsung-ac97",
28}, 28},
29}; 29};
30 30
diff --git a/sound/soc/samsung/smdk_spdif.c b/sound/soc/samsung/smdk_spdif.c
index beaa9c15d697..a2f2363fe1c2 100644
--- a/sound/soc/samsung/smdk_spdif.c
+++ b/sound/soc/samsung/smdk_spdif.c
@@ -151,7 +151,7 @@ static struct snd_soc_ops smdk_spdif_ops = {
151static struct snd_soc_dai_link smdk_dai = { 151static struct snd_soc_dai_link smdk_dai = {
152 .name = "S/PDIF", 152 .name = "S/PDIF",
153 .stream_name = "S/PDIF PCM Playback", 153 .stream_name = "S/PDIF PCM Playback",
154 .platform_name = "samsung-audio", 154 .platform_name = "samsung-spdif",
155 .cpu_dai_name = "samsung-spdif", 155 .cpu_dai_name = "samsung-spdif",
156 .codec_dai_name = "dit-hifi", 156 .codec_dai_name = "dit-hifi",
157 .codec_name = "spdif-dit", 157 .codec_name = "spdif-dit",
diff --git a/sound/soc/samsung/smdk_wm8580.c b/sound/soc/samsung/smdk_wm8580.c
index ade2809cf393..7e2b710763be 100644
--- a/sound/soc/samsung/smdk_wm8580.c
+++ b/sound/soc/samsung/smdk_wm8580.c
@@ -176,7 +176,7 @@ static struct snd_soc_dai_link smdk_dai[] = {
176 .stream_name = "Playback", 176 .stream_name = "Playback",
177 .cpu_dai_name = "samsung-i2s.0", 177 .cpu_dai_name = "samsung-i2s.0",
178 .codec_dai_name = "wm8580-hifi-playback", 178 .codec_dai_name = "wm8580-hifi-playback",
179 .platform_name = "samsung-audio", 179 .platform_name = "samsung-i2s.0",
180 .codec_name = "wm8580.0-001b", 180 .codec_name = "wm8580.0-001b",
181 .ops = &smdk_ops, 181 .ops = &smdk_ops,
182 }, 182 },
@@ -185,7 +185,7 @@ static struct snd_soc_dai_link smdk_dai[] = {
185 .stream_name = "Capture", 185 .stream_name = "Capture",
186 .cpu_dai_name = "samsung-i2s.0", 186 .cpu_dai_name = "samsung-i2s.0",
187 .codec_dai_name = "wm8580-hifi-capture", 187 .codec_dai_name = "wm8580-hifi-capture",
188 .platform_name = "samsung-audio", 188 .platform_name = "samsung-i2s.0",
189 .codec_name = "wm8580.0-001b", 189 .codec_name = "wm8580.0-001b",
190 .init = smdk_wm8580_init_paiftx, 190 .init = smdk_wm8580_init_paiftx,
191 .ops = &smdk_ops, 191 .ops = &smdk_ops,
@@ -195,7 +195,7 @@ static struct snd_soc_dai_link smdk_dai[] = {
195 .stream_name = "Playback", 195 .stream_name = "Playback",
196 .cpu_dai_name = "samsung-i2s.x", 196 .cpu_dai_name = "samsung-i2s.x",
197 .codec_dai_name = "wm8580-hifi-playback", 197 .codec_dai_name = "wm8580-hifi-playback",
198 .platform_name = "samsung-audio", 198 .platform_name = "samsung-i2s.x",
199 .codec_name = "wm8580.0-001b", 199 .codec_name = "wm8580.0-001b",
200 .ops = &smdk_ops, 200 .ops = &smdk_ops,
201 }, 201 },
diff --git a/sound/soc/samsung/smdk_wm8580pcm.c b/sound/soc/samsung/smdk_wm8580pcm.c
index fab5322e9f05..34239fe9afde 100644
--- a/sound/soc/samsung/smdk_wm8580pcm.c
+++ b/sound/soc/samsung/smdk_wm8580pcm.c
@@ -135,7 +135,7 @@ static struct snd_soc_dai_link smdk_dai[] = {
135 .stream_name = "Capture", 135 .stream_name = "Capture",
136 .cpu_dai_name = "samsung-pcm.0", 136 .cpu_dai_name = "samsung-pcm.0",
137 .codec_dai_name = "wm8580-hifi-capture", 137 .codec_dai_name = "wm8580-hifi-capture",
138 .platform_name = "samsung-audio", 138 .platform_name = "samsung-pcm.0",
139 .codec_name = "wm8580.0-001b", 139 .codec_name = "wm8580.0-001b",
140 .ops = &smdk_wm8580_pcm_ops, 140 .ops = &smdk_wm8580_pcm_ops,
141 }, 141 },
diff --git a/sound/soc/samsung/smdk_wm8994.c b/sound/soc/samsung/smdk_wm8994.c
index 48dd4dd9ee08..dd0aa8cb1a9e 100644
--- a/sound/soc/samsung/smdk_wm8994.c
+++ b/sound/soc/samsung/smdk_wm8994.c
@@ -127,7 +127,7 @@ static struct snd_soc_dai_link smdk_dai[] = {
127 .stream_name = "Pri_Dai", 127 .stream_name = "Pri_Dai",
128 .cpu_dai_name = "samsung-i2s.0", 128 .cpu_dai_name = "samsung-i2s.0",
129 .codec_dai_name = "wm8994-aif1", 129 .codec_dai_name = "wm8994-aif1",
130 .platform_name = "samsung-audio", 130 .platform_name = "samsung-i2s.0",
131 .codec_name = "wm8994-codec", 131 .codec_name = "wm8994-codec",
132 .init = smdk_wm8994_init_paiftx, 132 .init = smdk_wm8994_init_paiftx,
133 .ops = &smdk_ops, 133 .ops = &smdk_ops,
@@ -136,7 +136,7 @@ static struct snd_soc_dai_link smdk_dai[] = {
136 .stream_name = "Sec_Dai", 136 .stream_name = "Sec_Dai",
137 .cpu_dai_name = "samsung-i2s.4", 137 .cpu_dai_name = "samsung-i2s.4",
138 .codec_dai_name = "wm8994-aif1", 138 .codec_dai_name = "wm8994-aif1",
139 .platform_name = "samsung-audio", 139 .platform_name = "samsung-i2s.4",
140 .codec_name = "wm8994-codec", 140 .codec_name = "wm8994-codec",
141 .ops = &smdk_ops, 141 .ops = &smdk_ops,
142 }, 142 },
diff --git a/sound/soc/samsung/smdk_wm8994pcm.c b/sound/soc/samsung/smdk_wm8994pcm.c
index 77ecba935119..15f6b44e9de3 100644
--- a/sound/soc/samsung/smdk_wm8994pcm.c
+++ b/sound/soc/samsung/smdk_wm8994pcm.c
@@ -116,7 +116,7 @@ static struct snd_soc_dai_link smdk_dai[] = {
116 .stream_name = "Primary PCM", 116 .stream_name = "Primary PCM",
117 .cpu_dai_name = "samsung-pcm.0", 117 .cpu_dai_name = "samsung-pcm.0",
118 .codec_dai_name = "wm8994-aif1", 118 .codec_dai_name = "wm8994-aif1",
119 .platform_name = "samsung-audio", 119 .platform_name = "samsung-pcm.0",
120 .codec_name = "wm8994-codec", 120 .codec_name = "wm8994-codec",
121 .ops = &smdk_wm8994_pcm_ops, 121 .ops = &smdk_wm8994_pcm_ops,
122 }, 122 },
diff --git a/sound/soc/samsung/smdk_wm9713.c b/sound/soc/samsung/smdk_wm9713.c
index 55b2ca7f3290..0d20e4ed27aa 100644
--- a/sound/soc/samsung/smdk_wm9713.c
+++ b/sound/soc/samsung/smdk_wm9713.c
@@ -42,7 +42,7 @@ static struct snd_soc_card smdk;
42static struct snd_soc_dai_link smdk_dai = { 42static struct snd_soc_dai_link smdk_dai = {
43 .name = "AC97", 43 .name = "AC97",
44 .stream_name = "AC97 PCM", 44 .stream_name = "AC97 PCM",
45 .platform_name = "samsung-audio", 45 .platform_name = "samsung-ac97",
46 .cpu_dai_name = "samsung-ac97", 46 .cpu_dai_name = "samsung-ac97",
47 .codec_dai_name = "wm9713-hifi", 47 .codec_dai_name = "wm9713-hifi",
48 .codec_name = "wm9713-codec", 48 .codec_name = "wm9713-codec",
diff --git a/sound/soc/samsung/spdif.c b/sound/soc/samsung/spdif.c
index 5f3b06d36e9c..8606fc6cb37d 100644
--- a/sound/soc/samsung/spdif.c
+++ b/sound/soc/samsung/spdif.c
@@ -437,8 +437,15 @@ static __devinit int spdif_probe(struct platform_device *pdev)
437 437
438 spdif->dma_playback = &spdif_stereo_out; 438 spdif->dma_playback = &spdif_stereo_out;
439 439
440 return 0; 440 ret = asoc_dma_platform_register(&pdev->dev);
441 if (ret) {
442 dev_err(&pdev->dev, "failed to register DMA: %d\n", ret);
443 goto err5;
444 }
441 445
446 return 0;
447err5:
448 snd_soc_unregister_dai(&pdev->dev);
442err4: 449err4:
443 iounmap(spdif->regs); 450 iounmap(spdif->regs);
444err3: 451err3:
@@ -458,6 +465,7 @@ static __devexit int spdif_remove(struct platform_device *pdev)
458 struct samsung_spdif_info *spdif = &spdif_info; 465 struct samsung_spdif_info *spdif = &spdif_info;
459 struct resource *mem_res; 466 struct resource *mem_res;
460 467
468 asoc_dma_platform_unregister(&pdev->dev);
461 snd_soc_unregister_dai(&pdev->dev); 469 snd_soc_unregister_dai(&pdev->dev);
462 470
463 iounmap(spdif->regs); 471 iounmap(spdif->regs);
diff --git a/sound/soc/samsung/speyside.c b/sound/soc/samsung/speyside.c
index c7e1c28528a4..d7906a144195 100644
--- a/sound/soc/samsung/speyside.c
+++ b/sound/soc/samsung/speyside.c
@@ -198,7 +198,7 @@ static struct snd_soc_dai_link speyside_dai[] = {
198 .stream_name = "CPU-DSP", 198 .stream_name = "CPU-DSP",
199 .cpu_dai_name = "samsung-i2s.0", 199 .cpu_dai_name = "samsung-i2s.0",
200 .codec_dai_name = "wm0010-sdi1", 200 .codec_dai_name = "wm0010-sdi1",
201 .platform_name = "samsung-audio", 201 .platform_name = "samsung-i2s.0",
202 .codec_name = "spi0.0", 202 .codec_name = "spi0.0",
203 .init = speyside_wm0010_init, 203 .init = speyside_wm0010_init,
204 .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF 204 .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF
diff --git a/sound/soc/samsung/tobermory.c b/sound/soc/samsung/tobermory.c
index 9199649bf786..42e4c8e6b03e 100644
--- a/sound/soc/samsung/tobermory.c
+++ b/sound/soc/samsung/tobermory.c
@@ -110,7 +110,7 @@ static struct snd_soc_dai_link tobermory_dai[] = {
110 .stream_name = "CPU", 110 .stream_name = "CPU",
111 .cpu_dai_name = "samsung-i2s.0", 111 .cpu_dai_name = "samsung-i2s.0",
112 .codec_dai_name = "wm8962", 112 .codec_dai_name = "wm8962",
113 .platform_name = "samsung-audio", 113 .platform_name = "samsung-i2s.0",
114 .codec_name = "wm8962.1-001a", 114 .codec_name = "wm8962.1-001a",
115 .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF 115 .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF
116 | SND_SOC_DAIFMT_CBM_CFM, 116 | SND_SOC_DAIFMT_CBM_CFM,