[ARM] tegra_i2s_audio: add more elaborate error counts
[linux-2.6.git] / include / linux / tegra_audio.h
1 /* include/linux/tegra_audio.h
2  *
3  * Copyright (C) 2010 Google, Inc.
4  *
5  * Author:
6  *     Iliyan Malchev <malchev@google.com>
7  *
8  * This software is licensed under the terms of the GNU General Public
9  * License version 2, as published by the Free Software Foundation, and
10  * may be copied, distributed, and modified under those terms.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  */
18
19 #ifndef _TEGRA_AUDIO_H
20 #define _TEGRA_AUDIO_H
21
22 #include <linux/ioctl.h>
23
24 #define TEGRA_AUDIO_MAGIC 't'
25
26 #define TEGRA_AUDIO_IN_START _IO(TEGRA_AUDIO_MAGIC, 0)
27 #define TEGRA_AUDIO_IN_STOP  _IO(TEGRA_AUDIO_MAGIC, 1)
28
29 struct tegra_audio_in_config {
30         int rate;
31         int stereo;
32 };
33
34 #define TEGRA_AUDIO_IN_SET_CONFIG       _IOW(TEGRA_AUDIO_MAGIC, 2, \
35                         const struct tegra_audio_in_config *)
36 #define TEGRA_AUDIO_IN_GET_CONFIG       _IOR(TEGRA_AUDIO_MAGIC, 3, \
37                         struct tegra_audio_in_config *)
38
39 struct tegra_audio_buf_config {
40         unsigned size; /* order */
41         unsigned threshold; /* order */
42         unsigned chunk; /* order */
43 };
44
45 #define TEGRA_AUDIO_IN_SET_BUF_CONFIG   _IOW(TEGRA_AUDIO_MAGIC, 4, \
46                         const struct tegra_audio_buf_config *)
47 #define TEGRA_AUDIO_IN_GET_BUF_CONFIG   _IOR(TEGRA_AUDIO_MAGIC, 5, \
48                         struct tegra_audio_buf_config *)
49
50 #define TEGRA_AUDIO_OUT_SET_BUF_CONFIG  _IOW(TEGRA_AUDIO_MAGIC, 6, \
51                         const struct tegra_audio_buf_config *)
52 #define TEGRA_AUDIO_OUT_GET_BUF_CONFIG  _IOR(TEGRA_AUDIO_MAGIC, 7, \
53                         struct tegra_audio_buf_config *)
54
55 struct tegra_audio_error_counts {
56         unsigned late_dma;
57         unsigned full_empty; /* empty for playback, full for recording */
58 };
59
60 #define TEGRA_AUDIO_IN_GET_ERROR_COUNT  _IOR(TEGRA_AUDIO_MAGIC, 8, \
61                         struct tegra_audio_error_counts *)
62
63 #define TEGRA_AUDIO_OUT_GET_ERROR_COUNT _IOR(TEGRA_AUDIO_MAGIC, 9, \
64                         struct tegra_audio_error_counts *)
65
66 struct tegra_audio_out_preload {
67         void *data;
68         size_t len;
69         size_t len_written;
70 };
71
72 #define TEGRA_AUDIO_OUT_PRELOAD_FIFO    _IOWR(TEGRA_AUDIO_MAGIC, 10, \
73                         struct tegra_audio_out_preload *)
74
75 #endif/*_CPCAP_AUDIO_H*/