1 | // SPDX-License-Identifier: GPL-2.0-or-later |
2 | /* |
3 | * Copyright (C) 2011 Freescale Semiconductor, Inc. All Rights Reserved. |
4 | * |
5 | * Based on sound/soc/imx/imx-pcm-dma-mx2.c |
6 | */ |
7 | |
8 | #include <linux/device.h> |
9 | #include <linux/init.h> |
10 | #include <linux/module.h> |
11 | |
12 | #include <sound/core.h> |
13 | #include <sound/pcm.h> |
14 | #include <sound/soc.h> |
15 | #include <sound/dmaengine_pcm.h> |
16 | |
17 | #include "mxs-pcm.h" |
18 | |
19 | static const struct snd_pcm_hardware snd_mxs_hardware = { |
20 | .info = SNDRV_PCM_INFO_MMAP | |
21 | SNDRV_PCM_INFO_MMAP_VALID | |
22 | SNDRV_PCM_INFO_PAUSE | |
23 | SNDRV_PCM_INFO_RESUME | |
24 | SNDRV_PCM_INFO_INTERLEAVED | |
25 | SNDRV_PCM_INFO_HALF_DUPLEX, |
26 | .period_bytes_min = 32, |
27 | .period_bytes_max = 8192, |
28 | .periods_min = 1, |
29 | .periods_max = 52, |
30 | .buffer_bytes_max = 64 * 1024, |
31 | .fifo_size = 32, |
32 | }; |
33 | |
34 | static const struct snd_dmaengine_pcm_config mxs_dmaengine_pcm_config = { |
35 | .pcm_hardware = &snd_mxs_hardware, |
36 | .prealloc_buffer_size = 64 * 1024, |
37 | }; |
38 | |
39 | int mxs_pcm_platform_register(struct device *dev) |
40 | { |
41 | return devm_snd_dmaengine_pcm_register(dev, config: &mxs_dmaengine_pcm_config, |
42 | SND_DMAENGINE_PCM_FLAG_HALF_DUPLEX); |
43 | } |
44 | EXPORT_SYMBOL_GPL(mxs_pcm_platform_register); |
45 | |
46 | MODULE_LICENSE("GPL" ); |
47 | |