2 * Copyright (C) 2007 The Android Open Source Project
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
16 /*******************************************************************************
24 * Audio soc machine driver
28 * Audio machine driver
34 *------------------------------------------------------------------------------
40 *******************************************************************************/
43 /*****************************************************************************
44 * C O M P I L E R F L A G S
45 *****************************************************************************/
48 /*****************************************************************************
49 * E X T E R N A L R E F E R E N C E S
50 *****************************************************************************/
52 #define CONFIG_MTK_DEEP_IDLE
53 #ifdef CONFIG_MTK_DEEP_IDLE
54 #include <mach/mt_idle.h>
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"
65 //#include <mach/mt_clkbuf_ctl.h>
66 #include <sound/mt_soc_audio.h>
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>
74 #include <linux/completion.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>
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>
105 #include <linux/module.h>
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"
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"
128 extern void Sound_Speaker_Turnon(void);
129 extern void Sound_Speaker_Turnoff(void);
131 static int mtmachine_startup(struct snd_pcm_substream
*substream
)
133 //printk("mtmachine_startup \n");
137 static int mtmachine_prepare(struct snd_pcm_substream
*substream
)
139 //printk("mtmachine_prepare \n");
143 static struct snd_soc_ops mt_machine_audio_ops
=
145 .startup
= mtmachine_startup
,
146 .prepare
= mtmachine_prepare
,
149 static int mtmachine_startupmedia2(struct snd_pcm_substream
*substream
)
151 //printk("mtmachine_startupmedia2 \n");
155 static int mtmachine_preparemedia2(struct snd_pcm_substream
*substream
)
157 //printk("mtmachine_preparemedia2 \n");
161 static struct snd_soc_ops mtmachine_audio_ops2
=
163 .startup
= mtmachine_startupmedia2
,
164 .prepare
= mtmachine_preparemedia2
,
167 static int mt_soc_audio_init(struct snd_soc_pcm_runtime
*rtd
)
169 printk("mt_soc_audio_init\n");
173 static int mt_soc_audio_init2(struct snd_soc_pcm_runtime
*rtd
)
175 printk("mt_soc_audio_init2\n");
179 static int mt_soc_ana_debug_open(struct inode
*inode
, struct file
*file
)
181 printk("mt_soc_ana_debug_open \n");
185 static ssize_t
mt_soc_ana_debug_read(struct file
*file
, char __user
*buf
,
186 size_t count
, loff_t
*pos
)
188 const int size
= 4096;
191 printk("mt_soc_ana_debug_read count = %zu\n", count
);
193 audckbufEnable(true);
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
));
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
));
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
));
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
));
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
));
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
));
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
);
330 audckbufEnable(false);
333 return simple_read_from_buffer(buf
, count
, pos
, buffer
, n
);
337 static int mt_soc_debug_open(struct inode
*inode
, struct file
*file
)
339 printk("mt_soc_debug_open \n");
343 static ssize_t
mt_soc_debug_read(struct file
*file
, char __user
*buf
,
344 size_t count
, loff_t
*pos
)
346 const int size
= 4096;
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
));
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
));
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
));
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
));
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
));
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
));
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
));
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
));
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
));
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
));
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
));
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
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
));
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
));
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
));
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
));
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
));
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
));
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
));
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
));
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
));
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
));
524 printk("mt_soc_debug_read len = %d\n", n
);
527 return simple_read_from_buffer(buf
, count
, pos
, buffer
, n
);
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";
539 static ssize_t
mt_soc_debug_write(struct file
*f
, const char __user
*buf
,
540 size_t count
, loff_t
*offset
)
543 char InputString
[256];
544 char *token1
= NULL
;
545 char *token2
= NULL
;
551 long unsigned int regaddr
= 0;
552 long unsigned int regvalue
= 0;
554 memset((void *)InputString
, 0, 256);
555 if (copy_from_user((InputString
), buf
, count
))
557 printk("copy_from_user mt_soc_debug_write count = %zu temp = %s\n", count
, InputString
);
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
);
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
);
573 if (strcmp(token1
, ParSetkeyAfe
) == 0)
575 printk("strcmp (token1,ParSetkeyAfe) \n");
576 ret
= strict_strtoul(token3
, 16, ®addr
);
577 ret
= strict_strtoul(token5
, 16, ®value
);
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
);
583 if (strcmp(token1
, ParSetkeyAna
) == 0)
585 printk("strcmp (token1,ParSetkeyAna)\n");
586 ret
= strict_strtoul(token3
, 16, ®addr
);
587 ret
= strict_strtoul(token5
, 16, ®value
);
588 printk("%s regaddr = 0x%lu regvalue = 0x%lu\n", ParSetkeyAna
, regaddr
, regvalue
);
589 //clk_buf_ctrl(CLK_BUF_AUDIO, true); //k2 need?
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
);
596 if (strcmp(token1
, ParSetkeyCfg
) == 0)
598 printk("strcmp (token1,ParSetkeyCfg)\n");
599 ret
= strict_strtoul(token3
, 16, ®addr
);
600 ret
= strict_strtoul(token5
, 16, ®value
);
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
);
606 if (strcmp(token1
, PareGetkeyAfe
) == 0)
608 printk("strcmp (token1,PareGetkeyAfe)\n");
609 ret
= strict_strtoul(token3
, 16, ®addr
);
610 regvalue
= Afe_Get_Reg(regaddr
);
611 printk("%s regaddr = 0x%lu regvalue = 0x%lu\n", PareGetkeyAfe
, regaddr
, regvalue
);
613 if (strcmp(token1
, PareGetkeyAna
) == 0)
615 printk("strcmp (token1,PareGetkeyAna)\n");
616 ret
= strict_strtoul(token3
, 16, ®addr
);
617 regvalue
= Ana_Get_Reg(regaddr
);
618 printk("%s regaddr = 0x%lu regvalue = 0x%lu\n", PareGetkeyAna
, regaddr
, regvalue
);
623 static const struct file_operations mtaudio_debug_ops
=
625 .open
= mt_soc_debug_open
,
626 .read
= mt_soc_debug_read
,
627 .write
= mt_soc_debug_write
,
631 static const struct file_operations mtaudio_ana_debug_ops
=
633 .open
= mt_soc_ana_debug_open
,
634 .read
= mt_soc_ana_debug_read
,
638 /* Digital audio interface glue - connects codec <---> CPU */
639 static struct snd_soc_dai_link mt_soc_dai_common
[] =
641 /* FrontEnd DAI Links */
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
,
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
,
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
,
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
,
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
,
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
,
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
,
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
,
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
,
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
,
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
,
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
,
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
,
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
,
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
,
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
,
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
,
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
,
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
,
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
,
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
,
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
,
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
,
875 static const char *I2S_low_jittermode
[] = {"Off", "On"};
877 static const struct soc_enum mt_soc_machine_enum
[] =
879 SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(I2S_low_jittermode
), I2S_low_jittermode
),
883 static int mt6595_get_lowjitter(struct snd_kcontrol
*kcontrol
,
884 struct snd_ctl_elem_value
*ucontrol
)
886 printk("%s: mt_soc_lowjitter_control = %d\n", __func__
, mt_soc_lowjitter_control
);
887 ucontrol
->value
.integer
.value
[0] = mt_soc_lowjitter_control
;
891 static int mt6595_set_lowjitter(struct snd_kcontrol
*kcontrol
, struct snd_ctl_elem_value
*ucontrol
)
893 printk("%s()\n", __func__
);
894 if (mt_soc_lowjitter_control
== ucontrol
->value
.integer
.value
[0])
900 mt_soc_lowjitter_control
= ucontrol
->value
.integer
.value
[0];
905 static const struct snd_kcontrol_new mt_soc_controls
[] =
907 SOC_ENUM_EXT("I2S low Jitter fucntion", mt_soc_machine_enum
[0], mt6595_get_lowjitter
, mt6595_set_lowjitter
),
910 static struct snd_soc_card snd_soc_card_mt
=
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
),
919 static struct platform_device
*mt_snd_device
;
921 static int __init
mt_soc_snd_init(void)
924 struct snd_soc_card
*card
= &snd_soc_card_mt
;
925 printk("mt_soc_snd_init card addr = %p \n", card
);
927 mt_snd_device
= platform_device_alloc("soc-audio", -1);
930 printk("mt6589_probe platform_device_alloc fail\n");
933 platform_set_drvdata(mt_snd_device
, &snd_soc_card_mt
);
934 ret
= platform_device_add(mt_snd_device
);
938 printk("mt_soc_snd_init goto put_device fail\n");
942 printk("mt_soc_snd_init dai_link = %p \n", snd_soc_card_mt
.dai_link
);
945 mt_sco_audio_debugfs
= debugfs_create_file(DEBUG_FS_NAME
,
946 S_IFREG
| S_IRUGO
, NULL
, (void *) DEBUG_FS_NAME
, &mtaudio_debug_ops
);
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
);
955 platform_device_put(mt_snd_device
);
960 static void __exit
mt_soc_snd_exit(void)
962 platform_device_unregister(mt_snd_device
);
965 module_init(mt_soc_snd_init
);
966 module_exit(mt_soc_snd_exit
);
968 /* Module information */
969 MODULE_AUTHOR("ChiPeng <chipeng.chang@mediatek.com>");
970 MODULE_DESCRIPTION("ALSA SoC driver ");
972 MODULE_LICENSE("GPL");
973 MODULE_ALIAS("platform:mt-snd-card");