diff options
Diffstat (limited to 'sound/soc/ep93xx/ep93xx-i2s.c')
-rw-r--r-- | sound/soc/ep93xx/ep93xx-i2s.c | 34 |
1 files changed, 13 insertions, 21 deletions
diff --git a/sound/soc/ep93xx/ep93xx-i2s.c b/sound/soc/ep93xx/ep93xx-i2s.c index 00b946632184..4f4873359613 100644 --- a/sound/soc/ep93xx/ep93xx-i2s.c +++ b/sound/soc/ep93xx/ep93xx-i2s.c | |||
@@ -31,7 +31,6 @@ | |||
31 | #include <mach/dma.h> | 31 | #include <mach/dma.h> |
32 | 32 | ||
33 | #include "ep93xx-pcm.h" | 33 | #include "ep93xx-pcm.h" |
34 | #include "ep93xx-i2s.h" | ||
35 | 34 | ||
36 | #define EP93XX_I2S_TXCLKCFG 0x00 | 35 | #define EP93XX_I2S_TXCLKCFG 0x00 |
37 | #define EP93XX_I2S_RXCLKCFG 0x04 | 36 | #define EP93XX_I2S_RXCLKCFG 0x04 |
@@ -145,8 +144,8 @@ static int ep93xx_i2s_startup(struct snd_pcm_substream *substream, | |||
145 | struct snd_soc_dai *dai) | 144 | struct snd_soc_dai *dai) |
146 | { | 145 | { |
147 | struct snd_soc_pcm_runtime *rtd = substream->private_data; | 146 | struct snd_soc_pcm_runtime *rtd = substream->private_data; |
148 | struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai; | 147 | struct ep93xx_i2s_info *info = snd_soc_dai_get_drvdata(dai); |
149 | struct ep93xx_i2s_info *info = rtd->dai->cpu_dai->private_data; | 148 | struct snd_soc_dai *cpu_dai = rtd->cpu_dai; |
150 | 149 | ||
151 | snd_soc_dai_set_dma_data(cpu_dai, substream, | 150 | snd_soc_dai_set_dma_data(cpu_dai, substream, |
152 | &info->dma_params[substream->stream]); | 151 | &info->dma_params[substream->stream]); |
@@ -156,8 +155,7 @@ static int ep93xx_i2s_startup(struct snd_pcm_substream *substream, | |||
156 | static void ep93xx_i2s_shutdown(struct snd_pcm_substream *substream, | 155 | static void ep93xx_i2s_shutdown(struct snd_pcm_substream *substream, |
157 | struct snd_soc_dai *dai) | 156 | struct snd_soc_dai *dai) |
158 | { | 157 | { |
159 | struct snd_soc_pcm_runtime *rtd = substream->private_data; | 158 | struct ep93xx_i2s_info *info = snd_soc_dai_get_drvdata(dai); |
160 | struct ep93xx_i2s_info *info = rtd->dai->cpu_dai->private_data; | ||
161 | 159 | ||
162 | ep93xx_i2s_disable(info, substream->stream); | 160 | ep93xx_i2s_disable(info, substream->stream); |
163 | } | 161 | } |
@@ -165,7 +163,7 @@ static void ep93xx_i2s_shutdown(struct snd_pcm_substream *substream, | |||
165 | static int ep93xx_i2s_set_dai_fmt(struct snd_soc_dai *cpu_dai, | 163 | static int ep93xx_i2s_set_dai_fmt(struct snd_soc_dai *cpu_dai, |
166 | unsigned int fmt) | 164 | unsigned int fmt) |
167 | { | 165 | { |
168 | struct ep93xx_i2s_info *info = cpu_dai->private_data; | 166 | struct ep93xx_i2s_info *info = snd_soc_dai_get_drvdata(cpu_dai); |
169 | unsigned int clk_cfg, lin_ctrl; | 167 | unsigned int clk_cfg, lin_ctrl; |
170 | 168 | ||
171 | clk_cfg = ep93xx_i2s_read_reg(info, EP93XX_I2S_RXCLKCFG); | 169 | clk_cfg = ep93xx_i2s_read_reg(info, EP93XX_I2S_RXCLKCFG); |
@@ -242,9 +240,7 @@ static int ep93xx_i2s_hw_params(struct snd_pcm_substream *substream, | |||
242 | struct snd_pcm_hw_params *params, | 240 | struct snd_pcm_hw_params *params, |
243 | struct snd_soc_dai *dai) | 241 | struct snd_soc_dai *dai) |
244 | { | 242 | { |
245 | struct snd_soc_pcm_runtime *rtd = substream->private_data; | 243 | struct ep93xx_i2s_info *info = snd_soc_dai_get_drvdata(dai); |
246 | struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai; | ||
247 | struct ep93xx_i2s_info *info = cpu_dai->private_data; | ||
248 | unsigned word_len, div, sdiv, lrdiv; | 244 | unsigned word_len, div, sdiv, lrdiv; |
249 | int found = 0, err; | 245 | int found = 0, err; |
250 | 246 | ||
@@ -302,7 +298,7 @@ out: | |||
302 | static int ep93xx_i2s_set_sysclk(struct snd_soc_dai *cpu_dai, int clk_id, | 298 | static int ep93xx_i2s_set_sysclk(struct snd_soc_dai *cpu_dai, int clk_id, |
303 | unsigned int freq, int dir) | 299 | unsigned int freq, int dir) |
304 | { | 300 | { |
305 | struct ep93xx_i2s_info *info = cpu_dai->private_data; | 301 | struct ep93xx_i2s_info *info = snd_soc_dai_get_drvdata(cpu_dai); |
306 | 302 | ||
307 | if (dir == SND_SOC_CLOCK_IN || clk_id != 0) | 303 | if (dir == SND_SOC_CLOCK_IN || clk_id != 0) |
308 | return -EINVAL; | 304 | return -EINVAL; |
@@ -313,7 +309,7 @@ static int ep93xx_i2s_set_sysclk(struct snd_soc_dai *cpu_dai, int clk_id, | |||
313 | #ifdef CONFIG_PM | 309 | #ifdef CONFIG_PM |
314 | static int ep93xx_i2s_suspend(struct snd_soc_dai *dai) | 310 | static int ep93xx_i2s_suspend(struct snd_soc_dai *dai) |
315 | { | 311 | { |
316 | struct ep93xx_i2s_info *info = dai->private_data; | 312 | struct ep93xx_i2s_info *info = snd_soc_dai_get_drvdata(dai); |
317 | 313 | ||
318 | if (!dai->active) | 314 | if (!dai->active) |
319 | return; | 315 | return; |
@@ -324,7 +320,7 @@ static int ep93xx_i2s_suspend(struct snd_soc_dai *dai) | |||
324 | 320 | ||
325 | static int ep93xx_i2s_resume(struct snd_soc_dai *dai) | 321 | static int ep93xx_i2s_resume(struct snd_soc_dai *dai) |
326 | { | 322 | { |
327 | struct ep93xx_i2s_info *info = dai->private_data; | 323 | struct ep93xx_i2s_info *info = snd_soc_dai_get_drvdata(dai); |
328 | 324 | ||
329 | if (!dai->active) | 325 | if (!dai->active) |
330 | return; | 326 | return; |
@@ -349,9 +345,7 @@ static struct snd_soc_dai_ops ep93xx_i2s_dai_ops = { | |||
349 | SNDRV_PCM_FMTBIT_S24_LE | \ | 345 | SNDRV_PCM_FMTBIT_S24_LE | \ |
350 | SNDRV_PCM_FMTBIT_S32_LE) | 346 | SNDRV_PCM_FMTBIT_S32_LE) |
351 | 347 | ||
352 | struct snd_soc_dai ep93xx_i2s_dai = { | 348 | static struct snd_soc_dai_driver ep93xx_i2s_dai = { |
353 | .name = "ep93xx-i2s", | ||
354 | .id = 0, | ||
355 | .symmetric_rates= 1, | 349 | .symmetric_rates= 1, |
356 | .suspend = ep93xx_i2s_suspend, | 350 | .suspend = ep93xx_i2s_suspend, |
357 | .resume = ep93xx_i2s_resume, | 351 | .resume = ep93xx_i2s_resume, |
@@ -369,7 +363,6 @@ struct snd_soc_dai ep93xx_i2s_dai = { | |||
369 | }, | 363 | }, |
370 | .ops = &ep93xx_i2s_dai_ops, | 364 | .ops = &ep93xx_i2s_dai_ops, |
371 | }; | 365 | }; |
372 | EXPORT_SYMBOL_GPL(ep93xx_i2s_dai); | ||
373 | 366 | ||
374 | static int ep93xx_i2s_probe(struct platform_device *pdev) | 367 | static int ep93xx_i2s_probe(struct platform_device *pdev) |
375 | { | 368 | { |
@@ -383,8 +376,7 @@ static int ep93xx_i2s_probe(struct platform_device *pdev) | |||
383 | goto fail; | 376 | goto fail; |
384 | } | 377 | } |
385 | 378 | ||
386 | ep93xx_i2s_dai.dev = &pdev->dev; | 379 | dev_set_drvdata(&pdev->dev, info); |
387 | ep93xx_i2s_dai.private_data = info; | ||
388 | info->dma_params = ep93xx_i2s_dma_params; | 380 | info->dma_params = ep93xx_i2s_dma_params; |
389 | 381 | ||
390 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 382 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
@@ -424,7 +416,7 @@ static int ep93xx_i2s_probe(struct platform_device *pdev) | |||
424 | goto fail_put_sclk; | 416 | goto fail_put_sclk; |
425 | } | 417 | } |
426 | 418 | ||
427 | err = snd_soc_register_dai(&ep93xx_i2s_dai); | 419 | err = snd_soc_register_dai(&pdev->dev, &ep93xx_i2s_dai); |
428 | if (err) | 420 | if (err) |
429 | goto fail_put_lrclk; | 421 | goto fail_put_lrclk; |
430 | 422 | ||
@@ -447,9 +439,9 @@ fail: | |||
447 | 439 | ||
448 | static int __devexit ep93xx_i2s_remove(struct platform_device *pdev) | 440 | static int __devexit ep93xx_i2s_remove(struct platform_device *pdev) |
449 | { | 441 | { |
450 | struct ep93xx_i2s_info *info = ep93xx_i2s_dai.private_data; | 442 | struct ep93xx_i2s_info *info = dev_get_drvdata(&pdev->dev); |
451 | 443 | ||
452 | snd_soc_unregister_dai(&ep93xx_i2s_dai); | 444 | snd_soc_unregister_dai(&pdev->dev); |
453 | clk_put(info->lrclk); | 445 | clk_put(info->lrclk); |
454 | clk_put(info->sclk); | 446 | clk_put(info->sclk); |
455 | clk_put(info->mclk); | 447 | clk_put(info->mclk); |