diff options
-rw-r--r-- | sound/arm/pxa2xx-pcm.c | 10 | ||||
-rw-r--r-- | sound/soc/atmel/atmel-pcm.c | 11 | ||||
-rw-r--r-- | sound/soc/blackfin/bf5xx-ac97-pcm.c | 11 | ||||
-rw-r--r-- | sound/soc/blackfin/bf5xx-i2s-pcm.c | 10 | ||||
-rw-r--r-- | sound/soc/davinci/davinci-pcm.c | 9 | ||||
-rw-r--r-- | sound/soc/fsl/fsl_dma.c | 9 | ||||
-rw-r--r-- | sound/soc/fsl/imx-pcm-fiq.c | 12 | ||||
-rw-r--r-- | sound/soc/fsl/mpc5200_dma.c | 10 | ||||
-rw-r--r-- | sound/soc/jz4740/jz4740-pcm.c | 12 | ||||
-rw-r--r-- | sound/soc/kirkwood/kirkwood-dma.c | 9 | ||||
-rw-r--r-- | sound/soc/nuc900/nuc900-pcm.c | 9 | ||||
-rw-r--r-- | sound/soc/omap/omap-pcm.c | 11 | ||||
-rw-r--r-- | sound/soc/pxa/pxa2xx-pcm.c | 11 | ||||
-rw-r--r-- | sound/soc/s6000/s6000-pcm.c | 9 | ||||
-rw-r--r-- | sound/soc/samsung/dma.c | 11 | ||||
-rw-r--r-- | sound/soc/samsung/idma.c | 11 |
16 files changed, 61 insertions, 104 deletions
diff --git a/sound/arm/pxa2xx-pcm.c b/sound/arm/pxa2xx-pcm.c index 69a2455b4472..e6c727b317fb 100644 --- a/sound/arm/pxa2xx-pcm.c +++ b/sound/arm/pxa2xx-pcm.c | |||
@@ -11,6 +11,7 @@ | |||
11 | */ | 11 | */ |
12 | 12 | ||
13 | #include <linux/module.h> | 13 | #include <linux/module.h> |
14 | #include <linux/dma-mapping.h> | ||
14 | #include <linux/dmaengine.h> | 15 | #include <linux/dmaengine.h> |
15 | 16 | ||
16 | #include <sound/core.h> | 17 | #include <sound/core.h> |
@@ -83,8 +84,6 @@ static struct snd_pcm_ops pxa2xx_pcm_ops = { | |||
83 | .mmap = pxa2xx_pcm_mmap, | 84 | .mmap = pxa2xx_pcm_mmap, |
84 | }; | 85 | }; |
85 | 86 | ||
86 | static u64 pxa2xx_pcm_dmamask = 0xffffffff; | ||
87 | |||
88 | int pxa2xx_pcm_new(struct snd_card *card, struct pxa2xx_pcm_client *client, | 87 | int pxa2xx_pcm_new(struct snd_card *card, struct pxa2xx_pcm_client *client, |
89 | struct snd_pcm **rpcm) | 88 | struct snd_pcm **rpcm) |
90 | { | 89 | { |
@@ -100,10 +99,9 @@ int pxa2xx_pcm_new(struct snd_card *card, struct pxa2xx_pcm_client *client, | |||
100 | pcm->private_data = client; | 99 | pcm->private_data = client; |
101 | pcm->private_free = pxa2xx_pcm_free_dma_buffers; | 100 | pcm->private_free = pxa2xx_pcm_free_dma_buffers; |
102 | 101 | ||
103 | if (!card->dev->dma_mask) | 102 | ret = dma_coerce_mask_and_coherent(card->dev, DMA_BIT_MASK(32)); |
104 | card->dev->dma_mask = &pxa2xx_pcm_dmamask; | 103 | if (ret) |
105 | if (!card->dev->coherent_dma_mask) | 104 | goto out; |
106 | card->dev->coherent_dma_mask = 0xffffffff; | ||
107 | 105 | ||
108 | if (play) { | 106 | if (play) { |
109 | int stream = SNDRV_PCM_STREAM_PLAYBACK; | 107 | int stream = SNDRV_PCM_STREAM_PLAYBACK; |
diff --git a/sound/soc/atmel/atmel-pcm.c b/sound/soc/atmel/atmel-pcm.c index 3109db7b9017..fbb87e3f1019 100644 --- a/sound/soc/atmel/atmel-pcm.c +++ b/sound/soc/atmel/atmel-pcm.c | |||
@@ -68,18 +68,15 @@ int atmel_pcm_mmap(struct snd_pcm_substream *substream, | |||
68 | } | 68 | } |
69 | EXPORT_SYMBOL_GPL(atmel_pcm_mmap); | 69 | EXPORT_SYMBOL_GPL(atmel_pcm_mmap); |
70 | 70 | ||
71 | static u64 atmel_pcm_dmamask = DMA_BIT_MASK(32); | ||
72 | |||
73 | int atmel_pcm_new(struct snd_soc_pcm_runtime *rtd) | 71 | int atmel_pcm_new(struct snd_soc_pcm_runtime *rtd) |
74 | { | 72 | { |
75 | struct snd_card *card = rtd->card->snd_card; | 73 | struct snd_card *card = rtd->card->snd_card; |
76 | struct snd_pcm *pcm = rtd->pcm; | 74 | struct snd_pcm *pcm = rtd->pcm; |
77 | int ret = 0; | 75 | int ret; |
78 | 76 | ||
79 | if (!card->dev->dma_mask) | 77 | ret = dma_coerce_mask_and_coherent(card->dev, DMA_BIT_MASK(32)); |
80 | card->dev->dma_mask = &atmel_pcm_dmamask; | 78 | if (ret) |
81 | if (!card->dev->coherent_dma_mask) | 79 | return ret; |
82 | card->dev->coherent_dma_mask = DMA_BIT_MASK(32); | ||
83 | 80 | ||
84 | if (pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream) { | 81 | if (pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream) { |
85 | pr_debug("atmel-pcm: allocating PCM playback DMA buffer\n"); | 82 | pr_debug("atmel-pcm: allocating PCM playback DMA buffer\n"); |
diff --git a/sound/soc/blackfin/bf5xx-ac97-pcm.c b/sound/soc/blackfin/bf5xx-ac97-pcm.c index 53f84085bf1f..1d4c676eb6cc 100644 --- a/sound/soc/blackfin/bf5xx-ac97-pcm.c +++ b/sound/soc/blackfin/bf5xx-ac97-pcm.c | |||
@@ -415,19 +415,16 @@ static void bf5xx_pcm_free_dma_buffers(struct snd_pcm *pcm) | |||
415 | } | 415 | } |
416 | } | 416 | } |
417 | 417 | ||
418 | static u64 bf5xx_pcm_dmamask = DMA_BIT_MASK(32); | ||
419 | |||
420 | static int bf5xx_pcm_ac97_new(struct snd_soc_pcm_runtime *rtd) | 418 | static int bf5xx_pcm_ac97_new(struct snd_soc_pcm_runtime *rtd) |
421 | { | 419 | { |
422 | struct snd_card *card = rtd->card->snd_card; | 420 | struct snd_card *card = rtd->card->snd_card; |
423 | struct snd_pcm *pcm = rtd->pcm; | 421 | struct snd_pcm *pcm = rtd->pcm; |
424 | int ret = 0; | 422 | int ret; |
425 | 423 | ||
426 | pr_debug("%s enter\n", __func__); | 424 | pr_debug("%s enter\n", __func__); |
427 | if (!card->dev->dma_mask) | 425 | ret = dma_coerce_mask_and_coherent(card->dev, DMA_BIT_MASK(32)); |
428 | card->dev->dma_mask = &bf5xx_pcm_dmamask; | 426 | if (ret) |
429 | if (!card->dev->coherent_dma_mask) | 427 | return ret; |
430 | card->dev->coherent_dma_mask = DMA_BIT_MASK(32); | ||
431 | 428 | ||
432 | if (pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream) { | 429 | if (pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream) { |
433 | ret = bf5xx_pcm_preallocate_dma_buffer(pcm, | 430 | ret = bf5xx_pcm_preallocate_dma_buffer(pcm, |
diff --git a/sound/soc/blackfin/bf5xx-i2s-pcm.c b/sound/soc/blackfin/bf5xx-i2s-pcm.c index 9cb4a80df98e..2a5b43417fd5 100644 --- a/sound/soc/blackfin/bf5xx-i2s-pcm.c +++ b/sound/soc/blackfin/bf5xx-i2s-pcm.c | |||
@@ -323,18 +323,16 @@ static struct snd_pcm_ops bf5xx_pcm_i2s_ops = { | |||
323 | .silence = bf5xx_pcm_silence, | 323 | .silence = bf5xx_pcm_silence, |
324 | }; | 324 | }; |
325 | 325 | ||
326 | static u64 bf5xx_pcm_dmamask = DMA_BIT_MASK(32); | ||
327 | |||
328 | static int bf5xx_pcm_i2s_new(struct snd_soc_pcm_runtime *rtd) | 326 | static int bf5xx_pcm_i2s_new(struct snd_soc_pcm_runtime *rtd) |
329 | { | 327 | { |
330 | struct snd_card *card = rtd->card->snd_card; | 328 | struct snd_card *card = rtd->card->snd_card; |
331 | size_t size = bf5xx_pcm_hardware.buffer_bytes_max; | 329 | size_t size = bf5xx_pcm_hardware.buffer_bytes_max; |
330 | int ret; | ||
332 | 331 | ||
333 | pr_debug("%s enter\n", __func__); | 332 | pr_debug("%s enter\n", __func__); |
334 | if (!card->dev->dma_mask) | 333 | ret = dma_coerce_mask_and_coherent(card->dev, DMA_BIT_MASK(32)); |
335 | card->dev->dma_mask = &bf5xx_pcm_dmamask; | 334 | if (ret) |
336 | if (!card->dev->coherent_dma_mask) | 335 | return ret; |
337 | card->dev->coherent_dma_mask = DMA_BIT_MASK(32); | ||
338 | 336 | ||
339 | return snd_pcm_lib_preallocate_pages_for_all(rtd->pcm, | 337 | return snd_pcm_lib_preallocate_pages_for_all(rtd->pcm, |
340 | SNDRV_DMA_TYPE_DEV, card->dev, size, size); | 338 | SNDRV_DMA_TYPE_DEV, card->dev, size, size); |
diff --git a/sound/soc/davinci/davinci-pcm.c b/sound/soc/davinci/davinci-pcm.c index 8460edce1c3b..84a63c660ab9 100644 --- a/sound/soc/davinci/davinci-pcm.c +++ b/sound/soc/davinci/davinci-pcm.c | |||
@@ -844,18 +844,15 @@ static void davinci_pcm_free(struct snd_pcm *pcm) | |||
844 | } | 844 | } |
845 | } | 845 | } |
846 | 846 | ||
847 | static u64 davinci_pcm_dmamask = DMA_BIT_MASK(32); | ||
848 | |||
849 | static int davinci_pcm_new(struct snd_soc_pcm_runtime *rtd) | 847 | static int davinci_pcm_new(struct snd_soc_pcm_runtime *rtd) |
850 | { | 848 | { |
851 | struct snd_card *card = rtd->card->snd_card; | 849 | struct snd_card *card = rtd->card->snd_card; |
852 | struct snd_pcm *pcm = rtd->pcm; | 850 | struct snd_pcm *pcm = rtd->pcm; |
853 | int ret; | 851 | int ret; |
854 | 852 | ||
855 | if (!card->dev->dma_mask) | 853 | ret = dma_coerce_mask_and_coherent(card->dev, DMA_BIT_MASK(32)); |
856 | card->dev->dma_mask = &davinci_pcm_dmamask; | 854 | if (ret) |
857 | if (!card->dev->coherent_dma_mask) | 855 | return ret; |
858 | card->dev->coherent_dma_mask = DMA_BIT_MASK(32); | ||
859 | 856 | ||
860 | if (pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream) { | 857 | if (pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream) { |
861 | ret = davinci_pcm_preallocate_dma_buffer(pcm, | 858 | ret = davinci_pcm_preallocate_dma_buffer(pcm, |
diff --git a/sound/soc/fsl/fsl_dma.c b/sound/soc/fsl/fsl_dma.c index 9cc5c1f82f09..f73c7eff8b23 100644 --- a/sound/soc/fsl/fsl_dma.c +++ b/sound/soc/fsl/fsl_dma.c | |||
@@ -298,14 +298,11 @@ static int fsl_dma_new(struct snd_soc_pcm_runtime *rtd) | |||
298 | { | 298 | { |
299 | struct snd_card *card = rtd->card->snd_card; | 299 | struct snd_card *card = rtd->card->snd_card; |
300 | struct snd_pcm *pcm = rtd->pcm; | 300 | struct snd_pcm *pcm = rtd->pcm; |
301 | static u64 fsl_dma_dmamask = DMA_BIT_MASK(36); | ||
302 | int ret; | 301 | int ret; |
303 | 302 | ||
304 | if (!card->dev->dma_mask) | 303 | ret = dma_coerce_mask_and_coherent(card->dev, DMA_BIT_MASK(36)); |
305 | card->dev->dma_mask = &fsl_dma_dmamask; | 304 | if (ret) |
306 | 305 | return ret; | |
307 | if (!card->dev->coherent_dma_mask) | ||
308 | card->dev->coherent_dma_mask = fsl_dma_dmamask; | ||
309 | 306 | ||
310 | /* Some codecs have separate DAIs for playback and capture, so we | 307 | /* Some codecs have separate DAIs for playback and capture, so we |
311 | * should allocate a DMA buffer only for the streams that are valid. | 308 | * should allocate a DMA buffer only for the streams that are valid. |
diff --git a/sound/soc/fsl/imx-pcm-fiq.c b/sound/soc/fsl/imx-pcm-fiq.c index 34043c55f2a6..fd5f2fb955f1 100644 --- a/sound/soc/fsl/imx-pcm-fiq.c +++ b/sound/soc/fsl/imx-pcm-fiq.c | |||
@@ -272,18 +272,16 @@ static int imx_pcm_preallocate_dma_buffer(struct snd_pcm *pcm, int stream) | |||
272 | return 0; | 272 | return 0; |
273 | } | 273 | } |
274 | 274 | ||
275 | static u64 imx_pcm_dmamask = DMA_BIT_MASK(32); | ||
276 | |||
277 | static int imx_pcm_new(struct snd_soc_pcm_runtime *rtd) | 275 | static int imx_pcm_new(struct snd_soc_pcm_runtime *rtd) |
278 | { | 276 | { |
279 | struct snd_card *card = rtd->card->snd_card; | 277 | struct snd_card *card = rtd->card->snd_card; |
280 | struct snd_pcm *pcm = rtd->pcm; | 278 | struct snd_pcm *pcm = rtd->pcm; |
281 | int ret = 0; | 279 | int ret; |
280 | |||
281 | ret = dma_coerce_mask_and_coherent(card->dev, DMA_BIT_MASK(32)); | ||
282 | if (ret) | ||
283 | return ret; | ||
282 | 284 | ||
283 | if (!card->dev->dma_mask) | ||
284 | card->dev->dma_mask = &imx_pcm_dmamask; | ||
285 | if (!card->dev->coherent_dma_mask) | ||
286 | card->dev->coherent_dma_mask = DMA_BIT_MASK(32); | ||
287 | if (pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream) { | 285 | if (pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream) { |
288 | ret = imx_pcm_preallocate_dma_buffer(pcm, | 286 | ret = imx_pcm_preallocate_dma_buffer(pcm, |
289 | SNDRV_PCM_STREAM_PLAYBACK); | 287 | SNDRV_PCM_STREAM_PLAYBACK); |
diff --git a/sound/soc/fsl/mpc5200_dma.c b/sound/soc/fsl/mpc5200_dma.c index 2a847ca494b5..8fcf22416740 100644 --- a/sound/soc/fsl/mpc5200_dma.c +++ b/sound/soc/fsl/mpc5200_dma.c | |||
@@ -299,7 +299,6 @@ static struct snd_pcm_ops psc_dma_ops = { | |||
299 | .hw_params = psc_dma_hw_params, | 299 | .hw_params = psc_dma_hw_params, |
300 | }; | 300 | }; |
301 | 301 | ||
302 | static u64 psc_dma_dmamask = DMA_BIT_MASK(32); | ||
303 | static int psc_dma_new(struct snd_soc_pcm_runtime *rtd) | 302 | static int psc_dma_new(struct snd_soc_pcm_runtime *rtd) |
304 | { | 303 | { |
305 | struct snd_card *card = rtd->card->snd_card; | 304 | struct snd_card *card = rtd->card->snd_card; |
@@ -307,15 +306,14 @@ static int psc_dma_new(struct snd_soc_pcm_runtime *rtd) | |||
307 | struct snd_pcm *pcm = rtd->pcm; | 306 | struct snd_pcm *pcm = rtd->pcm; |
308 | struct psc_dma *psc_dma = snd_soc_dai_get_drvdata(rtd->cpu_dai); | 307 | struct psc_dma *psc_dma = snd_soc_dai_get_drvdata(rtd->cpu_dai); |
309 | size_t size = psc_dma_hardware.buffer_bytes_max; | 308 | size_t size = psc_dma_hardware.buffer_bytes_max; |
310 | int rc = 0; | 309 | int rc; |
311 | 310 | ||
312 | dev_dbg(rtd->platform->dev, "psc_dma_new(card=%p, dai=%p, pcm=%p)\n", | 311 | dev_dbg(rtd->platform->dev, "psc_dma_new(card=%p, dai=%p, pcm=%p)\n", |
313 | card, dai, pcm); | 312 | card, dai, pcm); |
314 | 313 | ||
315 | if (!card->dev->dma_mask) | 314 | rc = dma_coerce_mask_and_coherent(card->dev, DMA_BIT_MASK(32)); |
316 | card->dev->dma_mask = &psc_dma_dmamask; | 315 | if (rc) |
317 | if (!card->dev->coherent_dma_mask) | 316 | return rc; |
318 | card->dev->coherent_dma_mask = DMA_BIT_MASK(32); | ||
319 | 317 | ||
320 | if (pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream) { | 318 | if (pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream) { |
321 | rc = snd_dma_alloc_pages(SNDRV_DMA_TYPE_DEV, pcm->card->dev, | 319 | rc = snd_dma_alloc_pages(SNDRV_DMA_TYPE_DEV, pcm->card->dev, |
diff --git a/sound/soc/jz4740/jz4740-pcm.c b/sound/soc/jz4740/jz4740-pcm.c index 710059292318..1d7ef28585e1 100644 --- a/sound/soc/jz4740/jz4740-pcm.c +++ b/sound/soc/jz4740/jz4740-pcm.c | |||
@@ -297,19 +297,15 @@ static void jz4740_pcm_free(struct snd_pcm *pcm) | |||
297 | } | 297 | } |
298 | } | 298 | } |
299 | 299 | ||
300 | static u64 jz4740_pcm_dmamask = DMA_BIT_MASK(32); | ||
301 | |||
302 | static int jz4740_pcm_new(struct snd_soc_pcm_runtime *rtd) | 300 | static int jz4740_pcm_new(struct snd_soc_pcm_runtime *rtd) |
303 | { | 301 | { |
304 | struct snd_card *card = rtd->card->snd_card; | 302 | struct snd_card *card = rtd->card->snd_card; |
305 | struct snd_pcm *pcm = rtd->pcm; | 303 | struct snd_pcm *pcm = rtd->pcm; |
306 | int ret = 0; | 304 | int ret; |
307 | |||
308 | if (!card->dev->dma_mask) | ||
309 | card->dev->dma_mask = &jz4740_pcm_dmamask; | ||
310 | 305 | ||
311 | if (!card->dev->coherent_dma_mask) | 306 | ret = dma_coerce_mask_and_coherent(card->dev, DMA_BIT_MASK(32)); |
312 | card->dev->coherent_dma_mask = DMA_BIT_MASK(32); | 307 | if (ret) |
308 | return ret; | ||
313 | 309 | ||
314 | if (pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream) { | 310 | if (pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream) { |
315 | ret = jz4740_pcm_preallocate_dma_buffer(pcm, | 311 | ret = jz4740_pcm_preallocate_dma_buffer(pcm, |
diff --git a/sound/soc/kirkwood/kirkwood-dma.c b/sound/soc/kirkwood/kirkwood-dma.c index b238434f92b0..3814bb037485 100644 --- a/sound/soc/kirkwood/kirkwood-dma.c +++ b/sound/soc/kirkwood/kirkwood-dma.c | |||
@@ -59,8 +59,6 @@ static struct snd_pcm_hardware kirkwood_dma_snd_hw = { | |||
59 | .fifo_size = 0, | 59 | .fifo_size = 0, |
60 | }; | 60 | }; |
61 | 61 | ||
62 | static u64 kirkwood_dma_dmamask = DMA_BIT_MASK(32); | ||
63 | |||
64 | static irqreturn_t kirkwood_dma_irq(int irq, void *dev_id) | 62 | static irqreturn_t kirkwood_dma_irq(int irq, void *dev_id) |
65 | { | 63 | { |
66 | struct kirkwood_dma_data *priv = dev_id; | 64 | struct kirkwood_dma_data *priv = dev_id; |
@@ -292,10 +290,9 @@ static int kirkwood_dma_new(struct snd_soc_pcm_runtime *rtd) | |||
292 | struct snd_pcm *pcm = rtd->pcm; | 290 | struct snd_pcm *pcm = rtd->pcm; |
293 | int ret; | 291 | int ret; |
294 | 292 | ||
295 | if (!card->dev->dma_mask) | 293 | ret = dma_coerce_mask_and_coherent(card->dev, DMA_BIT_MASK(32)); |
296 | card->dev->dma_mask = &kirkwood_dma_dmamask; | 294 | if (ret) |
297 | if (!card->dev->coherent_dma_mask) | 295 | return ret; |
298 | card->dev->coherent_dma_mask = DMA_BIT_MASK(32); | ||
299 | 296 | ||
300 | if (pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream) { | 297 | if (pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream) { |
301 | ret = kirkwood_dma_preallocate_dma_buffer(pcm, | 298 | ret = kirkwood_dma_preallocate_dma_buffer(pcm, |
diff --git a/sound/soc/nuc900/nuc900-pcm.c b/sound/soc/nuc900/nuc900-pcm.c index c894ff0f2580..f588ee45b4fd 100644 --- a/sound/soc/nuc900/nuc900-pcm.c +++ b/sound/soc/nuc900/nuc900-pcm.c | |||
@@ -314,16 +314,15 @@ static void nuc900_dma_free_dma_buffers(struct snd_pcm *pcm) | |||
314 | snd_pcm_lib_preallocate_free_for_all(pcm); | 314 | snd_pcm_lib_preallocate_free_for_all(pcm); |
315 | } | 315 | } |
316 | 316 | ||
317 | static u64 nuc900_pcm_dmamask = DMA_BIT_MASK(32); | ||
318 | static int nuc900_dma_new(struct snd_soc_pcm_runtime *rtd) | 317 | static int nuc900_dma_new(struct snd_soc_pcm_runtime *rtd) |
319 | { | 318 | { |
320 | struct snd_card *card = rtd->card->snd_card; | 319 | struct snd_card *card = rtd->card->snd_card; |
321 | struct snd_pcm *pcm = rtd->pcm; | 320 | struct snd_pcm *pcm = rtd->pcm; |
321 | int ret; | ||
322 | 322 | ||
323 | if (!card->dev->dma_mask) | 323 | ret = dma_coerce_mask_and_coherent(card->dev, DMA_BIT_MASK(32)); |
324 | card->dev->dma_mask = &nuc900_pcm_dmamask; | 324 | if (ret) |
325 | if (!card->dev->coherent_dma_mask) | 325 | return ret; |
326 | card->dev->coherent_dma_mask = DMA_BIT_MASK(32); | ||
327 | 326 | ||
328 | snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV, | 327 | snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV, |
329 | card->dev, 4 * 1024, (4 * 1024) - 1); | 328 | card->dev, 4 * 1024, (4 * 1024) - 1); |
diff --git a/sound/soc/omap/omap-pcm.c b/sound/soc/omap/omap-pcm.c index a11405de86e8..b8fa9862e54c 100644 --- a/sound/soc/omap/omap-pcm.c +++ b/sound/soc/omap/omap-pcm.c | |||
@@ -156,8 +156,6 @@ static struct snd_pcm_ops omap_pcm_ops = { | |||
156 | .mmap = omap_pcm_mmap, | 156 | .mmap = omap_pcm_mmap, |
157 | }; | 157 | }; |
158 | 158 | ||
159 | static u64 omap_pcm_dmamask = DMA_BIT_MASK(64); | ||
160 | |||
161 | static int omap_pcm_preallocate_dma_buffer(struct snd_pcm *pcm, | 159 | static int omap_pcm_preallocate_dma_buffer(struct snd_pcm *pcm, |
162 | int stream) | 160 | int stream) |
163 | { | 161 | { |
@@ -202,12 +200,11 @@ static int omap_pcm_new(struct snd_soc_pcm_runtime *rtd) | |||
202 | { | 200 | { |
203 | struct snd_card *card = rtd->card->snd_card; | 201 | struct snd_card *card = rtd->card->snd_card; |
204 | struct snd_pcm *pcm = rtd->pcm; | 202 | struct snd_pcm *pcm = rtd->pcm; |
205 | int ret = 0; | 203 | int ret; |
206 | 204 | ||
207 | if (!card->dev->dma_mask) | 205 | ret = dma_coerce_mask_and_coherent(card->dev, DMA_BIT_MASK(64)); |
208 | card->dev->dma_mask = &omap_pcm_dmamask; | 206 | if (ret) |
209 | if (!card->dev->coherent_dma_mask) | 207 | return ret; |
210 | card->dev->coherent_dma_mask = DMA_BIT_MASK(64); | ||
211 | 208 | ||
212 | if (pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream) { | 209 | if (pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream) { |
213 | ret = omap_pcm_preallocate_dma_buffer(pcm, | 210 | ret = omap_pcm_preallocate_dma_buffer(pcm, |
diff --git a/sound/soc/pxa/pxa2xx-pcm.c b/sound/soc/pxa/pxa2xx-pcm.c index 806da27b8b67..d58b09f4f7a4 100644 --- a/sound/soc/pxa/pxa2xx-pcm.c +++ b/sound/soc/pxa/pxa2xx-pcm.c | |||
@@ -87,18 +87,15 @@ static struct snd_pcm_ops pxa2xx_pcm_ops = { | |||
87 | .mmap = pxa2xx_pcm_mmap, | 87 | .mmap = pxa2xx_pcm_mmap, |
88 | }; | 88 | }; |
89 | 89 | ||
90 | static u64 pxa2xx_pcm_dmamask = DMA_BIT_MASK(32); | ||
91 | |||
92 | static int pxa2xx_soc_pcm_new(struct snd_soc_pcm_runtime *rtd) | 90 | static int pxa2xx_soc_pcm_new(struct snd_soc_pcm_runtime *rtd) |
93 | { | 91 | { |
94 | struct snd_card *card = rtd->card->snd_card; | 92 | struct snd_card *card = rtd->card->snd_card; |
95 | struct snd_pcm *pcm = rtd->pcm; | 93 | struct snd_pcm *pcm = rtd->pcm; |
96 | int ret = 0; | 94 | int ret; |
97 | 95 | ||
98 | if (!card->dev->dma_mask) | 96 | ret = dma_coerce_mask_and_coherent(card->dev, DMA_BIT_MASK(32)); |
99 | card->dev->dma_mask = &pxa2xx_pcm_dmamask; | 97 | if (ret) |
100 | if (!card->dev->coherent_dma_mask) | 98 | return ret; |
101 | card->dev->coherent_dma_mask = DMA_BIT_MASK(32); | ||
102 | 99 | ||
103 | if (pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream) { | 100 | if (pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream) { |
104 | ret = pxa2xx_pcm_preallocate_dma_buffer(pcm, | 101 | ret = pxa2xx_pcm_preallocate_dma_buffer(pcm, |
diff --git a/sound/soc/s6000/s6000-pcm.c b/sound/soc/s6000/s6000-pcm.c index d0740a762963..283620a97fe7 100644 --- a/sound/soc/s6000/s6000-pcm.c +++ b/sound/soc/s6000/s6000-pcm.c | |||
@@ -444,8 +444,6 @@ static void s6000_pcm_free(struct snd_pcm *pcm) | |||
444 | snd_pcm_lib_preallocate_free_for_all(pcm); | 444 | snd_pcm_lib_preallocate_free_for_all(pcm); |
445 | } | 445 | } |
446 | 446 | ||
447 | static u64 s6000_pcm_dmamask = DMA_BIT_MASK(32); | ||
448 | |||
449 | static int s6000_pcm_new(struct snd_soc_pcm_runtime *runtime) | 447 | static int s6000_pcm_new(struct snd_soc_pcm_runtime *runtime) |
450 | { | 448 | { |
451 | struct snd_card *card = runtime->card->snd_card; | 449 | struct snd_card *card = runtime->card->snd_card; |
@@ -456,10 +454,9 @@ static int s6000_pcm_new(struct snd_soc_pcm_runtime *runtime) | |||
456 | params = snd_soc_dai_get_dma_data(runtime->cpu_dai, | 454 | params = snd_soc_dai_get_dma_data(runtime->cpu_dai, |
457 | pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream); | 455 | pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream); |
458 | 456 | ||
459 | if (!card->dev->dma_mask) | 457 | res = dma_coerce_mask_and_coherent(card->dev, DMA_BIT_MASK(32)); |
460 | card->dev->dma_mask = &s6000_pcm_dmamask; | 458 | if (res) |
461 | if (!card->dev->coherent_dma_mask) | 459 | return res; |
462 | card->dev->coherent_dma_mask = DMA_BIT_MASK(32); | ||
463 | 460 | ||
464 | if (params->dma_in) { | 461 | if (params->dma_in) { |
465 | s6dmac_disable_chan(DMA_MASK_DMAC(params->dma_in), | 462 | s6dmac_disable_chan(DMA_MASK_DMAC(params->dma_in), |
diff --git a/sound/soc/samsung/dma.c b/sound/soc/samsung/dma.c index 9338d11e9216..fe2748b494d4 100644 --- a/sound/soc/samsung/dma.c +++ b/sound/soc/samsung/dma.c | |||
@@ -406,20 +406,17 @@ static void dma_free_dma_buffers(struct snd_pcm *pcm) | |||
406 | } | 406 | } |
407 | } | 407 | } |
408 | 408 | ||
409 | static u64 dma_mask = DMA_BIT_MASK(32); | ||
410 | |||
411 | static int dma_new(struct snd_soc_pcm_runtime *rtd) | 409 | static int dma_new(struct snd_soc_pcm_runtime *rtd) |
412 | { | 410 | { |
413 | struct snd_card *card = rtd->card->snd_card; | 411 | struct snd_card *card = rtd->card->snd_card; |
414 | struct snd_pcm *pcm = rtd->pcm; | 412 | struct snd_pcm *pcm = rtd->pcm; |
415 | int ret = 0; | 413 | int ret; |
416 | 414 | ||
417 | pr_debug("Entered %s\n", __func__); | 415 | pr_debug("Entered %s\n", __func__); |
418 | 416 | ||
419 | if (!card->dev->dma_mask) | 417 | ret = dma_coerce_mask_and_coherent(card->dev, DMA_BIT_MASK(32)); |
420 | card->dev->dma_mask = &dma_mask; | 418 | if (ret) |
421 | if (!card->dev->coherent_dma_mask) | 419 | return ret; |
422 | card->dev->coherent_dma_mask = DMA_BIT_MASK(32); | ||
423 | 420 | ||
424 | if (pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream) { | 421 | if (pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream) { |
425 | ret = preallocate_dma_buffer(pcm, | 422 | ret = preallocate_dma_buffer(pcm, |
diff --git a/sound/soc/samsung/idma.c b/sound/soc/samsung/idma.c index ce1e1e16f250..e4f318fc2f82 100644 --- a/sound/soc/samsung/idma.c +++ b/sound/soc/samsung/idma.c | |||
@@ -383,18 +383,15 @@ static int preallocate_idma_buffer(struct snd_pcm *pcm, int stream) | |||
383 | return 0; | 383 | return 0; |
384 | } | 384 | } |
385 | 385 | ||
386 | static u64 idma_mask = DMA_BIT_MASK(32); | ||
387 | |||
388 | static int idma_new(struct snd_soc_pcm_runtime *rtd) | 386 | static int idma_new(struct snd_soc_pcm_runtime *rtd) |
389 | { | 387 | { |
390 | struct snd_card *card = rtd->card->snd_card; | 388 | struct snd_card *card = rtd->card->snd_card; |
391 | struct snd_pcm *pcm = rtd->pcm; | 389 | struct snd_pcm *pcm = rtd->pcm; |
392 | int ret = 0; | 390 | int ret; |
393 | 391 | ||
394 | if (!card->dev->dma_mask) | 392 | ret = dma_coerce_mask_and_coherent(card->dev, DMA_BIT_MASK(32)); |
395 | card->dev->dma_mask = &idma_mask; | 393 | if (ret) |
396 | if (!card->dev->coherent_dma_mask) | 394 | return ret; |
397 | card->dev->coherent_dma_mask = DMA_BIT_MASK(32); | ||
398 | 395 | ||
399 | if (pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream) { | 396 | if (pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream) { |
400 | ret = preallocate_idma_buffer(pcm, | 397 | ret = preallocate_idma_buffer(pcm, |