]> bbs.cooldavid.org Git - net-next-2.6.git/blame - drivers/staging/dream/qdsp5/audmgr.h
Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jwessel...
[net-next-2.6.git] / drivers / staging / dream / qdsp5 / audmgr.h
CommitLineData
caff4cae
IM
1/* arch/arm/mach-msm/qdsp5/audmgr.h
2 *
3 * Copyright 2008 (c) QUALCOMM Incorporated.
4 * Copyright (C) 2008 Google, Inc.
5 *
6 * This software is licensed under the terms of the GNU General Public
7 * License version 2, as published by the Free Software Foundation, and
8 * may be copied, distributed, and modified under those terms.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 */
16
17#ifndef _ARCH_ARM_MACH_MSM_AUDMGR_H
18#define _ARCH_ARM_MACH_MSM_AUDMGR_H
19
20#if CONFIG_MSM_AMSS_VERSION==6350
21#include "audmgr_new.h"
22#else
23
24enum rpc_aud_def_sample_rate_type {
25 RPC_AUD_DEF_SAMPLE_RATE_NONE,
26 RPC_AUD_DEF_SAMPLE_RATE_8000,
27 RPC_AUD_DEF_SAMPLE_RATE_11025,
28 RPC_AUD_DEF_SAMPLE_RATE_12000,
29 RPC_AUD_DEF_SAMPLE_RATE_16000,
30 RPC_AUD_DEF_SAMPLE_RATE_22050,
31 RPC_AUD_DEF_SAMPLE_RATE_24000,
32 RPC_AUD_DEF_SAMPLE_RATE_32000,
33 RPC_AUD_DEF_SAMPLE_RATE_44100,
34 RPC_AUD_DEF_SAMPLE_RATE_48000,
35 RPC_AUD_DEF_SAMPLE_RATE_MAX,
36};
37
38enum rpc_aud_def_method_type {
39 RPC_AUD_DEF_METHOD_NONE,
40 RPC_AUD_DEF_METHOD_KEY_BEEP,
41 RPC_AUD_DEF_METHOD_PLAYBACK,
42 RPC_AUD_DEF_METHOD_VOICE,
43 RPC_AUD_DEF_METHOD_RECORD,
44 RPC_AUD_DEF_METHOD_HOST_PCM,
45 RPC_AUD_DEF_METHOD_MIDI_OUT,
46 RPC_AUD_DEF_METHOD_RECORD_SBC,
47 RPC_AUD_DEF_METHOD_DTMF_RINGER,
48 RPC_AUD_DEF_METHOD_MAX,
49};
50
51enum rpc_aud_def_codec_type {
52 RPC_AUD_DEF_CODEC_NONE,
53 RPC_AUD_DEF_CODEC_DTMF,
54 RPC_AUD_DEF_CODEC_MIDI,
55 RPC_AUD_DEF_CODEC_MP3,
56 RPC_AUD_DEF_CODEC_PCM,
57 RPC_AUD_DEF_CODEC_AAC,
58 RPC_AUD_DEF_CODEC_WMA,
59 RPC_AUD_DEF_CODEC_RA,
60 RPC_AUD_DEF_CODEC_ADPCM,
61 RPC_AUD_DEF_CODEC_GAUDIO,
62 RPC_AUD_DEF_CODEC_VOC_EVRC,
63 RPC_AUD_DEF_CODEC_VOC_13K,
64 RPC_AUD_DEF_CODEC_VOC_4GV_NB,
65 RPC_AUD_DEF_CODEC_VOC_AMR,
66 RPC_AUD_DEF_CODEC_VOC_EFR,
67 RPC_AUD_DEF_CODEC_VOC_FR,
68 RPC_AUD_DEF_CODEC_VOC_HR,
69 RPC_AUD_DEF_CODEC_VOC,
70 RPC_AUD_DEF_CODEC_SBC,
71 RPC_AUD_DEF_CODEC_VOC_PCM,
72 RPC_AUD_DEF_CODEC_AMR_WB,
73 RPC_AUD_DEF_CODEC_AMR_WB_PLUS,
74 RPC_AUD_DEF_CODEC_MAX,
75};
76
77enum rpc_snd_method_type {
78 RPC_SND_METHOD_VOICE = 0,
79 RPC_SND_METHOD_KEY_BEEP,
80 RPC_SND_METHOD_MESSAGE,
81 RPC_SND_METHOD_RING,
82 RPC_SND_METHOD_MIDI,
83 RPC_SND_METHOD_AUX,
84 RPC_SND_METHOD_MAX,
85};
86
87enum rpc_voc_codec_type {
88 RPC_VOC_CODEC_DEFAULT,
89 RPC_VOC_CODEC_ON_CHIP_0 = RPC_VOC_CODEC_DEFAULT,
90 RPC_VOC_CODEC_ON_CHIP_1,
91 RPC_VOC_CODEC_STEREO_HEADSET,
92 RPC_VOC_CODEC_ON_CHIP_AUX,
93 RPC_VOC_CODEC_BT_OFF_BOARD,
94 RPC_VOC_CODEC_BT_A2DP,
95 RPC_VOC_CODEC_OFF_BOARD,
96 RPC_VOC_CODEC_SDAC,
97 RPC_VOC_CODEC_RX_EXT_SDAC_TX_INTERNAL,
98 RPC_VOC_CODEC_IN_STEREO_SADC_OUT_MONO_HANDSET,
99 RPC_VOC_CODEC_IN_STEREO_SADC_OUT_STEREO_HEADSET,
100 RPC_VOC_CODEC_TX_INT_SADC_RX_EXT_AUXPCM,
101 RPC_VOC_CODEC_EXT_STEREO_SADC_OUT_MONO_HANDSET,
102 RPC_VOC_CODEC_EXT_STEREO_SADC_OUT_STEREO_HEADSET,
103 RPC_VOC_CODEC_TTY_ON_CHIP_1,
104 RPC_VOC_CODEC_TTY_OFF_BOARD,
105 RPC_VOC_CODEC_TTY_VCO,
106 RPC_VOC_CODEC_TTY_HCO,
107 RPC_VOC_CODEC_ON_CHIP_0_DUAL_MIC,
108 RPC_VOC_CODEC_MAX,
109 RPC_VOC_CODEC_NONE,
110};
111
112enum rpc_audmgr_status_type {
113 RPC_AUDMGR_STATUS_READY,
114 RPC_AUDMGR_STATUS_CODEC_CONFIG,
115 RPC_AUDMGR_STATUS_PENDING,
116 RPC_AUDMGR_STATUS_SUSPEND,
117 RPC_AUDMGR_STATUS_FAILURE,
118 RPC_AUDMGR_STATUS_VOLUME_CHANGE,
119 RPC_AUDMGR_STATUS_DISABLED,
120 RPC_AUDMGR_STATUS_ERROR,
121};
122
123struct rpc_audmgr_enable_client_args {
124 uint32_t set_to_one;
125 uint32_t tx_sample_rate;
126 uint32_t rx_sample_rate;
127 uint32_t def_method;
128 uint32_t codec_type;
129 uint32_t snd_method;
130
131 uint32_t cb_func;
132 uint32_t client_data;
133};
134
135#define AUDMGR_ENABLE_CLIENT 2
136#define AUDMGR_DISABLE_CLIENT 3
137#define AUDMGR_SUSPEND_EVENT_RSP 4
138#define AUDMGR_REGISTER_OPERATION_LISTENER 5
139#define AUDMGR_UNREGISTER_OPERATION_LISTENER 6
140#define AUDMGR_REGISTER_CODEC_LISTENER 7
141#define AUDMGR_GET_RX_SAMPLE_RATE 8
142#define AUDMGR_GET_TX_SAMPLE_RATE 9
143#define AUDMGR_SET_DEVICE_MODE 10
144
145#if CONFIG_MSM_AMSS_VERSION < 6220
146#define AUDMGR_PROG_VERS "rs30000013:46255756"
147#define AUDMGR_PROG 0x30000013
148#define AUDMGR_VERS 0x46255756
149#else
150#define AUDMGR_PROG_VERS "rs30000013:e94e8f0c"
151#define AUDMGR_PROG 0x30000013
152#define AUDMGR_VERS 0xe94e8f0c
153#endif
154
155struct rpc_audmgr_cb_func_ptr {
156 uint32_t cb_id;
157 uint32_t set_to_one;
158 uint32_t status;
159 union {
160 uint32_t handle;
161 uint32_t volume;
162
163 } u;
164};
165
166#define AUDMGR_CB_FUNC_PTR 1
167#define AUDMGR_OPR_LSTNR_CB_FUNC_PTR 2
168#define AUDMGR_CODEC_LSTR_FUNC_PTR 3
169
170#if CONFIG_MSM_AMSS_VERSION < 6220
171#define AUDMGR_CB_PROG 0x31000013
172#define AUDMGR_CB_VERS 0x5fa922a9
173#else
174#define AUDMGR_CB_PROG 0x31000013
175#define AUDMGR_CB_VERS 0x21570ba7
176#endif
177
178struct audmgr {
179 wait_queue_head_t wait;
180 uint32_t handle;
181 struct msm_rpc_endpoint *ept;
182 struct task_struct *task;
183 int state;
184};
185
186struct audmgr_config {
187 uint32_t tx_rate;
188 uint32_t rx_rate;
189 uint32_t def_method;
190 uint32_t codec;
191 uint32_t snd_method;
192};
193
194int audmgr_open(struct audmgr *am);
195int audmgr_close(struct audmgr *am);
196int audmgr_enable(struct audmgr *am, struct audmgr_config *cfg);
197int audmgr_disable(struct audmgr *am);
198
199typedef void (*audpp_event_func)(void *private, unsigned id, uint16_t *msg);
200
201int audpp_enable(int id, audpp_event_func func, void *private);
202void audpp_disable(int id, void *private);
203
204int audpp_send_queue1(void *cmd, unsigned len);
205int audpp_send_queue2(void *cmd, unsigned len);
206int audpp_send_queue3(void *cmd, unsigned len);
207
208int audpp_pause(unsigned id, int pause);
209int audpp_set_volume_and_pan(unsigned id, unsigned volume, int pan);
210void audpp_avsync(int id, unsigned rate);
211unsigned audpp_avsync_sample_count(int id);
212unsigned audpp_avsync_byte_count(int id);
213
214#endif
215#endif