blob: f401c1f1b61623c3f5e73431183878c4c1eacd23 [file] [log] [blame]
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001#ifndef __MSM_AUDIO_MVS_H
2#define __MSM_AUDIO_MVS_H
3
4#include <linux/msm_audio.h>
5
6#define AUDIO_GET_MVS_CONFIG _IOW(AUDIO_IOCTL_MAGIC, \
7 (AUDIO_MAX_COMMON_IOCTL_NUM + 0), unsigned)
8#define AUDIO_SET_MVS_CONFIG _IOR(AUDIO_IOCTL_MAGIC, \
9 (AUDIO_MAX_COMMON_IOCTL_NUM + 1), unsigned)
10
11/* MVS modes */
12#define MVS_MODE_IS733 1
13#define MVS_MODE_IS127 2
14#define MVS_MODE_4GV_NB 3
15#define MVS_MODE_4GV_WB 4
16#define MVS_MODE_AMR 5
17#define MVS_MODE_EFR 6
18#define MVS_MODE_FR 7
19#define MVS_MODE_HR 8
20#define MVS_MODE_LINEAR_PCM 9
21#define MVS_MODE_G711 10
22#define MVS_MODE_PCM 12
23#define MVS_MODE_AMR_WB 13
24#define MVS_MODE_G729A 14
25#define MVS_MODE_G711A 15
26#define MVS_MODE_G722 16
27
28enum msm_audio_amr_mode {
29 MVS_AMR_MODE_0475, /* AMR 4.75 kbps */
30 MVS_AMR_MODE_0515, /* AMR 5.15 kbps */
31 MVS_AMR_MODE_0590, /* AMR 5.90 kbps */
32 MVS_AMR_MODE_0670, /* AMR 6.70 kbps */
33 MVS_AMR_MODE_0740, /* AMR 7.40 kbps */
34 MVS_AMR_MODE_0795, /* AMR 7.95 kbps */
35 MVS_AMR_MODE_1020, /* AMR 10.20 kbps */
36 MVS_AMR_MODE_1220, /* AMR 12.20 kbps */
37 MVS_AMR_MODE_0660, /* AMR-WB 6.60 kbps */
38 MVS_AMR_MODE_0885, /* AMR-WB 8.85 kbps */
39 MVS_AMR_MODE_1265, /* AMR-WB 12.65 kbps */
40 MVS_AMR_MODE_1425, /* AMR-WB 14.25 kbps */
41 MVS_AMR_MODE_1585, /* AMR-WB 15.85 kbps */
42 MVS_AMR_MODE_1825, /* AMR-WB 18.25 kbps */
43 MVS_AMR_MODE_1985, /* AMR-WB 19.85 kbps */
44 MVS_AMR_MODE_2305, /* AMR-WB 23.05 kbps */
45 MVS_AMR_MODE_2385, /* AMR-WB 23.85 kbps */
46 MVS_AMR_MODE_UNDEF
47};
48
49enum msm_audio_voc_rate {
50 MVS_VOC_0_RATE, /* Blank frame */
51 MVS_VOC_8_RATE, /* 1/8 rate */
52 MVS_VOC_4_RATE, /* 1/4 rate */
53 MVS_VOC_2_RATE, /* 1/2 rate */
54 MVS_VOC_1_RATE /* Full rate */
55};
56
57enum msm_audio_amr_frame_type {
58 MVS_AMR_SPEECH_GOOD, /* Good speech frame */
59 MVS_AMR_SPEECH_DEGRADED, /* Speech degraded */
60 MVS_AMR_ONSET, /* Onset */
61 MVS_AMR_SPEECH_BAD, /* Corrupt speech frame (bad CRC) */
62 MVS_AMR_SID_FIRST, /* First silence descriptor */
63 MVS_AMR_SID_UPDATE, /* Comfort noise frame */
64 MVS_AMR_SID_BAD, /* Corrupt SID frame (bad CRC) */
65 MVS_AMR_NO_DATA, /* Nothing to transmit */
66 MVS_AMR_SPEECH_LOST /* Downlink speech lost */
67};
68
69enum msm_audio_g711a_mode {
70 MVS_G711A_MODE_MULAW,
71 MVS_G711A_MODE_ALAW
72};
73
74enum mvs_g722_mode_type {
75 MVS_G722_MODE_01,
76 MVS_G722_MODE_02,
77 MVS_G722_MODE_03,
78 MVS_G722_MODE_MAX,
79 MVS_G722_MODE_UNDEF
80};
81
82enum msm_audio_g711a_frame_type {
83 MVS_G711A_SPEECH_GOOD,
84 MVS_G711A_SID,
85 MVS_G711A_NO_DATA,
86 MVS_G711A_ERASURE
87};
88
89enum msm_audio_g729a_frame_type {
90 MVS_G729A_NO_DATA,
91 MVS_G729A_SPEECH_GOOD,
92 MVS_G729A_SID,
93 MVS_G729A_ERASURE
94};
95
96struct msm_audio_mvs_config {
97 uint32_t mvs_mode;
98 uint32_t rate_type;
99 uint32_t dtx_mode;
100};
101
102#define MVS_MAX_VOC_PKT_SIZE 320
103
104struct msm_audio_mvs_frame {
105 uint32_t frame_type;
106 uint32_t len;
107 uint8_t voc_pkt[MVS_MAX_VOC_PKT_SIZE];
108
109};
110
111#endif /* __MSM_AUDIO_MVS_H */