xref: /openbmc/linux/sound/soc/tegra/tegra_pcm.h (revision 7605eb5b)
17605eb5bSStephen Warren /*
27605eb5bSStephen Warren  * tegra_pcm.h - Definitions for Tegra PCM driver
37605eb5bSStephen Warren  *
47605eb5bSStephen Warren  * Author: Stephen Warren <swarren@nvidia.com>
57605eb5bSStephen Warren  * Copyright (C) 2010 - NVIDIA, Inc.
67605eb5bSStephen Warren  *
77605eb5bSStephen Warren  * Based on code copyright/by:
87605eb5bSStephen Warren  *
97605eb5bSStephen Warren  * Copyright (c) 2009-2010, NVIDIA Corporation.
107605eb5bSStephen Warren  * Scott Peterson <speterson@nvidia.com>
117605eb5bSStephen Warren  *
127605eb5bSStephen Warren  * Copyright (C) 2010 Google, Inc.
137605eb5bSStephen Warren  * Iliyan Malchev <malchev@google.com>
147605eb5bSStephen Warren  *
157605eb5bSStephen Warren  * This program is free software; you can redistribute it and/or
167605eb5bSStephen Warren  * modify it under the terms of the GNU General Public License
177605eb5bSStephen Warren  * version 2 as published by the Free Software Foundation.
187605eb5bSStephen Warren  *
197605eb5bSStephen Warren  * This program is distributed in the hope that it will be useful, but
207605eb5bSStephen Warren  * WITHOUT ANY WARRANTY; without even the implied warranty of
217605eb5bSStephen Warren  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
227605eb5bSStephen Warren  * General Public License for more details.
237605eb5bSStephen Warren  *
247605eb5bSStephen Warren  * You should have received a copy of the GNU General Public License
257605eb5bSStephen Warren  * along with this program; if not, write to the Free Software
267605eb5bSStephen Warren  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
277605eb5bSStephen Warren  * 02110-1301 USA
287605eb5bSStephen Warren  *
297605eb5bSStephen Warren  */
307605eb5bSStephen Warren 
317605eb5bSStephen Warren #ifndef __TEGRA_PCM_H__
327605eb5bSStephen Warren #define __TEGRA_PCM_H__
337605eb5bSStephen Warren 
347605eb5bSStephen Warren #include <mach/dma.h>
357605eb5bSStephen Warren 
367605eb5bSStephen Warren struct tegra_pcm_dma_params {
377605eb5bSStephen Warren 	unsigned long addr;
387605eb5bSStephen Warren 	unsigned long wrap;
397605eb5bSStephen Warren 	unsigned long width;
407605eb5bSStephen Warren 	unsigned long req_sel;
417605eb5bSStephen Warren };
427605eb5bSStephen Warren 
437605eb5bSStephen Warren struct tegra_runtime_data {
447605eb5bSStephen Warren 	struct snd_pcm_substream *substream;
457605eb5bSStephen Warren 	spinlock_t lock;
467605eb5bSStephen Warren 	int running;
477605eb5bSStephen Warren 	int dma_pos;
487605eb5bSStephen Warren 	int dma_pos_end;
497605eb5bSStephen Warren 	int period_index;
507605eb5bSStephen Warren 	int dma_req_idx;
517605eb5bSStephen Warren 	struct tegra_dma_req dma_req[2];
527605eb5bSStephen Warren 	struct tegra_dma_channel *dma_chan;
537605eb5bSStephen Warren };
547605eb5bSStephen Warren 
557605eb5bSStephen Warren #endif
56