blob: 4d5ecaf15b3b37e487d545e72c40da82728a6757 [file] [log] [blame]
rjw6c1fd8f2022-11-30 14:33:01 +08001/*****************************************************************************
2* Copyright Statement:
3* --------------------
4* This software is protected by Copyright and the information contained
5* herein is confidential. The software may not be copied and the information
6* contained herein may not be used or disclosed except with the written
7* permission of MediaTek Inc. (C) 2005
8*
9* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
10* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
11* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
12* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
13* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
14* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
15* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
16* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
17* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
18* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
19* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
20* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
21*
22* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
23* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
24* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
25* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
26* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
27*
28* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
29* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
30* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
31* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
32* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
33*
34*****************************************************************************/
35
36/*******************************************************************************
37 *
38 * Filename:
39 * ---------
40 * afe.c
41 *
42 * Project:
43 * --------
44 * MAUI
45 *
46 * Description:
47 * ------------
48 * Audio Front End
49 *
50 * Author:
51 * -------
52 * -------
53 *
54 *------------------------------------------------------------------------------
55 * $Revision: 1.21 $
56 * $Modtime: Jul 08 2005 16:31:52 $
57 * $Log: //mtkvs01/vmdata/Maui_sw/archives/mcu/l1audio/afe.h-arc $
58 *
59 * 12 19 2017 thomas.chen
60 * [MOLY00296986] [Build warning removal]fix warning
61 * .
62 *
63 * 11 09 2017 thomas.chen
64 * [MOLY00288616] Remove DisableInterrupt API
65 * .
66 *
67 * 09 27 2017 thomas.chen
68 * [MOLY00279366] Fix 9295M build error
69 * .
70 *
71 * 08 25 2017 ting-ni.chen
72 * [MOLY00273782] [Sylvia] [MT6771] bringup chip define
73 * [Sylvia][MT6771] bringup chip define
74 *
75 * 06 09 2017 sungshen.wu
76 * [MOLY00245550] [Zion] Bringup Check in
77 * .Zion check in
78 *
79 * 05 14 2017 ys.hsieh
80 * [MOLY00249046] [MT6763]add speech hw dvt audio command patch
81 *
82 * Bianco DVT for audiocommand
83 *
84 * 03 01 2017 sheila.chen
85 * [MOLY00209193] [93MD] speech driver
86 * clean marked code.
87 * refator the gain control (BT)
88 * fix bug: the debug info size should be 16.
89 * common parameter default value location change
90 *
91 * 02 24 2017 sheila.chen
92 * [MOLY00209193] [93MD] speech driver
93 * remove backup and restore function in AFE.
94 *
95 * 02 24 2017 sheila.chen
96 * [MOLY00209193] [93MD] speech driver
97 * rewrite digital gain control.
98 *
99 * 02 13 2017 sheila.chen
100 * [MOLY00209193] [93MD] speech driver
101 * remove afe setrefresh and related code.
102 * remove mute speaker which is only using in audio path
103 *
104 * 02 13 2017 sheila.chen
105 * [MOLY00209193] [93MD] speech driver
106 * remove unused toneLoopback
107 *
108 * 02 08 2017 sheila.chen
109 * [MOLY00209193] [93MD] speech driver
110 * remove unused media functions.
111 *
112 * 01 26 2017 sheila.chen
113 * [MOLY00209193] [93MD] speech driver
114 * revise afe driver.
115 *
116 * 01 26 2017 sheila.chen
117 * [MOLY00209193] [93MD] speech driver
118 * revise afe driver.
119 *
120 * 11 09 2016 thomas.chen
121 * [MOLY00212357] 93 SpeechDriver Checkin
122 * .
123 *
124 * 03 30 2016 thomas.chen
125 * [MOLY00171812] fix UMOLYA BuildError
126 * .
127 *
128 * 02 04 2016 fu-shing.ju
129 * [MOLY00120200] 6291Plus development
130 * Fix MSBB issue.
131 *
132 * 10 07 2015 fu-shing.ju
133 * [MOLY00120200] 6291Plus development
134 * Add Data_Sync_Barrier() for 6292.
135 *
136 * 08 17 2015 fu-shing.ju
137 * [MOLY00120200] 6291Plus development
138 * Add ELBRUS chip option.
139 *
140 * 06 11 2015 thomas.chen
141 * [MOLY00120543] Jade PreBuild
142 * .
143 *
144 * 02 03 2015 fu-shing.ju
145 * [MOLY00091627] TK6291 development
146 * Sync Audio driver with MOLY TRUNK W15.05.P1.
147 *
148 * 04 07 2014 sheila.chen
149 * [MOLY00061869] [UMoly] check-in
150 * add TK6291 chip
151 *
152 * 01 28 2014 sheila.chen
153 * [MOLY00050441] [MT6595 Bring-Up] speech related code
154 * DVT test cases check in
155 *
156 * 01 15 2014 sheila.chen
157 * [MOLY00050441] [MT6595 Bring-Up] speech related code
158 * [ROME] add DVT setting
159 *
160 * 01 07 2014 sheila.chen
161 * [MOLY00050441] [MT6595 Bring-Up] speech related code
162 * Merging //MOLY/Development_BRANCHES/MT6595E1_BRING_UP_DEV/mcu/driver/audio/...
163 * to //MOLY/TRUNK/MOLY/mcu/driver/audio/...
164 *
165 * 12 26 2013 sheila.chen
166 * [MOLY00050441] [MT6595 Bring-Up] speech related code
167 * Fix bug, MDAFE hw register is 32 bit instead of 16 bit
168 *
169 * 12 10 2013 lanus.chao
170 * [MOLY00046252] Add MT6595 chip option
171 * .
172 *
173 * 12 09 2013 lanus.chao
174 * [MOLY00046252] Add MT6595 chip option
175 * .
176 *
177 * 08 21 2013 sheila.chen
178 * [MOLY00031287] [MT6592][MT6571] Chip back prepare
179 * add MT6592/MT6571 chip options
180 *
181 * 08 16 2013 sheila.chen
182 * [MOLY00011218] [MT6290] Code modification
183 * remove unused code
184 *
185 * 08 13 2013 sheila.chen
186 * [MOLY00011218] [MT6290] Code modification
187 * move register backup by chip
188 *
189 * 08 05 2013 sheila.chen
190 * [MOLY00011218] [MT6290] Code modification
191 * remove unused afe code
192 *
193 * 05 14 2013 sheila.chen
194 * [MOLY00022118] [Volunteer Patch] DRC2.0 (MagiLoudness) Integration
195 * DRC 2.0 modification
196 *
197 * 03 01 2013 sheila.chen
198 * [MOLY00011218] [MT6290] Code modification
199 * Fix Build error for MT6290
200 *
201 * 01 16 2013 sheila.chen
202 * [MOLY00008869] [Need Patch][Build Error] WR8 build error for MT6582_L1S(DEFAULT)
203 * Fix Build Error
204 *
205 * 01 07 2013 sheila.chen
206 * [MOLY00008234] [MT6572] Integration
207 * MT6572 bring up
208 *
209 * 12 25 2012 sheila.chen
210 * [MOLY00000112] [MT6583] Pre-integration
211 * wbBT
212 *
213 * 12 18 2012 sheila.chen
214 * [MOLY00000112] [MT6583] Pre-integration
215 * Set Mode Modification
216 *
217 * 11 01 2012 sheila.chen
218 * [MOLY00000112] [MT6583] Pre-integration
219 * 1. Sidetone update
220 *
221 * 2. digital gain setting (AGC, DL volume)
222 *
223 * 3. FIX AFE setting to privent too many noise
224 *
225 * 4. Fix PCM MSB, LSB mapping mismatch
226 * 5. Turn on enhancement
227 * 6. Add Acroustic loopback code
228 *
229 * 09 26 2012 sheila.chen
230 * [MOLY00000112] [MT6583] Pre-integration
231 * Chip Rename to MT6589
232 * Remove unused AFE functions
233 * Phase in phone call usage
234 *
235 * 09 20 2012 sheila.chen
236 * [MOLY00000112] [MT6583] Pre-integration
237 * add compile option for analog AFE
238 *
239 * 09 17 2012 sheila.chen
240 * [MOLY00000112] [MT6583] Pre-integration
241 * 83 phone call prepare, warning removal
242 *
243 * 08 21 2012 dior.lin
244 * [MOLY00002430] Modify for MD2G wakeup by Audio
245 * Modify for MD2G wakeup by Audio.
246 *
247 * 08 17 2012 kh.hung
248 * [MOLY00002243] Fix cross category header inclusion
249 * Remove l1d_reg.h.
250 *
251 * 07 27 2012 sheila.chen
252 * [MOLY00000112] [MT6583] Pre-integration
253 * Fix build warning.
254 *
255 * 07 25 2012 sheila.chen
256 * [MOLY00000112] [MT6583] Pre-integration
257 * Phase in PCMNWAY, param AM manager with 2 parameter, and recording.
258 *
259 * 06 08 2012 kh.hung
260 * removed!
261 * .
262 *
263 * 05 16 2012 jy.huang
264 * removed!
265 * .
266 *
267 * 05 16 2012 jy.huang
268 * removed!
269 * .
270 *
271 * 05 14 2012 jy.huang
272 * removed!
273 * .
274 *
275 * 11 29 2011 lanus.chao
276 * removed!
277 * .
278 *
279 *
280 *******************************************************************************/
281#ifndef AFE_H
282#define AFE_H
283
284/*
285============================================================================================================
286------------------------------------------------------------------------------------------------------------
287|| Chapter: INCLUDE FILES
288------------------------------------------------------------------------------------------------------------
289============================================================================================================
290*/
291
292#include "kal_general_types.h"
293#include "kal_public_api.h"
294#include "reg_base.h"
295#include "kal_trace.h"
296#include "l1audio_trace_utmd.h"
297#include "l1sp_trc.h"
298#include "audcoeff_default.h"
299#include "afe_def.h"
300#include "dcl.h"
301#include "us_timer.h"
302#include "speech_def.h"
303
304
305
306/*
307============================================================================================================
308------------------------------------------------------------------------------------------------------------
309|| Chapter: Data Types and Structures
310------------------------------------------------------------------------------------------------------------
311============================================================================================================
312*/
313#if 0
314/* under construction !*/
315/* under construction !*/
316/* under construction !*/
317/* under construction !*/
318#if (defined(MT6295M) || defined(__MD95__))
319/* under construction !*/
320/* under construction !*/
321/* under construction !*/
322/* under construction !*/
323/* under construction !*/
324/* under construction !*/
325/* under construction !*/
326/* under construction !*/
327/* under construction !*/
328/* under construction !*/
329#else
330/* under construction !*/
331#endif
332/* under construction !*/
333#endif
334
335//=============================================================================================
336// Section: Structure AFE_STRUCT_T (afe main structure)
337//=============================================================================================
338typedef struct {
339
340 // kal_uint16 aud_id;
341
342 kal_bool loopback;
343 kal_bool afe_init;
344 kal_uint8 voice8kMode;
345
346
347 //for 65nm clock gating, digital AFE register backup
348 // RegBackup regbak;
349
350
351} AFE_STRUCT_T;
352
353typedef struct {
354
355 kal_uint32 afe_conn0;
356
357} AFE_RG_STRUCT_T;
358
359/*
360============================================================================================================
361------------------------------------------------------------------------------------------------------------
362|| Chapter: Special Configurations for Specific Usage
363------------------------------------------------------------------------------------------------------------
364============================================================================================================
365*/
366
367//=============================================================================================
368// Section: Debug and Unit Test Configuration
369//=============================================================================================
370//#define __AFE_DEBUG__
371#ifdef __AFE_DEBUG__
372 #define afe_prompt_trace kal_prompt_trace
373
374static kal_char * _aszAfeState[] =
375{
376 "AFE_STATE_OFF",
377 "AFE_STATE_ON",
378 "AFE_STATE_IDLE_OFF",
379 "AFE_STATE_CLASS_D_OFF"
380};
381
382#else
383 #define afe_prompt_trace(...)
384#endif
385
386
387
388/*
389============================================================================================================
390------------------------------------------------------------------------------------------------------------
391|| Chapter: DEFINITION OF DATA TYPES
392------------------------------------------------------------------------------------------------------------
393============================================================================================================
394*/
395
396
397//=============================================================================================
398// Section: External Variables and Functions
399//=============================================================================================
400extern AFE_STRUCT_T afe;
401extern AFE_RG_STRUCT_T afeRG;
402
403/*
404============================================================================================================
405------------------------------------------------------------------------------------------------------------
406|| Chapter: Function Prototypes
407------------------------------------------------------------------------------------------------------------
408============================================================================================================
409*/
410
411void AFE_Init( void );
412
413
414void AFE_DELAY(uint16 delay);
415
416
417void AFE_Chip_Init( void );
418
419
420void AFE_TurnOnLoopback( void );
421void AFE_TurnOffLoopback( void );
422
423kal_uint8 AFE_GetVoice8KMode(void);
424void AFE_SetVoice8KMode(kal_uint8 mode);
425void AFE_SetConn0(kal_uint32 val);
426#endif //AFE_H