ASoC: wm0010: Use DMA-safe memory for SPI transfers
authorDimitris Papastamos <dp@opensource.wolfsonmicro.com>
Thu, 1 Aug 2013 08:53:45 +0000 (09:53 +0100)
committerMark Brown <broonie@linaro.org>
Thu, 1 Aug 2013 09:01:42 +0000 (10:01 +0100)
We should be allocating our buffers for the SPI transfers
from the DMA zone.

Signed-off-by: Dimitris Papastamos <dp@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
sound/soc/codecs/wm0010.c

index 10adc4145d4639e5e44d3c587a595f476650b6fa..d5ebcb00019b7b807d9ad7e3940333c5ad2a4c4f 100644 (file)
@@ -420,7 +420,7 @@ static int wm0010_firmware_load(const char *name, struct snd_soc_codec *codec)
                xfer->codec = codec;
                list_add_tail(&xfer->list, &xfer_list);
 
-               out = kzalloc(len, GFP_KERNEL);
+               out = kzalloc(len, GFP_KERNEL | GFP_DMA);
                if (!out) {
                        dev_err(codec->dev,
                                "Failed to allocate RX buffer\n");
@@ -429,7 +429,7 @@ static int wm0010_firmware_load(const char *name, struct snd_soc_codec *codec)
                }
                xfer->t.rx_buf = out;
 
-               img = kzalloc(len, GFP_KERNEL);
+               img = kzalloc(len, GFP_KERNEL | GFP_DMA);
                if (!img) {
                        dev_err(codec->dev,
                                "Failed to allocate image buffer\n");
@@ -523,14 +523,14 @@ static int wm0010_stage2_load(struct snd_soc_codec *codec)
        dev_dbg(codec->dev, "Downloading %zu byte stage 2 loader\n", fw->size);
 
        /* Copy to local buffer first as vmalloc causes problems for dma */
-       img = kzalloc(fw->size, GFP_KERNEL);
+       img = kzalloc(fw->size, GFP_KERNEL | GFP_DMA);
        if (!img) {
                dev_err(codec->dev, "Failed to allocate image buffer\n");
                ret = -ENOMEM;
                goto abort2;
        }
 
-       out = kzalloc(fw->size, GFP_KERNEL);
+       out = kzalloc(fw->size, GFP_KERNEL | GFP_DMA);
        if (!out) {
                dev_err(codec->dev, "Failed to allocate output buffer\n");
                ret = -ENOMEM;
@@ -670,14 +670,14 @@ static int wm0010_boot(struct snd_soc_codec *codec)
 
                ret = -ENOMEM;
                len = pll_rec.length + 8;
-               out = kzalloc(len, GFP_KERNEL);
+               out = kzalloc(len, GFP_KERNEL | GFP_DMA);
                if (!out) {
                        dev_err(codec->dev,
                                "Failed to allocate RX buffer\n");
                        goto abort;
                }
 
-               img_swap = kzalloc(len, GFP_KERNEL);
+               img_swap = kzalloc(len, GFP_KERNEL | GFP_DMA);
                if (!img_swap) {
                        dev_err(codec->dev,
                                "Failed to allocate image buffer\n");