blob: 44abe1edc29b6a048163181e1ea4cfa185958096 [file] [log] [blame]
rjw6c1fd8f2022-11-30 14:33:01 +08001
2#include "kal_public_defs.h"
3#include "kal_public_api.h"
4#include "stack_config.h"
5#include "kal_trace.h"
6
7
8// #include "l1audio_def.h"
9#include "l1sp_trc.h"
10#include "l1aud_common_def.h"
11
12#ifdef CONNECT_WM8904
13
14#include "dcl.h"
15#include "dcl_i2c.h"
16
17// ------------------------- added for 8904 -----------------------------------
18
19I2C_CONFIG_T wm8904_i2c_ctrl_para;
20kal_bool is_dvt_initialized = KAL_FALSE;
21DCL_HANDLE wm8904_i2c_handle = 0;
22
23kal_uint8 i2c_write_register_table[NUM_I2C_WRITE_TAB][NUM_WRITE_I2C_SINGLE_REG][LEN_WRITE_I2C_SINGLE_REG] =
24{
25 { // MIC_8k_LongSync_Analog_Bypass
26 {0x00, 0x00, 0x00},
27 {0x04, 0x00, 0x19},
28 {0x05, 0x00, 0x43},
29 {0x06, 0x00, 0x00},
30 {0x07, 0x00, 0x00},
31 {0x0C, 0x00, 0x03},
32 {0x0E, 0x00, 0x03},
33 {0x12, 0x00, 0x0F},
34 {0x14, 0x8C, 0x5E},
35 {0x15, 0x24, 0x00},
36 {0x18, 0x00, 0x50},
37 {0x19, 0x00, 0x93},
38 {0x1A, 0x00, 0xF4},
39 {0x1B, 0x00, 0x20},
40 {0x1E, 0x00, 0xA5},
41 {0x1F, 0x00, 0xA5},
42 {0x21, 0x00, 0x00},
43 {0x24, 0x00, 0xC0},
44 {0x25, 0x00, 0xC0},
45 {0x26, 0x00, 0x00},
46 {0x2C, 0x00, 0x05},
47 {0x2D, 0x00, 0x05},
48 {0x2E, 0x00, 0x12},
49 {0x2F, 0x00, 0x12},
50 {0x39, 0x00, 0x39},
51 {0x3A, 0x00, 0xB9},
52 {0x3D, 0x00, 0x0F},
53 {0x43, 0x00, 0x03},
54 {0x4B, 0x00, 0x05},
55 {0x4C, 0x00, 0xFD},
56 {0x79, 0x00, 0x09},
57 {0x5A, 0x00, 0xFF},
58 {0x62, 0x00, 0x01},
59 {0x68, 0x00, 0x05},
60 {0x74, 0x00, 0x06},
61 {0x75, 0x07, 0x02},
62 {0x76, 0x00, 0x00},
63 {0x77, 0x0C, 0x00},
64 {0x78, 0x00, 0x05},
65 {0x74, 0x00, 0x07},
66 {0x16, 0x40, 0x0A},
67 {0x16, 0x40, 0x0E},
68 },
69 { // MIC_8k_LongSync_Digital_Loopback
70 {0x00, 0x00, 0x00},
71 {0x04, 0x00, 0x19},
72 {0x05, 0x00, 0x43},
73 {0x06, 0x00, 0x01},
74 {0x07, 0x00, 0x00},
75 {0x0C, 0x00, 0x03},
76 {0x0E, 0x00, 0x03},
77 {0x12, 0x00, 0x0F},
78 {0x14, 0x8C, 0x5E},
79 {0x15, 0x24, 0x00},
80 {0x18, 0x01, 0x50},
81 {0x19, 0x00, 0x93},
82 {0x1A, 0x00, 0xF4},
83 {0x1B, 0x00, 0x20},
84 {0x1E, 0x00, 0xA5},
85 {0x1F, 0x00, 0xA5},
86 {0x21, 0x00, 0x00},
87 {0x24, 0x00, 0xC0},
88 {0x25, 0x00, 0xC0},
89 {0x26, 0x00, 0x00},
90 {0x2C, 0x00, 0x05},
91 {0x2D, 0x00, 0x05},
92 {0x2E, 0x00, 0x12},
93 {0x2F, 0x00, 0x12},
94 {0x39, 0x00, 0x39},
95 {0x3A, 0x00, 0xB9},
96 {0x3D, 0x00, 0x00},
97 {0x43, 0x00, 0x03},
98 {0x4B, 0x00, 0x05},
99 {0x4C, 0x00, 0xFD},
100 {0x79, 0x00, 0x09},
101 {0x5A, 0x00, 0xFF},
102 {0x62, 0x00, 0x01},
103 {0x68, 0x00, 0x05},
104 {0x74, 0x00, 0x06},
105 {0x75, 0x07, 0x02},
106 {0x76, 0x00, 0x00},
107 {0x77, 0x0C, 0x00},
108 {0x78, 0x00, 0x05},
109 {0x74, 0x00, 0x07},
110 {0x16, 0x40, 0x0A},
111 {0x16, 0x40, 0x0E},
112 },
113 { // MIC_8k_LongSync_Phone_Call
114 {0x00, 0x00, 0x00},
115 {0x04, 0x00, 0x19},
116 {0x05, 0x00, 0x43},
117 {0x06, 0x00, 0x01},
118 {0x07, 0x00, 0x00},
119 {0x0C, 0x00, 0x03},
120 {0x0E, 0x00, 0x03},
121 {0x12, 0x00, 0x0F},
122 {0x14, 0x8C, 0x5E},
123 {0x15, 0x24, 0x00},
124 {0x18, 0x00, 0x50},
125 {0x19, 0x00, 0x93},
126 {0x1A, 0x00, 0xF4},
127 {0x1B, 0x00, 0x20},
128 {0x1E, 0x00, 0xA5},
129 {0x1F, 0x00, 0xA5},
130 {0x21, 0x00, 0x00},
131 {0x24, 0x00, 0xC0},
132 {0x25, 0x00, 0xC0},
133 {0x26, 0x00, 0x00},
134 {0x2C, 0x00, 0x05},
135 {0x2D, 0x00, 0x05},
136 {0x2E, 0x00, 0x12},
137 {0x2F, 0x00, 0x12},
138 {0x39, 0x00, 0x39},
139 {0x3A, 0x00, 0xB9},
140 {0x3D, 0x00, 0x00},
141 {0x43, 0x00, 0x03},
142 {0x4B, 0x00, 0x05},
143 {0x4C, 0x00, 0xFD},
144 {0x79, 0x00, 0x09},
145 {0x5A, 0x00, 0xFF},
146 {0x62, 0x00, 0x01},
147 {0x68, 0x00, 0x05},
148 {0x74, 0x00, 0x06},
149 {0x75, 0x07, 0x02},
150 {0x76, 0x00, 0x00},
151 {0x77, 0x0C, 0x00},
152 {0x78, 0x00, 0x05},
153 {0x74, 0x00, 0x07},
154 {0x16, 0x40, 0x0A},
155 {0x16, 0x40, 0x0E},
156 },
157 { // LINEIN_8k_LongSync_Analog_Bypass
158 {0x00, 0x00, 0x00},
159 {0x04, 0x00, 0x19},
160 {0x05, 0x00, 0x43},
161 {0x06, 0x00, 0x00},
162 {0x07, 0x00, 0x00},
163 {0x0C, 0x00, 0x03},
164 {0x0E, 0x00, 0x03},
165 {0x12, 0x00, 0x0F},
166 {0x14, 0x8C, 0x5E},
167 {0x15, 0x24, 0x00},
168 {0x18, 0x00, 0x50},
169 {0x19, 0x00, 0x93},
170 {0x1A, 0x00, 0xF4},
171 {0x1B, 0x00, 0x20},
172 {0x1E, 0x00, 0xA5},
173 {0x1F, 0x00, 0xA5},
174 {0x21, 0x00, 0x00},
175 {0x24, 0x00, 0xC0},
176 {0x25, 0x00, 0xC0},
177 {0x26, 0x00, 0x00},
178 {0x2C, 0x00, 0x05},
179 {0x2D, 0x00, 0x05},
180 {0x2E, 0x00, 0x00},
181 {0x2F, 0x00, 0x00},
182 {0x39, 0x00, 0x39},
183 {0x3A, 0x00, 0xB9},
184 {0x3D, 0x00, 0x0F},
185 {0x43, 0x00, 0x03},
186 {0x4B, 0x00, 0x05},
187 {0x4C, 0x00, 0xFD},
188 {0x79, 0x00, 0x09},
189 {0x5A, 0x00, 0xFF},
190 {0x62, 0x00, 0x01},
191 {0x68, 0x00, 0x05},
192 {0x74, 0x00, 0x06},
193 {0x75, 0x07, 0x02},
194 {0x76, 0x00, 0x00},
195 {0x77, 0x0C, 0x00},
196 {0x78, 0x00, 0x05},
197 {0x74, 0x00, 0x07},
198 {0x16, 0x40, 0x0A},
199 {0x16, 0x40, 0x0E},
200 },
201 { // LINEIN_8k_LongSync_Digital_Loopback
202 {0x00, 0x00, 0x00},
203 {0x04, 0x00, 0x19},
204 {0x05, 0x00, 0x43},
205 {0x06, 0x00, 0x00},
206 {0x07, 0x00, 0x00},
207 {0x0C, 0x00, 0x03},
208 {0x0E, 0x00, 0x03},
209 {0x12, 0x00, 0x0F},
210 {0x14, 0x8C, 0x5E},
211 {0x15, 0x24, 0x00},
212 {0x18, 0x01, 0x50},
213 {0x19, 0x00, 0x93},
214 {0x1A, 0x00, 0xF4},
215 {0x1B, 0x00, 0x20},
216 {0x1E, 0x00, 0xA5},
217 {0x1F, 0x00, 0xA5},
218 {0x21, 0x00, 0x00},
219 {0x24, 0x00, 0xC0},
220 {0x25, 0x00, 0xC0},
221 {0x26, 0x00, 0x00},
222 {0x2C, 0x00, 0x05},
223 {0x2D, 0x00, 0x05},
224 {0x2E, 0x00, 0x00},
225 {0x2F, 0x00, 0x00},
226 {0x39, 0x00, 0x39},
227 {0x3A, 0x00, 0xB9},
228 {0x3D, 0x00, 0x00},
229 {0x43, 0x00, 0x03},
230 {0x4B, 0x00, 0x05},
231 {0x4C, 0x00, 0xFD},
232 {0x79, 0x00, 0x09},
233 {0x5A, 0x00, 0xFF},
234 {0x62, 0x00, 0x01},
235 {0x68, 0x00, 0x05},
236 {0x74, 0x00, 0x06},
237 {0x75, 0x07, 0x02},
238 {0x76, 0x00, 0x00},
239 {0x77, 0x0C, 0x00},
240 {0x78, 0x00, 0x05},
241 {0x74, 0x00, 0x07},
242 {0x16, 0x40, 0x0A},
243 {0x16, 0x40, 0x0E},
244 },
245 { // LINEIN_8k_LongSync_Phone_Call
246 {0x00, 0x00, 0x00},
247 {0x04, 0x00, 0x19},
248 {0x05, 0x00, 0x43},
249 {0x06, 0x00, 0x00},
250 {0x07, 0x00, 0x00},
251 {0x0C, 0x00, 0x03},
252 {0x0E, 0x00, 0x03},
253 {0x12, 0x00, 0x0F},
254 {0x14, 0x8C, 0x5E},
255 {0x15, 0x24, 0x00},
256 {0x18, 0x00, 0x50},
257 {0x19, 0x00, 0x93},
258 {0x1A, 0x00, 0xF4},
259 {0x1B, 0x00, 0x20},
260 {0x1E, 0x00, 0xA5},
261 {0x1F, 0x00, 0xA5},
262 {0x21, 0x00, 0x00},
263 {0x24, 0x00, 0xC0},
264 {0x25, 0x00, 0xC0},
265 {0x26, 0x00, 0x00},
266 {0x2C, 0x00, 0x05},
267 {0x2D, 0x00, 0x05},
268 {0x2E, 0x00, 0x00},
269 {0x2F, 0x00, 0x00},
270 {0x39, 0x00, 0x39},
271 {0x3A, 0x00, 0xB9},
272 {0x3D, 0x00, 0x00},
273 {0x43, 0x00, 0x03},
274 {0x4B, 0x00, 0x05},
275 {0x4C, 0x00, 0xFD},
276 {0x79, 0x00, 0x09},
277 {0x5A, 0x00, 0xFF},
278 {0x62, 0x00, 0x01},
279 {0x68, 0x00, 0x05},
280 {0x74, 0x00, 0x06},
281 {0x75, 0x07, 0x02},
282 {0x76, 0x00, 0x00},
283 {0x77, 0x0C, 0x00},
284 {0x78, 0x00, 0x05},
285 {0x74, 0x00, 0x07},
286 {0x16, 0x40, 0x0A},
287 {0x16, 0x40, 0x0E},
288 },
289 { // MIC_8k_ShortSync_Analog_Bypass
290 {0x00, 0x00, 0x00},
291 {0x04, 0x00, 0x19},
292 {0x05, 0x00, 0x43},
293 {0x06, 0x00, 0x00},
294 {0x07, 0x00, 0x00},
295 {0x0C, 0x00, 0x03},
296 {0x0E, 0x00, 0x03},
297 {0x12, 0x00, 0x0F},
298 {0x14, 0x8C, 0x5E},
299 {0x15, 0x24, 0x00},
300 {0x18, 0x00, 0x50},
301 {0x19, 0x00, 0x83},
302 {0x1A, 0x00, 0xF4},
303 {0x1B, 0x00, 0x20},
304 {0x1E, 0x00, 0xA5},
305 {0x1F, 0x00, 0xA5},
306 {0x21, 0x00, 0x00},
307 {0x24, 0x00, 0xC0},
308 {0x25, 0x00, 0xC0},
309 {0x26, 0x00, 0x00},
310 {0x2C, 0x00, 0x05},
311 {0x2D, 0x00, 0x05},
312 {0x2E, 0x00, 0x12},
313 {0x2F, 0x00, 0x12},
314 {0x39, 0x00, 0x39},
315 {0x3A, 0x00, 0xB9},
316 {0x3D, 0x00, 0x0F},
317 {0x43, 0x00, 0x03},
318 {0x4B, 0x00, 0x05},
319 {0x4C, 0x00, 0xFD},
320 {0x79, 0x00, 0x09},
321 {0x5A, 0x00, 0xFF},
322 {0x62, 0x00, 0x01},
323 {0x68, 0x00, 0x05},
324 {0x74, 0x00, 0x06},
325 {0x75, 0x07, 0x02},
326 {0x76, 0x00, 0x00},
327 {0x77, 0x0C, 0x00},
328 {0x78, 0x00, 0x05},
329 {0x74, 0x00, 0x07},
330 {0x16, 0x40, 0x0A},
331 {0x16, 0x40, 0x0E},
332 },
333 { // MIC_8k_ShortSync_Digital_Loopback
334 {0x00, 0x00, 0x00},
335 {0x04, 0x00, 0x19},
336 {0x05, 0x00, 0x43},
337 {0x06, 0x00, 0x01},
338 {0x07, 0x00, 0x00},
339 {0x0C, 0x00, 0x03},
340 {0x0E, 0x00, 0x03},
341 {0x12, 0x00, 0x0F},
342 {0x14, 0x8C, 0x5E},
343 {0x15, 0x24, 0x00},
344 {0x18, 0x01, 0x50},
345 {0x19, 0x00, 0x83},
346 {0x1A, 0x00, 0xF4},
347 {0x1B, 0x00, 0x20},
348 {0x1E, 0x00, 0xA5},
349 {0x1F, 0x00, 0xA5},
350 {0x21, 0x00, 0x00},
351 {0x24, 0x00, 0xC0},
352 {0x25, 0x00, 0xC0},
353 {0x26, 0x00, 0x00},
354 {0x2C, 0x00, 0x05},
355 {0x2D, 0x00, 0x05},
356 {0x2E, 0x00, 0x12},
357 {0x2F, 0x00, 0x12},
358 {0x39, 0x00, 0x39},
359 {0x3A, 0x00, 0xB9},
360 {0x3D, 0x00, 0x00},
361 {0x43, 0x00, 0x03},
362 {0x4B, 0x00, 0x05},
363 {0x4C, 0x00, 0xFD},
364 {0x79, 0x00, 0x09},
365 {0x5A, 0x00, 0xFF},
366 {0x62, 0x00, 0x01},
367 {0x68, 0x00, 0x05},
368 {0x74, 0x00, 0x06},
369 {0x75, 0x07, 0x02},
370 {0x76, 0x00, 0x00},
371 {0x77, 0x0C, 0x00},
372 {0x78, 0x00, 0x05},
373 {0x74, 0x00, 0x07},
374 {0x16, 0x40, 0x0A},
375 {0x16, 0x40, 0x0E},
376 },
377 { // MIC_8k_ShortSync_Phone_Call
378 {0x00, 0x00, 0x00},
379 {0x04, 0x00, 0x19},
380 {0x05, 0x00, 0x43},
381 {0x06, 0x00, 0x01},
382 {0x07, 0x00, 0x00},
383 {0x0C, 0x00, 0x03},
384 {0x0E, 0x00, 0x03},
385 {0x12, 0x00, 0x0F},
386 {0x14, 0x8C, 0x5E},
387 {0x15, 0x24, 0x00},
388 {0x18, 0x00, 0x50},
389 {0x19, 0x00, 0x83},
390 {0x1A, 0x00, 0xF4},
391 {0x1B, 0x00, 0x20},
392 {0x1E, 0x00, 0xA5},
393 {0x1F, 0x00, 0xA5},
394 {0x21, 0x00, 0x00},
395 {0x24, 0x00, 0xC0},
396 {0x25, 0x00, 0xC0},
397 {0x26, 0x00, 0x00},
398 {0x2C, 0x00, 0x05},
399 {0x2D, 0x00, 0x05},
400 {0x2E, 0x00, 0x12},
401 {0x2F, 0x00, 0x12},
402 {0x39, 0x00, 0x39},
403 {0x3A, 0x00, 0xB9},
404 {0x3D, 0x00, 0x00},
405 {0x43, 0x00, 0x03},
406 {0x4B, 0x00, 0x05},
407 {0x4C, 0x00, 0xFD},
408 {0x79, 0x00, 0x09},
409 {0x5A, 0x00, 0xFF},
410 {0x62, 0x00, 0x01},
411 {0x68, 0x00, 0x05},
412 {0x74, 0x00, 0x06},
413 {0x75, 0x07, 0x02},
414 {0x76, 0x00, 0x00},
415 {0x77, 0x0C, 0x00},
416 {0x78, 0x00, 0x05},
417 {0x74, 0x00, 0x07},
418 {0x16, 0x40, 0x0A},
419 {0x16, 0x40, 0x0E},
420 },
421 { // LINEIN_8k_ShortSync_Analog_Bypass
422 {0x00, 0x00, 0x00},
423 {0x04, 0x00, 0x19},
424 {0x05, 0x00, 0x43},
425 {0x06, 0x00, 0x00},
426 {0x07, 0x00, 0x00},
427 {0x0C, 0x00, 0x03},
428 {0x0E, 0x00, 0x03},
429 {0x12, 0x00, 0x0F},
430 {0x14, 0x8C, 0x5E},
431 {0x15, 0x24, 0x00},
432 {0x18, 0x00, 0x50},
433 {0x19, 0x00, 0x83},
434 {0x1A, 0x00, 0xF4},
435 {0x1B, 0x00, 0x20},
436 {0x1E, 0x00, 0xA5},
437 {0x1F, 0x00, 0xA5},
438 {0x21, 0x00, 0x00},
439 {0x24, 0x00, 0xC0},
440 {0x25, 0x00, 0xC0},
441 {0x26, 0x00, 0x00},
442 {0x2C, 0x00, 0x05},
443 {0x2D, 0x00, 0x05},
444 {0x2E, 0x00, 0x00},
445 {0x2F, 0x00, 0x00},
446 {0x39, 0x00, 0x39},
447 {0x3A, 0x00, 0xB9},
448 {0x3D, 0x00, 0x0F},
449 {0x43, 0x00, 0x03},
450 {0x4B, 0x00, 0x05},
451 {0x4C, 0x00, 0xFD},
452 {0x79, 0x00, 0x09},
453 {0x5A, 0x00, 0xFF},
454 {0x62, 0x00, 0x01},
455 {0x68, 0x00, 0x05},
456 {0x74, 0x00, 0x06},
457 {0x75, 0x07, 0x02},
458 {0x76, 0x00, 0x00},
459 {0x77, 0x0C, 0x00},
460 {0x78, 0x00, 0x05},
461 {0x74, 0x00, 0x07},
462 {0x16, 0x40, 0x0A},
463 {0x16, 0x40, 0x0E},
464 },
465 { // LINEIN_8k_ShortSync_Digital_Loopback
466 {0x00, 0x00, 0x00},
467 {0x04, 0x00, 0x19},
468 {0x05, 0x00, 0x43},
469 {0x06, 0x00, 0x00},
470 {0x07, 0x00, 0x00},
471 {0x0C, 0x00, 0x03},
472 {0x0E, 0x00, 0x03},
473 {0x12, 0x00, 0x0F},
474 {0x14, 0x8C, 0x5E},
475 {0x15, 0x24, 0x00},
476 {0x18, 0x01, 0x50},
477 {0x19, 0x00, 0x83},
478 {0x1A, 0x00, 0xF4},
479 {0x1B, 0x00, 0x20},
480 {0x1E, 0x00, 0xA5},
481 {0x1F, 0x00, 0xA5},
482 {0x21, 0x00, 0x00},
483 {0x24, 0x00, 0xC0},
484 {0x25, 0x00, 0xC0},
485 {0x26, 0x00, 0x00},
486 {0x2C, 0x00, 0x05},
487 {0x2D, 0x00, 0x05},
488 {0x2E, 0x00, 0x00},
489 {0x2F, 0x00, 0x00},
490 {0x39, 0x00, 0x39},
491 {0x3A, 0x00, 0xB9},
492 {0x3D, 0x00, 0x00},
493 {0x43, 0x00, 0x03},
494 {0x4B, 0x00, 0x05},
495 {0x4C, 0x00, 0xFD},
496 {0x79, 0x00, 0x09},
497 {0x5A, 0x00, 0xFF},
498 {0x62, 0x00, 0x01},
499 {0x68, 0x00, 0x05},
500 {0x74, 0x00, 0x06},
501 {0x75, 0x07, 0x02},
502 {0x76, 0x00, 0x00},
503 {0x77, 0x0C, 0x00},
504 {0x78, 0x00, 0x05},
505 {0x74, 0x00, 0x07},
506 {0x16, 0x40, 0x0A},
507 {0x16, 0x40, 0x0E},
508 },
509 { // LINEIN_8k_ShortSync_Phone_Call
510 {0x00, 0x00, 0x00},
511 {0x04, 0x00, 0x19},
512 {0x05, 0x00, 0x43},
513 {0x06, 0x00, 0x00},
514 {0x07, 0x00, 0x00},
515 {0x0C, 0x00, 0x03},
516 {0x0E, 0x00, 0x03},
517 {0x12, 0x00, 0x0F},
518 {0x14, 0x8C, 0x5E},
519 {0x15, 0x24, 0x00},
520 {0x18, 0x00, 0x50},
521 {0x19, 0x00, 0x83},
522 {0x1A, 0x00, 0xF4},
523 {0x1B, 0x00, 0x20},
524 {0x1E, 0x00, 0xA5},
525 {0x1F, 0x00, 0xA5},
526 {0x21, 0x00, 0x00},
527 {0x24, 0x00, 0xC0},
528 {0x25, 0x00, 0xC0},
529 {0x26, 0x00, 0x00},
530 {0x2C, 0x00, 0x05},
531 {0x2D, 0x00, 0x05},
532 {0x2E, 0x00, 0x00},
533 {0x2F, 0x00, 0x00},
534 {0x39, 0x00, 0x39},
535 {0x3A, 0x00, 0xB9},
536 {0x3D, 0x00, 0x00},
537 {0x43, 0x00, 0x03},
538 {0x4B, 0x00, 0x05},
539 {0x4C, 0x00, 0xFD},
540 {0x79, 0x00, 0x09},
541 {0x5A, 0x00, 0xFF},
542 {0x62, 0x00, 0x01},
543 {0x68, 0x00, 0x05},
544 {0x74, 0x00, 0x06},
545 {0x75, 0x07, 0x02},
546 {0x76, 0x00, 0x00},
547 {0x77, 0x0C, 0x00},
548 {0x78, 0x00, 0x05},
549 {0x74, 0x00, 0x07},
550 {0x16, 0x40, 0x0A},
551 {0x16, 0x40, 0x0E},
552 },
553 { // MIC_16k_LongSync_Analog_Bypass
554 {0x00, 0x00, 0x00},
555 {0x04, 0x00, 0x19},
556 {0x05, 0x00, 0x43},
557 {0x06, 0x00, 0x00},
558 {0x07, 0x00, 0x00},
559 {0x0C, 0x00, 0x03},
560 {0x0E, 0x00, 0x03},
561 {0x12, 0x00, 0x0F},
562 {0x14, 0x8C, 0x5E},
563 {0x15, 0x18, 0x02},
564 {0x18, 0x00, 0x50},
565 {0x19, 0x00, 0x93},
566 {0x1A, 0x00, 0xF4},
567 {0x1B, 0x00, 0x20},
568 {0x1E, 0x00, 0xA5},
569 {0x1F, 0x00, 0xA5},
570 {0x21, 0x00, 0x00},
571 {0x24, 0x00, 0xC0},
572 {0x25, 0x00, 0xC0},
573 {0x26, 0x00, 0x00},
574 {0x2C, 0x00, 0x05},
575 {0x2D, 0x00, 0x05},
576 {0x2E, 0x00, 0x12},
577 {0x2F, 0x00, 0x12},
578 {0x39, 0x00, 0x39},
579 {0x3A, 0x00, 0xB9},
580 {0x3D, 0x00, 0x0F},
581 {0x43, 0x00, 0x03},
582 {0x4B, 0x00, 0x05},
583 {0x4C, 0x00, 0xFD},
584 {0x79, 0x00, 0x09},
585 {0x5A, 0x00, 0xFF},
586 {0x62, 0x00, 0x01},
587 {0x68, 0x00, 0x05},
588 {0x74, 0x00, 0x06},
589 {0x75, 0x07, 0x01},
590 {0x76, 0x00, 0x00},
591 {0x77, 0x0C, 0x00},
592 {0x78, 0x00, 0x05},
593 {0x74, 0x00, 0x07},
594 {0x16, 0x40, 0x0A},
595 {0x16, 0x40, 0x0E},
596 },
597 { // MIC_16k_LongSync_Digital_Loopback
598 {0x00, 0x00, 0x00},
599 {0x04, 0x00, 0x19},
600 {0x05, 0x00, 0x43},
601 {0x06, 0x00, 0x01},
602 {0x07, 0x00, 0x00},
603 {0x0C, 0x00, 0x03},
604 {0x0E, 0x00, 0x03},
605 {0x12, 0x00, 0x0F},
606 {0x14, 0x8C, 0x5E},
607 {0x15, 0x18, 0x02},
608 {0x18, 0x01, 0x50},
609 {0x19, 0x00, 0x93},
610 {0x1A, 0x00, 0xF4},
611 {0x1B, 0x00, 0x20},
612 {0x1E, 0x00, 0xA5},
613 {0x1F, 0x00, 0xA5},
614 {0x21, 0x00, 0x00},
615 {0x24, 0x00, 0xC0},
616 {0x25, 0x00, 0xC0},
617 {0x26, 0x00, 0x00},
618 {0x2C, 0x00, 0x05},
619 {0x2D, 0x00, 0x05},
620 {0x2E, 0x00, 0x12},
621 {0x2F, 0x00, 0x12},
622 {0x39, 0x00, 0x39},
623 {0x3A, 0x00, 0xB9},
624 {0x3D, 0x00, 0x00},
625 {0x43, 0x00, 0x03},
626 {0x4B, 0x00, 0x05},
627 {0x4C, 0x00, 0xFD},
628 {0x79, 0x00, 0x09},
629 {0x5A, 0x00, 0xFF},
630 {0x62, 0x00, 0x01},
631 {0x68, 0x00, 0x05},
632 {0x74, 0x00, 0x06},
633 {0x75, 0x07, 0x01},
634 {0x76, 0x00, 0x00},
635 {0x77, 0x0C, 0x00},
636 {0x78, 0x00, 0x05},
637 {0x74, 0x00, 0x07},
638 {0x16, 0x40, 0x0A},
639 {0x16, 0x40, 0x0E},
640 },
641 { // MIC_16k_LongSync_Phone_Call
642 {0x00, 0x00, 0x00},
643 {0x04, 0x00, 0x19},
644 {0x05, 0x00, 0x43},
645 {0x06, 0x00, 0x01},
646 {0x07, 0x00, 0x00},
647 {0x0C, 0x00, 0x03},
648 {0x0E, 0x00, 0x03},
649 {0x12, 0x00, 0x0F},
650 {0x14, 0x8C, 0x5E},
651 {0x15, 0x18, 0x02},
652 {0x18, 0x00, 0x50},
653 {0x19, 0x00, 0x93},
654 {0x1A, 0x00, 0xF4},
655 {0x1B, 0x00, 0x20},
656 {0x1E, 0x00, 0xA5},
657 {0x1F, 0x00, 0xA5},
658 {0x21, 0x00, 0x00},
659 {0x24, 0x00, 0xC0},
660 {0x25, 0x00, 0xC0},
661 {0x26, 0x00, 0x00},
662 {0x2C, 0x00, 0x05},
663 {0x2D, 0x00, 0x05},
664 {0x2E, 0x00, 0x12},
665 {0x2F, 0x00, 0x12},
666 {0x39, 0x00, 0x39},
667 {0x3A, 0x00, 0xB9},
668 {0x3D, 0x00, 0x00},
669 {0x43, 0x00, 0x03},
670 {0x4B, 0x00, 0x05},
671 {0x4C, 0x00, 0xFD},
672 {0x79, 0x00, 0x09},
673 {0x5A, 0x00, 0xFF},
674 {0x62, 0x00, 0x01},
675 {0x68, 0x00, 0x05},
676 {0x74, 0x00, 0x06},
677 {0x75, 0x07, 0x01},
678 {0x76, 0x00, 0x00},
679 {0x77, 0x0C, 0x00},
680 {0x78, 0x00, 0x05},
681 {0x74, 0x00, 0x07},
682 {0x16, 0x40, 0x0A},
683 {0x16, 0x40, 0x0E},
684 },
685 { // LINEIN_16k_LongSync_Analog_Bypass
686 {0x00, 0x00, 0x00},
687 {0x04, 0x00, 0x19},
688 {0x05, 0x00, 0x43},
689 {0x06, 0x00, 0x00},
690 {0x07, 0x00, 0x00},
691 {0x0C, 0x00, 0x03},
692 {0x0E, 0x00, 0x03},
693 {0x12, 0x00, 0x0F},
694 {0x14, 0x8C, 0x5E},
695 {0x15, 0x18, 0x02},
696 {0x18, 0x00, 0x50},
697 {0x19, 0x00, 0x93},
698 {0x1A, 0x00, 0xF4},
699 {0x1B, 0x00, 0x20},
700 {0x1E, 0x00, 0xA5},
701 {0x1F, 0x00, 0xA5},
702 {0x21, 0x00, 0x00},
703 {0x24, 0x00, 0xC0},
704 {0x25, 0x00, 0xC0},
705 {0x26, 0x00, 0x00},
706 {0x2C, 0x00, 0x05},
707 {0x2D, 0x00, 0x05},
708 {0x2E, 0x00, 0x00},
709 {0x2F, 0x00, 0x00},
710 {0x39, 0x00, 0x39},
711 {0x3A, 0x00, 0xB9},
712 {0x3D, 0x00, 0x0F},
713 {0x43, 0x00, 0x03},
714 {0x4B, 0x00, 0x05},
715 {0x4C, 0x00, 0xFD},
716 {0x79, 0x00, 0x09},
717 {0x5A, 0x00, 0xFF},
718 {0x62, 0x00, 0x01},
719 {0x68, 0x00, 0x05},
720 {0x74, 0x00, 0x06},
721 {0x75, 0x07, 0x01},
722 {0x76, 0x00, 0x00},
723 {0x77, 0x0C, 0x00},
724 {0x78, 0x00, 0x05},
725 {0x74, 0x00, 0x07},
726 {0x16, 0x40, 0x0A},
727 {0x16, 0x40, 0x0E},
728 },
729 { // LINEIN_16k_LongSync_Digital_Loopback
730 {0x00, 0x00, 0x00},
731 {0x04, 0x00, 0x19},
732 {0x05, 0x00, 0x43},
733 {0x06, 0x00, 0x00},
734 {0x07, 0x00, 0x00},
735 {0x0C, 0x00, 0x03},
736 {0x0E, 0x00, 0x03},
737 {0x12, 0x00, 0x0F},
738 {0x14, 0x8C, 0x5E},
739 {0x15, 0x18, 0x02},
740 {0x18, 0x01, 0x50},
741 {0x19, 0x00, 0x93},
742 {0x1A, 0x00, 0xF4},
743 {0x1B, 0x00, 0x20},
744 {0x1E, 0x00, 0xA5},
745 {0x1F, 0x00, 0xA5},
746 {0x21, 0x00, 0x00},
747 {0x24, 0x00, 0xC0},
748 {0x25, 0x00, 0xC0},
749 {0x26, 0x00, 0x00},
750 {0x2C, 0x00, 0x05},
751 {0x2D, 0x00, 0x05},
752 {0x2E, 0x00, 0x00},
753 {0x2F, 0x00, 0x00},
754 {0x39, 0x00, 0x39},
755 {0x3A, 0x00, 0xB9},
756 {0x3D, 0x00, 0x00},
757 {0x43, 0x00, 0x03},
758 {0x4B, 0x00, 0x05},
759 {0x4C, 0x00, 0xFD},
760 {0x79, 0x00, 0x09},
761 {0x5A, 0x00, 0xFF},
762 {0x62, 0x00, 0x01},
763 {0x68, 0x00, 0x05},
764 {0x74, 0x00, 0x06},
765 {0x75, 0x07, 0x01},
766 {0x76, 0x00, 0x00},
767 {0x77, 0x0C, 0x00},
768 {0x78, 0x00, 0x05},
769 {0x74, 0x00, 0x07},
770 {0x16, 0x40, 0x0A},
771 {0x16, 0x40, 0x0E},
772 },
773 { // LINEIN_16k_LongSync_Phone_Call
774 {0x00, 0x00, 0x00},
775 {0x04, 0x00, 0x19},
776 {0x05, 0x00, 0x43},
777 {0x06, 0x00, 0x00},
778 {0x07, 0x00, 0x00},
779 {0x0C, 0x00, 0x03},
780 {0x0E, 0x00, 0x03},
781 {0x12, 0x00, 0x0F},
782 {0x14, 0x8C, 0x5E},
783 {0x15, 0x18, 0x02},
784 {0x18, 0x00, 0x50},
785 {0x19, 0x00, 0x93},
786 {0x1A, 0x00, 0xF4},
787 {0x1B, 0x00, 0x20},
788 {0x1E, 0x00, 0xA5},
789 {0x1F, 0x00, 0xA5},
790 {0x21, 0x00, 0x00},
791 {0x24, 0x00, 0xC0},
792 {0x25, 0x00, 0xC0},
793 {0x26, 0x00, 0x00},
794 {0x2C, 0x00, 0x05},
795 {0x2D, 0x00, 0x05},
796 {0x2E, 0x00, 0x00},
797 {0x2F, 0x00, 0x00},
798 {0x39, 0x00, 0x39},
799 {0x3A, 0x00, 0xB9},
800 {0x3D, 0x00, 0x00},
801 {0x43, 0x00, 0x03},
802 {0x4B, 0x00, 0x05},
803 {0x4C, 0x00, 0xFD},
804 {0x79, 0x00, 0x09},
805 {0x5A, 0x00, 0xFF},
806 {0x62, 0x00, 0x01},
807 {0x68, 0x00, 0x05},
808 {0x74, 0x00, 0x06},
809 {0x75, 0x07, 0x01},
810 {0x76, 0x00, 0x00},
811 {0x77, 0x0C, 0x00},
812 {0x78, 0x00, 0x05},
813 {0x74, 0x00, 0x07},
814 {0x16, 0x40, 0x0A},
815 {0x16, 0x40, 0x0E},
816 },
817 { // MIC_16k_ShortSync_Analog_Bypass
818 {0x00, 0x00, 0x00},
819 {0x04, 0x00, 0x19},
820 {0x05, 0x00, 0x43},
821 {0x06, 0x00, 0x00},
822 {0x07, 0x00, 0x00},
823 {0x0C, 0x00, 0x03},
824 {0x0E, 0x00, 0x03},
825 {0x12, 0x00, 0x0F},
826 {0x14, 0x8C, 0x5E},
827 {0x15, 0x18, 0x02},
828 {0x18, 0x00, 0x50},
829 {0x19, 0x00, 0x83},
830 {0x1A, 0x00, 0xF4},
831 {0x1B, 0x00, 0x20},
832 {0x1E, 0x00, 0xA5},
833 {0x1F, 0x00, 0xA5},
834 {0x21, 0x00, 0x00},
835 {0x24, 0x00, 0xC0},
836 {0x25, 0x00, 0xC0},
837 {0x26, 0x00, 0x00},
838 {0x2C, 0x00, 0x05},
839 {0x2D, 0x00, 0x05},
840 {0x2E, 0x00, 0x12},
841 {0x2F, 0x00, 0x12},
842 {0x39, 0x00, 0x39},
843 {0x3A, 0x00, 0xB9},
844 {0x3D, 0x00, 0x0F},
845 {0x43, 0x00, 0x03},
846 {0x4B, 0x00, 0x05},
847 {0x4C, 0x00, 0xFD},
848 {0x79, 0x00, 0x09},
849 {0x5A, 0x00, 0xFF},
850 {0x62, 0x00, 0x01},
851 {0x68, 0x00, 0x05},
852 {0x74, 0x00, 0x06},
853 {0x75, 0x07, 0x01},
854 {0x76, 0x00, 0x00},
855 {0x77, 0x0C, 0x00},
856 {0x78, 0x00, 0x05},
857 {0x74, 0x00, 0x07},
858 {0x16, 0x40, 0x0A},
859 {0x16, 0x40, 0x0E},
860 },
861 { // MIC_16k_ShortSync_Digital_Loopback
862 {0x00, 0x00, 0x00},
863 {0x04, 0x00, 0x19},
864 {0x05, 0x00, 0x43},
865 {0x06, 0x00, 0x01},
866 {0x07, 0x00, 0x00},
867 {0x0C, 0x00, 0x03},
868 {0x0E, 0x00, 0x03},
869 {0x12, 0x00, 0x0F},
870 {0x14, 0x8C, 0x5E},
871 {0x15, 0x18, 0x02},
872 {0x18, 0x01, 0x50},
873 {0x19, 0x00, 0x83},
874 {0x1A, 0x00, 0xF4},
875 {0x1B, 0x00, 0x20},
876 {0x1E, 0x00, 0xA5},
877 {0x1F, 0x00, 0xA5},
878 {0x21, 0x00, 0x00},
879 {0x24, 0x00, 0xC0},
880 {0x25, 0x00, 0xC0},
881 {0x26, 0x00, 0x00},
882 {0x2C, 0x00, 0x05},
883 {0x2D, 0x00, 0x05},
884 {0x2E, 0x00, 0x12},
885 {0x2F, 0x00, 0x12},
886 {0x39, 0x00, 0x39},
887 {0x3A, 0x00, 0xB9},
888 {0x3D, 0x00, 0x00},
889 {0x43, 0x00, 0x03},
890 {0x4B, 0x00, 0x05},
891 {0x4C, 0x00, 0xFD},
892 {0x79, 0x00, 0x09},
893 {0x5A, 0x00, 0xFF},
894 {0x62, 0x00, 0x01},
895 {0x68, 0x00, 0x05},
896 {0x74, 0x00, 0x06},
897 {0x75, 0x07, 0x01},
898 {0x76, 0x00, 0x00},
899 {0x77, 0x0C, 0x00},
900 {0x78, 0x00, 0x05},
901 {0x74, 0x00, 0x07},
902 {0x16, 0x40, 0x0A},
903 {0x16, 0x40, 0x0E},
904 },
905 { // MIC_16k_ShortSync_Phone_Call
906 {0x00, 0x00, 0x00},
907 {0x04, 0x00, 0x19},
908 {0x05, 0x00, 0x43},
909 {0x06, 0x00, 0x01},
910 {0x07, 0x00, 0x00},
911 {0x0C, 0x00, 0x03},
912 {0x0E, 0x00, 0x03},
913 {0x12, 0x00, 0x0F},
914 {0x14, 0x8C, 0x5E},
915 {0x15, 0x18, 0x02},
916 {0x18, 0x00, 0x50},
917 {0x19, 0x00, 0x83},
918 {0x1A, 0x00, 0xF4},
919 {0x1B, 0x00, 0x20},
920 {0x1E, 0x00, 0xA5},
921 {0x1F, 0x00, 0xA5},
922 {0x21, 0x00, 0x00},
923 {0x24, 0x00, 0xC0},
924 {0x25, 0x00, 0xC0},
925 {0x26, 0x00, 0x00},
926 {0x2C, 0x00, 0x05},
927 {0x2D, 0x00, 0x05},
928 {0x2E, 0x00, 0x12},
929 {0x2F, 0x00, 0x12},
930 {0x39, 0x00, 0x39},
931 {0x3A, 0x00, 0xB9},
932 {0x3D, 0x00, 0x00},
933 {0x43, 0x00, 0x03},
934 {0x4B, 0x00, 0x05},
935 {0x4C, 0x00, 0xFD},
936 {0x79, 0x00, 0x09},
937 {0x5A, 0x00, 0xFF},
938 {0x62, 0x00, 0x01},
939 {0x68, 0x00, 0x05},
940 {0x74, 0x00, 0x06},
941 {0x75, 0x07, 0x01},
942 {0x76, 0x00, 0x00},
943 {0x77, 0x0C, 0x00},
944 {0x78, 0x00, 0x05},
945 {0x74, 0x00, 0x07},
946 {0x16, 0x40, 0x0A},
947 {0x16, 0x40, 0x0E},
948 },
949 { // LINEIN_16k_ShortSync_Analog_Bypass
950 {0x00, 0x00, 0x00},
951 {0x04, 0x00, 0x19},
952 {0x05, 0x00, 0x43},
953 {0x06, 0x00, 0x00},
954 {0x07, 0x00, 0x00},
955 {0x0C, 0x00, 0x03},
956 {0x0E, 0x00, 0x03},
957 {0x12, 0x00, 0x0F},
958 {0x14, 0x8C, 0x5E},
959 {0x15, 0x18, 0x02},
960 {0x18, 0x00, 0x50},
961 {0x19, 0x00, 0x83},
962 {0x1A, 0x00, 0xF4},
963 {0x1B, 0x00, 0x20},
964 {0x1E, 0x00, 0xA5},
965 {0x1F, 0x00, 0xA5},
966 {0x21, 0x00, 0x00},
967 {0x24, 0x00, 0xC0},
968 {0x25, 0x00, 0xC0},
969 {0x26, 0x00, 0x00},
970 {0x2C, 0x00, 0x05},
971 {0x2D, 0x00, 0x05},
972 {0x2E, 0x00, 0x00},
973 {0x2F, 0x00, 0x00},
974 {0x39, 0x00, 0x39},
975 {0x3A, 0x00, 0xB9},
976 {0x3D, 0x00, 0x0F},
977 {0x43, 0x00, 0x03},
978 {0x4B, 0x00, 0x05},
979 {0x4C, 0x00, 0xFD},
980 {0x79, 0x00, 0x09},
981 {0x5A, 0x00, 0xFF},
982 {0x62, 0x00, 0x01},
983 {0x68, 0x00, 0x05},
984 {0x74, 0x00, 0x06},
985 {0x75, 0x07, 0x01},
986 {0x76, 0x00, 0x00},
987 {0x77, 0x0C, 0x00},
988 {0x78, 0x00, 0x05},
989 {0x74, 0x00, 0x07},
990 {0x16, 0x40, 0x0A},
991 {0x16, 0x40, 0x0E},
992 },
993 { // LINEIN_16k_ShortSync_Digital_Loopback
994 {0x00, 0x00, 0x00},
995 {0x04, 0x00, 0x19},
996 {0x05, 0x00, 0x43},
997 {0x06, 0x00, 0x00},
998 {0x07, 0x00, 0x00},
999 {0x0C, 0x00, 0x03},
1000 {0x0E, 0x00, 0x03},
1001 {0x12, 0x00, 0x0F},
1002 {0x14, 0x8C, 0x5E},
1003 {0x15, 0x18, 0x02},
1004 {0x18, 0x01, 0x50},
1005 {0x19, 0x00, 0x83},
1006 {0x1A, 0x00, 0xF4},
1007 {0x1B, 0x00, 0x20},
1008 {0x1E, 0x00, 0xA5},
1009 {0x1F, 0x00, 0xA5},
1010 {0x21, 0x00, 0x00},
1011 {0x24, 0x00, 0xC0},
1012 {0x25, 0x00, 0xC0},
1013 {0x26, 0x00, 0x00},
1014 {0x2C, 0x00, 0x05},
1015 {0x2D, 0x00, 0x05},
1016 {0x2E, 0x00, 0x00},
1017 {0x2F, 0x00, 0x00},
1018 {0x39, 0x00, 0x39},
1019 {0x3A, 0x00, 0xB9},
1020 {0x3D, 0x00, 0x00},
1021 {0x43, 0x00, 0x03},
1022 {0x4B, 0x00, 0x05},
1023 {0x4C, 0x00, 0xFD},
1024 {0x79, 0x00, 0x09},
1025 {0x5A, 0x00, 0xFF},
1026 {0x62, 0x00, 0x01},
1027 {0x68, 0x00, 0x05},
1028 {0x74, 0x00, 0x06},
1029 {0x75, 0x07, 0x01},
1030 {0x76, 0x00, 0x00},
1031 {0x77, 0x0C, 0x00},
1032 {0x78, 0x00, 0x05},
1033 {0x74, 0x00, 0x07},
1034 {0x16, 0x40, 0x0A},
1035 {0x16, 0x40, 0x0E},
1036 },
1037 { // LINEIN_16k_ShortSync_Phone_Call
1038 {0x00, 0x00, 0x00},
1039 {0x04, 0x00, 0x19},
1040 {0x05, 0x00, 0x43},
1041 {0x06, 0x00, 0x00},
1042 {0x07, 0x00, 0x00},
1043 {0x0C, 0x00, 0x03},
1044 {0x0E, 0x00, 0x03},
1045 {0x12, 0x00, 0x0F},
1046 {0x14, 0x8C, 0x5E},
1047 {0x15, 0x18, 0x02},
1048 {0x18, 0x00, 0x50},
1049 {0x19, 0x00, 0x83},
1050 {0x1A, 0x00, 0xF4},
1051 {0x1B, 0x00, 0x20},
1052 {0x1E, 0x00, 0xA5},
1053 {0x1F, 0x00, 0xA5},
1054 {0x21, 0x00, 0x00},
1055 {0x24, 0x00, 0xC0},
1056 {0x25, 0x00, 0xC0},
1057 {0x26, 0x00, 0x00},
1058 {0x2C, 0x00, 0x05},
1059 {0x2D, 0x00, 0x05},
1060 {0x2E, 0x00, 0x00},
1061 {0x2F, 0x00, 0x00},
1062 {0x39, 0x00, 0x39},
1063 {0x3A, 0x00, 0xB9},
1064 {0x3D, 0x00, 0x00},
1065 {0x43, 0x00, 0x03},
1066 {0x4B, 0x00, 0x05},
1067 {0x4C, 0x00, 0xFD},
1068 {0x79, 0x00, 0x09},
1069 {0x5A, 0x00, 0xFF},
1070 {0x62, 0x00, 0x01},
1071 {0x68, 0x00, 0x05},
1072 {0x74, 0x00, 0x06},
1073 {0x75, 0x07, 0x01},
1074 {0x76, 0x00, 0x00},
1075 {0x77, 0x0C, 0x00},
1076 {0x78, 0x00, 0x05},
1077 {0x74, 0x00, 0x07},
1078 {0x16, 0x40, 0x0A},
1079 {0x16, 0x40, 0x0E},
1080 },
1081};
1082
1083
1084
1085void Config_WM8904(kal_int32 tab)
1086{
1087 if(tab==-1)
1088 return;
1089
1090 kal_prompt_trace (MOD_L1SP,"[Scholar]Config_WM8904 with table : %d", tab);
1091 kal_prompt_trace (MOD_L1SP,"[Scholar]Base Address : %d", i2c_write_register_table);
1092
1093 // For I2C control (SCL, SDA)
1094 // GPIO 70 71
1095 // SCL
1096 *(volatile uint16 *)(0xA0070100) |= 0x0040; // GPIO DIR : 70
1097 *(volatile uint16 *)(0xA0070300) |= 0x0040; // GPIO PULLEN : 70
1098 *(volatile uint16 *)(0xA0070500) |= 0x0040; // GPIO PULLSEL : 70
1099 *(volatile uint16 *)(0xA0070700) &= ~0x0040; // GPIO DINV : 70
1100 *(volatile uint16 *)(0xA0072100) &= ~0x0F00; // GPIO MODE : 70
1101 *(volatile uint16 *)(0xA0072100) |= 0x0100; // GPIO MODE :70
1102
1103 // SDA
1104 *(volatile uint16 *)(0xA0070100) |= 0x0080; // GPIO DIR : 71
1105 *(volatile uint16 *)(0xA0070300) |= 0x0080; // GPIO PULLEN : 71
1106 *(volatile uint16 *)(0xA0070500) |= 0x0080; // GPIO PULLSEL : 71
1107 *(volatile uint16 *)(0xA0070700) &= ~0x0080; // GPIO DINV : 71
1108 *(volatile uint16 *)(0xA0072100) &= ~0xF000; // GPIO MODE : 71
1109 *(volatile uint16 *)(0xA0072100) |= 0x1000; // GPIO MODE : 71
1110
1111 if (is_dvt_initialized == KAL_FALSE)
1112 {
1113 DclSI2C_Initialize();
1114 is_dvt_initialized = KAL_TRUE;
1115 }
1116
1117 if (wm8904_i2c_handle == 0)
1118 {
1119 wm8904_i2c_handle = DclSI2C_Open(DCL_I2C, DCL_I2C_OWNER_AUDIO);
1120
1121 ASSERT(wm8904_i2c_handle != DCL_HANDLE_INVALID);
1122 ASSERT(wm8904_i2c_handle != DCL_HANDLE_OCCUPIED);
1123 }
1124
1125 wm8904_i2c_ctrl_para.eOwner = DCL_I2C_OWNER_AUDIO;
1126 wm8904_i2c_ctrl_para.fgGetHandleWait = KAL_TRUE;
1127 wm8904_i2c_ctrl_para.u1SlaveAddress = 0x34;
1128 wm8904_i2c_ctrl_para.u1DelayLen = 0;
1129 wm8904_i2c_ctrl_para.eTransactionMode = DCL_I2C_TRANSACTION_FAST_MODE;
1130 wm8904_i2c_ctrl_para.u4FastModeSpeed = 300;
1131 wm8904_i2c_ctrl_para.u4HSModeSpeed = 0;
1132 wm8904_i2c_ctrl_para.fgEnableDMA = KAL_FALSE;
1133
1134 {
1135 DCL_STATUS_T rt;
1136
1137 rt = DclSI2C_Configure(wm8904_i2c_handle, (DCL_CONFIGURE_T *)&wm8904_i2c_ctrl_para);
1138
1139 if (STATUS_OK != rt)
1140 {
1141 kal_prompt_trace (MOD_L1SP,"[Scholar]I2C configuration status not ok: %d", rt);
1142 // ASSERT(0);
1143 return;
1144 }
1145 }
1146
1147
1148 {
1149 kal_int32 i;
1150
1151 for (i = 0; i < NUM_WRITE_I2C_SINGLE_REG; i++)
1152 {
1153 { // Write I2C
1154 DCL_STATUS_T rt;
1155 I2C_CTRL_SINGLE_WRITE_T write_data;
1156
1157 kal_prompt_trace (MOD_L1SP,"[Scholar]I2C single write: %d, %d, %d", i2c_write_register_table[tab][i][0], i2c_write_register_table[tab][i][1], i2c_write_register_table[tab][i][2]);
1158
1159 write_data.pu1Data = (DCL_UINT8 *)i2c_write_register_table[tab][i];
1160 write_data.u4DataLen = LEN_WRITE_I2C_SINGLE_REG;
1161 rt = DclSI2C_Control(wm8904_i2c_handle, I2C_CMD_SINGLE_WRITE, (DCL_CTRL_DATA_T *)&write_data);
1162 if (STATUS_OK != rt)
1163 {
1164 kal_prompt_trace (MOD_L1SP,"[Scholar]After single write, I2C status not ok: %d", rt);
1165 // ASSERT(0);
1166 }
1167 }
1168
1169 { // Write and read I2C
1170 DCL_STATUS_T rt;
1171 I2C_CTRL_WRITE_AND_READE_T write_n_read;
1172 kal_uint8 i2c_register_buffer[2] = {0};
1173
1174 write_n_read.pu1InData = (DCL_UINT8 *)i2c_register_buffer;
1175 write_n_read.u4InDataLen = LEN_READ_I2C_SINGLE_OUT;
1176 write_n_read.pu1OutData = (DCL_UINT8 *)i2c_write_register_table[tab][i];
1177 write_n_read.u4OutDataLen = LEN_READ_I2C_SINGLE_REG;
1178 rt = DclSI2C_Control(wm8904_i2c_handle, I2C_CMD_WRITE_AND_READ, (DCL_CTRL_DATA_T *)&write_n_read);
1179 if (STATUS_OK != rt)
1180 {
1181 kal_prompt_trace (MOD_L1SP,"[Scholar]After write and read, I2C status not ok: %d", rt);
1182 // ASSERT(0);
1183 return;
1184 }
1185
1186 kal_prompt_trace (MOD_L1SP,"[Scholar]I2C read back : %d, %d", i2c_register_buffer[0], i2c_register_buffer[1]);
1187 }
1188 }
1189 }
1190}
1191
1192
1193#endif // CONNECT_WM8904
1194