1d631dbddc06c33d5eb43e00c2a59ab8b6219696
[linux-3.10.git] / arch / arm / mach-tegra / include / mach / audio.h
1 /*
2  * arch/arm/mach-tegra/include/mach/audio.h
3  *
4  * Copyright (C) 2010 Google, Inc.
5  *
6  * Author:
7  *      Iliyan Malchev <malchev@google.com>
8  *
9  * This software is licensed under the terms of the GNU General Public
10  * License version 2, as published by the Free Software Foundation, and
11  * may be copied, distributed, and modified under those terms.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  */
19
20 #ifndef __ARCH_ARM_MACH_TEGRA_AUDIO_H
21 #define __ARCH_ARM_MACH_TEGRA_AUDIO_H
22
23 #include <linux/kernel.h>
24 #include <linux/types.h>
25 #include <mach/i2s.h>
26
27 #define FIFO1           0
28 #define FIFO2           1
29
30 /* FIXME: this is not enforced by the hardware. */
31 #define I2S_FIFO_TX             FIFO1
32 #define I2S_FIFO_RX             FIFO2
33
34 #define TEGRA_AUDIO_ENABLE_TX   1
35 #define TEGRA_AUDIO_ENABLE_RX   2
36
37 struct tegra_audio_platform_data {
38         bool master;
39         bool dma_on;
40         unsigned long i2s_clk_rate;
41         const char *dap_clk;
42         const char *audio_sync_clk;
43
44         int mode; /* I2S, LJM, RJM, etc. */
45         int fifo_fmt;
46         int bit_size;
47         int i2s_bus_width; /* 32-bit for 16-bit packed I2S */
48         int dsp_bus_width; /* 16-bit for DSP data format */
49
50         int mask; /* enable tx and rx? */
51
52         void *driver_data;
53 };
54
55 #endif /* __ARCH_ARM_MACH_TEGRA_AUDIO_H */