]> git.proxmox.com Git - mirror_ubuntu-kernels.git/blame - sound/soc/fsl/imx-pcm-dma.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
[mirror_ubuntu-kernels.git] / sound / soc / fsl / imx-pcm-dma.c
CommitLineData
2874c5fd 1// SPDX-License-Identifier: GPL-2.0-or-later
8380222e
SH
2/*
3 * imx-pcm-dma-mx2.c -- ALSA Soc Audio Layer
4 *
5 * Copyright 2009 Sascha Hauer <s.hauer@pengutronix.de>
6 *
7 * This code is based on code copyrighted by Freescale,
8 * Liam Girdwood, Javier Martin and probably others.
8380222e 9 */
8380222e 10#include <linux/platform_device.h>
bf974a0d 11#include <linux/dmaengine.h>
258aea76 12#include <linux/types.h>
3c1c32d3 13#include <linux/module.h>
8380222e
SH
14
15#include <sound/core.h>
8380222e 16#include <sound/pcm.h>
8380222e 17#include <sound/soc.h>
c307e8e3 18#include <sound/dmaengine_pcm.h>
8380222e 19
4762fbab 20#include "imx-pcm.h"
8380222e 21
bf974a0d 22static bool filter(struct dma_chan *chan, void *param)
8380222e 23{
bf974a0d
SH
24 if (!imx_dma_is_general_purpose(chan))
25 return false;
8380222e 26
90130d2e 27 chan->private = param;
671999cb 28
c307e8e3 29 return true;
4564d10f
LPC
30}
31
adaa3229 32static const struct snd_dmaengine_pcm_config imx_dmaengine_pcm_config = {
adaa3229
LPC
33 .prepare_slave_config = snd_dmaengine_pcm_prepare_slave_config,
34 .compat_filter_fn = filter,
8380222e
SH
35};
36
0d69e0dd 37int imx_pcm_dma_init(struct platform_device *pdev, size_t size)
8380222e 38{
0d69e0dd 39 struct snd_dmaengine_pcm_config *config;
0d69e0dd
SW
40
41 config = devm_kzalloc(&pdev->dev,
42 sizeof(struct snd_dmaengine_pcm_config), GFP_KERNEL);
10974ccf
JL
43 if (!config)
44 return -ENOMEM;
0d69e0dd 45 *config = imx_dmaengine_pcm_config;
0d69e0dd 46
7e6d18ac 47 return devm_snd_dmaengine_pcm_register(&pdev->dev,
0d69e0dd 48 config,
adaa3229
LPC
49 SND_DMAENGINE_PCM_FLAG_COMPAT);
50}
dbdf6b54 51EXPORT_SYMBOL_GPL(imx_pcm_dma_init);
adaa3229 52
3c1c32d3 53MODULE_LICENSE("GPL");