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_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
94 /**---------------------------------------------------------------------------*
95 ** Constant Variables *
96 **---------------------------------------------------------------------------*/
97 typedef enum chip_serial_tag
112 typedef enum chip_type_tag
114 SC6600I_ID_BASE = SERIAL_SC6600I << 16,
117 SC6600R_ID_BASE = SERIAL_SC6600R << 16,
124 SC6600H_ID_BASE = SERIAL_SC6600H << 16,
129 SC6800D_ID_BASE = SERIAL_SC6800D << 16,
132 SC8800D_ID_BASE = SERIAL_SC8800D << 16,
135 SC6600L_ID_BASE = SERIAL_SC6600L << 16,
142 SC8800H_ID_BASE = SERIAL_SC8800H << 16,
145 /* modified by zhengfei.xiao for SC8800H5 */
150 SC6800H_ID_BASE = SERIAL_SC6800H << 16,
153 SC8800G_ID_BASE = SERIAL_SC8800G << 16,
159 CHIP_TYPE_MAX = 0x7FFFFFFF
162 //define dsp rom code id
163 typedef enum chip_dsp_rom_id_tag
171 typedef enum module_clk
188 typedef enum module_clk_src
196 typedef struct _SYS_CLK_CFG_INFO
203 typedef struct _CHIP_INFO
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
217 /*****************************************************************************/
218 PUBLIC uint32 CHIP_GetHWChipID (void); // return chip ID number.
220 /*****************************************************************************/
221 // Description: The function is used to detect the memory type
222 // Global resource dependence:
225 // 1 CS0 connects to SDRAM
226 // 0 CS0 connects to FLASH
227 /*****************************************************************************/
228 PUBLIC uint32 CHIP_DetectMemType (void);
230 /*****************************************************************************/
231 // Description : This function is used to get current ARM clock.
232 // Global resource dependence :
233 // Author : Xueliang.Wang
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
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
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
256 /*****************************************************************************/
257 uint32 CHIP_GetPllClk (void);
259 /*****************************************************************************/
260 // Description : This function is used to get current PLL clock.
261 // Global resource dependence :
262 // Author : Xueliang.Wang
264 /*****************************************************************************/
265 uint32 CHIP_GetMPllClk (void);
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);
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);
285 /*****************************************************************************/
286 // Description : This function is used to turn off the power.
287 // Global resource dependence :
288 // Author : Xueliang.Wang
290 /*****************************************************************************/
291 void CHIP_TurnOffPower (void);
293 /*****************************************************************************/
294 // Description : This function is used to reset MCU.
295 // Global resource dependence :
296 // Author : Xueliang.Wang
298 /*****************************************************************************/
299 void CHIP_ResetMCU (void);
301 /*****************************************************************************/
302 // Description : This function is used to reset MCU from boot code.
303 // Global resource dependence :
304 // Author : Xueliang.Wang
306 /*****************************************************************************/
307 void CHIP_BootReset (void);
310 /*****************************************************************************/
311 // Description : This function is used to get current DSP clock.
312 // Global resource dependence :
313 // Author : Benjamin.Wang
315 /*****************************************************************************/
316 uint32 CHIP_GetDspClk (void);
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);
326 /*********************************************************************************************/
327 //Description: This function is used to initializtion system clk and other
329 //Note: Can't use trace and assert in this funciton ;
331 /*********************************************************************************************/
332 void CHIP_Init (void);
334 /*****************************************************************************/
335 // Description : This function is used get the chip type
336 // Global resource dependence : none
337 // Author : yuhua.shi
339 /*****************************************************************************/
340 PUBLIC CHIP_TYPE_E CHIP_GetChipType (void);
343 /*****************************************************************************/
344 // Description : This function is used get the chip type
345 // Global resource dependence : none
346 // Author : yuhua.shi
348 /*****************************************************************************/
349 PUBLIC const char *CHIP_GetChipInfo (void);
352 /*****************************************************************************/
353 // Description : This function is active/deactive share-memory clock
354 // Global resource dependence : none
357 /*****************************************************************************/
358 PUBLIC void CHIP_ActiveSMCLK (BOOLEAN is_active);
359 /*****************************************************************************/
360 // Description : This function is Get Usb DM Value
361 // Global resource dependence : none
364 /*****************************************************************************/
365 PUBLIC BOOLEAN CHIP_GetUsbDMValue (void);
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);
375 #ifdef PLATFORM_SC8800H
376 /*****************************************************************************/
377 // Description: The function is used to init TD Calibration clock
380 /*****************************************************************************/
381 PUBLIC void CHIP_TDCalClk_Init (void);
383 /*****************************************************************************/
384 // Description: The function is used to init TD clock
387 /*****************************************************************************/
388 PUBLIC void CHIP_CEVAClk_Init (uint8 dsp_clk_sel);
390 /*****************************************************************************/
391 // Description: The function is called by Layer1 when response to DSP sleep
393 // Note: Close RFLDO/TD CAL/UART
394 /*****************************************************************************/
395 PUBLIC void CHIP_DSPSleep (void);
397 /*****************************************************************************/
398 // Description: The function is called by Layer1 when response to DSP wake up
400 // Note: Open RFLDO/TD CAL/UART
401 /*****************************************************************************/
402 PUBLIC void CHIP_DSPWakeUp (void);
404 /*****************************************************************************/
405 // Description: The function is used to get to know wheather use UART1 for LOG or not
408 /*****************************************************************************/
409 PUBLIC uint32 CHIP_GetUART1LogMode (void);
411 /*****************************************************************************/
412 // Description: The function is used to set wheather use UART1 for LOG or not
415 /*****************************************************************************/
416 PUBLIC void CHIP_SetUART1LogMode (uint32 UART1LogEn);
418 /*****************************************************************************/
419 // Description: The function is called by Layer1 when response to DSP wake up
421 // Note: Disable UART1
422 /*****************************************************************************/
423 PUBLIC void CHIP_DSPUART1Dis (void);
425 /*****************************************************************************/
426 // Description: The function is called by Layer1 when response to DSP wake up
429 /*****************************************************************************/
430 PUBLIC void CHIP_DSPUART1En (void);
434 /*****************************************************************************/
435 // Description: This function is used to do something before assert.
436 // Global resource dependence:
437 // Author: Zhengjiang.Lei
439 /*****************************************************************************/
441 PUBLIC void CHIP_BeforeAssert (void);
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);
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);
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);
455 /******************************************************************************/
456 // Description: Enable MCU can access switched-ram and shared-ram.
458 // Author: Haifeng.Yang
459 // Note: Beforce invoking this function, the DSP/ISP should be hold on!
460 /******************************************************************************/
461 PUBLIC uint32 Chip_SwitchIRAM2Arm (void);
463 /******************************************************************************/
464 // Description: handle function when dsp exception
468 /******************************************************************************/
469 PUBLIC void L1API_DSPExceptionHandle(void);
471 extern SYS_CLK_CFG_INFO *Get_system_clk_cfg (void);
472 extern void EMC_Close (void);
473 extern void __tx_reset (void);
475 /**---------------------------------------------------------------------------*
477 **---------------------------------------------------------------------------*/
482 #endif // _CHIP_DRVAPI_H_