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
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation ; either version 2 of the License , or
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License along
* with this program ; if not , write to the Free Software Foundation , Inc . ,
* 51 Franklin Street , Fifth Floor , Boston , MA 02110 - 1301 USA .
*/
# 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 " ) ;