1 /******************************************************************************
2 ** File Name: chip_drvapi.h *
3 ** Author: Richard Yang *
5 ** Copyright: 2002 Spreatrum, Incoporated. All Rights Reserved. *
6 ** Description: This driver is for spreadtrum chip set. *
7 ******************************************************************************
9 ******************************************************************************
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_
19 /**---------------------------------------------------------------------------*
21 **---------------------------------------------------------------------------*/
23 /**---------------------------------------------------------------------------*
25 **---------------------------------------------------------------------------*/
31 /**---------------------------------------------------------------------------*
33 **---------------------------------------------------------------------------*/
35 #define PLL_CLK_192M 192000000
37 #define CLK_DIV_1M 1000000
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
93 /**---------------------------------------------------------------------------*
94 ** Constant Variables *
95 **---------------------------------------------------------------------------*/
96 typedef enum chip_serial_tag
111 typedef enum chip_type_tag
113 SC6600I_ID_BASE = SERIAL_SC6600I << 16,
116 SC6600R_ID_BASE = SERIAL_SC6600R << 16,
123 SC6600H_ID_BASE = SERIAL_SC6600H << 16,
128 SC6800D_ID_BASE = SERIAL_SC6800D << 16,
131 SC8800D_ID_BASE = SERIAL_SC8800D << 16,
134 SC6600L_ID_BASE = SERIAL_SC6600L << 16,
141 SC8800H_ID_BASE = SERIAL_SC8800H << 16,
144 /* modified by zhengfei.xiao for SC8800H5 */
149 SC6800H_ID_BASE = SERIAL_SC6800H << 16,
152 SC8800G_ID_BASE = SERIAL_SC8800G << 16,
158 CHIP_TYPE_MAX = 0x7FFFFFFF
161 //define dsp rom code id
162 typedef enum chip_dsp_rom_id_tag
170 typedef enum module_clk
187 typedef enum module_clk_src
195 typedef struct _SYS_CLK_CFG_INFO
202 typedef struct _CHIP_INFO
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
216 /*****************************************************************************/
217 PUBLIC uint32 CHIP_GetHWChipID (void); // return chip ID number.
219 /*****************************************************************************/
220 // Description: The function is used to detect the memory type
221 // Global resource dependence:
224 // 1 CS0 connects to SDRAM
225 // 0 CS0 connects to FLASH
226 /*****************************************************************************/
227 PUBLIC uint32 CHIP_DetectMemType (void);
229 /*****************************************************************************/
230 // Description : This function is used to get current ARM clock.
231 // Global resource dependence :
232 // Author : Xueliang.Wang
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
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
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
255 /*****************************************************************************/
256 uint32 CHIP_GetPllClk (void);
258 /*****************************************************************************/
259 // Description : This function is used to get current PLL clock.
260 // Global resource dependence :
261 // Author : Xueliang.Wang
263 /*****************************************************************************/
264 uint32 CHIP_GetMPllClk (void);
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);
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);
284 /*****************************************************************************/
285 // Description : This function is used to turn off the power.
286 // Global resource dependence :
287 // Author : Xueliang.Wang
289 /*****************************************************************************/
290 void CHIP_TurnOffPower (void);
292 /*****************************************************************************/
293 // Description : This function is used to reset MCU.
294 // Global resource dependence :
295 // Author : Xueliang.Wang
297 /*****************************************************************************/
298 void CHIP_ResetMCU (void);
300 /*****************************************************************************/
301 // Description : This function is used to reset MCU from boot code.
302 // Global resource dependence :
303 // Author : Xueliang.Wang
305 /*****************************************************************************/
306 void CHIP_BootReset (void);
309 /*****************************************************************************/
310 // Description : This function is used to get current DSP clock.
311 // Global resource dependence :
312 // Author : Benjamin.Wang
314 /*****************************************************************************/
315 uint32 CHIP_GetDspClk (void);
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);
325 /*********************************************************************************************/
326 //Description: This function is used to initializtion system clk and other
328 //Note: Can't use trace and assert in this funciton ;
330 /*********************************************************************************************/
331 void CHIP_Init (void);
333 /*****************************************************************************/
334 // Description : This function is used get the chip type
335 // Global resource dependence : none
336 // Author : yuhua.shi
338 /*****************************************************************************/
339 PUBLIC CHIP_TYPE_E CHIP_GetChipType (void);
342 /*****************************************************************************/
343 // Description : This function is used get the chip type
344 // Global resource dependence : none
345 // Author : yuhua.shi
347 /*****************************************************************************/
348 PUBLIC const char *CHIP_GetChipInfo (void);
351 /*****************************************************************************/
352 // Description : This function is active/deactive share-memory clock
353 // Global resource dependence : none
356 /*****************************************************************************/
357 PUBLIC void CHIP_ActiveSMCLK (BOOLEAN is_active);
358 /*****************************************************************************/
359 // Description : This function is Get Usb DM Value
360 // Global resource dependence : none
363 /*****************************************************************************/
364 PUBLIC BOOLEAN CHIP_GetUsbDMValue (void);
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);
374 #ifdef PLATFORM_SC8800H
375 /*****************************************************************************/
376 // Description: The function is used to init TD Calibration clock
379 /*****************************************************************************/
380 PUBLIC void CHIP_TDCalClk_Init (void);
382 /*****************************************************************************/
383 // Description: The function is used to init TD clock
386 /*****************************************************************************/
387 PUBLIC void CHIP_CEVAClk_Init (uint8 dsp_clk_sel);
389 /*****************************************************************************/
390 // Description: The function is called by Layer1 when response to DSP sleep
392 // Note: Close RFLDO/TD CAL/UART
393 /*****************************************************************************/
394 PUBLIC void CHIP_DSPSleep (void);
396 /*****************************************************************************/
397 // Description: The function is called by Layer1 when response to DSP wake up
399 // Note: Open RFLDO/TD CAL/UART
400 /*****************************************************************************/
401 PUBLIC void CHIP_DSPWakeUp (void);
403 /*****************************************************************************/
404 // Description: The function is used to get to know wheather use UART1 for LOG or not
407 /*****************************************************************************/
408 PUBLIC uint32 CHIP_GetUART1LogMode (void);
410 /*****************************************************************************/
411 // Description: The function is used to set wheather use UART1 for LOG or not
414 /*****************************************************************************/
415 PUBLIC void CHIP_SetUART1LogMode (uint32 UART1LogEn);
417 /*****************************************************************************/
418 // Description: The function is called by Layer1 when response to DSP wake up
420 // Note: Disable UART1
421 /*****************************************************************************/
422 PUBLIC void CHIP_DSPUART1Dis (void);
424 /*****************************************************************************/
425 // Description: The function is called by Layer1 when response to DSP wake up
428 /*****************************************************************************/
429 PUBLIC void CHIP_DSPUART1En (void);
433 /*****************************************************************************/
434 // Description: This function is used to do something before assert.
435 // Global resource dependence:
436 // Author: Zhengjiang.Lei
438 /*****************************************************************************/
440 PUBLIC void CHIP_BeforeAssert (void);
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);
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);
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);
454 /******************************************************************************/
455 // Description: Enable MCU can access switched-ram and shared-ram.
457 // Author: Haifeng.Yang
458 // Note: Beforce invoking this function, the DSP/ISP should be hold on!
459 /******************************************************************************/
460 PUBLIC uint32 Chip_SwitchIRAM2Arm (void);
462 /******************************************************************************/
463 // Description: handle function when dsp exception
467 /******************************************************************************/
468 PUBLIC void L1API_DSPExceptionHandle(void);
470 extern SYS_CLK_CFG_INFO *Get_system_clk_cfg (void);
471 extern void EMC_Close (void);
472 extern void __tx_reset (void);
474 /**---------------------------------------------------------------------------*
476 **---------------------------------------------------------------------------*/
481 #endif // _CHIP_DRVAPI_H_