cregit-Linux how code gets into the kernel

Release 4.7 sound/soc/fsl/imx-pcm-dma.c

Directory: sound/soc/fsl
/*
 * imx-pcm-dma-mx2.c  --  ALSA Soc Audio Layer
 *
 * Copyright 2009 Sascha Hauer <s.hauer@pengutronix.de>
 *
 * This code is based on code copyrighted by Freescale,
 * Liam Girdwood, Javier Martin and probably others.
 *
 *  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.
 */
#include <linux/platform_device.h>
#include <linux/dmaengine.h>
#include <linux/types.h>
#include <linux/module.h>

#include <sound/core.h>
#include <sound/pcm.h>
#include <sound/soc.h>
#include <sound/dmaengine_pcm.h>

#include "imx-pcm.h"


static bool filter(struct dma_chan *chan, void *param) { if (!imx_dma_is_general_purpose(chan)) return false; chan->private = param; return true; }

Contributors

PersonTokensPropCommitsCommitProp
sascha hauersascha hauer3497.14%375.00%
mark brownmark brown12.86%125.00%
Total35100.00%4100.00%

static const struct snd_pcm_hardware imx_pcm_hardware = { .info = SNDRV_PCM_INFO_INTERLEAVED | SNDRV_PCM_INFO_BLOCK_TRANSFER | SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_MMAP_VALID | SNDRV_PCM_INFO_PAUSE | SNDRV_PCM_INFO_RESUME, .buffer_bytes_max = IMX_DEFAULT_DMABUF_SIZE, .period_bytes_min = 128, .period_bytes_max = 65535, /* Limited by SDMA engine */ .periods_min = 2, .periods_max = 255, .fifo_size = 0, }; static const struct snd_dmaengine_pcm_config imx_dmaengine_pcm_config = { .pcm_hardware = &imx_pcm_hardware, .prepare_slave_config = snd_dmaengine_pcm_prepare_slave_config, .compat_filter_fn = filter, .prealloc_buffer_size = IMX_DEFAULT_DMABUF_SIZE, };
int imx_pcm_dma_init(struct platform_device *pdev, size_t size) { struct snd_dmaengine_pcm_config *config; struct snd_pcm_hardware *pcm_hardware; config = devm_kzalloc(&pdev->dev, sizeof(struct snd_dmaengine_pcm_config), GFP_KERNEL); if (!config) return -ENOMEM; *config = imx_dmaengine_pcm_config; if (size) config->prealloc_buffer_size = size; pcm_hardware = devm_kzalloc(&pdev->dev, sizeof(struct snd_pcm_hardware), GFP_KERNEL); *pcm_hardware = imx_pcm_hardware; if (size) pcm_hardware->buffer_bytes_max = size; config->pcm_hardware = pcm_hardware; return devm_snd_dmaengine_pcm_register(&pdev->dev, config, SND_DMAENGINE_PCM_FLAG_COMPAT); }

Contributors

PersonTokensPropCommitsCommitProp
shengjiu wangshengjiu wang8673.50%114.29%
liam girdwoodliam girdwood1311.11%114.29%
julia lawalljulia lawall97.69%114.29%
sascha hauersascha hauer54.27%114.29%
lars-peter clausenlars-peter clausen32.56%228.57%
shawn guoshawn guo10.85%114.29%
Total117100.00%7100.00%

EXPORT_SYMBOL_GPL(imx_pcm_dma_init); MODULE_LICENSE("GPL");

Overall Contributors

PersonTokensPropCommitsCommitProp
sascha hauersascha hauer12545.79%320.00%
shengjiu wangshengjiu wang8832.23%16.67%
lars-peter clausenlars-peter clausen196.96%320.00%
liam girdwoodliam girdwood134.76%16.67%
mark brownmark brown93.30%213.33%
julia lawalljulia lawall93.30%16.67%
shawn guoshawn guo72.56%320.00%
viresh kumarviresh kumar31.10%16.67%
Total273100.00%15100.00%
Directory: sound/soc/fsl
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
{% endraw %}