aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/davinci/davinci-vcif.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/soc/davinci/davinci-vcif.c')
-rw-r--r--sound/soc/davinci/davinci-vcif.c25
1 files changed, 11 insertions, 14 deletions
diff --git a/sound/soc/davinci/davinci-vcif.c b/sound/soc/davinci/davinci-vcif.c
index 48678533da7a..ea232f6a2c21 100644
--- a/sound/soc/davinci/davinci-vcif.c
+++ b/sound/soc/davinci/davinci-vcif.c
@@ -36,7 +36,6 @@
36 36
37#include "davinci-pcm.h" 37#include "davinci-pcm.h"
38#include "davinci-i2s.h" 38#include "davinci-i2s.h"
39#include "davinci-vcif.h"
40 39
41#define MOD_REG_BIT(val, mask, set) do { \ 40#define MOD_REG_BIT(val, mask, set) do { \
42 if (set) { \ 41 if (set) { \
@@ -55,7 +54,7 @@ static void davinci_vcif_start(struct snd_pcm_substream *substream)
55{ 54{
56 struct snd_soc_pcm_runtime *rtd = substream->private_data; 55 struct snd_soc_pcm_runtime *rtd = substream->private_data;
57 struct davinci_vcif_dev *davinci_vcif_dev = 56 struct davinci_vcif_dev *davinci_vcif_dev =
58 rtd->dai->cpu_dai->private_data; 57 snd_soc_dai_get_drvdata(rtd->cpu_dai);
59 struct davinci_vc *davinci_vc = davinci_vcif_dev->davinci_vc; 58 struct davinci_vc *davinci_vc = davinci_vcif_dev->davinci_vc;
60 u32 w; 59 u32 w;
61 60
@@ -74,7 +73,7 @@ static void davinci_vcif_stop(struct snd_pcm_substream *substream)
74{ 73{
75 struct snd_soc_pcm_runtime *rtd = substream->private_data; 74 struct snd_soc_pcm_runtime *rtd = substream->private_data;
76 struct davinci_vcif_dev *davinci_vcif_dev = 75 struct davinci_vcif_dev *davinci_vcif_dev =
77 rtd->dai->cpu_dai->private_data; 76 snd_soc_dai_get_drvdata(rtd->cpu_dai);
78 struct davinci_vc *davinci_vc = davinci_vcif_dev->davinci_vc; 77 struct davinci_vc *davinci_vc = davinci_vcif_dev->davinci_vc;
79 u32 w; 78 u32 w;
80 79
@@ -92,12 +91,15 @@ static int davinci_vcif_hw_params(struct snd_pcm_substream *substream,
92 struct snd_pcm_hw_params *params, 91 struct snd_pcm_hw_params *params,
93 struct snd_soc_dai *dai) 92 struct snd_soc_dai *dai)
94{ 93{
95 struct davinci_vcif_dev *davinci_vcif_dev = dai->private_data; 94 struct davinci_vcif_dev *davinci_vcif_dev = snd_soc_dai_get_drvdata(dai);
96 struct davinci_vc *davinci_vc = davinci_vcif_dev->davinci_vc; 95 struct davinci_vc *davinci_vc = davinci_vcif_dev->davinci_vc;
97 struct davinci_pcm_dma_params *dma_params = 96 struct davinci_pcm_dma_params *dma_params =
98 &davinci_vcif_dev->dma_params[substream->stream]; 97 &davinci_vcif_dev->dma_params[substream->stream];
99 u32 w; 98 u32 w;
100 99
100 dai->capture_dma_data = davinci_vcif_dev->dma_params;
101 dai->playback_dma_data = davinci_vcif_dev->dma_params;
102
101 /* Restart the codec before setup */ 103 /* Restart the codec before setup */
102 davinci_vcif_stop(substream); 104 davinci_vcif_stop(substream);
103 davinci_vcif_start(substream); 105 davinci_vcif_start(substream);
@@ -179,8 +181,7 @@ static struct snd_soc_dai_ops davinci_vcif_dai_ops = {
179 .hw_params = davinci_vcif_hw_params, 181 .hw_params = davinci_vcif_hw_params,
180}; 182};
181 183
182struct snd_soc_dai davinci_vcif_dai = { 184static struct snd_soc_dai_driver davinci_vcif_dai = {
183 .name = "davinci-vcif",
184 .playback = { 185 .playback = {
185 .channels_min = 1, 186 .channels_min = 1,
186 .channels_max = 2, 187 .channels_max = 2,
@@ -194,7 +195,6 @@ struct snd_soc_dai davinci_vcif_dai = {
194 .ops = &davinci_vcif_dai_ops, 195 .ops = &davinci_vcif_dai_ops,
195 196
196}; 197};
197EXPORT_SYMBOL_GPL(davinci_vcif_dai);
198 198
199static int davinci_vcif_probe(struct platform_device *pdev) 199static int davinci_vcif_probe(struct platform_device *pdev)
200{ 200{
@@ -222,12 +222,9 @@ static int davinci_vcif_probe(struct platform_device *pdev)
222 davinci_vcif_dev->dma_params[SNDRV_PCM_STREAM_CAPTURE].dma_addr = 222 davinci_vcif_dev->dma_params[SNDRV_PCM_STREAM_CAPTURE].dma_addr =
223 davinci_vc->davinci_vcif.dma_rx_addr; 223 davinci_vc->davinci_vcif.dma_rx_addr;
224 224
225 davinci_vcif_dai.dev = &pdev->dev; 225 dev_set_drvdata(&pdev->dev, davinci_vcif_dev);
226 davinci_vcif_dai.capture.dma_data = davinci_vcif_dev->dma_params;
227 davinci_vcif_dai.playback.dma_data = davinci_vcif_dev->dma_params;
228 davinci_vcif_dai.private_data = davinci_vcif_dev;
229 226
230 ret = snd_soc_register_dai(&davinci_vcif_dai); 227 ret = snd_soc_register_dai(&pdev->dev, &davinci_vcif_dai);
231 if (ret != 0) { 228 if (ret != 0) {
232 dev_err(&pdev->dev, "could not register dai\n"); 229 dev_err(&pdev->dev, "could not register dai\n");
233 goto fail; 230 goto fail;
@@ -243,7 +240,7 @@ fail:
243 240
244static int davinci_vcif_remove(struct platform_device *pdev) 241static int davinci_vcif_remove(struct platform_device *pdev)
245{ 242{
246 snd_soc_unregister_dai(&davinci_vcif_dai); 243 snd_soc_unregister_dai(&pdev->dev);
247 244
248 return 0; 245 return 0;
249} 246}
@@ -252,7 +249,7 @@ static struct platform_driver davinci_vcif_driver = {
252 .probe = davinci_vcif_probe, 249 .probe = davinci_vcif_probe,
253 .remove = davinci_vcif_remove, 250 .remove = davinci_vcif_remove,
254 .driver = { 251 .driver = {
255 .name = "davinci_vcif", 252 .name = "davinci-vcif",
256 .owner = THIS_MODULE, 253 .owner = THIS_MODULE,
257 }, 254 },
258}; 255};