blob: 8462290c5a2e73775ea2b04f480ef6ccca1a3327 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
|
/*
* omap-abe-dsp.h
*
* Copyright (C) 2010 Texas Instruments
*
* Contact: Liam Girdwood <lrg@ti.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA
*
*/
#ifndef __OMAP_ABE_DSP_H__
#define __OMAP_ABE_DSP_H__
#define ABE_MIXER(x) (x)
#define MIX_DL1_TONES ABE_MIXER(0)
#define MIX_DL1_VOICE ABE_MIXER(1)
#define MIX_DL1_CAPTURE ABE_MIXER(2)
#define MIX_DL1_MEDIA ABE_MIXER(3)
#define MIX_DL2_TONES ABE_MIXER(4)
#define MIX_DL2_VOICE ABE_MIXER(5)
#define MIX_DL2_CAPTURE ABE_MIXER(6)
#define MIX_DL2_MEDIA ABE_MIXER(7)
#define MIX_AUDUL_TONES ABE_MIXER(8)
#define MIX_AUDUL_MEDIA ABE_MIXER(9)
#define MIX_AUDUL_CAPTURE ABE_MIXER(10)
#define MIX_VXREC_TONES ABE_MIXER(11)
#define MIX_VXREC_VOICE_PLAYBACK ABE_MIXER(12)
#define MIX_VXREC_VOICE_CAPTURE ABE_MIXER(13)
#define MIX_VXREC_MEDIA ABE_MIXER(14)
#define MIX_SDT_CAPTURE ABE_MIXER(15)
#define MIX_SDT_PLAYBACK ABE_MIXER(16)
#define MIX_SWITCH_PDM_DL ABE_MIXER(17)
#define MIX_SWITCH_BT_VX_DL ABE_MIXER(18)
#define MIX_SWITCH_MM_EXT_DL ABE_MIXER(19)
#define MIX_DL1_MONO ABE_MIXER(20)
#define MIX_DL2_MONO ABE_MIXER(21)
#define MIX_AUDUL_MONO ABE_MIXER(22)
#define ABE_NUM_MONO_MIXERS (MIX_AUDUL_MONO - MIX_DL1_MONO + 1)
#define ABE_NUM_MIXERS (MIX_AUDUL_MONO + 1)
#define ABE_MUX(x) (x + ABE_NUM_MIXERS)
#define MUX_MM_UL10 ABE_MUX(0)
#define MUX_MM_UL11 ABE_MUX(1)
#define MUX_MM_UL12 ABE_MUX(2)
#define MUX_MM_UL13 ABE_MUX(3)
#define MUX_MM_UL14 ABE_MUX(4)
#define MUX_MM_UL15 ABE_MUX(5)
#define MUX_MM_UL16 ABE_MUX(6)
#define MUX_MM_UL17 ABE_MUX(7)
#define MUX_MM_UL20 ABE_MUX(8)
#define MUX_MM_UL21 ABE_MUX(9)
#define MUX_VX_UL0 ABE_MUX(10)
#define MUX_VX_UL1 ABE_MUX(11)
#define ABE_NUM_MUXES (MUX_VX_UL1 - MUX_MM_UL10)
#define ABE_WIDGET(x) (x + ABE_NUM_MIXERS + ABE_NUM_MUXES)
/* ABE AIF Frontend Widgets */
#define W_AIF_TONES_DL ABE_WIDGET(0)
#define W_AIF_VX_DL ABE_WIDGET(1)
#define W_AIF_VX_UL ABE_WIDGET(2)
#define W_AIF_MM_UL1 ABE_WIDGET(3)
#define W_AIF_MM_UL2 ABE_WIDGET(4)
#define W_AIF_MM_DL ABE_WIDGET(5)
#define W_AIF_MM_DL_LP W_AIF_MM_DL
#define W_AIF_VIB_DL ABE_WIDGET(6)
#define W_AIF_MODEM_DL ABE_WIDGET(7)
#define W_AIF_MODEM_UL ABE_WIDGET(8)
/* ABE AIF Backend Widgets */
#define W_AIF_PDM_UL1 ABE_WIDGET(9)
#define W_AIF_PDM_DL1 ABE_WIDGET(10)
#define W_AIF_PDM_DL2 ABE_WIDGET(11)
#define W_AIF_PDM_VIB ABE_WIDGET(12)
#define W_AIF_BT_VX_UL ABE_WIDGET(13)
#define W_AIF_BT_VX_DL ABE_WIDGET(14)
#define W_AIF_MM_EXT_UL ABE_WIDGET(15)
#define W_AIF_MM_EXT_DL ABE_WIDGET(16)
#define W_AIF_DMIC0 ABE_WIDGET(17)
#define W_AIF_DMIC1 ABE_WIDGET(18)
#define W_AIF_DMIC2 ABE_WIDGET(19)
/* ABE ROUTE_UL MUX Widgets */
#define W_MUX_UL00 ABE_WIDGET(20)
#define W_MUX_UL01 ABE_WIDGET(21)
#define W_MUX_UL02 ABE_WIDGET(22)
#define W_MUX_UL03 ABE_WIDGET(23)
#define W_MUX_UL04 ABE_WIDGET(24)
#define W_MUX_UL05 ABE_WIDGET(25)
#define W_MUX_UL06 ABE_WIDGET(26)
#define W_MUX_UL07 ABE_WIDGET(27)
#define W_MUX_UL10 ABE_WIDGET(28)
#define W_MUX_UL11 ABE_WIDGET(29)
#define W_MUX_VX00 ABE_WIDGET(30)
#define W_MUX_VX01 ABE_WIDGET(31)
/* ABE Volume and Mixer Widgets */
#define W_MIXER_DL1 ABE_WIDGET(32)
#define W_MIXER_DL2 ABE_WIDGET(33)
#define W_VOLUME_DL1 ABE_WIDGET(34)
#define W_MIXER_AUDIO_UL ABE_WIDGET(35)
#define W_MIXER_VX_REC ABE_WIDGET(36)
#define W_MIXER_SDT ABE_WIDGET(37)
#define W_VSWITCH_DL1_PDM ABE_WIDGET(38)
#define W_VSWITCH_DL1_BT_VX ABE_WIDGET(39)
#define W_VSWITCH_DL1_MM_EXT ABE_WIDGET(40)
#define ABE_NUM_WIDGETS (W_VSWITCH_DL1_MM_EXT - W_AIF_TONES_DL)
#define ABE_WIDGET_LAST W_VSWITCH_DL1_MM_EXT
#define ABE_NUM_DAPM_REG \
(ABE_NUM_MIXERS + ABE_NUM_MUXES + ABE_NUM_WIDGETS)
#define ABE_VIRTUAL_SWITCH 0
#define ABE_ROUTES_UL 14
// TODO: OPP bitmask - Use HAL version after update
#define ABE_OPP_25 0
#define ABE_OPP_50 1
#define ABE_OPP_100 2
/* TODO: size in bytes of debug options */
#define ABE_DBG_FLAG1_SIZE 0
#define ABE_DBG_FLAG2_SIZE 0
#define ABE_DBG_FLAG3_SIZE 0
/* TODO: Pong start offset of DMEM */
/* Ping pong buffer DMEM offset */
#define ABE_DMEM_BASE_OFFSET_PING_PONG 0x4000
/* Gain value conversion */
#define ABE_MAX_GAIN 12000
#define ABE_GAIN_SCALE 100
#define abe_gain_to_val(gain) ((val + ABE_MAX_GAIN) / ABE_GAIN_SCALE)
#define abe_val_to_gain(val) (-ABE_MAX_GAIN + (val * ABE_GAIN_SCALE))
/* Firmware coefficients and equalizers */
#define ABE_MAX_FW_SIZE (1024 * 128)
#define ABE_MAX_COEFF_SIZE (1024 * 4)
#define ABE_COEFF_NAME_SIZE 20
#define ABE_COEFF_TEXT_SIZE 20
#define ABE_COEFF_NUM_TEXTS 10
#define ABE_MAX_EQU 10
#define ABE_MAX_PROFILES 30
#define OMAP_ABE_OPP25 0
#define OMAP_ABE_OPP50 1
#define OMAP_ABE_OPP100 2
#define OMAP_ABE_OPP_COUNT 3
void abe_dsp_shutdown(void);
void abe_dsp_pm_get(void);
void abe_dsp_pm_put(void);
int abe_add_opp_req(struct device *dev, int opp);
int abe_remove_opp_req(struct device *dev);
void abe_dsp_set_power_mode(int mode);
void abe_dsp_set_hs_offset(int left, int right, int mult);
void abe_dsp_set_hf_offset(int left, int right);
#endif /* End of __OMAP_ABE_DSP_H__ */
|