• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/staging/dream/qdsp5/
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_NEW_H
18#define _ARCH_ARM_MACH_MSM_AUDMGR_NEW_H
19
20enum rpc_aud_def_sample_rate_type {
21	RPC_AUD_DEF_SAMPLE_RATE_NONE,
22	RPC_AUD_DEF_SAMPLE_RATE_8000,
23	RPC_AUD_DEF_SAMPLE_RATE_11025,
24	RPC_AUD_DEF_SAMPLE_RATE_12000,
25	RPC_AUD_DEF_SAMPLE_RATE_16000,
26	RPC_AUD_DEF_SAMPLE_RATE_22050,
27	RPC_AUD_DEF_SAMPLE_RATE_24000,
28	RPC_AUD_DEF_SAMPLE_RATE_32000,
29	RPC_AUD_DEF_SAMPLE_RATE_44100,
30	RPC_AUD_DEF_SAMPLE_RATE_48000,
31	RPC_AUD_DEF_SAMPLE_RATE_MAX,
32};
33
34enum rpc_aud_def_method_type {
35	RPC_AUD_DEF_METHOD_NONE,
36	RPC_AUD_DEF_METHOD_KEY_BEEP,
37	RPC_AUD_DEF_METHOD_PLAYBACK,
38	RPC_AUD_DEF_METHOD_VOICE,
39	RPC_AUD_DEF_METHOD_RECORD,
40	RPC_AUD_DEF_METHOD_HOST_PCM,
41	RPC_AUD_DEF_METHOD_MIDI_OUT,
42	RPC_AUD_DEF_METHOD_RECORD_SBC,
43	RPC_AUD_DEF_METHOD_DTMF_RINGER,
44	RPC_AUD_DEF_METHOD_MAX,
45};
46
47enum rpc_aud_def_codec_type {
48	RPC_AUD_DEF_CODEC_NONE,
49	RPC_AUD_DEF_CODEC_DTMF,
50	RPC_AUD_DEF_CODEC_MIDI,
51	RPC_AUD_DEF_CODEC_MP3,
52	RPC_AUD_DEF_CODEC_PCM,
53	RPC_AUD_DEF_CODEC_AAC,
54	RPC_AUD_DEF_CODEC_WMA,
55	RPC_AUD_DEF_CODEC_RA,
56	RPC_AUD_DEF_CODEC_ADPCM,
57	RPC_AUD_DEF_CODEC_GAUDIO,
58	RPC_AUD_DEF_CODEC_VOC_EVRC,
59	RPC_AUD_DEF_CODEC_VOC_13K,
60	RPC_AUD_DEF_CODEC_VOC_4GV_NB,
61	RPC_AUD_DEF_CODEC_VOC_AMR,
62	RPC_AUD_DEF_CODEC_VOC_EFR,
63	RPC_AUD_DEF_CODEC_VOC_FR,
64	RPC_AUD_DEF_CODEC_VOC_HR,
65	RPC_AUD_DEF_CODEC_VOC_CDMA,
66	RPC_AUD_DEF_CODEC_VOC_CDMA_WB,
67	RPC_AUD_DEF_CODEC_VOC_UMTS,
68	RPC_AUD_DEF_CODEC_VOC_UMTS_WB,
69	RPC_AUD_DEF_CODEC_SBC,
70	RPC_AUD_DEF_CODEC_VOC_PCM,
71	RPC_AUD_DEF_CODEC_AMR_WB,
72	RPC_AUD_DEF_CODEC_AMR_WB_PLUS,
73	RPC_AUD_DEF_CODEC_AAC_BSAC,
74	RPC_AUD_DEF_CODEC_MAX,
75	RPC_AUD_DEF_CODEC_AMR_NB,
76	RPC_AUD_DEF_CODEC_13K,
77	RPC_AUD_DEF_CODEC_EVRC,
78	RPC_AUD_DEF_CODEC_MAX_002,
79};
80
81enum rpc_snd_method_type {
82	RPC_SND_METHOD_VOICE = 0,
83	RPC_SND_METHOD_KEY_BEEP,
84	RPC_SND_METHOD_MESSAGE,
85	RPC_SND_METHOD_RING,
86	RPC_SND_METHOD_MIDI,
87	RPC_SND_METHOD_AUX,
88	RPC_SND_METHOD_MAX,
89};
90
91enum rpc_voc_codec_type {
92	RPC_VOC_CODEC_DEFAULT,
93	RPC_VOC_CODEC_ON_CHIP_0 = RPC_VOC_CODEC_DEFAULT,
94	RPC_VOC_CODEC_ON_CHIP_1,
95	RPC_VOC_CODEC_STEREO_HEADSET,
96	RPC_VOC_CODEC_ON_CHIP_AUX,
97	RPC_VOC_CODEC_BT_OFF_BOARD,
98	RPC_VOC_CODEC_BT_A2DP,
99	RPC_VOC_CODEC_OFF_BOARD,
100	RPC_VOC_CODEC_SDAC,
101	RPC_VOC_CODEC_RX_EXT_SDAC_TX_INTERNAL,
102	RPC_VOC_CODEC_IN_STEREO_SADC_OUT_MONO_HANDSET,
103	RPC_VOC_CODEC_IN_STEREO_SADC_OUT_STEREO_HEADSET,
104	RPC_VOC_CODEC_TX_INT_SADC_RX_EXT_AUXPCM,
105	RPC_VOC_CODEC_EXT_STEREO_SADC_OUT_MONO_HANDSET,
106	RPC_VOC_CODEC_EXT_STEREO_SADC_OUT_STEREO_HEADSET,
107	RPC_VOC_CODEC_TTY_ON_CHIP_1,
108	RPC_VOC_CODEC_TTY_OFF_BOARD,
109	RPC_VOC_CODEC_TTY_VCO,
110	RPC_VOC_CODEC_TTY_HCO,
111	RPC_VOC_CODEC_ON_CHIP_0_DUAL_MIC,
112	RPC_VOC_CODEC_MAX,
113	RPC_VOC_CODEC_NONE,
114};
115
116enum rpc_audmgr_status_type {
117	RPC_AUDMGR_STATUS_READY,
118	RPC_AUDMGR_STATUS_CODEC_CONFIG,
119	RPC_AUDMGR_STATUS_PENDING,
120	RPC_AUDMGR_STATUS_SUSPEND,
121	RPC_AUDMGR_STATUS_FAILURE,
122	RPC_AUDMGR_STATUS_VOLUME_CHANGE,
123	RPC_AUDMGR_STATUS_DISABLED,
124	RPC_AUDMGR_STATUS_ERROR,
125};
126
127struct rpc_audmgr_enable_client_args {
128	uint32_t set_to_one;
129	uint32_t tx_sample_rate;
130	uint32_t rx_sample_rate;
131	uint32_t def_method;
132	uint32_t codec_type;
133	uint32_t snd_method;
134
135	uint32_t cb_func;
136	uint32_t client_data;
137};
138
139#define AUDMGR_ENABLE_CLIENT			2
140#define AUDMGR_DISABLE_CLIENT			3
141#define AUDMGR_SUSPEND_EVENT_RSP		4
142#define AUDMGR_REGISTER_OPERATION_LISTENER	5
143#define AUDMGR_UNREGISTER_OPERATION_LISTENER	6
144#define AUDMGR_REGISTER_CODEC_LISTENER		7
145#define AUDMGR_GET_RX_SAMPLE_RATE		8
146#define AUDMGR_GET_TX_SAMPLE_RATE		9
147#define AUDMGR_SET_DEVICE_MODE			10
148
149#define AUDMGR_PROG 0x30000013
150#define AUDMGR_VERS MSM_RPC_VERS(1,0)
151
152struct rpc_audmgr_cb_func_ptr {
153	uint32_t cb_id;
154	uint32_t status; /* Audmgr status */
155	uint32_t set_to_one;  /* Pointer status (1 = valid, 0  = invalid) */
156	uint32_t disc;
157	/* disc = AUDMGR_STATUS_READY => data=handle
158	   disc = AUDMGR_STATUS_CODEC_CONFIG => data = handle
159	   disc = AUDMGR_STATUS_DISABLED => data =status_disabled
160	   disc = AUDMGR_STATUS_VOLUME_CHANGE => data = volume-change */
161	union {
162		uint32_t handle;
163		uint32_t volume;
164		uint32_t status_disabled;
165		uint32_t volume_change;
166	} u;
167};
168
169#define AUDMGR_CB_FUNC_PTR			1
170#define AUDMGR_OPR_LSTNR_CB_FUNC_PTR		2
171#define AUDMGR_CODEC_LSTR_FUNC_PTR		3
172
173#define AUDMGR_CB_PROG 0x31000013
174#define AUDMGR_CB_VERS 0xf8e3e2d9
175
176struct audmgr {
177	wait_queue_head_t wait;
178	uint32_t handle;
179	struct msm_rpc_endpoint *ept;
180	struct task_struct *task;
181	int state;
182};
183
184struct audmgr_config {
185	uint32_t tx_rate;
186	uint32_t rx_rate;
187	uint32_t def_method;
188	uint32_t codec;
189	uint32_t snd_method;
190};
191
192int audmgr_open(struct audmgr *am);
193int audmgr_close(struct audmgr *am);
194int audmgr_enable(struct audmgr *am, struct audmgr_config *cfg);
195int audmgr_disable(struct audmgr *am);
196
197typedef void (*audpp_event_func)(void *private, unsigned id, uint16_t *msg);
198
199int audpp_enable(int id, audpp_event_func func, void *private);
200void audpp_disable(int id, void *private);
201
202int audpp_send_queue1(void *cmd, unsigned len);
203int audpp_send_queue2(void *cmd, unsigned len);
204int audpp_send_queue3(void *cmd, unsigned len);
205
206int audpp_set_volume_and_pan(unsigned id, unsigned volume, int pan);
207int audpp_pause(unsigned id, int pause);
208int audpp_flush(unsigned id);
209void audpp_avsync(int id, unsigned rate);
210unsigned audpp_avsync_sample_count(int id);
211unsigned audpp_avsync_byte_count(int id);
212
213#endif
214