Version:  2.6.34 2.6.35 2.6.36 2.6.37 2.6.38 2.6.39 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14

Linux/sound/soc/tegra/tegra_pcm.c

  1 /*
  2  * tegra_pcm.c - Tegra PCM driver
  3  *
  4  * Author: Stephen Warren <swarren@nvidia.com>
  5  * Copyright (C) 2010,2012 - NVIDIA, Inc.
  6  *
  7  * Based on code copyright/by:
  8  *
  9  * Copyright (c) 2009-2010, NVIDIA Corporation.
 10  * Scott Peterson <speterson@nvidia.com>
 11  * Vijay Mali <vmali@nvidia.com>
 12  *
 13  * Copyright (C) 2010 Google, Inc.
 14  * Iliyan Malchev <malchev@google.com>
 15  *
 16  * This program is free software; you can redistribute it and/or
 17  * modify it under the terms of the GNU General Public License
 18  * version 2 as published by the Free Software Foundation.
 19  *
 20  * This program is distributed in the hope that it will be useful, but
 21  * WITHOUT ANY WARRANTY; without even the implied warranty of
 22  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 23  * General Public License for more details.
 24  *
 25  * You should have received a copy of the GNU General Public License
 26  * along with this program; if not, write to the Free Software
 27  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 28  * 02110-1301 USA
 29  *
 30  */
 31 
 32 #include <linux/module.h>
 33 #include <sound/core.h>
 34 #include <sound/pcm.h>
 35 #include <sound/pcm_params.h>
 36 #include <sound/soc.h>
 37 #include <sound/dmaengine_pcm.h>
 38 
 39 #include "tegra_pcm.h"
 40 
 41 static const struct snd_pcm_hardware tegra_pcm_hardware = {
 42         .info                   = SNDRV_PCM_INFO_MMAP |
 43                                   SNDRV_PCM_INFO_MMAP_VALID |
 44                                   SNDRV_PCM_INFO_INTERLEAVED,
 45         .period_bytes_min       = 1024,
 46         .period_bytes_max       = PAGE_SIZE,
 47         .periods_min            = 2,
 48         .periods_max            = 8,
 49         .buffer_bytes_max       = PAGE_SIZE * 8,
 50         .fifo_size              = 4,
 51 };
 52 
 53 static const struct snd_dmaengine_pcm_config tegra_dmaengine_pcm_config = {
 54         .pcm_hardware = &tegra_pcm_hardware,
 55         .prepare_slave_config = snd_dmaengine_pcm_prepare_slave_config,
 56         .prealloc_buffer_size = PAGE_SIZE * 8,
 57 };
 58 
 59 int tegra_pcm_platform_register(struct device *dev)
 60 {
 61         return snd_dmaengine_pcm_register(dev, &tegra_dmaengine_pcm_config, 0);
 62 }
 63 EXPORT_SYMBOL_GPL(tegra_pcm_platform_register);
 64 
 65 int tegra_pcm_platform_register_with_chan_names(struct device *dev,
 66                                 struct snd_dmaengine_pcm_config *config,
 67                                 char *txdmachan, char *rxdmachan)
 68 {
 69         *config = tegra_dmaengine_pcm_config;
 70         config->dma_dev = dev->parent;
 71         config->chan_names[0] = txdmachan;
 72         config->chan_names[1] = rxdmachan;
 73 
 74         return snd_dmaengine_pcm_register(dev, config, 0);
 75 }
 76 EXPORT_SYMBOL_GPL(tegra_pcm_platform_register_with_chan_names);
 77 
 78 void tegra_pcm_platform_unregister(struct device *dev)
 79 {
 80         return snd_dmaengine_pcm_unregister(dev);
 81 }
 82 EXPORT_SYMBOL_GPL(tegra_pcm_platform_unregister);
 83 
 84 MODULE_AUTHOR("Stephen Warren <swarren@nvidia.com>");
 85 MODULE_DESCRIPTION("Tegra PCM ASoC driver");
 86 MODULE_LICENSE("GPL");
 87 

This page was automatically generated by LXR 0.3.1 (source).  •  Linux is a registered trademark of Linus Torvalds  •  Contact us