lkml.org 
[lkml]   [2012]   [Jun]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH] ASoC: snd_dmaengine: add common api for pcm_mmap
    Date
    The pcm mmap for the substream dma buffer is done using the
    dma_mmap_writecombine().
    Some of the chip sound driver like Spear, Tegra, Davinci,
    ep93xx,snd_imx, snd_mxs, NUC900, OMAP, Samsung are doing this
    mapping locally.
    Add api in the snd dmaengine driver so that different client of
    snd dmaengine can use this rather than implementing locally.

    Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
    ---
    include/sound/dmaengine_pcm.h | 2 ++
    sound/soc/soc-dmaengine-pcm.c | 17 +++++++++++++++++
    2 files changed, 19 insertions(+), 0 deletions(-)

    diff --git a/include/sound/dmaengine_pcm.h b/include/sound/dmaengine_pcm.h
    index b877334..15c0d3c 100644
    --- a/include/sound/dmaengine_pcm.h
    +++ b/include/sound/dmaengine_pcm.h
    @@ -47,4 +47,6 @@ int snd_dmaengine_pcm_close(struct snd_pcm_substream *substream);

    struct dma_chan *snd_dmaengine_pcm_get_chan(struct snd_pcm_substream *substream);

    +int snd_dmaengine_pcm_mmap_writecombine(struct snd_pcm_substream *substream,
    + struct vm_area_struct *vma);
    #endif
    diff --git a/sound/soc/soc-dmaengine-pcm.c b/sound/soc/soc-dmaengine-pcm.c
    index 5df529e..6535eb3 100644
    --- a/sound/soc/soc-dmaengine-pcm.c
    +++ b/sound/soc/soc-dmaengine-pcm.c
    @@ -21,6 +21,7 @@
    #include <linux/module.h>
    #include <linux/init.h>
    #include <linux/dmaengine.h>
    +#include <linux/dma-mapping.h>
    #include <linux/slab.h>
    #include <sound/pcm.h>
    #include <sound/pcm_params.h>
    @@ -313,3 +314,19 @@ int snd_dmaengine_pcm_close(struct snd_pcm_substream *substream)
    return 0;
    }
    EXPORT_SYMBOL_GPL(snd_dmaengine_pcm_close);
    +
    +/**
    + * snd_dmaengine_pcm_mmap_writecombine - mmap stream dma buffer using
    + * dma_mmap_writecombine().
    + * @substream: PCM substream
    + * @vma: VM area.
    + */
    +int snd_dmaengine_pcm_mmap_writecombine(struct snd_pcm_substream *substream,
    + struct vm_area_struct *vma)
    +{
    + struct snd_pcm_runtime *runtime = substream->runtime;
    +
    + return dma_mmap_writecombine(substream->pcm->card->dev, vma,
    + runtime->dma_area, runtime->dma_addr, runtime->dma_bytes);
    +}
    +EXPORT_SYMBOL_GPL(snd_dmaengine_pcm_mmap_writecombine);
    --
    1.7.1.1


    \
     
     \ /
      Last update: 2012-06-28 09:41    [W:0.025 / U:0.528 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site