linux/sound/soc/samsung/dmaengine.c
<<
>>
Prefs
   1// SPDX-License-Identifier: GPL-2.0
   2//
   3// dmaengine.c - Samsung dmaengine wrapper
   4//
   5// Author: Mark Brown <broonie@linaro.org>
   6// Copyright 2013 Linaro
   7
   8#include <linux/module.h>
   9#include <sound/core.h>
  10#include <sound/pcm.h>
  11#include <sound/pcm_params.h>
  12#include <sound/dmaengine_pcm.h>
  13#include <sound/soc.h>
  14
  15#include "dma.h"
  16
  17int samsung_asoc_dma_platform_register(struct device *dev, dma_filter_fn filter,
  18                                       const char *tx, const char *rx,
  19                                       struct device *dma_dev)
  20{
  21        struct snd_dmaengine_pcm_config *pcm_conf;
  22
  23        pcm_conf = devm_kzalloc(dev, sizeof(*pcm_conf), GFP_KERNEL);
  24        if (!pcm_conf)
  25                return -ENOMEM;
  26
  27        pcm_conf->prepare_slave_config = snd_dmaengine_pcm_prepare_slave_config;
  28        pcm_conf->compat_filter_fn = filter;
  29        pcm_conf->dma_dev = dma_dev;
  30
  31        pcm_conf->chan_names[SNDRV_PCM_STREAM_PLAYBACK] = tx;
  32        pcm_conf->chan_names[SNDRV_PCM_STREAM_CAPTURE] = rx;
  33
  34        return devm_snd_dmaengine_pcm_register(dev, pcm_conf,
  35                                SND_DMAENGINE_PCM_FLAG_COMPAT);
  36}
  37EXPORT_SYMBOL_GPL(samsung_asoc_dma_platform_register);
  38
  39MODULE_AUTHOR("Mark Brown <broonie@linaro.org>");
  40MODULE_DESCRIPTION("Samsung dmaengine ASoC driver");
  41MODULE_LICENSE("GPL");
  42