diff options
Diffstat (limited to 'sound/soc/s3c24xx/s3c-i2s-v2.c')
-rw-r--r-- | sound/soc/s3c24xx/s3c-i2s-v2.c | 50 |
1 files changed, 15 insertions, 35 deletions
diff --git a/sound/soc/s3c24xx/s3c-i2s-v2.c b/sound/soc/s3c24xx/s3c-i2s-v2.c index 64376b2aac73..f4fbc0e61733 100644 --- a/sound/soc/s3c24xx/s3c-i2s-v2.c +++ b/sound/soc/s3c24xx/s3c-i2s-v2.c | |||
@@ -49,7 +49,7 @@ | |||
49 | 49 | ||
50 | static inline struct s3c_i2sv2_info *to_info(struct snd_soc_dai *cpu_dai) | 50 | static inline struct s3c_i2sv2_info *to_info(struct snd_soc_dai *cpu_dai) |
51 | { | 51 | { |
52 | return cpu_dai->private_data; | 52 | return snd_soc_dai_get_drvdata(cpu_dai); |
53 | } | 53 | } |
54 | 54 | ||
55 | #define bit_set(v, b) (((v) & (b)) ? 1 : 0) | 55 | #define bit_set(v, b) (((v) & (b)) ? 1 : 0) |
@@ -307,11 +307,9 @@ static int s3c2412_i2s_set_fmt(struct snd_soc_dai *cpu_dai, | |||
307 | 307 | ||
308 | static int s3c_i2sv2_hw_params(struct snd_pcm_substream *substream, | 308 | static int s3c_i2sv2_hw_params(struct snd_pcm_substream *substream, |
309 | struct snd_pcm_hw_params *params, | 309 | struct snd_pcm_hw_params *params, |
310 | struct snd_soc_dai *socdai) | 310 | struct snd_soc_dai *dai) |
311 | { | 311 | { |
312 | struct snd_soc_pcm_runtime *rtd = substream->private_data; | 312 | struct s3c_i2sv2_info *i2s = to_info(dai); |
313 | struct snd_soc_dai_link *dai = rtd->dai; | ||
314 | struct s3c_i2sv2_info *i2s = to_info(dai->cpu_dai); | ||
315 | struct s3c_dma_params *dma_data; | 313 | struct s3c_dma_params *dma_data; |
316 | u32 iismod; | 314 | u32 iismod; |
317 | 315 | ||
@@ -322,7 +320,7 @@ static int s3c_i2sv2_hw_params(struct snd_pcm_substream *substream, | |||
322 | else | 320 | else |
323 | dma_data = i2s->dma_capture; | 321 | dma_data = i2s->dma_capture; |
324 | 322 | ||
325 | snd_soc_dai_set_dma_data(dai->cpu_dai, substream, dma_data); | 323 | snd_soc_dai_set_dma_data(dai, substream, dma_data); |
326 | 324 | ||
327 | /* Working copies of register */ | 325 | /* Working copies of register */ |
328 | iismod = readl(i2s->regs + S3C2412_IISMOD); | 326 | iismod = readl(i2s->regs + S3C2412_IISMOD); |
@@ -396,12 +394,12 @@ static int s3c2412_i2s_trigger(struct snd_pcm_substream *substream, int cmd, | |||
396 | struct snd_soc_dai *dai) | 394 | struct snd_soc_dai *dai) |
397 | { | 395 | { |
398 | struct snd_soc_pcm_runtime *rtd = substream->private_data; | 396 | struct snd_soc_pcm_runtime *rtd = substream->private_data; |
399 | struct s3c_i2sv2_info *i2s = to_info(rtd->dai->cpu_dai); | 397 | struct s3c_i2sv2_info *i2s = to_info(rtd->cpu_dai); |
400 | int capture = (substream->stream == SNDRV_PCM_STREAM_CAPTURE); | 398 | int capture = (substream->stream == SNDRV_PCM_STREAM_CAPTURE); |
401 | unsigned long irqs; | 399 | unsigned long irqs; |
402 | int ret = 0; | 400 | int ret = 0; |
403 | struct s3c_dma_params *dma_data = | 401 | struct s3c_dma_params *dma_data = |
404 | snd_soc_dai_get_dma_data(rtd->dai->cpu_dai, substream); | 402 | snd_soc_dai_get_dma_data(rtd->cpu_dai, substream); |
405 | 403 | ||
406 | pr_debug("Entered %s\n", __func__); | 404 | pr_debug("Entered %s\n", __func__); |
407 | 405 | ||
@@ -640,36 +638,17 @@ int s3c_i2sv2_iis_calc_rate(struct s3c_i2sv2_rate_calc *info, | |||
640 | } | 638 | } |
641 | EXPORT_SYMBOL_GPL(s3c_i2sv2_iis_calc_rate); | 639 | EXPORT_SYMBOL_GPL(s3c_i2sv2_iis_calc_rate); |
642 | 640 | ||
643 | int s3c_i2sv2_probe(struct platform_device *pdev, | 641 | int s3c_i2sv2_probe(struct snd_soc_dai *dai, |
644 | struct snd_soc_dai *dai, | ||
645 | struct s3c_i2sv2_info *i2s, | 642 | struct s3c_i2sv2_info *i2s, |
646 | unsigned long base) | 643 | unsigned long base) |
647 | { | 644 | { |
648 | struct device *dev = &pdev->dev; | 645 | struct device *dev = dai->dev; |
649 | unsigned int iismod; | 646 | unsigned int iismod; |
650 | 647 | ||
651 | i2s->dev = dev; | 648 | i2s->dev = dev; |
652 | 649 | ||
653 | /* record our i2s structure for later use in the callbacks */ | 650 | /* record our i2s structure for later use in the callbacks */ |
654 | dai->private_data = i2s; | 651 | snd_soc_dai_set_drvdata(dai, i2s); |
655 | |||
656 | if (!base) { | ||
657 | struct resource *res = platform_get_resource(pdev, | ||
658 | IORESOURCE_MEM, | ||
659 | 0); | ||
660 | if (!res) { | ||
661 | dev_err(dev, "Unable to get register resource\n"); | ||
662 | return -ENXIO; | ||
663 | } | ||
664 | |||
665 | if (!request_mem_region(res->start, resource_size(res), | ||
666 | "s3c64xx-i2s-v4")) { | ||
667 | dev_err(dev, "Unable to request register region\n"); | ||
668 | return -EBUSY; | ||
669 | } | ||
670 | |||
671 | base = res->start; | ||
672 | } | ||
673 | 652 | ||
674 | i2s->regs = ioremap(base, 0x100); | 653 | i2s->regs = ioremap(base, 0x100); |
675 | if (i2s->regs == NULL) { | 654 | if (i2s->regs == NULL) { |
@@ -752,9 +731,10 @@ static int s3c2412_i2s_resume(struct snd_soc_dai *dai) | |||
752 | #define s3c2412_i2s_resume NULL | 731 | #define s3c2412_i2s_resume NULL |
753 | #endif | 732 | #endif |
754 | 733 | ||
755 | int s3c_i2sv2_register_dai(struct snd_soc_dai *dai) | 734 | int s3c_i2sv2_register_dai(struct device *dev, int id, |
735 | struct snd_soc_dai_driver *drv) | ||
756 | { | 736 | { |
757 | struct snd_soc_dai_ops *ops = dai->ops; | 737 | struct snd_soc_dai_ops *ops = drv->ops; |
758 | 738 | ||
759 | ops->trigger = s3c2412_i2s_trigger; | 739 | ops->trigger = s3c2412_i2s_trigger; |
760 | if (!ops->hw_params) | 740 | if (!ops->hw_params) |
@@ -767,10 +747,10 @@ int s3c_i2sv2_register_dai(struct snd_soc_dai *dai) | |||
767 | if (!ops->delay) | 747 | if (!ops->delay) |
768 | ops->delay = s3c2412_i2s_delay; | 748 | ops->delay = s3c2412_i2s_delay; |
769 | 749 | ||
770 | dai->suspend = s3c2412_i2s_suspend; | 750 | drv->suspend = s3c2412_i2s_suspend; |
771 | dai->resume = s3c2412_i2s_resume; | 751 | drv->resume = s3c2412_i2s_resume; |
772 | 752 | ||
773 | return snd_soc_register_dai(dai); | 753 | return snd_soc_register_dai(dev, id, drv); |
774 | } | 754 | } |
775 | EXPORT_SYMBOL_GPL(s3c_i2sv2_register_dai); | 755 | EXPORT_SYMBOL_GPL(s3c_i2sv2_register_dai); |
776 | 756 | ||