diff options
-rw-r--r-- | sound/soc/omap/am3517evm.c | 1 | ||||
-rw-r--r-- | sound/soc/omap/ams-delta.c | 1 | ||||
-rw-r--r-- | sound/soc/omap/mcbsp.c | 14 | ||||
-rw-r--r-- | sound/soc/omap/mcbsp.h | 7 | ||||
-rw-r--r-- | sound/soc/omap/n810.c | 1 | ||||
-rw-r--r-- | sound/soc/omap/omap-abe-twl6040.c | 1 | ||||
-rw-r--r-- | sound/soc/omap/omap-dmic.c | 22 | ||||
-rw-r--r-- | sound/soc/omap/omap-hdmi.c | 24 | ||||
-rw-r--r-- | sound/soc/omap/omap-mcbsp.c | 6 | ||||
-rw-r--r-- | sound/soc/omap/omap-mcpdm.c | 31 | ||||
-rw-r--r-- | sound/soc/omap/omap-pcm.c | 42 | ||||
-rw-r--r-- | sound/soc/omap/omap-pcm.h | 39 | ||||
-rw-r--r-- | sound/soc/omap/omap-twl4030.c | 1 | ||||
-rw-r--r-- | sound/soc/omap/omap3pandora.c | 1 | ||||
-rw-r--r-- | sound/soc/omap/osk5912.c | 1 | ||||
-rw-r--r-- | sound/soc/omap/rx51.c | 1 |
16 files changed, 54 insertions, 139 deletions
diff --git a/sound/soc/omap/am3517evm.c b/sound/soc/omap/am3517evm.c index c1900b2a6f28..994dcf345975 100644 --- a/sound/soc/omap/am3517evm.c +++ b/sound/soc/omap/am3517evm.c | |||
@@ -28,7 +28,6 @@ | |||
28 | #include <linux/platform_data/asoc-ti-mcbsp.h> | 28 | #include <linux/platform_data/asoc-ti-mcbsp.h> |
29 | 29 | ||
30 | #include "omap-mcbsp.h" | 30 | #include "omap-mcbsp.h" |
31 | #include "omap-pcm.h" | ||
32 | 31 | ||
33 | #include "../codecs/tlv320aic23.h" | 32 | #include "../codecs/tlv320aic23.h" |
34 | 33 | ||
diff --git a/sound/soc/omap/ams-delta.c b/sound/soc/omap/ams-delta.c index 2600447fa74f..629446482a91 100644 --- a/sound/soc/omap/ams-delta.c +++ b/sound/soc/omap/ams-delta.c | |||
@@ -36,7 +36,6 @@ | |||
36 | #include <linux/platform_data/asoc-ti-mcbsp.h> | 36 | #include <linux/platform_data/asoc-ti-mcbsp.h> |
37 | 37 | ||
38 | #include "omap-mcbsp.h" | 38 | #include "omap-mcbsp.h" |
39 | #include "omap-pcm.h" | ||
40 | #include "../codecs/cx20442.h" | 39 | #include "../codecs/cx20442.h" |
41 | 40 | ||
42 | 41 | ||
diff --git a/sound/soc/omap/mcbsp.c b/sound/soc/omap/mcbsp.c index 285c8368cb47..eb68c7db1cf3 100644 --- a/sound/soc/omap/mcbsp.c +++ b/sound/soc/omap/mcbsp.c | |||
@@ -1018,9 +1018,10 @@ int omap_mcbsp_init(struct platform_device *pdev) | |||
1018 | return -ENODEV; | 1018 | return -ENODEV; |
1019 | } | 1019 | } |
1020 | /* RX DMA request number, and port address configuration */ | 1020 | /* RX DMA request number, and port address configuration */ |
1021 | mcbsp->dma_data[1].name = "Audio Capture"; | 1021 | mcbsp->dma_req[1] = res->start; |
1022 | mcbsp->dma_data[1].dma_req = res->start; | 1022 | mcbsp->dma_data[1].filter_data = &mcbsp->dma_req[1]; |
1023 | mcbsp->dma_data[1].port_addr = omap_mcbsp_dma_reg_params(mcbsp, 1); | 1023 | mcbsp->dma_data[1].addr = omap_mcbsp_dma_reg_params(mcbsp, 1); |
1024 | mcbsp->dma_data[1].maxburst = 4; | ||
1024 | 1025 | ||
1025 | res = platform_get_resource_byname(pdev, IORESOURCE_DMA, "tx"); | 1026 | res = platform_get_resource_byname(pdev, IORESOURCE_DMA, "tx"); |
1026 | if (!res) { | 1027 | if (!res) { |
@@ -1028,9 +1029,10 @@ int omap_mcbsp_init(struct platform_device *pdev) | |||
1028 | return -ENODEV; | 1029 | return -ENODEV; |
1029 | } | 1030 | } |
1030 | /* TX DMA request number, and port address configuration */ | 1031 | /* TX DMA request number, and port address configuration */ |
1031 | mcbsp->dma_data[0].name = "Audio Playback"; | 1032 | mcbsp->dma_req[0] = res->start; |
1032 | mcbsp->dma_data[0].dma_req = res->start; | 1033 | mcbsp->dma_data[0].filter_data = &mcbsp->dma_req[0]; |
1033 | mcbsp->dma_data[0].port_addr = omap_mcbsp_dma_reg_params(mcbsp, 0); | 1034 | mcbsp->dma_data[0].addr = omap_mcbsp_dma_reg_params(mcbsp, 0); |
1035 | mcbsp->dma_data[0].maxburst = 4; | ||
1034 | 1036 | ||
1035 | mcbsp->fclk = clk_get(&pdev->dev, "fck"); | 1037 | mcbsp->fclk = clk_get(&pdev->dev, "fck"); |
1036 | if (IS_ERR(mcbsp->fclk)) { | 1038 | if (IS_ERR(mcbsp->fclk)) { |
diff --git a/sound/soc/omap/mcbsp.h b/sound/soc/omap/mcbsp.h index f93e0b0af303..96d1b086bcf8 100644 --- a/sound/soc/omap/mcbsp.h +++ b/sound/soc/omap/mcbsp.h | |||
@@ -24,14 +24,14 @@ | |||
24 | #ifndef __ASOC_MCBSP_H | 24 | #ifndef __ASOC_MCBSP_H |
25 | #define __ASOC_MCBSP_H | 25 | #define __ASOC_MCBSP_H |
26 | 26 | ||
27 | #include "omap-pcm.h" | ||
28 | |||
29 | #ifdef CONFIG_ARCH_OMAP1 | 27 | #ifdef CONFIG_ARCH_OMAP1 |
30 | #define mcbsp_omap1() 1 | 28 | #define mcbsp_omap1() 1 |
31 | #else | 29 | #else |
32 | #define mcbsp_omap1() 0 | 30 | #define mcbsp_omap1() 0 |
33 | #endif | 31 | #endif |
34 | 32 | ||
33 | #include <sound/dmaengine_pcm.h> | ||
34 | |||
35 | /* McBSP register numbers. Register address offset = num * reg_step */ | 35 | /* McBSP register numbers. Register address offset = num * reg_step */ |
36 | enum { | 36 | enum { |
37 | /* Common registers */ | 37 | /* Common registers */ |
@@ -312,7 +312,8 @@ struct omap_mcbsp { | |||
312 | struct omap_mcbsp_platform_data *pdata; | 312 | struct omap_mcbsp_platform_data *pdata; |
313 | struct omap_mcbsp_st_data *st_data; | 313 | struct omap_mcbsp_st_data *st_data; |
314 | struct omap_mcbsp_reg_cfg cfg_regs; | 314 | struct omap_mcbsp_reg_cfg cfg_regs; |
315 | struct omap_pcm_dma_data dma_data[2]; | 315 | struct snd_dmaengine_dai_dma_data dma_data[2]; |
316 | unsigned int dma_req[2]; | ||
316 | int dma_op_mode; | 317 | int dma_op_mode; |
317 | u16 max_tx_thres; | 318 | u16 max_tx_thres; |
318 | u16 max_rx_thres; | 319 | u16 max_rx_thres; |
diff --git a/sound/soc/omap/n810.c b/sound/soc/omap/n810.c index ee7cd53aa3ee..5e8d640d314f 100644 --- a/sound/soc/omap/n810.c +++ b/sound/soc/omap/n810.c | |||
@@ -34,7 +34,6 @@ | |||
34 | #include <linux/platform_data/asoc-ti-mcbsp.h> | 34 | #include <linux/platform_data/asoc-ti-mcbsp.h> |
35 | 35 | ||
36 | #include "omap-mcbsp.h" | 36 | #include "omap-mcbsp.h" |
37 | #include "omap-pcm.h" | ||
38 | 37 | ||
39 | #define N810_HEADSET_AMP_GPIO 10 | 38 | #define N810_HEADSET_AMP_GPIO 10 |
40 | #define N810_SPEAKER_AMP_GPIO 101 | 39 | #define N810_SPEAKER_AMP_GPIO 101 |
diff --git a/sound/soc/omap/omap-abe-twl6040.c b/sound/soc/omap/omap-abe-twl6040.c index e7d93fa412a9..70cd5c7b2e14 100644 --- a/sound/soc/omap/omap-abe-twl6040.c +++ b/sound/soc/omap/omap-abe-twl6040.c | |||
@@ -34,7 +34,6 @@ | |||
34 | 34 | ||
35 | #include "omap-dmic.h" | 35 | #include "omap-dmic.h" |
36 | #include "omap-mcpdm.h" | 36 | #include "omap-mcpdm.h" |
37 | #include "omap-pcm.h" | ||
38 | #include "../codecs/twl6040.h" | 37 | #include "../codecs/twl6040.h" |
39 | 38 | ||
40 | struct abe_twl6040 { | 39 | struct abe_twl6040 { |
diff --git a/sound/soc/omap/omap-dmic.c b/sound/soc/omap/omap-dmic.c index 8ebaf117d81f..a2597fab33a3 100644 --- a/sound/soc/omap/omap-dmic.c +++ b/sound/soc/omap/omap-dmic.c | |||
@@ -39,8 +39,8 @@ | |||
39 | #include <sound/pcm_params.h> | 39 | #include <sound/pcm_params.h> |
40 | #include <sound/initval.h> | 40 | #include <sound/initval.h> |
41 | #include <sound/soc.h> | 41 | #include <sound/soc.h> |
42 | #include <sound/dmaengine_pcm.h> | ||
42 | 43 | ||
43 | #include "omap-pcm.h" | ||
44 | #include "omap-dmic.h" | 44 | #include "omap-dmic.h" |
45 | 45 | ||
46 | struct omap_dmic { | 46 | struct omap_dmic { |
@@ -55,13 +55,9 @@ struct omap_dmic { | |||
55 | u32 ch_enabled; | 55 | u32 ch_enabled; |
56 | bool active; | 56 | bool active; |
57 | struct mutex mutex; | 57 | struct mutex mutex; |
58 | }; | ||
59 | 58 | ||
60 | /* | 59 | struct snd_dmaengine_dai_dma_data dma_data; |
61 | * Stream DMA parameters | 60 | unsigned int dma_req; |
62 | */ | ||
63 | static struct omap_pcm_dma_data omap_dmic_dai_dma_params = { | ||
64 | .name = "DMIC capture", | ||
65 | }; | 61 | }; |
66 | 62 | ||
67 | static inline void omap_dmic_write(struct omap_dmic *dmic, u16 reg, u32 val) | 63 | static inline void omap_dmic_write(struct omap_dmic *dmic, u16 reg, u32 val) |
@@ -118,7 +114,7 @@ static int omap_dmic_dai_startup(struct snd_pcm_substream *substream, | |||
118 | 114 | ||
119 | mutex_unlock(&dmic->mutex); | 115 | mutex_unlock(&dmic->mutex); |
120 | 116 | ||
121 | snd_soc_dai_set_dma_data(dai, substream, &omap_dmic_dai_dma_params); | 117 | snd_soc_dai_set_dma_data(dai, substream, &dmic->dma_data); |
122 | return ret; | 118 | return ret; |
123 | } | 119 | } |
124 | 120 | ||
@@ -203,7 +199,7 @@ static int omap_dmic_dai_hw_params(struct snd_pcm_substream *substream, | |||
203 | struct snd_soc_dai *dai) | 199 | struct snd_soc_dai *dai) |
204 | { | 200 | { |
205 | struct omap_dmic *dmic = snd_soc_dai_get_drvdata(dai); | 201 | struct omap_dmic *dmic = snd_soc_dai_get_drvdata(dai); |
206 | struct omap_pcm_dma_data *dma_data; | 202 | struct snd_dmaengine_dai_dma_data *dma_data; |
207 | int channels; | 203 | int channels; |
208 | 204 | ||
209 | dmic->clk_div = omap_dmic_select_divider(dmic, params_rate(params)); | 205 | dmic->clk_div = omap_dmic_select_divider(dmic, params_rate(params)); |
@@ -230,7 +226,7 @@ static int omap_dmic_dai_hw_params(struct snd_pcm_substream *substream, | |||
230 | 226 | ||
231 | /* packet size is threshold * channels */ | 227 | /* packet size is threshold * channels */ |
232 | dma_data = snd_soc_dai_get_dma_data(dai, substream); | 228 | dma_data = snd_soc_dai_get_dma_data(dai, substream); |
233 | dma_data->packet_size = dmic->threshold * channels; | 229 | dma_data->maxburst = dmic->threshold * channels; |
234 | 230 | ||
235 | return 0; | 231 | return 0; |
236 | } | 232 | } |
@@ -476,7 +472,7 @@ static int asoc_dmic_probe(struct platform_device *pdev) | |||
476 | ret = -ENODEV; | 472 | ret = -ENODEV; |
477 | goto err_put_clk; | 473 | goto err_put_clk; |
478 | } | 474 | } |
479 | omap_dmic_dai_dma_params.port_addr = res->start + OMAP_DMIC_DATA_REG; | 475 | dmic->dma_data.addr = res->start + OMAP_DMIC_DATA_REG; |
480 | 476 | ||
481 | res = platform_get_resource(pdev, IORESOURCE_DMA, 0); | 477 | res = platform_get_resource(pdev, IORESOURCE_DMA, 0); |
482 | if (!res) { | 478 | if (!res) { |
@@ -484,7 +480,9 @@ static int asoc_dmic_probe(struct platform_device *pdev) | |||
484 | ret = -ENODEV; | 480 | ret = -ENODEV; |
485 | goto err_put_clk; | 481 | goto err_put_clk; |
486 | } | 482 | } |
487 | omap_dmic_dai_dma_params.dma_req = res->start; | 483 | |
484 | dmic->dma_req = res->start; | ||
485 | dmic->dma_data.filter_data = &dmic->dma_req; | ||
488 | 486 | ||
489 | res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "mpu"); | 487 | res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "mpu"); |
490 | if (!res) { | 488 | if (!res) { |
diff --git a/sound/soc/omap/omap-hdmi.c b/sound/soc/omap/omap-hdmi.c index 32fa840c493e..b4bfab9f33e8 100644 --- a/sound/soc/omap/omap-hdmi.c +++ b/sound/soc/omap/omap-hdmi.c | |||
@@ -32,15 +32,16 @@ | |||
32 | #include <sound/soc.h> | 32 | #include <sound/soc.h> |
33 | #include <sound/asound.h> | 33 | #include <sound/asound.h> |
34 | #include <sound/asoundef.h> | 34 | #include <sound/asoundef.h> |
35 | #include <sound/dmaengine_pcm.h> | ||
35 | #include <video/omapdss.h> | 36 | #include <video/omapdss.h> |
36 | 37 | ||
37 | #include "omap-pcm.h" | ||
38 | #include "omap-hdmi.h" | 38 | #include "omap-hdmi.h" |
39 | 39 | ||
40 | #define DRV_NAME "omap-hdmi-audio-dai" | 40 | #define DRV_NAME "omap-hdmi-audio-dai" |
41 | 41 | ||
42 | struct hdmi_priv { | 42 | struct hdmi_priv { |
43 | struct omap_pcm_dma_data dma_params; | 43 | struct snd_dmaengine_dai_dma_data dma_data; |
44 | unsigned int dma_req; | ||
44 | struct omap_dss_audio dss_audio; | 45 | struct omap_dss_audio dss_audio; |
45 | struct snd_aes_iec958 iec; | 46 | struct snd_aes_iec958 iec; |
46 | struct snd_cea_861_aud_if cea; | 47 | struct snd_cea_861_aud_if cea; |
@@ -68,7 +69,7 @@ static int omap_hdmi_dai_startup(struct snd_pcm_substream *substream, | |||
68 | return -ENODEV; | 69 | return -ENODEV; |
69 | } | 70 | } |
70 | 71 | ||
71 | snd_soc_dai_set_dma_data(dai, substream, &priv->dma_params); | 72 | snd_soc_dai_set_dma_data(dai, substream, &priv->dma_data); |
72 | 73 | ||
73 | return 0; | 74 | return 0; |
74 | } | 75 | } |
@@ -88,25 +89,20 @@ static int omap_hdmi_dai_hw_params(struct snd_pcm_substream *substream, | |||
88 | struct hdmi_priv *priv = snd_soc_dai_get_drvdata(dai); | 89 | struct hdmi_priv *priv = snd_soc_dai_get_drvdata(dai); |
89 | struct snd_aes_iec958 *iec = &priv->iec; | 90 | struct snd_aes_iec958 *iec = &priv->iec; |
90 | struct snd_cea_861_aud_if *cea = &priv->cea; | 91 | struct snd_cea_861_aud_if *cea = &priv->cea; |
91 | struct omap_pcm_dma_data *dma_data; | ||
92 | int err = 0; | 92 | int err = 0; |
93 | 93 | ||
94 | dma_data = snd_soc_dai_get_dma_data(dai, substream); | ||
95 | |||
96 | switch (params_format(params)) { | 94 | switch (params_format(params)) { |
97 | case SNDRV_PCM_FORMAT_S16_LE: | 95 | case SNDRV_PCM_FORMAT_S16_LE: |
98 | dma_data->packet_size = 16; | 96 | priv->dma_data.maxburst = 16; |
99 | break; | 97 | break; |
100 | case SNDRV_PCM_FORMAT_S24_LE: | 98 | case SNDRV_PCM_FORMAT_S24_LE: |
101 | dma_data->packet_size = 32; | 99 | priv->dma_data.maxburst = 32; |
102 | break; | 100 | break; |
103 | default: | 101 | default: |
104 | dev_err(dai->dev, "format not supported!\n"); | 102 | dev_err(dai->dev, "format not supported!\n"); |
105 | return -EINVAL; | 103 | return -EINVAL; |
106 | } | 104 | } |
107 | 105 | ||
108 | dma_data->data_type = 32; | ||
109 | |||
110 | /* | 106 | /* |
111 | * fill the IEC-60958 channel status word | 107 | * fill the IEC-60958 channel status word |
112 | */ | 108 | */ |
@@ -283,8 +279,7 @@ static int omap_hdmi_probe(struct platform_device *pdev) | |||
283 | return -ENODEV; | 279 | return -ENODEV; |
284 | } | 280 | } |
285 | 281 | ||
286 | hdmi_data->dma_params.port_addr = hdmi_rsrc->start | 282 | hdmi_data->dma_data.addr = hdmi_rsrc->start + OMAP_HDMI_AUDIO_DMA_PORT; |
287 | + OMAP_HDMI_AUDIO_DMA_PORT; | ||
288 | 283 | ||
289 | hdmi_rsrc = platform_get_resource(pdev, IORESOURCE_DMA, 0); | 284 | hdmi_rsrc = platform_get_resource(pdev, IORESOURCE_DMA, 0); |
290 | if (!hdmi_rsrc) { | 285 | if (!hdmi_rsrc) { |
@@ -292,8 +287,9 @@ static int omap_hdmi_probe(struct platform_device *pdev) | |||
292 | return -ENODEV; | 287 | return -ENODEV; |
293 | } | 288 | } |
294 | 289 | ||
295 | hdmi_data->dma_params.dma_req = hdmi_rsrc->start; | 290 | hdmi_data->dma_req = hdmi_rsrc->start; |
296 | hdmi_data->dma_params.name = "HDMI playback"; | 291 | hdmi_data->dma_data.filter_data = &hdmi_data->dma_req; |
292 | hdmi_data->dma_data.addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; | ||
297 | 293 | ||
298 | /* | 294 | /* |
299 | * TODO: We assume that there is only one DSS HDMI device. Future | 295 | * TODO: We assume that there is only one DSS HDMI device. Future |
diff --git a/sound/soc/omap/omap-mcbsp.c b/sound/soc/omap/omap-mcbsp.c index 406fc8797229..1e7b3e89e04f 100644 --- a/sound/soc/omap/omap-mcbsp.c +++ b/sound/soc/omap/omap-mcbsp.c | |||
@@ -33,11 +33,11 @@ | |||
33 | #include <sound/pcm_params.h> | 33 | #include <sound/pcm_params.h> |
34 | #include <sound/initval.h> | 34 | #include <sound/initval.h> |
35 | #include <sound/soc.h> | 35 | #include <sound/soc.h> |
36 | #include <sound/dmaengine_pcm.h> | ||
36 | 37 | ||
37 | #include <linux/platform_data/asoc-ti-mcbsp.h> | 38 | #include <linux/platform_data/asoc-ti-mcbsp.h> |
38 | #include "mcbsp.h" | 39 | #include "mcbsp.h" |
39 | #include "omap-mcbsp.h" | 40 | #include "omap-mcbsp.h" |
40 | #include "omap-pcm.h" | ||
41 | 41 | ||
42 | #define OMAP_MCBSP_RATES (SNDRV_PCM_RATE_8000_96000) | 42 | #define OMAP_MCBSP_RATES (SNDRV_PCM_RATE_8000_96000) |
43 | 43 | ||
@@ -224,7 +224,7 @@ static int omap_mcbsp_dai_hw_params(struct snd_pcm_substream *substream, | |||
224 | { | 224 | { |
225 | struct omap_mcbsp *mcbsp = snd_soc_dai_get_drvdata(cpu_dai); | 225 | struct omap_mcbsp *mcbsp = snd_soc_dai_get_drvdata(cpu_dai); |
226 | struct omap_mcbsp_reg_cfg *regs = &mcbsp->cfg_regs; | 226 | struct omap_mcbsp_reg_cfg *regs = &mcbsp->cfg_regs; |
227 | struct omap_pcm_dma_data *dma_data; | 227 | struct snd_dmaengine_dai_dma_data *dma_data; |
228 | int wlen, channels, wpf; | 228 | int wlen, channels, wpf; |
229 | int pkt_size = 0; | 229 | int pkt_size = 0; |
230 | unsigned int format, div, framesize, master; | 230 | unsigned int format, div, framesize, master; |
@@ -276,7 +276,7 @@ static int omap_mcbsp_dai_hw_params(struct snd_pcm_substream *substream, | |||
276 | omap_mcbsp_set_threshold(substream, pkt_size); | 276 | omap_mcbsp_set_threshold(substream, pkt_size); |
277 | } | 277 | } |
278 | 278 | ||
279 | dma_data->packet_size = pkt_size; | 279 | dma_data->maxburst = pkt_size; |
280 | 280 | ||
281 | if (mcbsp->configured) { | 281 | if (mcbsp->configured) { |
282 | /* McBSP already configured by another stream */ | 282 | /* McBSP already configured by another stream */ |
diff --git a/sound/soc/omap/omap-mcpdm.c b/sound/soc/omap/omap-mcpdm.c index e1d3998cb0a5..49f102a1dbae 100644 --- a/sound/soc/omap/omap-mcpdm.c +++ b/sound/soc/omap/omap-mcpdm.c | |||
@@ -39,9 +39,9 @@ | |||
39 | #include <sound/pcm.h> | 39 | #include <sound/pcm.h> |
40 | #include <sound/pcm_params.h> | 40 | #include <sound/pcm_params.h> |
41 | #include <sound/soc.h> | 41 | #include <sound/soc.h> |
42 | #include <sound/dmaengine_pcm.h> | ||
42 | 43 | ||
43 | #include "omap-mcpdm.h" | 44 | #include "omap-mcpdm.h" |
44 | #include "omap-pcm.h" | ||
45 | 45 | ||
46 | struct mcpdm_link_config { | 46 | struct mcpdm_link_config { |
47 | u32 link_mask; /* channel mask for the direction */ | 47 | u32 link_mask; /* channel mask for the direction */ |
@@ -64,19 +64,14 @@ struct omap_mcpdm { | |||
64 | 64 | ||
65 | /* McPDM needs to be restarted due to runtime reconfiguration */ | 65 | /* McPDM needs to be restarted due to runtime reconfiguration */ |
66 | bool restart; | 66 | bool restart; |
67 | |||
68 | struct snd_dmaengine_dai_dma_data dma_data[2]; | ||
69 | unsigned int dma_req[2]; | ||
67 | }; | 70 | }; |
68 | 71 | ||
69 | /* | 72 | /* |
70 | * Stream DMA parameters | 73 | * Stream DMA parameters |
71 | */ | 74 | */ |
72 | static struct omap_pcm_dma_data omap_mcpdm_dai_dma_params[] = { | ||
73 | { | ||
74 | .name = "Audio playback", | ||
75 | }, | ||
76 | { | ||
77 | .name = "Audio capture", | ||
78 | }, | ||
79 | }; | ||
80 | 75 | ||
81 | static inline void omap_mcpdm_write(struct omap_mcpdm *mcpdm, u16 reg, u32 val) | 76 | static inline void omap_mcpdm_write(struct omap_mcpdm *mcpdm, u16 reg, u32 val) |
82 | { | 77 | { |
@@ -272,7 +267,7 @@ static int omap_mcpdm_dai_startup(struct snd_pcm_substream *substream, | |||
272 | mutex_unlock(&mcpdm->mutex); | 267 | mutex_unlock(&mcpdm->mutex); |
273 | 268 | ||
274 | snd_soc_dai_set_dma_data(dai, substream, | 269 | snd_soc_dai_set_dma_data(dai, substream, |
275 | &omap_mcpdm_dai_dma_params[substream->stream]); | 270 | &mcpdm->dma_data[substream->stream]); |
276 | 271 | ||
277 | return 0; | 272 | return 0; |
278 | } | 273 | } |
@@ -302,7 +297,7 @@ static int omap_mcpdm_dai_hw_params(struct snd_pcm_substream *substream, | |||
302 | { | 297 | { |
303 | struct omap_mcpdm *mcpdm = snd_soc_dai_get_drvdata(dai); | 298 | struct omap_mcpdm *mcpdm = snd_soc_dai_get_drvdata(dai); |
304 | int stream = substream->stream; | 299 | int stream = substream->stream; |
305 | struct omap_pcm_dma_data *dma_data; | 300 | struct snd_dmaengine_dai_dma_data *dma_data; |
306 | u32 threshold; | 301 | u32 threshold; |
307 | int channels; | 302 | int channels; |
308 | int link_mask = 0; | 303 | int link_mask = 0; |
@@ -342,14 +337,14 @@ static int omap_mcpdm_dai_hw_params(struct snd_pcm_substream *substream, | |||
342 | if (!mcpdm->config[!stream].link_mask) | 337 | if (!mcpdm->config[!stream].link_mask) |
343 | mcpdm->config[!stream].link_mask = 0x3; | 338 | mcpdm->config[!stream].link_mask = 0x3; |
344 | 339 | ||
345 | dma_data->packet_size = | 340 | dma_data->maxburst = |
346 | (MCPDM_DN_THRES_MAX - threshold) * channels; | 341 | (MCPDM_DN_THRES_MAX - threshold) * channels; |
347 | } else { | 342 | } else { |
348 | /* If playback is not running assume a stereo stream to come */ | 343 | /* If playback is not running assume a stereo stream to come */ |
349 | if (!mcpdm->config[!stream].link_mask) | 344 | if (!mcpdm->config[!stream].link_mask) |
350 | mcpdm->config[!stream].link_mask = (0x3 << 3); | 345 | mcpdm->config[!stream].link_mask = (0x3 << 3); |
351 | 346 | ||
352 | dma_data->packet_size = threshold * channels; | 347 | dma_data->maxburst = threshold * channels; |
353 | } | 348 | } |
354 | 349 | ||
355 | /* Check if we need to restart McPDM with this stream */ | 350 | /* Check if we need to restart McPDM with this stream */ |
@@ -475,20 +470,22 @@ static int asoc_mcpdm_probe(struct platform_device *pdev) | |||
475 | if (res == NULL) | 470 | if (res == NULL) |
476 | return -ENOMEM; | 471 | return -ENOMEM; |
477 | 472 | ||
478 | omap_mcpdm_dai_dma_params[0].port_addr = res->start + MCPDM_REG_DN_DATA; | 473 | mcpdm->dma_data[0].addr = res->start + MCPDM_REG_DN_DATA; |
479 | omap_mcpdm_dai_dma_params[1].port_addr = res->start + MCPDM_REG_UP_DATA; | 474 | mcpdm->dma_data[1].addr = res->start + MCPDM_REG_UP_DATA; |
480 | 475 | ||
481 | res = platform_get_resource_byname(pdev, IORESOURCE_DMA, "dn_link"); | 476 | res = platform_get_resource_byname(pdev, IORESOURCE_DMA, "dn_link"); |
482 | if (!res) | 477 | if (!res) |
483 | return -ENODEV; | 478 | return -ENODEV; |
484 | 479 | ||
485 | omap_mcpdm_dai_dma_params[0].dma_req = res->start; | 480 | mcpdm->dma_req[0] = res->start; |
481 | mcpdm->dma_data[0].filter_data = &mcpdm->dma_req[0]; | ||
486 | 482 | ||
487 | res = platform_get_resource_byname(pdev, IORESOURCE_DMA, "up_link"); | 483 | res = platform_get_resource_byname(pdev, IORESOURCE_DMA, "up_link"); |
488 | if (!res) | 484 | if (!res) |
489 | return -ENODEV; | 485 | return -ENODEV; |
490 | 486 | ||
491 | omap_mcpdm_dai_dma_params[1].dma_req = res->start; | 487 | mcpdm->dma_req[1] = res->start; |
488 | mcpdm->dma_data[1].filter_data = &mcpdm->dma_req[1]; | ||
492 | 489 | ||
493 | res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "mpu"); | 490 | res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "mpu"); |
494 | if (res == NULL) | 491 | if (res == NULL) |
diff --git a/sound/soc/omap/omap-pcm.c b/sound/soc/omap/omap-pcm.c index 6c842c7ef9e6..c8e272f9c2de 100644 --- a/sound/soc/omap/omap-pcm.c +++ b/sound/soc/omap/omap-pcm.c | |||
@@ -32,8 +32,6 @@ | |||
32 | #include <sound/dmaengine_pcm.h> | 32 | #include <sound/dmaengine_pcm.h> |
33 | #include <sound/soc.h> | 33 | #include <sound/soc.h> |
34 | 34 | ||
35 | #include "omap-pcm.h" | ||
36 | |||
37 | #ifdef CONFIG_ARCH_OMAP1 | 35 | #ifdef CONFIG_ARCH_OMAP1 |
38 | #define pcm_omap1510() cpu_is_omap1510() | 36 | #define pcm_omap1510() cpu_is_omap1510() |
39 | #else | 37 | #else |
@@ -56,25 +54,6 @@ static const struct snd_pcm_hardware omap_pcm_hardware = { | |||
56 | .buffer_bytes_max = 128 * 1024, | 54 | .buffer_bytes_max = 128 * 1024, |
57 | }; | 55 | }; |
58 | 56 | ||
59 | static int omap_pcm_get_dma_buswidth(int num_bits) | ||
60 | { | ||
61 | int buswidth; | ||
62 | |||
63 | switch (num_bits) { | ||
64 | case 16: | ||
65 | buswidth = DMA_SLAVE_BUSWIDTH_2_BYTES; | ||
66 | break; | ||
67 | case 32: | ||
68 | buswidth = DMA_SLAVE_BUSWIDTH_4_BYTES; | ||
69 | break; | ||
70 | default: | ||
71 | buswidth = -EINVAL; | ||
72 | break; | ||
73 | } | ||
74 | return buswidth; | ||
75 | } | ||
76 | |||
77 | |||
78 | /* this may get called several times by oss emulation */ | 57 | /* this may get called several times by oss emulation */ |
79 | static int omap_pcm_hw_params(struct snd_pcm_substream *substream, | 58 | static int omap_pcm_hw_params(struct snd_pcm_substream *substream, |
80 | struct snd_pcm_hw_params *params) | 59 | struct snd_pcm_hw_params *params) |
@@ -105,20 +84,9 @@ static int omap_pcm_hw_params(struct snd_pcm_substream *substream, | |||
105 | if (err) | 84 | if (err) |
106 | return err; | 85 | return err; |
107 | 86 | ||
108 | /* Override the *_dma addr_width if requested by the DAI driver */ | 87 | snd_dmaengine_pcm_set_config_from_dai_data(substream, |
109 | if (dma_data->data_type) { | 88 | snd_soc_dai_get_dma_data(rtd->cpu_dai, substream), |
110 | int buswidth = omap_pcm_get_dma_buswidth(dma_data->data_type); | 89 | &config); |
111 | |||
112 | if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) | ||
113 | config.dst_addr_width = buswidth; | ||
114 | else | ||
115 | config.src_addr_width = buswidth; | ||
116 | } | ||
117 | |||
118 | config.src_addr = dma_data->port_addr; | ||
119 | config.dst_addr = dma_data->port_addr; | ||
120 | config.src_maxburst = dma_data->packet_size; | ||
121 | config.dst_maxburst = dma_data->packet_size; | ||
122 | 90 | ||
123 | return dmaengine_slave_config(chan, &config); | 91 | return dmaengine_slave_config(chan, &config); |
124 | } | 92 | } |
@@ -144,14 +112,14 @@ static snd_pcm_uframes_t omap_pcm_pointer(struct snd_pcm_substream *substream) | |||
144 | static int omap_pcm_open(struct snd_pcm_substream *substream) | 112 | static int omap_pcm_open(struct snd_pcm_substream *substream) |
145 | { | 113 | { |
146 | struct snd_soc_pcm_runtime *rtd = substream->private_data; | 114 | struct snd_soc_pcm_runtime *rtd = substream->private_data; |
147 | struct omap_pcm_dma_data *dma_data; | 115 | struct snd_dmaengine_dai_dma_data *dma_data; |
148 | 116 | ||
149 | snd_soc_set_runtime_hwparams(substream, &omap_pcm_hardware); | 117 | snd_soc_set_runtime_hwparams(substream, &omap_pcm_hardware); |
150 | 118 | ||
151 | dma_data = snd_soc_dai_get_dma_data(rtd->cpu_dai, substream); | 119 | dma_data = snd_soc_dai_get_dma_data(rtd->cpu_dai, substream); |
152 | 120 | ||
153 | return snd_dmaengine_pcm_open(substream, omap_dma_filter_fn, | 121 | return snd_dmaengine_pcm_open(substream, omap_dma_filter_fn, |
154 | &dma_data->dma_req); | 122 | dma_data->filter_data); |
155 | } | 123 | } |
156 | 124 | ||
157 | static int omap_pcm_mmap(struct snd_pcm_substream *substream, | 125 | static int omap_pcm_mmap(struct snd_pcm_substream *substream, |
diff --git a/sound/soc/omap/omap-pcm.h b/sound/soc/omap/omap-pcm.h deleted file mode 100644 index 39e6e4556b82..000000000000 --- a/sound/soc/omap/omap-pcm.h +++ /dev/null | |||
@@ -1,39 +0,0 @@ | |||
1 | /* | ||
2 | * omap-pcm.h | ||
3 | * | ||
4 | * Copyright (C) 2008 Nokia Corporation | ||
5 | * | ||
6 | * Contact: Jarkko Nikula <jarkko.nikula@bitmer.com> | ||
7 | * Peter Ujfalusi <peter.ujfalusi@ti.com> | ||
8 | * | ||
9 | * This program is free software; you can redistribute it and/or | ||
10 | * modify it under the terms of the GNU General Public License | ||
11 | * version 2 as published by the Free Software Foundation. | ||
12 | * | ||
13 | * This program is distributed in the hope that it will be useful, but | ||
14 | * WITHOUT ANY WARRANTY; without even the implied warranty of | ||
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
16 | * General Public License for more details. | ||
17 | * | ||
18 | * You should have received a copy of the GNU General Public License | ||
19 | * along with this program; if not, write to the Free Software | ||
20 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA | ||
21 | * 02110-1301 USA | ||
22 | * | ||
23 | */ | ||
24 | |||
25 | #ifndef __OMAP_PCM_H__ | ||
26 | #define __OMAP_PCM_H__ | ||
27 | |||
28 | struct snd_pcm_substream; | ||
29 | |||
30 | struct omap_pcm_dma_data { | ||
31 | char *name; /* stream identifier */ | ||
32 | int dma_req; /* DMA request line */ | ||
33 | unsigned long port_addr; /* transmit/receive register */ | ||
34 | int data_type; /* 8, 16, 32 (bits) or 0 to let omap-pcm | ||
35 | * to decide the sDMA data type */ | ||
36 | int packet_size; /* packet size only in PACKET mode */ | ||
37 | }; | ||
38 | |||
39 | #endif | ||
diff --git a/sound/soc/omap/omap-twl4030.c b/sound/soc/omap/omap-twl4030.c index fd98509d0f49..2a9324f794d8 100644 --- a/sound/soc/omap/omap-twl4030.c +++ b/sound/soc/omap/omap-twl4030.c | |||
@@ -43,7 +43,6 @@ | |||
43 | #include <sound/jack.h> | 43 | #include <sound/jack.h> |
44 | 44 | ||
45 | #include "omap-mcbsp.h" | 45 | #include "omap-mcbsp.h" |
46 | #include "omap-pcm.h" | ||
47 | 46 | ||
48 | struct omap_twl4030 { | 47 | struct omap_twl4030 { |
49 | int jack_detect; /* board can detect jack events */ | 48 | int jack_detect; /* board can detect jack events */ |
diff --git a/sound/soc/omap/omap3pandora.c b/sound/soc/omap/omap3pandora.c index 9e46e1d8cb1b..cf604a2faa18 100644 --- a/sound/soc/omap/omap3pandora.c +++ b/sound/soc/omap/omap3pandora.c | |||
@@ -34,7 +34,6 @@ | |||
34 | #include <linux/platform_data/asoc-ti-mcbsp.h> | 34 | #include <linux/platform_data/asoc-ti-mcbsp.h> |
35 | 35 | ||
36 | #include "omap-mcbsp.h" | 36 | #include "omap-mcbsp.h" |
37 | #include "omap-pcm.h" | ||
38 | 37 | ||
39 | #define OMAP3_PANDORA_DAC_POWER_GPIO 118 | 38 | #define OMAP3_PANDORA_DAC_POWER_GPIO 118 |
40 | #define OMAP3_PANDORA_AMP_POWER_GPIO 14 | 39 | #define OMAP3_PANDORA_AMP_POWER_GPIO 14 |
diff --git a/sound/soc/omap/osk5912.c b/sound/soc/omap/osk5912.c index 06ef8d67ed1c..d03e57da7708 100644 --- a/sound/soc/omap/osk5912.c +++ b/sound/soc/omap/osk5912.c | |||
@@ -33,7 +33,6 @@ | |||
33 | #include <linux/platform_data/asoc-ti-mcbsp.h> | 33 | #include <linux/platform_data/asoc-ti-mcbsp.h> |
34 | 34 | ||
35 | #include "omap-mcbsp.h" | 35 | #include "omap-mcbsp.h" |
36 | #include "omap-pcm.h" | ||
37 | #include "../codecs/tlv320aic23.h" | 36 | #include "../codecs/tlv320aic23.h" |
38 | 37 | ||
39 | #define CODEC_CLOCK 12000000 | 38 | #define CODEC_CLOCK 12000000 |
diff --git a/sound/soc/omap/rx51.c b/sound/soc/omap/rx51.c index 3cd525748975..249cd230ad8f 100644 --- a/sound/soc/omap/rx51.c +++ b/sound/soc/omap/rx51.c | |||
@@ -37,7 +37,6 @@ | |||
37 | #include <asm/mach-types.h> | 37 | #include <asm/mach-types.h> |
38 | 38 | ||
39 | #include "omap-mcbsp.h" | 39 | #include "omap-mcbsp.h" |
40 | #include "omap-pcm.h" | ||
41 | 40 | ||
42 | #define RX51_TVOUT_SEL_GPIO 40 | 41 | #define RX51_TVOUT_SEL_GPIO 40 |
43 | #define RX51_JACK_DETECT_GPIO 177 | 42 | #define RX51_JACK_DETECT_GPIO 177 |