import PULS_20160108
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / sound / soc / mediatek / mt_soc_audio_v2 / mt_soc_machine.c
1 /*
2 * Copyright (C) 2007 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16 /*******************************************************************************
17 *
18 * Filename:
19 * ---------
20 * mt_soc_machine.c
21 *
22 * Project:
23 * --------
24 * Audio soc machine driver
25 *
26 * Description:
27 * ------------
28 * Audio machine driver
29 *
30 * Author:
31 * -------
32 * Chipeng Chang
33 *
34 *------------------------------------------------------------------------------
35 * $Revision: #1 $
36 * $Modtime:$
37 * $Log:$
38 *
39 *
40 *******************************************************************************/
41
42
43 /*****************************************************************************
44 * C O M P I L E R F L A G S
45 *****************************************************************************/
46
47
48 /*****************************************************************************
49 * E X T E R N A L R E F E R E N C E S
50 *****************************************************************************/
51
52 #define CONFIG_MTK_DEEP_IDLE
53 #ifdef CONFIG_MTK_DEEP_IDLE
54 #include <mach/mt_idle.h>
55 #endif
56
57 #include "AudDrv_Common.h"
58 #include "AudDrv_Def.h"
59 #include "AudDrv_Afe.h"
60 #include "AudDrv_Ana.h"
61 #include "AudDrv_Clk.h"
62 #include "AudDrv_Kernel.h"
63 #include "mt_soc_afe_control.h"
64
65 //#include <mach/mt_clkbuf_ctl.h>
66 #include <sound/mt_soc_audio.h>
67
68 #include <linux/kernel.h>
69 #include <linux/module.h>
70 #include <linux/init.h>
71 #include <linux/device.h>
72 #include <linux/slab.h>
73 #include <linux/fs.h>
74 #include <linux/completion.h>
75 #include <linux/mm.h>
76 #include <linux/delay.h>
77 #include <linux/interrupt.h>
78 #include <linux/dma-mapping.h>
79 #include <linux/vmalloc.h>
80 #include <linux/platform_device.h>
81 #include <linux/miscdevice.h>
82 #include <linux/wait.h>
83 #include <linux/spinlock.h>
84 #include <linux/sched.h>
85 #include <linux/wakelock.h>
86 #include <linux/semaphore.h>
87 #include <linux/jiffies.h>
88 #include <linux/proc_fs.h>
89 #include <linux/string.h>
90 #include <linux/mutex.h>
91 #include <linux/xlog.h>
92 #include <mach/irqs.h>
93 #include <asm/uaccess.h>
94 #include <asm/irq.h>
95 #include <asm/io.h>
96 #include <mach/mt_reg_base.h>
97 #include <asm/div64.h>
98 #include <linux/aee.h>
99 #include <mach/pmic_mt6325_sw.h>
100 #include <mach/upmu_common.h>
101 #include <mach/upmu_hw.h>
102 #include <mach/mt_gpio.h>
103 #include <mach/mt_typedefs.h>
104 #include <stdarg.h>
105 #include <linux/module.h>
106
107 #include <linux/clk.h>
108 #include <linux/delay.h>
109 #include <linux/gpio.h>
110 #include <linux/mfd/pm8xxx/pm8921.h>
111 #include <linux/platform_device.h>
112 #include <linux/mfd/pm8xxx/pm8921.h>
113 #include <linux/slab.h>
114 #include <sound/core.h>
115 #include <sound/soc.h>
116 #include <sound/soc-dapm.h>
117 #include <sound/pcm.h>
118 #include <sound/jack.h>
119 //#include <asm/mach-types.h>
120 #include <linux/debugfs.h>
121 #include "mt_soc_codec_63xx.h"
122
123 static int mt_soc_lowjitter_control = 0;
124 static struct dentry *mt_sco_audio_debugfs;
125 #define DEBUG_FS_NAME "mtksocaudio"
126 #define DEBUG_ANA_FS_NAME "mtksocanaaudio"
127
128 extern void Sound_Speaker_Turnon(void);
129 extern void Sound_Speaker_Turnoff(void);
130
131 static int mtmachine_startup(struct snd_pcm_substream *substream)
132 {
133 //printk("mtmachine_startup \n");
134 return 0;
135 }
136
137 static int mtmachine_prepare(struct snd_pcm_substream *substream)
138 {
139 //printk("mtmachine_prepare \n");
140 return 0;
141 }
142
143 static struct snd_soc_ops mt_machine_audio_ops =
144 {
145 .startup = mtmachine_startup,
146 .prepare = mtmachine_prepare,
147 };
148
149 static int mtmachine_startupmedia2(struct snd_pcm_substream *substream)
150 {
151 //printk("mtmachine_startupmedia2 \n");
152 return 0;
153 }
154
155 static int mtmachine_preparemedia2(struct snd_pcm_substream *substream)
156 {
157 //printk("mtmachine_preparemedia2 \n");
158 return 0;
159 }
160
161 static struct snd_soc_ops mtmachine_audio_ops2 =
162 {
163 .startup = mtmachine_startupmedia2,
164 .prepare = mtmachine_preparemedia2,
165 };
166
167 static int mt_soc_audio_init(struct snd_soc_pcm_runtime *rtd)
168 {
169 printk("mt_soc_audio_init\n");
170 return 0;
171 }
172
173 static int mt_soc_audio_init2(struct snd_soc_pcm_runtime *rtd)
174 {
175 printk("mt_soc_audio_init2\n");
176 return 0;
177 }
178
179 static int mt_soc_ana_debug_open(struct inode *inode, struct file *file)
180 {
181 printk("mt_soc_ana_debug_open \n");
182 return 0;
183 }
184
185 static ssize_t mt_soc_ana_debug_read(struct file *file, char __user *buf,
186 size_t count, loff_t *pos)
187 {
188 const int size = 4096;
189 char buffer[size];
190 int n = 0;
191 printk("mt_soc_ana_debug_read count = %zu\n", count);
192 AudDrv_Clk_On();
193 audckbufEnable(true);
194
195 n += scnprintf(buffer + n, size - n, "AFE_UL_DL_CON0 = 0x%x\n", Ana_Get_Reg(AFE_UL_DL_CON0));
196 n += scnprintf(buffer + n, size - n, "AFE_DL_SRC2_CON0_H = 0x%x\n", Ana_Get_Reg(AFE_DL_SRC2_CON0_H));
197 n += scnprintf(buffer + n, size - n, "AFE_DL_SRC2_CON0_L = 0x%x\n", Ana_Get_Reg(AFE_DL_SRC2_CON0_L));
198 n += scnprintf(buffer + n, size - n, "AFE_DL_SDM_CON0 = 0x%x\n", Ana_Get_Reg(AFE_DL_SDM_CON0));
199 n += scnprintf(buffer + n, size - n, "AFE_DL_SDM_CON1 = 0x%x\n", Ana_Get_Reg(AFE_DL_SDM_CON1));
200 n += scnprintf(buffer + n, size - n, "AFE_UL_SRC0_CON0_H = 0x%x\n", Ana_Get_Reg(AFE_UL_SRC0_CON0_H));
201 n += scnprintf(buffer + n, size - n, "AFE_UL_SRC0_CON0_L = 0x%x\n", Ana_Get_Reg(AFE_UL_SRC0_CON0_L));
202 n += scnprintf(buffer + n, size - n, "AFE_UL_SRC1_CON0_H = 0x%x\n", Ana_Get_Reg(AFE_UL_SRC1_CON0_H));
203 n += scnprintf(buffer + n, size - n, "AFE_UL_SRC1_CON0_L = 0x%x\n", Ana_Get_Reg(AFE_UL_SRC1_CON0_L));
204 n += scnprintf(buffer + n, size - n, "PMIC_AFE_TOP_CON0 = 0x%x\n", Ana_Get_Reg(PMIC_AFE_TOP_CON0));
205 n += scnprintf(buffer + n, size - n, "AFE_AUDIO_TOP_CON0 = 0x%x\n", Ana_Get_Reg(AFE_AUDIO_TOP_CON0));
206 n += scnprintf(buffer + n, size - n, "PMIC_AFE_TOP_CON0 = 0x%x\n", Ana_Get_Reg(PMIC_AFE_TOP_CON0));
207 n += scnprintf(buffer + n, size - n, "AFE_DL_SRC_MON0 = 0x%x\n", Ana_Get_Reg(AFE_DL_SRC_MON0));
208 n += scnprintf(buffer + n, size - n, "AFE_DL_SDM_TEST0 = 0x%x\n", Ana_Get_Reg(AFE_DL_SDM_TEST0));
209 n += scnprintf(buffer + n, size - n, "AFE_MON_DEBUG0 = 0x%x\n", Ana_Get_Reg(AFE_MON_DEBUG0));
210 n += scnprintf(buffer + n, size - n, "AFUNC_AUD_CON0 = 0x%x\n", Ana_Get_Reg(AFUNC_AUD_CON0));
211 n += scnprintf(buffer + n, size - n, "AFUNC_AUD_CON1 = 0x%x\n", Ana_Get_Reg(AFUNC_AUD_CON1));
212 n += scnprintf(buffer + n, size - n, "AFUNC_AUD_CON2 = 0x%x\n", Ana_Get_Reg(AFUNC_AUD_CON2));
213 n += scnprintf(buffer + n, size - n, "AFUNC_AUD_CON3 = 0x%x\n", Ana_Get_Reg(AFUNC_AUD_CON3));
214 n += scnprintf(buffer + n, size - n, "AFUNC_AUD_CON4 = 0x%x\n", Ana_Get_Reg(AFUNC_AUD_CON4));
215 n += scnprintf(buffer + n, size - n, "AFUNC_AUD_MON0 = 0x%x\n", Ana_Get_Reg(AFUNC_AUD_MON0));
216 n += scnprintf(buffer + n, size - n, "AFUNC_AUD_MON1 = 0x%x\n", Ana_Get_Reg(AFUNC_AUD_MON1));
217 n += scnprintf(buffer + n, size - n, "AUDRC_TUNE_MON0 = 0x%x\n", Ana_Get_Reg(AUDRC_TUNE_MON0));
218 n += scnprintf(buffer + n, size - n, "AFE_UP8X_FIFO_CFG0 = 0x%x\n", Ana_Get_Reg(AFE_UP8X_FIFO_CFG0));
219 n += scnprintf(buffer + n, size - n, "AFE_UP8X_FIFO_LOG_MON0 = 0x%x\n", Ana_Get_Reg(AFE_UP8X_FIFO_LOG_MON0));
220 n += scnprintf(buffer + n, size - n, "AFE_UP8X_FIFO_LOG_MON1 = 0x%x\n", Ana_Get_Reg(AFE_UP8X_FIFO_LOG_MON1));
221 n += scnprintf(buffer + n, size - n, "AFE_DL_DC_COMP_CFG0 = 0x%x\n", Ana_Get_Reg(AFE_DL_DC_COMP_CFG0));
222 n += scnprintf(buffer + n, size - n, "AFE_DL_DC_COMP_CFG1 = 0x%x\n", Ana_Get_Reg(AFE_DL_DC_COMP_CFG1));
223 n += scnprintf(buffer + n, size - n, "AFE_DL_DC_COMP_CFG2 = 0x%x\n", Ana_Get_Reg(AFE_DL_DC_COMP_CFG2));
224 n += scnprintf(buffer + n, size - n, "AFE_PMIC_NEWIF_CFG0 = 0x%x\n", Ana_Get_Reg(AFE_PMIC_NEWIF_CFG0));
225 n += scnprintf(buffer + n, size - n, "AFE_PMIC_NEWIF_CFG1 = 0x%x\n", Ana_Get_Reg(AFE_PMIC_NEWIF_CFG1));
226 n += scnprintf(buffer + n, size - n, "AFE_PMIC_NEWIF_CFG2 = 0x%x\n", Ana_Get_Reg(AFE_PMIC_NEWIF_CFG2));
227 n += scnprintf(buffer + n, size - n, "AFE_PMIC_NEWIF_CFG3 = 0x%x\n", Ana_Get_Reg(AFE_PMIC_NEWIF_CFG3));
228 n += scnprintf(buffer + n, size - n, "AFE_SGEN_CFG0 = 0x%x\n", Ana_Get_Reg(AFE_SGEN_CFG0));
229 n += scnprintf(buffer + n, size - n, "AFE_SGEN_CFG1 = 0x%x\n", Ana_Get_Reg(AFE_SGEN_CFG1));
230 n += scnprintf(buffer + n, size - n, "AFE_VOW_TOP = 0x%x\n", Ana_Get_Reg(AFE_VOW_TOP));
231 n += scnprintf(buffer + n, size - n, "AFE_VOW_CFG0 = 0x%x\n", Ana_Get_Reg(AFE_VOW_CFG0));
232 n += scnprintf(buffer + n, size - n, "AFE_VOW_CFG1 = 0x%x\n", Ana_Get_Reg(AFE_VOW_CFG1));
233 n += scnprintf(buffer + n, size - n, "AFE_VOW_CFG2 = 0x%x\n", Ana_Get_Reg(AFE_VOW_CFG2));
234 n += scnprintf(buffer + n, size - n, "AFE_VOW_CFG3 = 0x%x\n", Ana_Get_Reg(AFE_VOW_CFG3));
235 n += scnprintf(buffer + n, size - n, "AFE_VOW_CFG4 = 0x%x\n", Ana_Get_Reg(AFE_VOW_CFG4));
236 n += scnprintf(buffer + n, size - n, "AFE_VOW_CFG5 = 0x%x\n", Ana_Get_Reg(AFE_VOW_CFG5));
237 n += scnprintf(buffer + n, size - n, "AFE_VOW_MON0 = 0x%x\n", Ana_Get_Reg(AFE_VOW_MON0));
238 n += scnprintf(buffer + n, size - n, "AFE_VOW_MON1 = 0x%x\n", Ana_Get_Reg(AFE_VOW_MON1));
239 n += scnprintf(buffer + n, size - n, "AFE_VOW_MON2 = 0x%x\n", Ana_Get_Reg(AFE_VOW_MON2));
240 n += scnprintf(buffer + n, size - n, "AFE_VOW_MON3 = 0x%x\n", Ana_Get_Reg(AFE_VOW_MON3));
241 n += scnprintf(buffer + n, size - n, "AFE_VOW_MON4 = 0x%x\n", Ana_Get_Reg(AFE_VOW_MON4));
242 n += scnprintf(buffer + n, size - n, "AFE_VOW_MON5 = 0x%x\n", Ana_Get_Reg(AFE_VOW_MON5));
243
244 n += scnprintf(buffer + n, size - n, "AFE_DCCLK_CFG0 = 0x%x\n", Ana_Get_Reg(AFE_DCCLK_CFG0));
245 n += scnprintf(buffer + n, size - n, "AFE_DCCLK_CFG1 = 0x%x\n", Ana_Get_Reg(AFE_DCCLK_CFG1));
246
247 n += scnprintf(buffer + n, size - n, "TOP_CON = 0x%x\n", Ana_Get_Reg(TOP_CON));
248 n += scnprintf(buffer + n, size - n, "TOP_STATUS = 0x%x\n", Ana_Get_Reg(TOP_STATUS));
249 n += scnprintf(buffer + n, size - n, "TOP_CKPDN_CON0 = 0x%x\n", Ana_Get_Reg(TOP_CKPDN_CON0));
250 n += scnprintf(buffer + n, size - n, "TOP_CKPDN_CON1 = 0x%x\n", Ana_Get_Reg(TOP_CKPDN_CON1));
251 n += scnprintf(buffer + n, size - n, "TOP_CKPDN_CON2 = 0x%x\n", Ana_Get_Reg(TOP_CKPDN_CON2));
252 n += scnprintf(buffer + n, size - n, "TOP_CKPDN_CON3 = 0x%x\n", Ana_Get_Reg(TOP_CKPDN_CON3));
253 n += scnprintf(buffer + n, size - n, "TOP_CKSEL_CON0 = 0x%x\n", Ana_Get_Reg(TOP_CKSEL_CON0));
254 n += scnprintf(buffer + n, size - n, "TOP_CKSEL_CON1 = 0x%x\n", Ana_Get_Reg(TOP_CKSEL_CON1));
255 n += scnprintf(buffer + n, size - n, "TOP_CKSEL_CON2 = 0x%x\n", Ana_Get_Reg(TOP_CKSEL_CON2));
256 n += scnprintf(buffer + n, size - n, "TOP_CKDIVSEL_CON = 0x%x\n", Ana_Get_Reg(TOP_CKDIVSEL_CON));
257 n += scnprintf(buffer + n, size - n, "TOP_CKHWEN_CON = 0x%x\n", Ana_Get_Reg(TOP_CKHWEN_CON));
258 n += scnprintf(buffer + n, size - n, "TOP_CKTST_CON0 = 0x%x\n", Ana_Get_Reg(TOP_CKTST_CON0));
259 n += scnprintf(buffer + n, size - n, "TOP_CKTST_CON1 = 0x%x\n", Ana_Get_Reg(TOP_CKTST_CON1));
260 n += scnprintf(buffer + n, size - n, "TOP_CKTST_CON2 = 0x%x\n", Ana_Get_Reg(TOP_CKTST_CON2));
261 n += scnprintf(buffer + n, size - n, "TOP_CLKSQ = 0x%x\n", Ana_Get_Reg(TOP_CLKSQ));
262 n += scnprintf(buffer + n, size - n, "TOP_RST_CON0 = 0x%x\n", Ana_Get_Reg(TOP_RST_CON0));
263 n += scnprintf(buffer + n, size - n, "ZCD_CON0 = 0x%x\n", Ana_Get_Reg(ZCD_CON0));
264 n += scnprintf(buffer + n, size - n, "ZCD_CON1 = 0x%x\n", Ana_Get_Reg(ZCD_CON1));
265 n += scnprintf(buffer + n, size - n, "ZCD_CON2 = 0x%x\n", Ana_Get_Reg(ZCD_CON2));
266 n += scnprintf(buffer + n, size - n, "ZCD_CON3 = 0x%x\n", Ana_Get_Reg(ZCD_CON3));
267 n += scnprintf(buffer + n, size - n, "ZCD_CON4 = 0x%x\n", Ana_Get_Reg(ZCD_CON4));
268 n += scnprintf(buffer + n, size - n, "ZCD_CON5 = 0x%x\n", Ana_Get_Reg(ZCD_CON5));
269 n += scnprintf(buffer + n, size - n, "LDO_CON1 = 0x%x\n", Ana_Get_Reg(LDO_CON1));
270 n += scnprintf(buffer + n, size - n, "LDO_CON2 = 0x%x\n", Ana_Get_Reg(LDO_CON2));
271
272 n += scnprintf(buffer + n, size - n, "LDO_VCON1 = 0x%x\n", Ana_Get_Reg(LDO_VCON1));
273 n += scnprintf(buffer + n, size - n, "SPK_CON0 = 0x%x\n", Ana_Get_Reg(SPK_CON0));
274 n += scnprintf(buffer + n, size - n, "SPK_CON1 = 0x%x\n", Ana_Get_Reg(SPK_CON1));
275 n += scnprintf(buffer + n, size - n, "SPK_CON2 = 0x%x\n", Ana_Get_Reg(SPK_CON2));
276 n += scnprintf(buffer + n, size - n, "SPK_CON3 = 0x%x\n", Ana_Get_Reg(SPK_CON3));
277 n += scnprintf(buffer + n, size - n, "SPK_CON4 = 0x%x\n", Ana_Get_Reg(SPK_CON4));
278 n += scnprintf(buffer + n, size - n, "SPK_CON5 = 0x%x\n", Ana_Get_Reg(SPK_CON5));
279 n += scnprintf(buffer + n, size - n, "SPK_CON6 = 0x%x\n", Ana_Get_Reg(SPK_CON6));
280 n += scnprintf(buffer + n, size - n, "SPK_CON7 = 0x%x\n", Ana_Get_Reg(SPK_CON7));
281 n += scnprintf(buffer + n, size - n, "SPK_CON8 = 0x%x\n", Ana_Get_Reg(SPK_CON8));
282 n += scnprintf(buffer + n, size - n, "SPK_CON9 = 0x%x\n", Ana_Get_Reg(SPK_CON9));
283 n += scnprintf(buffer + n, size - n, "SPK_CON10 = 0x%x\n", Ana_Get_Reg(SPK_CON10));
284 n += scnprintf(buffer + n, size - n, "SPK_CON11 = 0x%x\n", Ana_Get_Reg(SPK_CON11));
285 n += scnprintf(buffer + n, size - n, "SPK_CON12 = 0x%x\n", Ana_Get_Reg(SPK_CON12));
286 n += scnprintf(buffer + n, size - n, "SPK_CON13 = 0x%x\n", Ana_Get_Reg(SPK_CON13));
287 n += scnprintf(buffer + n, size - n, "SPK_CON14 = 0x%x\n", Ana_Get_Reg(SPK_CON14));
288 n += scnprintf(buffer + n, size - n, "SPK_CON15 = 0x%x\n", Ana_Get_Reg(SPK_CON15));
289 n += scnprintf(buffer + n, size - n, "SPK_CON16 = 0x%x\n", Ana_Get_Reg(SPK_CON16));
290 n += scnprintf(buffer + n, size - n, "SPK_ANA_CON0 = 0x%x\n", Ana_Get_Reg(SPK_ANA_CON0));
291 n += scnprintf(buffer + n, size - n, "SPK_ANA_CON1 = 0x%x\n", Ana_Get_Reg(SPK_ANA_CON1));
292 n += scnprintf(buffer + n, size - n, "SPK_ANA_CON3 = 0x%x\n", Ana_Get_Reg(SPK_ANA_CON3));
293 n += scnprintf(buffer + n, size - n, "AUDDEC_ANA_CON0 = 0x%x\n", Ana_Get_Reg(AUDDEC_ANA_CON0));
294 n += scnprintf(buffer + n, size - n, "AUDDEC_ANA_CON1 = 0x%x\n", Ana_Get_Reg(AUDDEC_ANA_CON1));
295 n += scnprintf(buffer + n, size - n, "AUDDEC_ANA_CON2 = 0x%x\n", Ana_Get_Reg(AUDDEC_ANA_CON2));
296 n += scnprintf(buffer + n, size - n, "AUDDEC_ANA_CON3 = 0x%x\n", Ana_Get_Reg(AUDDEC_ANA_CON3));
297 n += scnprintf(buffer + n, size - n, "AUDDEC_ANA_CON4 = 0x%x\n", Ana_Get_Reg(AUDDEC_ANA_CON4));
298 n += scnprintf(buffer + n, size - n, "AUDDEC_ANA_CON5 = 0x%x\n", Ana_Get_Reg(AUDDEC_ANA_CON5));
299 n += scnprintf(buffer + n, size - n, "AUDDEC_ANA_CON6 = 0x%x\n", Ana_Get_Reg(AUDDEC_ANA_CON6));
300 n += scnprintf(buffer + n, size - n, "AUDDEC_ANA_CON7 = 0x%x\n", Ana_Get_Reg(AUDDEC_ANA_CON7));
301 n += scnprintf(buffer + n, size - n, "AUDDEC_ANA_CON8 = 0x%x\n", Ana_Get_Reg(AUDDEC_ANA_CON8));
302
303 n += scnprintf(buffer + n, size - n, "AUDENC_ANA_CON0 = 0x%x\n", Ana_Get_Reg(AUDENC_ANA_CON0));
304 n += scnprintf(buffer + n, size - n, "AUDENC_ANA_CON1 = 0x%x\n", Ana_Get_Reg(AUDENC_ANA_CON1));
305 n += scnprintf(buffer + n, size - n, "AUDENC_ANA_CON2 = 0x%x\n", Ana_Get_Reg(AUDENC_ANA_CON2));
306 n += scnprintf(buffer + n, size - n, "AUDENC_ANA_CON3 = 0x%x\n", Ana_Get_Reg(AUDENC_ANA_CON3));
307 n += scnprintf(buffer + n, size - n, "AUDENC_ANA_CON4 = 0x%x\n", Ana_Get_Reg(AUDENC_ANA_CON4));
308 n += scnprintf(buffer + n, size - n, "AUDENC_ANA_CON5 = 0x%x\n", Ana_Get_Reg(AUDENC_ANA_CON5));
309 n += scnprintf(buffer + n, size - n, "AUDENC_ANA_CON6 = 0x%x\n", Ana_Get_Reg(AUDENC_ANA_CON6));
310 n += scnprintf(buffer + n, size - n, "AUDENC_ANA_CON7 = 0x%x\n", Ana_Get_Reg(AUDENC_ANA_CON7));
311 n += scnprintf(buffer + n, size - n, "AUDENC_ANA_CON8 = 0x%x\n", Ana_Get_Reg(AUDENC_ANA_CON8));
312 n += scnprintf(buffer + n, size - n, "AUDENC_ANA_CON9 = 0x%x\n", Ana_Get_Reg(AUDENC_ANA_CON9));
313 n += scnprintf(buffer + n, size - n, "AUDENC_ANA_CON11 = 0x%x\n", Ana_Get_Reg(AUDENC_ANA_CON11));
314 n += scnprintf(buffer + n, size - n, "AUDENC_ANA_CON12 = 0x%x\n", Ana_Get_Reg(AUDENC_ANA_CON12));
315 n += scnprintf(buffer + n, size - n, "AUDENC_ANA_CON13 = 0x%x\n", Ana_Get_Reg(AUDENC_ANA_CON13));
316 n += scnprintf(buffer + n, size - n, "AUDENC_ANA_CON14 = 0x%x\n", Ana_Get_Reg(AUDENC_ANA_CON14));
317 n += scnprintf(buffer + n, size - n, "AUDENC_ANA_CON15 = 0x%x\n", Ana_Get_Reg(AUDENC_ANA_CON15));
318
319 n += scnprintf(buffer + n, size - n, "AUDNCP_CLKDIV_CON0 = 0x%x\n", Ana_Get_Reg(AUDNCP_CLKDIV_CON0));
320 n += scnprintf(buffer + n, size - n, "AUDNCP_CLKDIV_CON1 = 0x%x\n", Ana_Get_Reg(AUDNCP_CLKDIV_CON1));
321 n += scnprintf(buffer + n, size - n, "AUDNCP_CLKDIV_CON2 = 0x%x\n", Ana_Get_Reg(AUDNCP_CLKDIV_CON2));
322 n += scnprintf(buffer + n, size - n, "AUDNCP_CLKDIV_CON3 = 0x%x\n", Ana_Get_Reg(AUDNCP_CLKDIV_CON3));
323 n += scnprintf(buffer + n, size - n, "AUDNCP_CLKDIV_CON4 = 0x%x\n", Ana_Get_Reg(AUDNCP_CLKDIV_CON4));
324
325 n += scnprintf(buffer + n, size - n, "TOP_CKPDN_CON0 = 0x%x\n", Ana_Get_Reg(TOP_CKPDN_CON0));
326 n += scnprintf(buffer + n, size - n, "GPIO_MODE3 = 0x%x\n", Ana_Get_Reg(GPIO_MODE3));
327 n += scnprintf(buffer + n, size - n, "AFE_VOW_POSDIV_CFG0 = 0x%x\n", Ana_Get_Reg(AFE_VOW_POSDIV_CFG0));
328 printk("mt_soc_ana_debug_read len = %d\n", n);
329
330 audckbufEnable(false);
331 AudDrv_Clk_Off();
332
333 return simple_read_from_buffer(buf, count, pos, buffer, n);
334 }
335
336
337 static int mt_soc_debug_open(struct inode *inode, struct file *file)
338 {
339 printk("mt_soc_debug_open \n");
340 return 0;
341 }
342
343 static ssize_t mt_soc_debug_read(struct file *file, char __user *buf,
344 size_t count, loff_t *pos)
345 {
346 const int size = 4096;
347 char buffer[size];
348 int n = 0;
349 AudDrv_Clk_On();
350
351 printk("mt_soc_debug_read\n");
352 n = scnprintf(buffer + n, size - n, "AUDIO_TOP_CON0 = 0x%x\n", Afe_Get_Reg(AUDIO_TOP_CON0));
353 n += scnprintf(buffer + n, size - n, "AUDIO_TOP_CON1 = 0x%x\n", Afe_Get_Reg(AUDIO_TOP_CON1));
354 n += scnprintf(buffer + n, size - n, "AUDIO_TOP_CON2 = 0x%x\n", Afe_Get_Reg(AUDIO_TOP_CON2));
355 n += scnprintf(buffer + n, size - n, "AUDIO_TOP_CON3 = 0x%x\n", Afe_Get_Reg(AUDIO_TOP_CON3));
356 n += scnprintf(buffer + n, size - n, "AFE_DAC_CON0 = 0x%x\n", Afe_Get_Reg(AFE_DAC_CON0));
357 n += scnprintf(buffer + n, size - n, "AFE_DAC_CON1 = 0x%x\n", Afe_Get_Reg(AFE_DAC_CON1));
358 n += scnprintf(buffer + n, size - n, "AFE_I2S_CON = 0x%x\n", Afe_Get_Reg(AFE_I2S_CON));
359 n += scnprintf(buffer + n, size - n, "AFE_DAIBT_CON0 = 0x%x\n", Afe_Get_Reg(AFE_DAIBT_CON0));
360
361 n += scnprintf(buffer + n, size - n, "AFE_CONN0 = 0x%x\n", Afe_Get_Reg(AFE_CONN0));
362 n += scnprintf(buffer + n, size - n, "AFE_CONN1 = 0x%x\n", Afe_Get_Reg(AFE_CONN1));
363 n += scnprintf(buffer + n, size - n, "AFE_CONN2 = 0x%x\n", Afe_Get_Reg(AFE_CONN2));
364 n += scnprintf(buffer + n, size - n, "AFE_CONN3 = 0x%x\n", Afe_Get_Reg(AFE_CONN3));
365 n += scnprintf(buffer + n, size - n, "AFE_CONN4 = 0x%x\n", Afe_Get_Reg(AFE_CONN4));
366 n += scnprintf(buffer + n, size - n, "AFE_I2S_CON1 = 0x%x\n", Afe_Get_Reg(AFE_I2S_CON1));
367 n += scnprintf(buffer + n, size - n, "AFE_I2S_CON2 = 0x%x\n", Afe_Get_Reg(AFE_I2S_CON2));
368 n += scnprintf(buffer + n, size - n, "AFE_MRGIF_CON = 0x%x\n", Afe_Get_Reg(AFE_MRGIF_CON));
369
370 n += scnprintf(buffer + n, size - n, "AFE_DL1_BASE = 0x%x\n", Afe_Get_Reg(AFE_DL1_BASE));
371 n += scnprintf(buffer + n, size - n, "AFE_DL1_CUR = 0x%x\n", Afe_Get_Reg(AFE_DL1_CUR));
372 n += scnprintf(buffer + n, size - n, "AFE_DL1_END = 0x%x\n", Afe_Get_Reg(AFE_DL1_END));
373 n += scnprintf(buffer + n, size - n, "AFE_I2S_CON3 = 0x%x\n", Afe_Get_Reg(AFE_I2S_CON3));
374
375 n += scnprintf(buffer + n, size - n, "AFE_DL2_BASE = 0x%x\n", Afe_Get_Reg(AFE_DL2_BASE));
376 n += scnprintf(buffer + n, size - n, "AFE_DL2_CUR = 0x%x\n", Afe_Get_Reg(AFE_DL2_CUR));
377 n += scnprintf(buffer + n, size - n, "AFE_DL2_END = 0x%x\n", Afe_Get_Reg(AFE_DL2_END));
378 n += scnprintf(buffer + n, size - n, "AFE_CONN5 = 0x%x\n", Afe_Get_Reg(AFE_CONN5));
379 n += scnprintf(buffer + n, size - n, "AFE_CONN_24BIT = 0x%x\n", Afe_Get_Reg(AFE_CONN_24BIT));
380 n += scnprintf(buffer + n, size - n, "AFE_AWB_BASE = 0x%x\n", Afe_Get_Reg(AFE_AWB_BASE));
381 n += scnprintf(buffer + n, size - n, "AFE_AWB_END = 0x%x\n", Afe_Get_Reg(AFE_AWB_END));
382 n += scnprintf(buffer + n, size - n, "AFE_AWB_CUR = 0x%x\n", Afe_Get_Reg(AFE_AWB_CUR));
383 n += scnprintf(buffer + n, size - n, "AFE_VUL_BASE = 0x%x\n", Afe_Get_Reg(AFE_VUL_BASE));
384 n += scnprintf(buffer + n, size - n, "AFE_VUL_END = 0x%x\n", Afe_Get_Reg(AFE_VUL_END));
385 n += scnprintf(buffer + n, size - n, "AFE_VUL_CUR = 0x%x\n", Afe_Get_Reg(AFE_VUL_CUR));
386 n += scnprintf(buffer + n, size - n, "AFE_CONN6 = 0x%x\n", Afe_Get_Reg(AFE_CONN6));
387 n += scnprintf(buffer + n, size - n, "AFE_DAI_BASE = 0x%x\n", Afe_Get_Reg(AFE_DAI_BASE));
388 n += scnprintf(buffer + n, size - n, "AFE_DAI_END = 0x%x\n", Afe_Get_Reg(AFE_DAI_END));
389 n += scnprintf(buffer + n, size - n, "AFE_DAI_CUR = 0x%x\n", Afe_Get_Reg(AFE_DAI_CUR));
390 n += scnprintf(buffer + n, size - n, "AFE_MEMIF_MSB = 0x%x\n", Afe_Get_Reg(AFE_MEMIF_MSB));
391
392 n += scnprintf(buffer + n, size - n, "AFE_MEMIF_MON0 = 0x%x\n", Afe_Get_Reg(AFE_MEMIF_MON0));
393 n += scnprintf(buffer + n, size - n, "AFE_MEMIF_MON1 = 0x%x\n", Afe_Get_Reg(AFE_MEMIF_MON1));
394 n += scnprintf(buffer + n, size - n, "AFE_MEMIF_MON2 = 0x%x\n", Afe_Get_Reg(AFE_MEMIF_MON2));
395 n += scnprintf(buffer + n, size - n, "AFE_MEMIF_MON4 = 0x%x\n", Afe_Get_Reg(AFE_MEMIF_MON4));
396
397 n += scnprintf(buffer + n, size - n, "AFE_ADDA_DL_SRC2_CON0 = 0x%x\n", Afe_Get_Reg(AFE_ADDA_DL_SRC2_CON0));
398 n += scnprintf(buffer + n, size - n, "AFE_ADDA_DL_SRC2_CON1 = 0x%x\n", Afe_Get_Reg(AFE_ADDA_DL_SRC2_CON1));
399 n += scnprintf(buffer + n, size - n, "AFE_ADDA_UL_SRC_CON0 = 0x%x\n", Afe_Get_Reg(AFE_ADDA_UL_SRC_CON0));
400 n += scnprintf(buffer + n, size - n, "AFE_ADDA_UL_SRC_CON1 = 0x%x\n", Afe_Get_Reg(AFE_ADDA_UL_SRC_CON1));
401 n += scnprintf(buffer + n, size - n, "AFE_ADDA_TOP_CON0 = 0x%x\n", Afe_Get_Reg(AFE_ADDA_TOP_CON0));
402 n += scnprintf(buffer + n, size - n, "AFE_ADDA_UL_DL_CON0 = 0x%x\n", Afe_Get_Reg(AFE_ADDA_UL_DL_CON0));
403 n += scnprintf(buffer + n, size - n, "AFE_ADDA_SRC_DEBUG = 0x%x\n", Afe_Get_Reg(AFE_ADDA_SRC_DEBUG));
404 n += scnprintf(buffer + n, size - n, "AFE_ADDA_SRC_DEBUG_MON0 = 0x%x\n", Afe_Get_Reg(AFE_ADDA_SRC_DEBUG_MON0));
405 n += scnprintf(buffer + n, size - n, "AFE_ADDA_SRC_DEBUG_MON1 = 0x%x\n", Afe_Get_Reg(AFE_ADDA_SRC_DEBUG_MON1));
406 n += scnprintf(buffer + n, size - n, "AFE_ADDA_NEWIF_CFG0 = 0x%x\n", Afe_Get_Reg(AFE_ADDA_NEWIF_CFG0));
407 n += scnprintf(buffer + n, size - n, "AFE_ADDA_NEWIF_CFG1 = 0x%x\n", Afe_Get_Reg(AFE_ADDA_NEWIF_CFG1));
408
409 n += scnprintf(buffer + n, size - n, "AFE_SIDETONE_DEBUG = 0x%x\n", Afe_Get_Reg(AFE_SIDETONE_DEBUG));
410 n += scnprintf(buffer + n, size - n, "AFE_SIDETONE_MON = 0x%x\n", Afe_Get_Reg(AFE_SIDETONE_MON));
411 n += scnprintf(buffer + n, size - n, "AFE_SIDETONE_CON0 = 0x%x\n", Afe_Get_Reg(AFE_SIDETONE_CON0));
412 n += scnprintf(buffer + n, size - n, "AFE_SIDETONE_COEFF = 0x%x\n", Afe_Get_Reg(AFE_SIDETONE_COEFF));
413 n += scnprintf(buffer + n, size - n, "AFE_SIDETONE_CON1 = 0x%x\n", Afe_Get_Reg(AFE_SIDETONE_CON1));
414 n += scnprintf(buffer + n, size - n, "AFE_SIDETONE_GAIN = 0x%x\n", Afe_Get_Reg(AFE_SIDETONE_GAIN));
415 n += scnprintf(buffer + n, size - n, "AFE_SGEN_CON0 = 0x%x\n", Afe_Get_Reg(AFE_SGEN_CON0));
416 n += scnprintf(buffer + n, size - n, "AFE_TOP_CON0 = 0x%x\n", Afe_Get_Reg(AFE_TOP_CON0));
417
418 n += scnprintf(buffer + n, size - n, "AFE_ADDA_PREDIS_CON0 = 0x%x\n", Afe_Get_Reg(AFE_ADDA_PREDIS_CON0));
419 n += scnprintf(buffer + n, size - n, "AFE_ADDA_PREDIS_CON1 = 0x%x\n", Afe_Get_Reg(AFE_ADDA_PREDIS_CON1));
420
421 n += scnprintf(buffer + n, size - n, "AFE_MRG_MON0 = 0x%x\n", Afe_Get_Reg(AFE_MRGIF_MON0));
422 n += scnprintf(buffer + n, size - n, "AFE_MRG_MON1 = 0x%x\n", Afe_Get_Reg(AFE_MRGIF_MON1));
423 n += scnprintf(buffer + n, size - n, "AFE_MRG_MON2 = 0x%x\n", Afe_Get_Reg(AFE_MRGIF_MON2));
424
425 n += scnprintf(buffer + n, size - n, "AFE_MOD_DAI_BASE = 0x%x\n", Afe_Get_Reg(AFE_MOD_DAI_BASE));
426 n += scnprintf(buffer + n, size - n, "AFE_MOD_DAI_END = 0x%x\n", Afe_Get_Reg(AFE_MOD_DAI_END));
427 n += scnprintf(buffer + n, size - n, "AFE_MOD_DAI_CUR = 0x%x\n", Afe_Get_Reg(AFE_MOD_DAI_CUR));
428
429 n += scnprintf(buffer + n, size - n, "AFE_DL1_D2_BASE = 0x%x\n", Afe_Get_Reg(AFE_DL1_D2_BASE));
430 n += scnprintf(buffer+n,size-n,"AFE_DL1_D2_END = 0x%x\n", Afe_Get_Reg(AFE_DL1_D2_END));
431 n += scnprintf(buffer + n, size - n, "AFE_DL1_D2_CUR = 0x%x\n", Afe_Get_Reg(AFE_DL1_D2_CUR));
432
433 n += scnprintf(buffer + n, size - n, "AFE_VUL_D2_BASE = 0x%x\n", Afe_Get_Reg(AFE_VUL_D2_BASE));
434 n += scnprintf(buffer + n, size - n, "AFE_VUL_D2_END = 0x%x\n", Afe_Get_Reg(AFE_VUL_D2_END));
435 n += scnprintf(buffer + n, size - n, "AFE_VUL_D2_CUR = 0x%x\n", Afe_Get_Reg(AFE_VUL_D2_CUR));
436 n += scnprintf(buffer + n, size - n, "AFE_IRQ_CON = 0x%x\n", Afe_Get_Reg(AFE_IRQ_MCU_CON));
437 n += scnprintf(buffer + n, size - n, "AFE_IRQ_MCU_CON = 0x%x\n", Afe_Get_Reg(AFE_IRQ_MCU_CON));
438 n += scnprintf(buffer + n, size - n, "AFE_IRQ_STATUS = 0x%x\n", Afe_Get_Reg(AFE_IRQ_MCU_STATUS));
439 n += scnprintf(buffer + n, size - n, "AFE_IRQ_CLR = 0x%x\n", Afe_Get_Reg(AFE_IRQ_MCU_CLR));
440 n += scnprintf(buffer + n, size - n, "AFE_IRQ_MCU_CNT1 = 0x%x\n", Afe_Get_Reg(AFE_IRQ_MCU_CNT1));
441 n += scnprintf(buffer + n, size - n, "AFE_IRQ_MCU_CNT2 = 0x%x\n", Afe_Get_Reg(AFE_IRQ_MCU_CNT2));
442 n += scnprintf(buffer + n, size - n, "AFE_IRQ_MCU_EN = 0x%x\n", Afe_Get_Reg(AFE_IRQ_MCU_EN));
443 n += scnprintf(buffer + n, size - n, "AFE_IRQ_MON2 = 0x%x\n", Afe_Get_Reg(AFE_IRQ_MCU_MON2));
444 n += scnprintf(buffer + n, size - n, "AFE_IRQ1_CNT_MON = 0x%x\n", Afe_Get_Reg(AFE_IRQ1_MCU_CNT_MON));
445 n += scnprintf(buffer + n, size - n, "AFE_IRQ2_CNT_MON = 0x%x\n", Afe_Get_Reg(AFE_IRQ2_MCU_CNT_MON));
446 n += scnprintf(buffer + n, size - n, "AFE_IRQ1_EN_CNT_MON = 0x%x\n", Afe_Get_Reg(AFE_IRQ1_MCU_EN_CNT_MON));
447 n += scnprintf(buffer + n, size - n, "AFE_MEMIF_MAXLEN = 0x%x\n", Afe_Get_Reg(AFE_MEMIF_MAXLEN));
448 n += scnprintf(buffer + n, size - n, "AFE_MEMIF_PBUF_SIZE = 0x%x\n", Afe_Get_Reg(AFE_MEMIF_PBUF_SIZE));
449 n += scnprintf(buffer + n, size - n, "AFE_IRQ_MCU_CNT7 = 0x%x\n", Afe_Get_Reg(AFE_IRQ_MCU_CNT7)); // k2 add
450
451 n += scnprintf(buffer + n, size - n, "AFE_APLL1_TUNER_CFG = 0x%x\n", Afe_Get_Reg(AFE_APLL1_TUNER_CFG));
452 n += scnprintf(buffer + n, size - n, "AFE_APLL2_TUNER_CFG = 0x%x\n", Afe_Get_Reg(AFE_APLL2_TUNER_CFG));
453
454 n += scnprintf(buffer + n, size - n, "AFE_GAIN1_CON0 = 0x%x\n", Afe_Get_Reg(AFE_GAIN1_CON0));
455 n += scnprintf(buffer + n, size - n, "AFE_GAIN1_CON1 = 0x%x\n", Afe_Get_Reg(AFE_GAIN1_CON1));
456 n += scnprintf(buffer + n, size - n, "AFE_GAIN1_CON2 = 0x%x\n", Afe_Get_Reg(AFE_GAIN1_CON2));
457 n += scnprintf(buffer + n, size - n, "AFE_GAIN1_CON3 = 0x%x\n", Afe_Get_Reg(AFE_GAIN1_CON3));
458 n += scnprintf(buffer + n, size - n, "AFE_GAIN1_CONN = 0x%x\n", Afe_Get_Reg(AFE_GAIN1_CONN));
459 n += scnprintf(buffer + n, size - n, "AFE_GAIN1_CUR = 0x%x\n", Afe_Get_Reg(AFE_GAIN1_CUR));
460 n += scnprintf(buffer + n, size - n, "AFE_GAIN2_CON0 = 0x%x\n", Afe_Get_Reg(AFE_GAIN2_CON0));
461 n += scnprintf(buffer + n, size - n, "AFE_GAIN2_CON1 = 0x%x\n", Afe_Get_Reg(AFE_GAIN2_CON1));
462 n += scnprintf(buffer + n, size - n, "AFE_GAIN2_CON2 = 0x%x\n", Afe_Get_Reg(AFE_GAIN2_CON2));
463 n += scnprintf(buffer + n, size - n, "AFE_GAIN2_CON3 = 0x%x\n", Afe_Get_Reg(AFE_GAIN2_CON3));
464 n += scnprintf(buffer + n, size - n, "AFE_GAIN2_CONN = 0x%x\n", Afe_Get_Reg(AFE_GAIN2_CONN));
465 n += scnprintf(buffer + n, size - n, "AFE_GAIN2_CUR = 0x%x\n", Afe_Get_Reg(AFE_GAIN2_CUR));
466 n += scnprintf(buffer + n, size - n, "AFE_GAIN2_CONN2 = 0x%x\n", Afe_Get_Reg(AFE_GAIN2_CONN2));
467
468 n += scnprintf(buffer + n, size - n, "FPGA_CFG2 = 0x%x\n", Afe_Get_Reg(FPGA_CFG2));
469 n += scnprintf(buffer + n, size - n, "FPGA_CFG3 = 0x%x\n", Afe_Get_Reg(FPGA_CFG3));
470 n += scnprintf(buffer + n, size - n, "FPGA_CFG0 = 0x%x\n", Afe_Get_Reg(FPGA_CFG0));
471 n += scnprintf(buffer + n, size - n, "FPGA_CFG1 = 0x%x\n", Afe_Get_Reg(FPGA_CFG1));
472 n += scnprintf(buffer + n, size - n, "FPGA_STC = 0x%x\n", Afe_Get_Reg(FPGA_STC));
473
474 n += scnprintf(buffer + n, size - n, "AFE_ASRC_CON0 = 0x%x\n", Afe_Get_Reg(AFE_ASRC_CON0));
475 n += scnprintf(buffer + n, size - n, "AFE_ASRC_CON1 = 0x%x\n", Afe_Get_Reg(AFE_ASRC_CON1));
476 n += scnprintf(buffer + n, size - n, "AFE_ASRC_CON2 = 0x%x\n", Afe_Get_Reg(AFE_ASRC_CON2));
477 n += scnprintf(buffer + n, size - n, "AFE_ASRC_CON3 = 0x%x\n", Afe_Get_Reg(AFE_ASRC_CON3));
478 n += scnprintf(buffer + n, size - n, "AFE_ASRC_CON4 = 0x%x\n", Afe_Get_Reg(AFE_ASRC_CON4));
479 n += scnprintf(buffer + n, size - n, "AFE_ASRC_CON5 = 0x%x\n", Afe_Get_Reg(AFE_ASRC_CON5));
480 n += scnprintf(buffer + n, size - n, "AFE_ASRC_CON6 = 0x%x\n", Afe_Get_Reg(AFE_ASRC_CON6));
481 n += scnprintf(buffer + n, size - n, "AFE_ASRC_CON7 = 0x%x\n", Afe_Get_Reg(AFE_ASRC_CON7));
482 n += scnprintf(buffer + n, size - n, "AFE_ASRC_CON8 = 0x%x\n", Afe_Get_Reg(AFE_ASRC_CON8));
483 n += scnprintf(buffer + n, size - n, "AFE_ASRC_CON9 = 0x%x\n", Afe_Get_Reg(AFE_ASRC_CON9));
484 n += scnprintf(buffer + n, size - n, "AFE_ASRC_CON10 = 0x%x\n", Afe_Get_Reg(AFE_ASRC_CON10));
485 n += scnprintf(buffer + n, size - n, "AFE_ASRC_CON11 = 0x%x\n", Afe_Get_Reg(AFE_ASRC_CON11));
486 n += scnprintf(buffer + n, size - n, "PCM_INTF_CON1 = 0x%x\n", Afe_Get_Reg(PCM_INTF_CON));
487 n += scnprintf(buffer + n, size - n, "PCM_INTF_CON2 = 0x%x\n", Afe_Get_Reg(PCM_INTF_CON2));
488 n += scnprintf(buffer + n, size - n, "PCM2_INTF_CON = 0x%x\n", Afe_Get_Reg(PCM2_INTF_CON));
489
490 n += scnprintf(buffer + n, size - n, "AFE_ASRC_CON13 = 0x%x\n", Afe_Get_Reg(AFE_ASRC_CON13));
491 n += scnprintf(buffer + n, size - n, "AFE_ASRC_CON14 = 0x%x\n", Afe_Get_Reg(AFE_ASRC_CON14));
492 n += scnprintf(buffer + n, size - n, "AFE_ASRC_CON15 = 0x%x\n", Afe_Get_Reg(AFE_ASRC_CON15));
493 n += scnprintf(buffer + n, size - n, "AFE_ASRC_CON16 = 0x%x\n", Afe_Get_Reg(AFE_ASRC_CON16));
494 n += scnprintf(buffer + n, size - n, "AFE_ASRC_CON17 = 0x%x\n", Afe_Get_Reg(AFE_ASRC_CON17));
495 n += scnprintf(buffer + n, size - n, "AFE_ASRC_CON18 = 0x%x\n", Afe_Get_Reg(AFE_ASRC_CON18));
496 n += scnprintf(buffer + n, size - n, "AFE_ASRC_CON19 = 0x%x\n", Afe_Get_Reg(AFE_ASRC_CON19));
497 n += scnprintf(buffer + n, size - n, "AFE_ASRC_CON20 = 0x%x\n", Afe_Get_Reg(AFE_ASRC_CON20));
498 n += scnprintf(buffer + n, size - n, "AFE_ASRC_CON21 = 0x%x\n", Afe_Get_Reg(AFE_ASRC_CON21));
499
500 n += scnprintf(buffer + n, size - n, "AUDIO_CLK_AUDDIV_0 = 0x%x\n", Afe_Get_Reg(AUDIO_CLK_AUDDIV_0));
501 n += scnprintf(buffer + n, size - n, "AUDIO_CLK_AUDDIV_1 = 0x%x\n", Afe_Get_Reg(AUDIO_CLK_AUDDIV_1));
502 n += scnprintf(buffer + n, size - n, "AUDIO_CLK_AUDDIV_2 = 0x%x\n", Afe_Get_Reg(AUDIO_CLK_AUDDIV_2));
503 n += scnprintf(buffer + n, size - n, "AUDIO_CLK_AUDDIV_3 = 0x%x\n", Afe_Get_Reg(AUDIO_CLK_AUDDIV_3));
504
505 n += scnprintf(buffer + n, size - n, "AFE_ASRC4_CON0 = 0x%x\n", Afe_Get_Reg(AFE_ASRC4_CON0));
506 n += scnprintf(buffer + n, size - n, "AFE_ASRC4_CON5 = 0x%x\n", Afe_Get_Reg(AFE_ASRC4_CON5));
507 n += scnprintf(buffer + n, size - n, "AFE_ASRC4_CON6 = 0x%x\n", Afe_Get_Reg(AFE_ASRC4_CON6));
508
509 n += scnprintf(buffer + n, size - n, "AFE_ASRC2_CON0 = 0x%x\n", Afe_Get_Reg(AFE_ASRC2_CON0));
510 n += scnprintf(buffer + n, size - n, "AFE_ASRC2_CON5 = 0x%x\n", Afe_Get_Reg(AFE_ASRC2_CON5));
511 n += scnprintf(buffer + n, size - n, "AFE_ASRC2_CON6 = 0x%x\n", Afe_Get_Reg(AFE_ASRC2_CON6));
512
513 n += scnprintf(buffer + n, size - n, "AFE_ASRC3_CON0 = 0x%x\n", Afe_Get_Reg(AFE_ASRC3_CON0));
514 n += scnprintf(buffer + n, size - n, "AFE_ASRC3_CON5 = 0x%x\n", Afe_Get_Reg(AFE_ASRC3_CON5));
515 n += scnprintf(buffer + n, size - n, "AFE_ASRC3_CON6 = 0x%x\n", Afe_Get_Reg(AFE_ASRC3_CON6));
516
517 // k2 add
518 n += scnprintf(buffer + n, size - n, "AFE_ADDA4_TOP_CON0 = 0x%x\n", Afe_Get_Reg(AFE_ADDA4_TOP_CON0));
519 n += scnprintf(buffer + n, size - n, "AFE_ADDA4_UL_SRC_CON0 = 0x%x\n", Afe_Get_Reg(AFE_ADDA4_UL_SRC_CON0));
520 n += scnprintf(buffer + n, size - n, "AFE_ADDA4_UL_SRC_CON1 = 0x%x\n", Afe_Get_Reg(AFE_ADDA4_UL_SRC_CON1));
521 n += scnprintf(buffer + n, size - n, "AFE_ADDA4_NEWIF_CFG0 = 0x%x\n", Afe_Get_Reg(AFE_ADDA4_NEWIF_CFG0));
522 n += scnprintf(buffer + n, size - n, "AFE_ADDA4_NEWIF_CFG1 = 0x%x\n", Afe_Get_Reg(AFE_ADDA4_NEWIF_CFG1));
523
524 printk("mt_soc_debug_read len = %d\n", n);
525 AudDrv_Clk_Off();
526
527 return simple_read_from_buffer(buf, count, pos, buffer, n);
528 }
529
530 static char ParSetkeyAfe[] = "Setafereg";
531 static char ParSetkeyAna[] = "Setanareg";
532 static char ParSetkeyCfg[] = "Setcfgreg";
533 static char PareGetkeyAfe[] = "Getafereg";
534 static char PareGetkeyAna[] = "Getanareg";
535 //static char ParGetkeyCfg[] = "Getcfgreg";
536 //static char ParSetAddr[] = "regaddr";
537 //static char ParSetValue[] = "regvalue";
538
539 static ssize_t mt_soc_debug_write(struct file *f, const char __user *buf,
540 size_t count, loff_t *offset)
541 {
542 int ret = 0;
543 char InputString[256];
544 char *token1 = NULL ;
545 char *token2 = NULL ;
546 char *token3 = NULL;
547 char *token4 = NULL;
548 char *token5 = NULL;
549 char *temp = NULL;
550
551 long unsigned int regaddr = 0;
552 long unsigned int regvalue = 0;
553 char delim[] = " ,";
554 memset((void *)InputString, 0, 256);
555 if (copy_from_user((InputString), buf, count))
556 {
557 printk("copy_from_user mt_soc_debug_write count = %zu temp = %s\n", count, InputString);
558 }
559 temp = kstrdup(InputString, GFP_KERNEL);
560 printk("copy_from_user mt_soc_debug_write count = %zu temp = %s pointer = %p\n", count, InputString, InputString);
561 token1 = strsep(&temp, delim);
562 printk("token1 \n");
563 printk("token1 = %s\n", token1);
564 token2 = strsep(&temp, delim);
565 printk("token2 = %s\n", token2);
566 token3 = strsep(&temp, delim);
567 printk("token3 = %s\n", token3);
568 token4 = strsep(&temp, delim);
569 printk("token4 = %s\n", token4);
570 token5 = strsep(&temp, delim);
571 printk("token5 = %s\n", token5);
572
573 if (strcmp(token1, ParSetkeyAfe) == 0)
574 {
575 printk("strcmp (token1,ParSetkeyAfe) \n");
576 ret = strict_strtoul(token3, 16, &regaddr);
577 ret = strict_strtoul(token5, 16, &regvalue);
578 printk("%s regaddr = 0x%lu regvalue = 0x%lu\n", ParSetkeyAfe, regaddr, regvalue);
579 Afe_Set_Reg(regaddr, regvalue, 0xffffffff);
580 regvalue = Afe_Get_Reg(regaddr);
581 printk("%s regaddr = 0x%lu regvalue = 0x%lu\n", ParSetkeyAfe, regaddr, regvalue);
582 }
583 if (strcmp(token1, ParSetkeyAna) == 0)
584 {
585 printk("strcmp (token1,ParSetkeyAna)\n");
586 ret = strict_strtoul(token3, 16, &regaddr);
587 ret = strict_strtoul(token5, 16, &regvalue);
588 printk("%s regaddr = 0x%lu regvalue = 0x%lu\n", ParSetkeyAna, regaddr, regvalue);
589 //clk_buf_ctrl(CLK_BUF_AUDIO, true); //k2 need?
590 AudDrv_Clk_On();
591 audckbufEnable(true);
592 Ana_Set_Reg(regaddr, regvalue, 0xffffffff);
593 regvalue = Ana_Get_Reg(regaddr);
594 printk("%s regaddr = 0x%lu regvalue = 0x%lu\n", ParSetkeyAna, regaddr, regvalue);
595 }
596 if (strcmp(token1, ParSetkeyCfg) == 0)
597 {
598 printk("strcmp (token1,ParSetkeyCfg)\n");
599 ret = strict_strtoul(token3, 16, &regaddr);
600 ret = strict_strtoul(token5, 16, &regvalue);
601 printk("%s regaddr = 0x%lu regvalue = 0x%lu\n", ParSetkeyCfg, regaddr, regvalue);
602 SetClkCfg(regaddr, regvalue, 0xffffffff);
603 regvalue = GetClkCfg(regaddr);
604 printk("%s regaddr = 0x%lu regvalue = 0x%lu\n", ParSetkeyCfg, regaddr, regvalue);
605 }
606 if (strcmp(token1, PareGetkeyAfe) == 0)
607 {
608 printk("strcmp (token1,PareGetkeyAfe)\n");
609 ret = strict_strtoul(token3, 16, &regaddr);
610 regvalue = Afe_Get_Reg(regaddr);
611 printk("%s regaddr = 0x%lu regvalue = 0x%lu\n", PareGetkeyAfe, regaddr, regvalue);
612 }
613 if (strcmp(token1, PareGetkeyAna) == 0)
614 {
615 printk("strcmp (token1,PareGetkeyAna)\n");
616 ret = strict_strtoul(token3, 16, &regaddr);
617 regvalue = Ana_Get_Reg(regaddr);
618 printk("%s regaddr = 0x%lu regvalue = 0x%lu\n", PareGetkeyAna, regaddr, regvalue);
619 }
620 return count;
621 }
622
623 static const struct file_operations mtaudio_debug_ops =
624 {
625 .open = mt_soc_debug_open,
626 .read = mt_soc_debug_read,
627 .write = mt_soc_debug_write,
628 };
629
630
631 static const struct file_operations mtaudio_ana_debug_ops =
632 {
633 .open = mt_soc_ana_debug_open,
634 .read = mt_soc_ana_debug_read,
635 };
636
637
638 /* Digital audio interface glue - connects codec <---> CPU */
639 static struct snd_soc_dai_link mt_soc_dai_common[] =
640 {
641 /* FrontEnd DAI Links */
642 {
643 .name = "MultiMedia1",
644 .stream_name = MT_SOC_DL1_STREAM_NAME,
645 .cpu_dai_name = MT_SOC_DL1DAI_NAME,
646 .platform_name = MT_SOC_DL1_PCM,
647 .codec_dai_name = MT_SOC_CODEC_TXDAI_NAME,
648 .codec_name = MT_SOC_CODEC_NAME,
649 .init = mt_soc_audio_init,
650 .ops = &mt_machine_audio_ops,
651 },
652 {
653 .name = "MultiMedia2",
654 .stream_name = MT_SOC_UL1_STREAM_NAME,
655 .cpu_dai_name = MT_SOC_UL1DAI_NAME,
656 .platform_name = MT_SOC_UL1_PCM,
657 .codec_dai_name = MT_SOC_CODEC_RXDAI_NAME,
658 .codec_name = MT_SOC_CODEC_NAME,
659 .init = mt_soc_audio_init,
660 .ops = &mt_machine_audio_ops,
661 },
662 {
663 .name = "Voice_MD1",
664 .stream_name = MT_SOC_VOICE_MD1_STREAM_NAME,
665 .cpu_dai_name = MT_SOC_VOICE_MD1_NAME,
666 .platform_name = MT_SOC_VOICE_MD1,
667 .codec_dai_name = MT_SOC_CODEC_VOICE_MD1DAI_NAME,
668 .codec_name = MT_SOC_CODEC_NAME,
669 .init = mt_soc_audio_init,
670 .ops = &mt_machine_audio_ops,
671 },
672 {
673 .name = "HDMI_OUT",
674 .stream_name = MT_SOC_HDMI_STREAM_NAME,
675 .cpu_dai_name = MT_SOC_HDMI_NAME,
676 .platform_name = MT_SOC_HDMI_PCM,
677 .codec_dai_name = MT_SOC_CODEC_HDMI_DUMMY_DAI_NAME,
678 .codec_name = MT_SOC_CODEC_DUMMY_NAME,
679 .init = mt_soc_audio_init,
680 .ops = &mt_machine_audio_ops,
681 },
682 {
683 .name = "ULDLOOPBACK",
684 .stream_name = MT_SOC_ULDLLOOPBACK_STREAM_NAME,
685 .cpu_dai_name = MT_SOC_ULDLLOOPBACK_NAME,
686 .platform_name = MT_SOC_ULDLLOOPBACK_PCM,
687 .codec_dai_name = MT_SOC_CODEC_ULDLLOOPBACK_NAME,
688 .codec_name = MT_SOC_CODEC_NAME,
689 .init = mt_soc_audio_init,
690 .ops = &mt_machine_audio_ops,
691 },
692 {
693 .name = "I2S0OUTPUT",
694 .stream_name = MT_SOC_I2S0_STREAM_NAME,
695 .cpu_dai_name = MT_SOC_I2S0_NAME,
696 .platform_name = MT_SOC_I2S0_PCM,
697 .codec_dai_name = MT_SOC_CODEC_I2S0_DUMMY_DAI_NAME,
698 .codec_name = MT_SOC_CODEC_DUMMY_NAME,
699 .init = mt_soc_audio_init,
700 .ops = &mt_machine_audio_ops,
701 },
702 {
703 .name = "MRGRX",
704 .stream_name = MT_SOC_MRGRX_STREAM_NAME,
705 .cpu_dai_name = MT_SOC_MRGRX_NAME,
706 .platform_name = MT_SOC_MRGRX_PCM,
707 .codec_dai_name = MT_SOC_CODEC_MRGRX_DAI_NAME,
708 .codec_name = MT_SOC_CODEC_NAME,
709 .init = mt_soc_audio_init,
710 .ops = &mt_machine_audio_ops,
711 },
712 {
713 .name = "MRGRXCAPTURE",
714 .stream_name = MT_SOC_MRGRX_CAPTURE_STREAM_NAME,
715 .cpu_dai_name = MT_SOC_MRGRX_NAME,
716 .platform_name = MT_SOC_MRGRX_AWB_PCM,
717 .codec_dai_name = MT_SOC_CODEC_MRGRX_DUMMY_DAI_NAME,
718 .codec_name = MT_SOC_CODEC_DUMMY_NAME,
719 .init = mt_soc_audio_init,
720 .ops = &mt_machine_audio_ops,
721 },
722 {
723 .name = "I2S0DL1OUTPUT",
724 .stream_name = MT_SOC_I2SDL1_STREAM_NAME,
725 .cpu_dai_name = MT_SOC_I2S0DL1_NAME,
726 .platform_name = MT_SOC_I2S0DL1_PCM,
727 .codec_dai_name = MT_SOC_CODEC_I2S0TXDAI_NAME,
728 .codec_name = MT_SOC_CODEC_NAME,
729 .init = mt_soc_audio_init,
730 .ops = &mt_machine_audio_ops,
731 },
732 {
733 .name = "DL1AWBCAPTURE",
734 .stream_name = MT_SOC_DL1_AWB_RECORD_STREAM_NAME,
735 .cpu_dai_name = MT_SOC_DL1AWB_NAME,
736 .platform_name = MT_SOC_DL1_AWB_PCM,
737 .codec_dai_name = MT_SOC_CODEC_DL1AWBDAI_NAME,
738 .codec_name = MT_SOC_CODEC_DUMMY_NAME,
739 .init = mt_soc_audio_init,
740 .ops = &mt_machine_audio_ops,
741 },
742 {
743 .name = "Voice_MD1_BT",
744 .stream_name = MT_SOC_VOICE_MD1_BT_STREAM_NAME,
745 .cpu_dai_name = MT_SOC_VOICE_MD1_BT_NAME,
746 .platform_name = MT_SOC_VOICE_MD1_BT,
747 .codec_dai_name = MT_SOC_CODEC_VOICE_MD1_BTDAI_NAME,
748 .codec_name = MT_SOC_CODEC_DUMMY_NAME,
749 .init = mt_soc_audio_init,
750 .ops = &mt_machine_audio_ops,
751 },
752 {
753 .name = "VOIP_CALL_BT_PLAYBACK",
754 .stream_name = MT_SOC_VOIP_BT_OUT_STREAM_NAME,
755 .cpu_dai_name = MT_SOC_VOIP_CALL_BT_OUT_NAME,
756 .platform_name = MT_SOC_VOIP_BT_OUT,
757 .codec_dai_name = MT_SOC_CODEC_VOIPCALLBTOUTDAI_NAME,
758 .codec_name = MT_SOC_CODEC_DUMMY_NAME,
759 .init = mt_soc_audio_init,
760 .ops = &mt_machine_audio_ops,
761 },
762 {
763 .name = "VOIP_CALL_BT_CAPTURE",
764 .stream_name = MT_SOC_VOIP_BT_IN_STREAM_NAME,
765 .cpu_dai_name = MT_SOC_VOIP_CALL_BT_IN_NAME,
766 .platform_name = MT_SOC_VOIP_BT_IN,
767 .codec_dai_name = MT_SOC_CODEC_VOIPCALLBTINDAI_NAME,
768 .codec_name = MT_SOC_CODEC_DUMMY_NAME,
769 .init = mt_soc_audio_init,
770 .ops = &mt_machine_audio_ops,
771 },
772 {
773 .name = "TDM_Debug_CAPTURE",
774 .stream_name = MT_SOC_TDM_CAPTURE_STREAM_NAME,
775 .cpu_dai_name = MT_SOC_TDMRX_NAME,
776 .platform_name = MT_SOC_TDMRX_PCM,
777 .codec_dai_name = MT_SOC_CODEC_TDMRX_DAI_NAME,
778 .codec_name = MT_SOC_CODEC_DUMMY_NAME,
779 .init = mt_soc_audio_init,
780 .ops = &mt_machine_audio_ops,
781 },
782 {
783 .name = "FM_MRG_TX",
784 .stream_name = MT_SOC_FM_MRGTX_STREAM_NAME,
785 .cpu_dai_name = MT_SOC_FM_MRGTX_NAME,
786 .platform_name = MT_SOC_FM_MRGTX_PCM,
787 .codec_dai_name = MT_SOC_CODEC_FMMRGTXDAI_DUMMY_DAI_NAME,
788 .codec_name = MT_SOC_CODEC_DUMMY_NAME,
789 .init = mt_soc_audio_init,
790 .ops = &mt_machine_audio_ops,
791 },
792 {
793 .name = "MultiMedia3",
794 .stream_name = MT_SOC_UL1DATA2_STREAM_NAME,
795 .cpu_dai_name = MT_SOC_UL2DAI_NAME,
796 .platform_name = MT_SOC_UL2_PCM,
797 .codec_dai_name = MT_SOC_CODEC_RXDAI2_NAME,
798 .codec_name = MT_SOC_CODEC_NAME,
799 .init = mt_soc_audio_init,
800 .ops = &mt_machine_audio_ops,
801 },
802 {
803 .name = "I2S0_AWB_CAPTURE",
804 .stream_name = MT_SOC_I2S0AWB_STREAM_NAME,
805 .cpu_dai_name = MT_SOC_I2S0AWBDAI_NAME,
806 .platform_name = MT_SOC_I2S0_AWB_PCM,
807 .codec_dai_name = MT_SOC_CODEC_I2S0AWB_NAME,
808 .codec_name = MT_SOC_CODEC_DUMMY_NAME,
809 .init = mt_soc_audio_init,
810 .ops = &mt_machine_audio_ops,
811 },
812
813 {
814 .name = "Voice_MD2",
815 .stream_name = MT_SOC_VOICE_MD2_STREAM_NAME,
816 .cpu_dai_name = MT_SOC_VOICE_MD2_NAME,
817 .platform_name = MT_SOC_VOICE_MD2,
818 .codec_dai_name = MT_SOC_CODEC_VOICE_MD2DAI_NAME,
819 .codec_name = MT_SOC_CODEC_NAME,
820 .init = mt_soc_audio_init,
821 .ops = &mt_machine_audio_ops,
822 },
823 {
824 .name = "PLATOFRM_CONTROL",
825 .stream_name = MT_SOC_ROUTING_STREAM_NAME,
826 .cpu_dai_name = MT_SOC_ROUTING_DAI_NAME,
827 .platform_name = MT_SOC_ROUTING_PCM,
828 .codec_dai_name = MT_SOC_CODEC_DUMMY_DAI_NAME,
829 .codec_name = MT_SOC_CODEC_DUMMY_NAME,
830 .init = mt_soc_audio_init2,
831 .ops = &mtmachine_audio_ops2,
832 },
833 {
834 .name = "Voice_MD2_BT",
835 .stream_name = MT_SOC_VOICE_MD2_BT_STREAM_NAME,
836 .cpu_dai_name = MT_SOC_VOICE_MD2_BT_NAME,
837 .platform_name = MT_SOC_VOICE_MD2_BT,
838 .codec_dai_name = MT_SOC_CODEC_VOICE_MD2_BTDAI_NAME,
839 .codec_name = MT_SOC_CODEC_DUMMY_NAME,
840 .init = mt_soc_audio_init,
841 .ops = &mt_machine_audio_ops,
842 },
843 {
844 .name = "HP_IMPEDANCE",
845 .stream_name = MT_SOC_HP_IMPEDANCE_STREAM_NAME,
846 .cpu_dai_name = MT_SOC_HP_IMPEDANCE_NAME,
847 .platform_name = MT_SOC_HP_IMPEDANCE_PCM,
848 .codec_dai_name = MT_SOC_CODEC_HP_IMPEDANCE_NAME,
849 .codec_name = MT_SOC_CODEC_NAME,
850 .init = mt_soc_audio_init,
851 .ops = &mt_machine_audio_ops,
852 },
853 {
854 .name = "FM_I2S_RX_Playback",
855 .stream_name = MT_SOC_FM_I2S_PLAYBACK_STREAM_NAME,
856 .cpu_dai_name = MT_SOC_FM_I2S_NAME,
857 .platform_name = MT_SOC_FM_I2S_PCM,
858 .codec_dai_name = MT_SOC_CODEC_FM_I2S_DAI_NAME,
859 .codec_name = MT_SOC_CODEC_NAME,
860 .init = mt_soc_audio_init,
861 .ops = &mt_machine_audio_ops,
862 },
863 {
864 .name = "FM_I2S_RX_Capture",
865 .stream_name = MT_SOC_FM_I2S_CAPTURE_STREAM_NAME,
866 .cpu_dai_name = MT_SOC_FM_I2S_NAME,
867 .platform_name = MT_SOC_FM_I2S_AWB_PCM,
868 .codec_dai_name = MT_SOC_CODEC_FM_I2S_DUMMY_DAI_NAME,
869 .codec_name = MT_SOC_CODEC_DUMMY_NAME,
870 .init = mt_soc_audio_init,
871 .ops = &mt_machine_audio_ops,
872 },
873 };
874
875 static const char *I2S_low_jittermode[] = {"Off", "On"};
876
877 static const struct soc_enum mt_soc_machine_enum[] =
878 {
879 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(I2S_low_jittermode), I2S_low_jittermode),
880 };
881
882
883 static int mt6595_get_lowjitter(struct snd_kcontrol *kcontrol,
884 struct snd_ctl_elem_value *ucontrol)
885 {
886 printk("%s: mt_soc_lowjitter_control = %d\n", __func__, mt_soc_lowjitter_control);
887 ucontrol->value.integer.value[0] = mt_soc_lowjitter_control;
888 return 0;
889 }
890
891 static int mt6595_set_lowjitter(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol)
892 {
893 printk("%s()\n", __func__);
894 if (mt_soc_lowjitter_control == ucontrol->value.integer.value[0])
895 {
896 }
897 else
898 {
899 }
900 mt_soc_lowjitter_control = ucontrol->value.integer.value[0];
901 return 0;
902 }
903
904
905 static const struct snd_kcontrol_new mt_soc_controls[] =
906 {
907 SOC_ENUM_EXT("I2S low Jitter fucntion", mt_soc_machine_enum[0], mt6595_get_lowjitter, mt6595_set_lowjitter),
908 };
909
910 static struct snd_soc_card snd_soc_card_mt =
911 {
912 .name = "mt-snd-card",
913 .dai_link = mt_soc_dai_common,
914 .num_links = ARRAY_SIZE(mt_soc_dai_common),
915 .controls = mt_soc_controls,
916 .num_controls = ARRAY_SIZE(mt_soc_controls),
917 };
918
919 static struct platform_device *mt_snd_device;
920
921 static int __init mt_soc_snd_init(void)
922 {
923 int ret;
924 struct snd_soc_card *card = &snd_soc_card_mt;
925 printk("mt_soc_snd_init card addr = %p \n", card);
926
927 mt_snd_device = platform_device_alloc("soc-audio", -1);
928 if (!mt_snd_device)
929 {
930 printk("mt6589_probe platform_device_alloc fail\n");
931 return -ENOMEM;
932 }
933 platform_set_drvdata(mt_snd_device, &snd_soc_card_mt);
934 ret = platform_device_add(mt_snd_device);
935
936 if (ret != 0)
937 {
938 printk("mt_soc_snd_init goto put_device fail\n");
939 goto put_device;
940 }
941
942 printk("mt_soc_snd_init dai_link = %p \n", snd_soc_card_mt.dai_link);
943
944 // create debug file
945 mt_sco_audio_debugfs = debugfs_create_file(DEBUG_FS_NAME,
946 S_IFREG | S_IRUGO, NULL, (void *) DEBUG_FS_NAME, &mtaudio_debug_ops);
947
948
949 // create analog debug file
950 mt_sco_audio_debugfs = debugfs_create_file(DEBUG_ANA_FS_NAME,
951 S_IFREG | S_IRUGO, NULL, (void *) DEBUG_ANA_FS_NAME, &mtaudio_ana_debug_ops);
952
953 return 0;
954 put_device:
955 platform_device_put(mt_snd_device);
956 return ret;
957
958 }
959
960 static void __exit mt_soc_snd_exit(void)
961 {
962 platform_device_unregister(mt_snd_device);
963 }
964
965 module_init(mt_soc_snd_init);
966 module_exit(mt_soc_snd_exit);
967
968 /* Module information */
969 MODULE_AUTHOR("ChiPeng <chipeng.chang@mediatek.com>");
970 MODULE_DESCRIPTION("ALSA SoC driver ");
971
972 MODULE_LICENSE("GPL");
973 MODULE_ALIAS("platform:mt-snd-card");
974
975