2019-05-19 16:51:31 +03:00
// SPDX-License-Identifier: GPL-2.0-or-later
2011-07-21 08:36:55 +04:00
/*
* Copyright ( C ) 2011 Freescale Semiconductor , Inc . All Rights Reserved .
*
* Based on sound / soc / imx / imx - pcm - dma - mx2 . c
*/
# include <linux/device.h>
# include <linux/init.h>
# include <linux/module.h>
# include <sound/core.h>
# include <sound/pcm.h>
# include <sound/soc.h>
2012-02-22 13:49:10 +04:00
# include <sound/dmaengine_pcm.h>
2011-07-21 08:36:55 +04:00
# include "mxs-pcm.h"
2013-04-20 21:29:03 +04:00
static const struct snd_pcm_hardware snd_mxs_hardware = {
2011-07-21 08:36:55 +04:00
. info = SNDRV_PCM_INFO_MMAP |
SNDRV_PCM_INFO_MMAP_VALID |
SNDRV_PCM_INFO_PAUSE |
SNDRV_PCM_INFO_RESUME |
2013-04-20 21:29:01 +04:00
SNDRV_PCM_INFO_INTERLEAVED |
SNDRV_PCM_INFO_HALF_DUPLEX ,
2011-07-21 08:36:55 +04:00
. period_bytes_min = 32 ,
. period_bytes_max = 8192 ,
. periods_min = 1 ,
. periods_max = 52 ,
. buffer_bytes_max = 64 * 1024 ,
. fifo_size = 32 ,
} ;
2013-04-20 21:29:03 +04:00
static const struct snd_dmaengine_pcm_config mxs_dmaengine_pcm_config = {
. pcm_hardware = & snd_mxs_hardware ,
. prealloc_buffer_size = 64 * 1024 ,
2011-07-21 08:36:55 +04:00
} ;
2012-12-07 18:26:27 +04:00
int mxs_pcm_platform_register ( struct device * dev )
2011-07-21 08:36:55 +04:00
{
2013-11-28 11:50:37 +04:00
return devm_snd_dmaengine_pcm_register ( dev , & mxs_dmaengine_pcm_config ,
2013-04-20 21:29:03 +04:00
SND_DMAENGINE_PCM_FLAG_HALF_DUPLEX ) ;
2011-07-21 08:36:55 +04:00
}
2012-05-11 18:24:16 +04:00
EXPORT_SYMBOL_GPL ( mxs_pcm_platform_register ) ;
2011-07-21 08:36:55 +04:00
2011-12-09 17:38:11 +04:00
MODULE_LICENSE ( " GPL " ) ;