tizen 2.4 release
[profile/mobile/platform/kernel/u-boot-tm1.git] / arch / arm / include / asm / arch-sc8830 / 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_750M       750000000
83 #define ARM_CLK_800M       800000000
84 #define ARM_CLK_870M       870000000
85 #define ARM_CLK_900M       900000000
86 #define ARM_CLK_1000M      1000000000
87 #define ARM_CLK_1100M      1100000000
88 #define ARM_CLK_1200M      1200000000
89 #define ARM_CLK_1300M      1300000000
90 #define ARM_CLK_1400M      1400000000
91 #define ARM_CLK_1500M      1500000000
92 #define ARM_CLK_1600M      1600000000
93
94 /**---------------------------------------------------------------------------*
95  **                         Constant Variables                                *
96  **---------------------------------------------------------------------------*/
97 typedef enum chip_serial_tag
98 {
99     SERIAL_SC6600I,
100     SERIAL_SC6600R,
101     SERIAL_SC6600H,
102     SERIAL_SC6800D,
103     SERIAL_SC8800D,
104     SERIAL_SC6600L,
105     SERIAL_SC8800H,
106     SERIAL_SC6800H,
107     SERIAL_SC8800G,
108     CHIP_SERIAL_MAX
109 }
110 CHIP_SERIAL_E;
111
112 typedef enum chip_type_tag
113 {
114     SC6600I_ID_BASE = SERIAL_SC6600I << 16,
115     SC6600I,
116     SC6600I_ID_MAX,
117     SC6600R_ID_BASE = SERIAL_SC6600R << 16,
118     SC6600R1,
119     SC6600R2,
120     SC6600R2A,
121     SC6600R3,
122     SC6600R3A,
123     SC6600R_ID_MAX,
124     SC6600H_ID_BASE = SERIAL_SC6600H << 16,
125     SC6600H1,
126     SC6600H2,
127     SC6600H3,
128     SC6600H_ID_MAX,
129     SC6800D_ID_BASE = SERIAL_SC6800D << 16,
130     SC6800D,
131     SC6800D_ID_MAX,
132     SC8800D_ID_BASE = SERIAL_SC8800D << 16,
133     SC8800D,
134     SC8800D_ID_MAX,
135     SC6600L_ID_BASE = SERIAL_SC6600L << 16,
136     SC6600L,
137     SC6600L2,
138     SC6600L7,
139     SC6600H3A,
140     SC6600W2,
141     SC6600L_ID_MAX,
142     SC8800H_ID_BASE = SERIAL_SC8800H << 16,
143     SC8800H,
144     SC8800S3B,
145     /* modified by zhengfei.xiao for SC8800H5 */
146     SC8800H5,
147     SC8800S4_AC,
148     SC8800H5_AC,
149     SC8800H_ID_MAX,
150     SC6800H_ID_BASE = SERIAL_SC6800H << 16,
151     SC6800H,
152     SC6800H_ID_MAX,
153     SC8800G_ID_BASE = SERIAL_SC8800G << 16,
154     SC8800G1,
155     SC8800G2,
156     SC8801G2,
157     SC8802G2,
158     SC8800G_ID_MAX,
159     CHIP_TYPE_MAX = 0x7FFFFFFF
160 } CHIP_TYPE_E;
161
162 //define dsp rom code id
163 typedef enum chip_dsp_rom_id_tag
164 {
165     CHIP_DSP_ROM_V1,
166     CHIP_DSP_ROM_V2,
167     CHIP_DSP_ROM_V3,
168     CHIP_DSP_ROM_ID_MAX
169 } CHIP_DSP_ROM_ID_E;
170
171 typedef enum module_clk
172 {
173     CLK_MCU = 16,
174     CLK_APB,
175     CLK_DSP,
176     CLK_CAL,
177     CLK_12M,
178     CLK_48M,
179     CLK_CCIR,
180     CLK_DCAM,
181     CLK_IIS,
182     CLK_VBC,
183     CLK_CDC,
184     CLK_AUX0,
185     CLK_AUX1
186 } MODULE_CLK_E;
187
188 typedef enum module_clk_src
189 {
190     CLKPLL = 0,
191     CLKUPLL,
192     CLK13M,
193     CLK32K
194 } MODULE_CLK_SRC_E;
195
196 typedef struct _SYS_CLK_CFG_INFO
197 {
198     uint32 pll_mn;
199     uint32 upll_mn;
200     uint32 dsp_arm_div;
201 } SYS_CLK_CFG_INFO;
202
203 typedef struct  _CHIP_INFO
204 {
205     CHIP_TYPE_E type;
206     char info[16];
207 } CHIP_INFO;
208
209 /**---------------------------------------------------------------------------*
210  **                         Function Prototypes                               *
211  **---------------------------------------------------------------------------*/
212 /*****************************************************************************/
213 //  Description:    The function is used to return chip ID (a uint32 number).
214 //  Global resource dependence:
215 //  Author:         Xueliang.Wang
216 //  Note:
217 /*****************************************************************************/
218 PUBLIC  uint32 CHIP_GetHWChipID (void);  // return chip ID number.
219
220 /*****************************************************************************/
221 //  Description:    The function is used to detect the memory type
222 //  Global resource dependence:
223 //  Author:         Nick.Zhao
224 //  Return value:
225 //                1      CS0 connects to SDRAM
226 //                0      CS0 connects to FLASH
227 /*****************************************************************************/
228 PUBLIC uint32 CHIP_DetectMemType (void);
229
230 /*****************************************************************************/
231 // Description :    This function is used to get current ARM clock.
232 // Global resource dependence :
233 // Author :         Xueliang.Wang
234 // Note :
235 /*****************************************************************************/
236 uint32 CHIP_GetArmClk (void);
237 /*****************************************************************************/
238 // Description :    This function is used to get current AHB clock.
239 // Global resource dependence :
240 // Author :         Zhengjiang.Lei
241 // Note :
242 /*****************************************************************************/
243 uint32 CHIP_GetAhbClk (void);
244 /*****************************************************************************/
245 // Description :    This function is used to get current APB clock.
246 // Global resource dependence :
247 // Author :         Xueliang.Wang
248 // Note :
249 /*****************************************************************************/
250 uint32 CHIP_GetAPBClk (void);
251 /*****************************************************************************/
252 // Description :    This function is used to get current PLL clock.
253 // Global resource dependence :
254 // Author :         Xueliang.Wang
255 // Note :
256 /*****************************************************************************/
257 uint32 CHIP_GetPllClk (void);
258
259 /*****************************************************************************/
260 // Description :    This function is used to get current PLL clock.
261 // Global resource dependence :
262 // Author :         Xueliang.Wang
263 // Note :
264 /*****************************************************************************/
265 uint32 CHIP_GetMPllClk (void);
266
267 /*****************************************************************************/
268 // Description :    This function is used to get current VPLL clock.
269 // Global resource dependence :
270 // Author :         Xueliang.Wang
271 // Note :           Daniel.ding add it for SC6800 .
272 /*****************************************************************************/
273 uint32 CHIP_GetVPllClk (void);
274
275
276 /*****************************************************************************/
277 // Description :    This function is used to disable all fiqs on sc6600d
278 // Global resource dependence :
279 // Author :         Xueliang.Wang
280 // Note :           every bit indicates one fiq src
281 /*****************************************************************************/
282 void CHIP_DisableFIQ (void);
283
284
285 /*****************************************************************************/
286 // Description :    This function is used to turn off the power.
287 // Global resource dependence :
288 // Author :         Xueliang.Wang
289 // Note :
290 /*****************************************************************************/
291 void CHIP_TurnOffPower (void);
292
293 /*****************************************************************************/
294 // Description :    This function is used to reset MCU.
295 // Global resource dependence :
296 // Author :         Xueliang.Wang
297 // Note :
298 /*****************************************************************************/
299 void CHIP_ResetMCU (void);
300
301 /*****************************************************************************/
302 // Description :    This function is used to reset MCU from boot code.
303 // Global resource dependence :
304 // Author :         Xueliang.Wang
305 // Note :
306 /*****************************************************************************/
307 void CHIP_BootReset (void);
308
309
310 /*****************************************************************************/
311 // Description :    This function is used to get current DSP clock.
312 // Global resource dependence :
313 // Author :         Benjamin.Wang
314 // Note :
315 /*****************************************************************************/
316 uint32 CHIP_GetDspClk (void);
317
318 /*****************************************************************************/
319 // Description :    This function is used to get current VPLL clock.
320 // Global resource dependence :
321 // Author :         Xueliang.Wang
322 // Note :           Aiguo.Miao update it for SC8800H .
323 /*****************************************************************************/
324 uint32 CHIP_GetTDPllClk (void);
325
326 /*********************************************************************************************/
327 //Description:   This function is used to initializtion system clk and other
328 //Author:
329 //Note:          Can't use trace and assert in this funciton ;
330 //Parameter:
331 /*********************************************************************************************/
332 void CHIP_Init (void);
333
334 /*****************************************************************************/
335 // Description :    This function is used get the chip type
336 // Global resource dependence : none
337 // Author :         yuhua.shi
338 // Note :
339 /*****************************************************************************/
340 PUBLIC CHIP_TYPE_E CHIP_GetChipType (void);
341
342
343 /*****************************************************************************/
344 // Description :    This function is used get the chip type
345 // Global resource dependence : none
346 // Author :         yuhua.shi
347 // Note :
348 /*****************************************************************************/
349 PUBLIC const char *CHIP_GetChipInfo (void);
350
351
352 /*****************************************************************************/
353 // Description :    This function is active/deactive share-memory clock
354 // Global resource dependence : none
355 // Author :
356 // Note :
357 /*****************************************************************************/
358 PUBLIC void CHIP_ActiveSMCLK (BOOLEAN is_active);
359 /*****************************************************************************/
360 // Description :    This function is Get Usb DM Value
361 // Global resource dependence : none
362 // Author :
363 // Note :
364 /*****************************************************************************/
365 PUBLIC BOOLEAN CHIP_GetUsbDMValue (void);
366
367 /*****************************************************************************/
368 //  Description:    The function is used to get the chip ID (a uint32 number).
369 //  Global resource dependence:
370 //  Author:         Richard.Yang
371 //  Note:           It must be called before any hardware related settings
372 /*****************************************************************************/
373 PUBLIC void CHIP_InitHWChipID (void);
374
375 #ifdef PLATFORM_SC8800H
376 /*****************************************************************************/
377 //  Description:    The function is used to init TD Calibration clock
378 //  Author:         Jeff.li
379 //  Note:
380 /*****************************************************************************/
381 PUBLIC void CHIP_TDCalClk_Init (void);
382
383 /*****************************************************************************/
384 //  Description:    The function is used to init TD clock
385 //  Author:         Jeff.li
386 //  Note:
387 /*****************************************************************************/
388 PUBLIC void CHIP_CEVAClk_Init (uint8 dsp_clk_sel);
389
390 /*****************************************************************************/
391 //  Description:    The function is called by Layer1 when response to DSP sleep
392 //  Author:         Jeff.li
393 //  Note:           Close RFLDO/TD CAL/UART
394 /*****************************************************************************/
395 PUBLIC void CHIP_DSPSleep (void);
396
397 /*****************************************************************************/
398 //  Description:    The function is called by Layer1 when response to DSP wake up
399 //  Author:         Jeff.li
400 //  Note:           Open RFLDO/TD CAL/UART
401 /*****************************************************************************/
402 PUBLIC void CHIP_DSPWakeUp (void);
403
404 /*****************************************************************************/
405 //  Description:    The function is used to get to know wheather use UART1 for LOG or not
406 //  Author:         Jeff.li
407 //  Note:
408 /*****************************************************************************/
409 PUBLIC uint32 CHIP_GetUART1LogMode (void);
410
411 /*****************************************************************************/
412 //  Description:    The function is used to set wheather use UART1 for LOG or not
413 //  Author:         Jeff.li
414 //  Note:
415 /*****************************************************************************/
416 PUBLIC void CHIP_SetUART1LogMode (uint32 UART1LogEn);
417
418 /*****************************************************************************/
419 //  Description:    The function is called by Layer1 when response to DSP wake up
420 //  Author:         Jeff.li
421 //  Note:           Disable UART1
422 /*****************************************************************************/
423 PUBLIC void CHIP_DSPUART1Dis (void);
424
425 /*****************************************************************************/
426 //  Description:    The function is called by Layer1 when response to DSP wake up
427 //  Author:         Jeff.li
428 //  Note:           Open UART1
429 /*****************************************************************************/
430 PUBLIC void CHIP_DSPUART1En (void);
431
432 #endif
433
434 /*****************************************************************************/
435 //  Description:   This function is used to do something before assert.
436 //  Global resource dependence:
437 //  Author:         Zhengjiang.Lei
438 //  Note:
439 /*****************************************************************************/
440
441 PUBLIC void CHIP_BeforeAssert (void);
442
443 /*below are removed from driver_export.c, wait clean up*/
444 // The function is used to reset dsp when arm system enter assert mode
445 PUBLIC BOOLEAN CHIP_ResetDspInAssertMode (void);
446
447 // The function is used to reset and set dsp to output dsp assert log to pc by uart1
448 PUBLIC void CHIP_DspOutPutAssertInfo (void);
449
450 // The function is used to get the IRAM/SHARE-MEMORY buf to store assert information
451 // in the assert mode.
452 // The buffer size must be larger than size(IRAM_buf) structure
453 PUBLIC void *CHIP_GetAssertInfoBufBase (void);
454
455 /******************************************************************************/
456 // Description:   Enable MCU can access switched-ram and shared-ram.
457 // Dependence:    NONE
458 // Author:        Haifeng.Yang
459 // Note:          Beforce invoking this function, the DSP/ISP should be hold on!
460 /******************************************************************************/
461 PUBLIC uint32 Chip_SwitchIRAM2Arm (void);
462
463 /******************************************************************************/
464 // Description:   handle function when dsp exception
465 // Dependence:    NONE
466 // Author:        
467 // Note:          
468 /******************************************************************************/
469 PUBLIC void L1API_DSPExceptionHandle(void);
470
471 extern SYS_CLK_CFG_INFO *Get_system_clk_cfg (void);
472 extern  void EMC_Close (void);
473 extern void __tx_reset (void);
474
475 /**---------------------------------------------------------------------------*
476  **                         Compiler Flag                                     *
477  **---------------------------------------------------------------------------*/
478 #ifdef __cplusplus
479 }
480 #endif
481
482 #endif // _CHIP_DRVAPI_H_