change source file mode to 0644 instead of 0755
[profile/mobile/platform/kernel/u-boot-tm1.git] / arch / arm / include / asm / arch-sc8825 / chip_drvapi.h
1 /******************************************************************************
2  ** File Name:      chip_drvapi.h                                                    *
3  ** Author:         Richard Yang                                              *
4  ** DATE:           08/14/2002                                                *
5  ** Copyright:      2002 Spreatrum, Incoporated. All Rights Reserved.         *
6  ** Description:    This driver is for spreadtrum chip set.                   *
7  ******************************************************************************
8
9  ******************************************************************************
10  **                        Edit History                                       *
11  ** ------------------------------------------------------------------------- *
12  ** DATE           NAME             DESCRIPTION                               *
13  ** 08/14/2002     Richard.Yang     Create.                                   *
14  ** 09/16/2003     Xueliang.Wang    Modify CR4013                 *
15  ******************************************************************************/
16 #ifndef _CHIP_DRVAPI_H_
17 #define _CHIP_DRVAPI_H_
18
19 /**---------------------------------------------------------------------------*
20  **                         Dependencies                                      *
21  **---------------------------------------------------------------------------*/
22
23 /**---------------------------------------------------------------------------*
24  **                         Compiler Flag                                     *
25  **---------------------------------------------------------------------------*/
26 #ifdef __cplusplus
27 extern   "C"
28 {
29 #endif
30
31 /**---------------------------------------------------------------------------*
32  **                         Defines                                           *
33  **---------------------------------------------------------------------------*/
34 //PLL clock
35 #define PLL_CLK_192M        192000000
36
37 #define CLK_DIV_1M            1000000
38
39 // ARM valid clock.
40 #define ARM_CLK_13M         13000000
41 #define ARM_CLK_20M         20000000
42 #define ARM_CLK_24M         24000000
43 #define ARM_CLK_26M         26000000
44 #define ARM_CLK_27M         27000000
45 #define ARM_CLK_28M         28800000
46 #define ARM_CLK_30M         30720000
47 #define ARM_CLK_32M         32000000
48 #define ARM_CLK_36M         36000000
49 #define ARM_CLK_39M         39000000
50 #define ARM_CLK_41M         41000000
51 #define ARM_CLK_48M         48000000
52 #define ARM_CLK_50M         50000000
53 #define ARM_CLK_52M         52000000
54 #define ARM_CLK_54M         54000000
55 #define ARM_CLK_60M         60000000
56 #define ARM_CLK_61M         61440000
57 #define ARM_CLK_64M         64000000
58 #define ARM_CLK_66M         66000000
59 #define ARM_CLK_78M         78000000
60 #define ARM_CLK_71M         71500000
61 #define ARM_CLK_72M         72000000
62 #define ARM_CLK_80M         80000000
63 #define ARM_CLK_82M         82000000
64 #define ARM_CLK_85M         85000000
65 #define ARM_CLK_96M         96000000
66 #define ARM_CLK_100M       100000000
67 #define ARM_CLK_102M       102000000
68 #define ARM_CLK_104M       104000000
69 #define ARM_CLK_109M       109000000
70 #define ARM_CLK_120M       120000000
71 #define ARM_CLK_128M       128000000
72 #define ARM_CLK_153M       153600000
73 #define ARM_CLK_164M       164000000
74 #define ARM_CLK_192M       192000000
75 #define ARM_CLK_200M       200000000
76 #define ARM_CLK_256M       256000000
77 #define ARM_CLK_384M       384000000
78 #define ARM_CLK_400M       400000000
79 #define ARM_CLK_500M       500000000
80 #define ARM_CLK_512M       512000000
81 #define ARM_CLK_600M       600000000
82 #define ARM_CLK_800M       800000000
83 #define ARM_CLK_870M       870000000
84 #define ARM_CLK_900M       900000000
85 #define ARM_CLK_1000M      1000000000
86 #define ARM_CLK_1100M      1100000000
87 #define ARM_CLK_1200M      1200000000
88 #define ARM_CLK_1300M      1300000000
89 #define ARM_CLK_1400M      1400000000
90 #define ARM_CLK_1500M      1500000000
91 #define ARM_CLK_1600M      1600000000
92
93 /**---------------------------------------------------------------------------*
94  **                         Constant Variables                                *
95  **---------------------------------------------------------------------------*/
96 typedef enum chip_serial_tag
97 {
98     SERIAL_SC6600I,
99     SERIAL_SC6600R,
100     SERIAL_SC6600H,
101     SERIAL_SC6800D,
102     SERIAL_SC8800D,
103     SERIAL_SC6600L,
104     SERIAL_SC8800H,
105     SERIAL_SC6800H,
106     SERIAL_SC8800G,
107     CHIP_SERIAL_MAX
108 }
109 CHIP_SERIAL_E;
110
111 typedef enum chip_type_tag
112 {
113     SC6600I_ID_BASE = SERIAL_SC6600I << 16,
114     SC6600I,
115     SC6600I_ID_MAX,
116     SC6600R_ID_BASE = SERIAL_SC6600R << 16,
117     SC6600R1,
118     SC6600R2,
119     SC6600R2A,
120     SC6600R3,
121     SC6600R3A,
122     SC6600R_ID_MAX,
123     SC6600H_ID_BASE = SERIAL_SC6600H << 16,
124     SC6600H1,
125     SC6600H2,
126     SC6600H3,
127     SC6600H_ID_MAX,
128     SC6800D_ID_BASE = SERIAL_SC6800D << 16,
129     SC6800D,
130     SC6800D_ID_MAX,
131     SC8800D_ID_BASE = SERIAL_SC8800D << 16,
132     SC8800D,
133     SC8800D_ID_MAX,
134     SC6600L_ID_BASE = SERIAL_SC6600L << 16,
135     SC6600L,
136     SC6600L2,
137     SC6600L7,
138     SC6600H3A,
139     SC6600W2,
140     SC6600L_ID_MAX,
141     SC8800H_ID_BASE = SERIAL_SC8800H << 16,
142     SC8800H,
143     SC8800S3B,
144     /* modified by zhengfei.xiao for SC8800H5 */
145     SC8800H5,
146     SC8800S4_AC,
147     SC8800H5_AC,
148     SC8800H_ID_MAX,
149     SC6800H_ID_BASE = SERIAL_SC6800H << 16,
150     SC6800H,
151     SC6800H_ID_MAX,
152     SC8800G_ID_BASE = SERIAL_SC8800G << 16,
153     SC8800G1,
154     SC8800G2,
155     SC8801G2,
156     SC8802G2,
157     SC8800G_ID_MAX,
158     CHIP_TYPE_MAX = 0x7FFFFFFF
159 } CHIP_TYPE_E;
160
161 //define dsp rom code id
162 typedef enum chip_dsp_rom_id_tag
163 {
164     CHIP_DSP_ROM_V1,
165     CHIP_DSP_ROM_V2,
166     CHIP_DSP_ROM_V3,
167     CHIP_DSP_ROM_ID_MAX
168 } CHIP_DSP_ROM_ID_E;
169
170 typedef enum module_clk
171 {
172     CLK_MCU = 16,
173     CLK_APB,
174     CLK_DSP,
175     CLK_CAL,
176     CLK_12M,
177     CLK_48M,
178     CLK_CCIR,
179     CLK_DCAM,
180     CLK_IIS,
181     CLK_VBC,
182     CLK_CDC,
183     CLK_AUX0,
184     CLK_AUX1
185 } MODULE_CLK_E;
186
187 typedef enum module_clk_src
188 {
189     CLKPLL = 0,
190     CLKUPLL,
191     CLK13M,
192     CLK32K
193 } MODULE_CLK_SRC_E;
194
195 typedef struct _SYS_CLK_CFG_INFO
196 {
197     uint32 pll_mn;
198     uint32 upll_mn;
199     uint32 dsp_arm_div;
200 } SYS_CLK_CFG_INFO;
201
202 typedef struct  _CHIP_INFO
203 {
204     CHIP_TYPE_E type;
205     char info[16];
206 } CHIP_INFO;
207
208 /**---------------------------------------------------------------------------*
209  **                         Function Prototypes                               *
210  **---------------------------------------------------------------------------*/
211 /*****************************************************************************/
212 //  Description:    The function is used to return chip ID (a uint32 number).
213 //  Global resource dependence:
214 //  Author:         Xueliang.Wang
215 //  Note:
216 /*****************************************************************************/
217 PUBLIC  uint32 CHIP_GetHWChipID (void);  // return chip ID number.
218
219 /*****************************************************************************/
220 //  Description:    The function is used to detect the memory type
221 //  Global resource dependence:
222 //  Author:         Nick.Zhao
223 //  Return value:
224 //                1      CS0 connects to SDRAM
225 //                0      CS0 connects to FLASH
226 /*****************************************************************************/
227 PUBLIC uint32 CHIP_DetectMemType (void);
228
229 /*****************************************************************************/
230 // Description :    This function is used to get current ARM clock.
231 // Global resource dependence :
232 // Author :         Xueliang.Wang
233 // Note :
234 /*****************************************************************************/
235 uint32 CHIP_GetArmClk (void);
236 /*****************************************************************************/
237 // Description :    This function is used to get current AHB clock.
238 // Global resource dependence :
239 // Author :         Zhengjiang.Lei
240 // Note :
241 /*****************************************************************************/
242 uint32 CHIP_GetAhbClk (void);
243 /*****************************************************************************/
244 // Description :    This function is used to get current APB clock.
245 // Global resource dependence :
246 // Author :         Xueliang.Wang
247 // Note :
248 /*****************************************************************************/
249 uint32 CHIP_GetAPBClk (void);
250 /*****************************************************************************/
251 // Description :    This function is used to get current PLL clock.
252 // Global resource dependence :
253 // Author :         Xueliang.Wang
254 // Note :
255 /*****************************************************************************/
256 uint32 CHIP_GetPllClk (void);
257
258 /*****************************************************************************/
259 // Description :    This function is used to get current PLL clock.
260 // Global resource dependence :
261 // Author :         Xueliang.Wang
262 // Note :
263 /*****************************************************************************/
264 uint32 CHIP_GetMPllClk (void);
265
266 /*****************************************************************************/
267 // Description :    This function is used to get current VPLL clock.
268 // Global resource dependence :
269 // Author :         Xueliang.Wang
270 // Note :           Daniel.ding add it for SC6800 .
271 /*****************************************************************************/
272 uint32 CHIP_GetVPllClk (void);
273
274
275 /*****************************************************************************/
276 // Description :    This function is used to disable all fiqs on sc6600d
277 // Global resource dependence :
278 // Author :         Xueliang.Wang
279 // Note :           every bit indicates one fiq src
280 /*****************************************************************************/
281 void CHIP_DisableFIQ (void);
282
283
284 /*****************************************************************************/
285 // Description :    This function is used to turn off the power.
286 // Global resource dependence :
287 // Author :         Xueliang.Wang
288 // Note :
289 /*****************************************************************************/
290 void CHIP_TurnOffPower (void);
291
292 /*****************************************************************************/
293 // Description :    This function is used to reset MCU.
294 // Global resource dependence :
295 // Author :         Xueliang.Wang
296 // Note :
297 /*****************************************************************************/
298 void CHIP_ResetMCU (void);
299
300 /*****************************************************************************/
301 // Description :    This function is used to reset MCU from boot code.
302 // Global resource dependence :
303 // Author :         Xueliang.Wang
304 // Note :
305 /*****************************************************************************/
306 void CHIP_BootReset (void);
307
308
309 /*****************************************************************************/
310 // Description :    This function is used to get current DSP clock.
311 // Global resource dependence :
312 // Author :         Benjamin.Wang
313 // Note :
314 /*****************************************************************************/
315 uint32 CHIP_GetDspClk (void);
316
317 /*****************************************************************************/
318 // Description :    This function is used to get current VPLL clock.
319 // Global resource dependence :
320 // Author :         Xueliang.Wang
321 // Note :           Aiguo.Miao update it for SC8800H .
322 /*****************************************************************************/
323 uint32 CHIP_GetTDPllClk (void);
324
325 /*********************************************************************************************/
326 //Description:   This function is used to initializtion system clk and other
327 //Author:
328 //Note:          Can't use trace and assert in this funciton ;
329 //Parameter:
330 /*********************************************************************************************/
331 void CHIP_Init (void);
332
333 /*****************************************************************************/
334 // Description :    This function is used get the chip type
335 // Global resource dependence : none
336 // Author :         yuhua.shi
337 // Note :
338 /*****************************************************************************/
339 PUBLIC CHIP_TYPE_E CHIP_GetChipType (void);
340
341
342 /*****************************************************************************/
343 // Description :    This function is used get the chip type
344 // Global resource dependence : none
345 // Author :         yuhua.shi
346 // Note :
347 /*****************************************************************************/
348 PUBLIC const char *CHIP_GetChipInfo (void);
349
350
351 /*****************************************************************************/
352 // Description :    This function is active/deactive share-memory clock
353 // Global resource dependence : none
354 // Author :
355 // Note :
356 /*****************************************************************************/
357 PUBLIC void CHIP_ActiveSMCLK (BOOLEAN is_active);
358 /*****************************************************************************/
359 // Description :    This function is Get Usb DM Value
360 // Global resource dependence : none
361 // Author :
362 // Note :
363 /*****************************************************************************/
364 PUBLIC BOOLEAN CHIP_GetUsbDMValue (void);
365
366 /*****************************************************************************/
367 //  Description:    The function is used to get the chip ID (a uint32 number).
368 //  Global resource dependence:
369 //  Author:         Richard.Yang
370 //  Note:           It must be called before any hardware related settings
371 /*****************************************************************************/
372 PUBLIC void CHIP_InitHWChipID (void);
373
374 #ifdef PLATFORM_SC8800H
375 /*****************************************************************************/
376 //  Description:    The function is used to init TD Calibration clock
377 //  Author:         Jeff.li
378 //  Note:
379 /*****************************************************************************/
380 PUBLIC void CHIP_TDCalClk_Init (void);
381
382 /*****************************************************************************/
383 //  Description:    The function is used to init TD clock
384 //  Author:         Jeff.li
385 //  Note:
386 /*****************************************************************************/
387 PUBLIC void CHIP_CEVAClk_Init (uint8 dsp_clk_sel);
388
389 /*****************************************************************************/
390 //  Description:    The function is called by Layer1 when response to DSP sleep
391 //  Author:         Jeff.li
392 //  Note:           Close RFLDO/TD CAL/UART
393 /*****************************************************************************/
394 PUBLIC void CHIP_DSPSleep (void);
395
396 /*****************************************************************************/
397 //  Description:    The function is called by Layer1 when response to DSP wake up
398 //  Author:         Jeff.li
399 //  Note:           Open RFLDO/TD CAL/UART
400 /*****************************************************************************/
401 PUBLIC void CHIP_DSPWakeUp (void);
402
403 /*****************************************************************************/
404 //  Description:    The function is used to get to know wheather use UART1 for LOG or not
405 //  Author:         Jeff.li
406 //  Note:
407 /*****************************************************************************/
408 PUBLIC uint32 CHIP_GetUART1LogMode (void);
409
410 /*****************************************************************************/
411 //  Description:    The function is used to set wheather use UART1 for LOG or not
412 //  Author:         Jeff.li
413 //  Note:
414 /*****************************************************************************/
415 PUBLIC void CHIP_SetUART1LogMode (uint32 UART1LogEn);
416
417 /*****************************************************************************/
418 //  Description:    The function is called by Layer1 when response to DSP wake up
419 //  Author:         Jeff.li
420 //  Note:           Disable UART1
421 /*****************************************************************************/
422 PUBLIC void CHIP_DSPUART1Dis (void);
423
424 /*****************************************************************************/
425 //  Description:    The function is called by Layer1 when response to DSP wake up
426 //  Author:         Jeff.li
427 //  Note:           Open UART1
428 /*****************************************************************************/
429 PUBLIC void CHIP_DSPUART1En (void);
430
431 #endif
432
433 /*****************************************************************************/
434 //  Description:   This function is used to do something before assert.
435 //  Global resource dependence:
436 //  Author:         Zhengjiang.Lei
437 //  Note:
438 /*****************************************************************************/
439
440 PUBLIC void CHIP_BeforeAssert (void);
441
442 /*below are removed from driver_export.c, wait clean up*/
443 // The function is used to reset dsp when arm system enter assert mode
444 PUBLIC BOOLEAN CHIP_ResetDspInAssertMode (void);
445
446 // The function is used to reset and set dsp to output dsp assert log to pc by uart1
447 PUBLIC void CHIP_DspOutPutAssertInfo (void);
448
449 // The function is used to get the IRAM/SHARE-MEMORY buf to store assert information
450 // in the assert mode.
451 // The buffer size must be larger than size(IRAM_buf) structure
452 PUBLIC void *CHIP_GetAssertInfoBufBase (void);
453
454 /******************************************************************************/
455 // Description:   Enable MCU can access switched-ram and shared-ram.
456 // Dependence:    NONE
457 // Author:        Haifeng.Yang
458 // Note:          Beforce invoking this function, the DSP/ISP should be hold on!
459 /******************************************************************************/
460 PUBLIC uint32 Chip_SwitchIRAM2Arm (void);
461
462 /******************************************************************************/
463 // Description:   handle function when dsp exception
464 // Dependence:    NONE
465 // Author:        
466 // Note:          
467 /******************************************************************************/
468 PUBLIC void L1API_DSPExceptionHandle(void);
469
470 extern SYS_CLK_CFG_INFO *Get_system_clk_cfg (void);
471 extern  void EMC_Close (void);
472 extern void __tx_reset (void);
473
474 /**---------------------------------------------------------------------------*
475  **                         Compiler Flag                                     *
476  **---------------------------------------------------------------------------*/
477 #ifdef __cplusplus
478 }
479 #endif
480
481 #endif // _CHIP_DRVAPI_H_