]>
Commit | Line | Data |
---|---|---|
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 | 22 | static 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 | 32 | static 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 | 37 | int 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 | 51 | EXPORT_SYMBOL_GPL(imx_pcm_dma_init); |
adaa3229 | 52 | |
3c1c32d3 | 53 | MODULE_LICENSE("GPL"); |