import PULS_20180308
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / drivers / misc / mediatek / sound / mt8127 / AudDrv_Afe.c
CommitLineData
6fa3eb70
S
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 * AudioAfe.c
21 *
22 * Project:
23 * --------
24 * MT8127 Audio Driver Afe Register setting
25 *
26 * Description:
27 * ------------
28 * Audio register
29 *
30 * Author:
31 * -------
32 * Luke Liu
33 * Chipeng Chang
34 *
35 *------------------------------------------------------------------------------
36 * $Revision: #1 $
37 * $Modtime:$
38 * $Log:$
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#include "AudDrv_Common.h"
53#include "AudDrv_Afe.h"
54#include "AudDrv_Clk.h"
55#include "AudDrv_Def.h"
56
57/*****************************************************************************
58 * D A T A T Y P E S
59 *****************************************************************************/
60
61
62
63/*****************************************************************************
64 * FUNCTION DEFINITION
65 *****************************************************************************/
66void Afe_Set_Reg(uint32 offset, uint32 value, uint32 mask);
67uint32 Afe_Get_Reg(uint32 offset);
68
69/*****************************************************************************
70 * FUNCTION IMPLEMENTATION
71 *****************************************************************************/
72
73void Afe_Set_Reg(uint32 offset, uint32 value, uint32 mask)
74{
75#ifdef AUDIO_MEM_IOREMAP
76 extern void *AFE_BASE_ADDRESS;
77 //PRINTK_AUDDRV("Afe_Set_Reg AUDIO_MEM_IOREMAP AFE_BASE_ADDRESS = %p\n",AFE_BASE_ADDRESS);
78 volatile uint32 address = (uint32)((char *)AFE_BASE_ADDRESS + offset);
79#else
80 volatile uint32 address = (AFE_BASE + offset);
81#endif
82
83 volatile uint32 *AFE_Register = (volatile uint32 *)address;
84 volatile uint32 val_tmp;
85
4b9e9796
S
86 if (offset > AFE_MAX_ADDR_OFFSET)
87 return;
88
89
6fa3eb70
S
90 val_tmp = Afe_Get_Reg(offset);
91 val_tmp &= (~mask);
92 val_tmp |= (value & mask);
93 mt65xx_reg_sync_writel(val_tmp, AFE_Register);
94}
95
96uint32 Afe_Get_Reg(uint32 offset)
97{
98#ifdef AUDIO_MEM_IOREMAP
99 extern void *AFE_BASE_ADDRESS;
100 //PRINTK_AUDDRV("Afe_Get_Reg AUDIO_MEM_IOREMAP AFE_BASE_ADDRESS = %p\ offset = %xn",AFE_BASE_ADDRESS,offset);
101 volatile uint32 address = (uint32)((char *)AFE_BASE_ADDRESS + offset);
102#else
103 volatile uint32 address = (AFE_BASE + offset);
104#endif
105 volatile uint32 *value;
4b9e9796
S
106
107 if (offset > AFE_MAX_ADDR_OFFSET)
108 return 0;
109
110
6fa3eb70
S
111 value = (volatile uint32 *)(address);
112 return *value;
113}
114
115void Afe_Log_Print(void)
116{
117 AudDrv_Clk_On();
118 printk("+AudDrv Afe_Log_Print \n");
119 printk("AUDIOAFE_TOP_CON0 = 0x%x\n", Afe_Get_Reg(AUDIOAFE_TOP_CON0));
120 printk("AUDIO_TOP_CON1 = 0x%x\n", Afe_Get_Reg(AUDIO_TOP_CON1));
121 printk("AUDIO_TOP_CON2 = 0x%x\n", Afe_Get_Reg(AUDIO_TOP_CON2));
122 printk("AUDIO_TOP_CON3 = 0x%x\n", Afe_Get_Reg(AUDIO_TOP_CON3));
123 printk("AFE_DAC_CON0 = 0x%x\n", Afe_Get_Reg(AFE_DAC_CON0));
124 printk("AFE_DAC_CON1 = 0x%x\n", Afe_Get_Reg(AFE_DAC_CON1));
125 printk("AFE_I2S_CON = 0x%x\n", Afe_Get_Reg(AFE_I2S_CON));
126 //printk("AFE_DAIBT_CON0 = 0x%x\n",Afe_Get_Reg(AFE_DAIBT_CON0));
127 printk("AFE_CONN0 = 0x%x\n", Afe_Get_Reg(AFE_CONN0));
128 printk("AFE_CONN1 = 0x%x\n", Afe_Get_Reg(AFE_CONN1));
129 printk("AFE_CONN2 = 0x%x\n", Afe_Get_Reg(AFE_CONN2));
130 printk("AFE_CONN3 = 0x%x\n", Afe_Get_Reg(AFE_CONN3));
131 printk("AFE_CONN4 = 0x%x\n", Afe_Get_Reg(AFE_CONN4));
132 printk("AFE_I2S_CON1 = 0x%x\n", Afe_Get_Reg(AFE_I2S_CON1));
133 printk("AFE_I2S_CON2 = 0x%x\n", Afe_Get_Reg(AFE_I2S_CON2));
134 //printk("AFE_MRGIF_CON = 0x%x\n",Afe_Get_Reg(AFE_MRGIF_CON));
135
136 printk("AFE_DL1_BASE = 0x%x\n", Afe_Get_Reg(AFE_DL1_BASE));
137 printk("AFE_DL1_CUR = 0x%x\n", Afe_Get_Reg(AFE_DL1_CUR));
138 printk("AFE_DL1_END = 0x%x\n", Afe_Get_Reg(AFE_DL1_END));
139 printk("AFE_I2S_CON3 = 0x%x\n", Afe_Get_Reg(AFE_I2S_CON3));
140
141 printk("AFE_DL2_BASE = 0x%x\n", Afe_Get_Reg(AFE_DL2_BASE));
142 printk("AFE_DL2_CUR = 0x%x\n", Afe_Get_Reg(AFE_DL2_CUR));
143 printk("AFE_DL2_END = 0x%x\n", Afe_Get_Reg(AFE_DL2_END));
144 printk("AFE_AWB_BASE = 0x%x\n", Afe_Get_Reg(AFE_AWB_BASE));
145 printk("AFE_AWB_END = 0x%x\n", Afe_Get_Reg(AFE_AWB_END));
146 printk("AFE_AWB_CUR = 0x%x\n", Afe_Get_Reg(AFE_AWB_CUR));
147 printk("AFE_VUL_BASE = 0x%x\n", Afe_Get_Reg(AFE_VUL_BASE));
148 printk("AFE_VUL_END = 0x%x\n", Afe_Get_Reg(AFE_VUL_END));
149 printk("AFE_VUL_CUR = 0x%x\n", Afe_Get_Reg(AFE_VUL_CUR));
150 //printk("AFE_DAI_BASE = 0x%x\n",Afe_Get_Reg(AFE_DAI_BASE));
151 //printk("AFE_DAI_END = 0x%x\n",Afe_Get_Reg(AFE_DAI_END));
152 //printk("AFE_DAI_CUR = 0x%x\n",Afe_Get_Reg(AFE_DAI_CUR));
153 //printk("AFE_IRQ_CON = 0x%x\n",Afe_Get_Reg(AFE_IRQ_CON));
154
155 printk("AFE_MEMIF_MON0 = 0x%x\n", Afe_Get_Reg(AFE_MEMIF_MON0));
156 printk("AFE_MEMIF_MON1 = 0x%x\n", Afe_Get_Reg(AFE_MEMIF_MON1));
157 printk("AFE_MEMIF_MON2 = 0x%x\n", Afe_Get_Reg(AFE_MEMIF_MON2));
158 //printk("AFE_MEMIF_MON3 = 0x%x\n",Afe_Get_Reg(AFE_MEMIF_MON3));
159 printk("AFE_MEMIF_MON4 = 0x%x\n", Afe_Get_Reg(AFE_MEMIF_MON4));
160 //printk("AFE_FOC_CON = 0x%x\n",Afe_Get_Reg(AFE_FOC_CON));
161 //printk("AFE_FOC_CON1 = 0x%x\n",Afe_Get_Reg(AFE_FOC_CON1));
162 //printk("AFE_FOC_CON2 = 0x%x\n",Afe_Get_Reg(AFE_FOC_CON2));
163 //printk("AFE_FOC_CON3 = 0x%x\n",Afe_Get_Reg(AFE_FOC_CON3));
164 //printk("AFE_FOC_CON4 = 0x%x\n",Afe_Get_Reg(AFE_FOC_CON4));
165 //printk("AFE_FOC_CON5 = 0x%x\n",Afe_Get_Reg(AFE_FOC_CON5));
166 //printk("AFE_MON_STEP = 0x%x\n",Afe_Get_Reg(AFE_MON_STEP));
167 printk("AFE_ADDA_DL_SRC2_CON0 = 0x%x\n", Afe_Get_Reg(AFE_ADDA_DL_SRC2_CON0));
168 printk("AFE_ADDA_DL_SRC2_CON1 = 0x%x\n", Afe_Get_Reg(AFE_ADDA_DL_SRC2_CON1));
169 printk("AFE_ADDA_UL_SRC_CON0 = 0x%x\n", Afe_Get_Reg(AFE_ADDA_UL_SRC_CON0));
170 printk("AFE_ADDA_UL_SRC_CON1 = 0x%x\n", Afe_Get_Reg(AFE_ADDA_UL_SRC_CON1));
171 printk("AFE_ADDA_TOP_CON0 = 0x%x\n", Afe_Get_Reg(AFE_ADDA_TOP_CON0));
172 printk("AFE_ADDA_UL_DL_CON0 = 0x%x\n", Afe_Get_Reg(AFE_ADDA_UL_DL_CON0));
173 printk("AFE_ADDA_SRC_DEBUG = 0x%x\n", Afe_Get_Reg(AFE_ADDA_SRC_DEBUG));
174 printk("AFE_ADDA_SRC_DEBUG_MON0 = 0x%x\n", Afe_Get_Reg(AFE_ADDA_SRC_DEBUG_MON0));
175 printk("AFE_ADDA_SRC_DEBUG_MON1 = 0x%x\n", Afe_Get_Reg(AFE_ADDA_SRC_DEBUG_MON1));
176 printk("AFE_ADDA_NEWIF_CFG0 = 0x%x\n", Afe_Get_Reg(AFE_ADDA_NEWIF_CFG0));
177 printk("AFE_ADDA_NEWIF_CFG1 = 0x%x\n", Afe_Get_Reg(AFE_ADDA_NEWIF_CFG1));
178 printk("AFE_SIDETONE_DEBUG = 0x%x\n", Afe_Get_Reg(AFE_SIDETONE_DEBUG));
179 printk("AFE_SIDETONE_MON = 0x%x\n", Afe_Get_Reg(AFE_SIDETONE_MON));
180 printk("AFE_SIDETONE_CON0 = 0x%x\n", Afe_Get_Reg(AFE_SIDETONE_CON0));
181 printk("AFE_SIDETONE_COEFF = 0x%x\n", Afe_Get_Reg(AFE_SIDETONE_COEFF));
182 printk("AFE_SIDETONE_CON1 = 0x%x\n", Afe_Get_Reg(AFE_SIDETONE_CON1));
183 printk("AFE_SIDETONE_GAIN = 0x%x\n", Afe_Get_Reg(AFE_SIDETONE_GAIN));
184 printk("AFE_SGEN_CON0 = 0x%x\n", Afe_Get_Reg(AFE_SGEN_CON0));
185 //printk("AFE_MRG_MON0 = 0x%x\n",Afe_Get_Reg(AFE_MRG_MON0));
186 //printk("AFE_MRG_MON1 = 0x%x\n",Afe_Get_Reg(AFE_MRG_MON1));
187 //printk("AFE_MRG_MON2 = 0x%x\n",Afe_Get_Reg(AFE_MRG_MON2));
188 printk("AFE_TOP_CON0 = 0x%x\n", Afe_Get_Reg(AFE_TOP_CON0));
189 printk("AFE_PREDIS_CON0 = 0x%x\n", Afe_Get_Reg(AFE_PREDIS_CON0)); //AFE_ADDA_PREDIS_CON0
190 printk("AFE_PREDIS_CON1 = 0x%x\n", Afe_Get_Reg(AFE_PREDIS_CON1)); //AFE_ADDA_PREDIS_CON1
191
192 printk("AFE_MOD_PCM_BASE = 0x%x\n", Afe_Get_Reg(AFE_MOD_PCM_BASE));//AFE_MOD_DAI_BASE
193 printk("AFE_MOD_PCM_END = 0x%x\n", Afe_Get_Reg(AFE_MOD_PCM_END));//AFE_MOD_DAI_END
194 printk("AFE_MOD_PCM_CUR = 0x%x\n", Afe_Get_Reg(AFE_MOD_PCM_CUR));//AFE_MOD_DAI_CUR
195
196 printk("AFE_HDMI_OUT_CON0 = 0x%x\n", Afe_Get_Reg(AFE_HDMI_OUT_CON0));
197 printk("AFE_HDMI_OUT_BASE = 0x%x\n", Afe_Get_Reg(AFE_HDMI_OUT_BASE));
198 printk("AFE_HDMI_OUT_CUR = 0x%x\n", Afe_Get_Reg(AFE_HDMI_OUT_CUR));
199 printk("AFE_HDMI_OUT_END = 0x%x\n", Afe_Get_Reg(AFE_HDMI_OUT_END));
200 printk("AFE_SPDIF_OUT_CON0 = 0x%x\n", Afe_Get_Reg(AFE_SPDIF_OUT_CON0));
201 printk("AFE_SPDIF_BASE = 0x%x\n", Afe_Get_Reg(AFE_SPDIF_BASE));
202 printk("AFE_SPDIF_CUR = 0x%x\n", Afe_Get_Reg(AFE_SPDIF_CUR));
203 printk("AFE_SPDIF_END = 0x%x\n", Afe_Get_Reg(AFE_SPDIF_END));
204 printk("AFE_HDMI_CONN0 = 0x%x\n", Afe_Get_Reg(AFE_HDMI_CONN0));
205 printk("AFE_8CH_I2S_OUT_CON = 0x%x\n", Afe_Get_Reg(AFE_8CH_I2S_OUT_CON));
206 printk("AFE_HDMI_CONN1 = 0x%x\n", Afe_Get_Reg(AFE_HDMI_CONN1));
207
208 printk("AFE_IRQ_MCU_CON = 0x%x\n", Afe_Get_Reg(AFE_IRQ_MCU_CON));
209 printk("AFE_IRQ_MCU_STATUS = 0x%x\n", Afe_Get_Reg(AFE_IRQ_MCU_STATUS));
210 printk("AFE_IRQ_CLR = 0x%x\n", Afe_Get_Reg(AFE_IRQ_CLR));
211 printk("AFE_IRQ_MCU_CNT1 = 0x%x\n", Afe_Get_Reg(AFE_IRQ_MCU_CNT1));
212 printk("AFE_IRQ_MCU_CNT2 = 0x%x\n", Afe_Get_Reg(AFE_IRQ_MCU_CNT2));
213 printk("AFE_IRQ_MCU_MON2 = 0x%x\n", Afe_Get_Reg(AFE_IRQ_MCU_MON2));
214 printk("AFE_IRQ_MCU_CNT5 = 0x%x\n", Afe_Get_Reg(AFE_IRQ_MCU_CNT5));
215 printk("AFE_IRQ1_MCU_CNT_MON = 0x%x\n", Afe_Get_Reg(AFE_IRQ1_MCU_CNT_MON));
216 printk("AFE_IRQ2_MCU_CNT_MON = 0x%x\n", Afe_Get_Reg(AFE_IRQ2_MCU_CNT_MON));
217 printk("AFE_IRQ1_MCU_EN_CNT_MON = 0x%x\n", Afe_Get_Reg(AFE_IRQ1_MCU_EN_CNT_MON));
218 printk("AFE_IRQ5_MCU_EN_CNT_MON = 0x%x\n", Afe_Get_Reg(AFE_IRQ5_MCU_EN_CNT_MON));
219 //printk("AFE_MEMIF_MINLEN = 0x%x\n", Afe_Get_Reg(AFE_MEMIF_MINLEN));
220 printk("AFE_MEMIF_MAXLEN = 0x%x\n", Afe_Get_Reg(AFE_MEMIF_MAXLEN));
221 printk("AFE_MEMIF_PBUF_SIZE = 0x%x\n", Afe_Get_Reg(AFE_MEMIF_PBUF_SIZE));
222
223 printk("AFE_GAIN1_CON0 = 0x%x\n", Afe_Get_Reg(AFE_GAIN1_CON0));
224 printk("AFE_GAIN1_CON1 = 0x%x\n", Afe_Get_Reg(AFE_GAIN1_CON1));
225 printk("AFE_GAIN1_CON2 = 0x%x\n", Afe_Get_Reg(AFE_GAIN1_CON2));
226 printk("AFE_GAIN1_CON3 = 0x%x\n", Afe_Get_Reg(AFE_GAIN1_CON3));
227 printk("AFE_GAIN1_CONN = 0x%x\n", Afe_Get_Reg(AFE_GAIN1_CONN));
228 printk("AFE_GAIN1_CUR = 0x%x\n", Afe_Get_Reg(AFE_GAIN1_CUR));
229 printk("AFE_GAIN2_CON0 = 0x%x\n", Afe_Get_Reg(AFE_GAIN2_CON0));
230 printk("AFE_GAIN2_CON1 = 0x%x\n", Afe_Get_Reg(AFE_GAIN2_CON1));
231 printk("AFE_GAIN2_CON2 = 0x%x\n", Afe_Get_Reg(AFE_GAIN2_CON2));
232 printk("AFE_GAIN2_CON3 = 0x%x\n", Afe_Get_Reg(AFE_GAIN2_CON3));
233 printk("AFE_GAIN2_CONN = 0x%x\n", Afe_Get_Reg(AFE_GAIN2_CONN));
234 printk("AFE_GAIN2_CUR = 0x%x\n", Afe_Get_Reg(AFE_GAIN2_CUR));
235 printk("AFE_GAIN2_CONN2 = 0x%x\n", Afe_Get_Reg(AFE_GAIN2_CONN2));
236
237 printk("AFE_IEC_CFG = 0x%x\n", Afe_Get_Reg(AFE_IEC_CFG));
238 printk("AFE_IEC_NSNUM = 0x%x\n", Afe_Get_Reg(AFE_IEC_NSNUM));
239 printk("AFE_IEC_BURST_INFO = 0x%x\n", Afe_Get_Reg(AFE_IEC_BURST_INFO));
240 printk("AFE_IEC_BURST_LEN = 0x%x\n", Afe_Get_Reg(AFE_IEC_BURST_LEN));
241 printk("AFE_IEC_NSADR = 0x%x\n", Afe_Get_Reg(AFE_IEC_NSADR));
242 printk("AFE_IEC_CHL_STAT0 = 0x%x\n", Afe_Get_Reg(AFE_IEC_CHL_STAT0));
243 printk("AFE_IEC_CHL_STAT1 = 0x%x\n", Afe_Get_Reg(AFE_IEC_CHL_STAT1));
244 printk("AFE_IEC_CHR_STAT0 = 0x%x\n", Afe_Get_Reg(AFE_IEC_CHR_STAT0));
245 printk("AFE_IEC_CHR_STAT1 = 0x%x\n", Afe_Get_Reg(AFE_IEC_CHR_STAT1));
246
247 printk("FPGA_CFG2 = 0x%x\n", Afe_Get_Reg(FPGA_CFG2));
248 printk("FPGA_CFG3 = 0x%x\n", Afe_Get_Reg(FPGA_CFG3));
249 printk("FPGA_CFG0 = 0x%x\n", Afe_Get_Reg(FPGA_CFG0));
250 printk("FPGA_CFG1 = 0x%x\n", Afe_Get_Reg(FPGA_CFG1));
251 printk("FPGA_STC = 0x%x\n", Afe_Get_Reg(FPGA_STC));
252
253 printk("AFE_ASRC_CON0 = 0x%x\n", Afe_Get_Reg(AFE_ASRC_CON0));
254 printk("AFE_ASRC_CON1 = 0x%x\n", Afe_Get_Reg(AFE_ASRC_CON1));
255 printk("AFE_ASRC_CON2 = 0x%x\n", Afe_Get_Reg(AFE_ASRC_CON2));
256 printk("AFE_ASRC_CON3 = 0x%x\n", Afe_Get_Reg(AFE_ASRC_CON3));
257 printk("AFE_ASRC_CON4 = 0x%x\n", Afe_Get_Reg(AFE_ASRC_CON4));
258 printk("AFE_ASRC_CON5 = 0x%x\n", Afe_Get_Reg(AFE_ASRC_CON5));
259 printk("AFE_ASRC_CON6 = 0x%x\n", Afe_Get_Reg(AFE_ASRC_CON6));
260 printk("AFE_ASRC_CON7 = 0x%x\n", Afe_Get_Reg(AFE_ASRC_CON7));
261 printk("AFE_ASRC_CON8 = 0x%x\n", Afe_Get_Reg(AFE_ASRC_CON8));
262 printk("AFE_ASRC_CON9 = 0x%x\n", Afe_Get_Reg(AFE_ASRC_CON9));
263 printk("AFE_ASRC_CON10 = 0x%x\n", Afe_Get_Reg(AFE_ASRC_CON10));
264 printk("AFE_ASRC_CON11 = 0x%x\n", Afe_Get_Reg(AFE_ASRC_CON11));
265 printk("PCM_INTF_CON1 = 0x%x\n", Afe_Get_Reg(PCM_INTF_CON1));
266 printk("PCM_INTF_CON2 = 0x%x\n", Afe_Get_Reg(PCM_INTF_CON2));
267 printk("PCM2_INTF_CON = 0x%x\n", Afe_Get_Reg(PCM2_INTF_CON));
268
269 //
270
271
272
273 printk("AFE_ASRC_CON13 = 0x%x\n", Afe_Get_Reg(AFE_ASRC_CON13));
274 printk("AFE_ASRC_CON14 = 0x%x\n", Afe_Get_Reg(AFE_ASRC_CON14));
275 printk("AFE_ASRC_CON15 = 0x%x\n", Afe_Get_Reg(AFE_ASRC_CON15));
276 printk("AFE_ASRC_CON16 = 0x%x\n", Afe_Get_Reg(AFE_ASRC_CON16));
277 printk("AFE_ASRC_CON17 = 0x%x\n", Afe_Get_Reg(AFE_ASRC_CON17));
278 printk("AFE_ASRC_CON18 = 0x%x\n", Afe_Get_Reg(AFE_ASRC_CON18));
279 printk("AFE_ASRC_CON19 = 0x%x\n", Afe_Get_Reg(AFE_ASRC_CON19));
280 printk("AFE_ASRC_CON20 = 0x%x\n", Afe_Get_Reg(AFE_ASRC_CON20));
281 printk("AFE_ASRC_CON21 = 0x%x\n", Afe_Get_Reg(AFE_ASRC_CON21));
282
283 AudDrv_Clk_Off();
284 printk("-AudDrv Afe_Log_Print \n");
285}
286
287void AP_Set_Reg(uint32 offset, uint32 value, uint32 mask)
288{
289 extern void *AFE_BASE_ADDRESS;
290 volatile uint32 address = (uint32)(offset);
291
292 volatile uint32 *AP_Register = (volatile uint32 *)address;
293 volatile uint32 val_tmp;
294
295 //PRINTK_AFE_REG("Afe_Set_Reg offset=%x, value=%x, mask=%x \n",offset,value,mask);
296 val_tmp = AP_Get_Reg(offset);
297 val_tmp &= (~mask);
298 val_tmp |= (value & mask);
299
300 //printk("AP_Set_Reg offset=%08x val=%08x (AFE_BASE_ADDRESS=%08x)\n", AP_Register, val_tmp, AFE_BASE_ADDRESS);
301 mt65xx_reg_sync_writel(val_tmp, AP_Register);
302}
303
304uint32 AP_Get_Reg(uint32 offset)
305{
306 extern void *AFE_BASE_ADDRESS;
307 volatile uint32 address = (uint32)(offset);
308
309 volatile uint32 *value;
310 value = (volatile uint32 *)(address);
311
312 //printk("AP_Get_Reg offset=%08x val=%08x (AFE_BASE_ADDRESS=%08x)\n", offset, *value, AFE_BASE_ADDRESS);
313 return *value;
314}
315
316
317// export symbols for other module using
318EXPORT_SYMBOL(Afe_Set_Reg);
319EXPORT_SYMBOL(Afe_Get_Reg);
320EXPORT_SYMBOL(Afe_Log_Print);
321EXPORT_SYMBOL(AP_Set_Reg);
322EXPORT_SYMBOL(AP_Get_Reg);
323