blob: 38ef65cd8489b609132035af0f1771c78fdfe9bb [file] [log] [blame]
yuezonghe824eb0c2024-06-27 02:32:26 -07001/*******************************************************************************
2 * Copyright (C) 2008, ZTE Corporation.
3 *
4 * File Name: drvs_usb_config.h
5 * File Mark:
6 * Description:
7 * Others:
8 * Version: V1.0
9 * Author: Weizhigang
10 * Date: 2009-6-18
11 * History 1:
12 * Date:
13 * Version:
14 * Author:
15 * Modification:
16 ********************************************************************************/
17#ifndef _DRVS_USB_CONFIG_H
18#define _DRVS_USB_CONFIG_H
19
20/****************************************************************************
21* macro
22****************************************************************************/
23#define MAX_ENDPOINT_NUM 13 //IN&OUT ENDPOINT INCLUDE EP0
24#define MAX_INTERFACE_NUM 12 //the usb hw only have 12 endpoint set, so the max ifac num is 12
25
26#define POWER_DOMAIN_ISO (0x0010d200+0x41*4)
27#define POWER_DOMAIN_POWERON (0x0010d200+0x42*4)
28#define POWER_DOMAIN_RST (0x0010d200+0x40*4)
29
30#define SOC_CRM_BASE (0x0010c000)
31#define BOOT_SEL (0x3c)
32#define NAND_CFG (0x34)
33#define SOC_MOD_CLKEN0 (0x0010c00c)
34#define SOC_MOD_CLKEN1 (0x0010c010)
35#define SOC_MOD_RSTEN (0x0010c018)
36#define SOC_MOD_USBSTATECTRL (0x0010c05c)
37#define SOC_MOD_RSTEN1 (0x0010c064)
38
39#ifdef _USE_PSM
40#define USE_USB_PSM 1
41#endif
42#define USE_USB_PSM 1//usb²»Çø·ÖÊ¡µçÓ벻ʡµç
43
44#define CHARGER_DETECT 0
45
46
47#define USB_GET_EP_ADDR(ep_num,dir) ((dir<<7)|(ep_num))
48
49
50typedef SINT32 (*interface_bind)(UINT8* config_buf, VOID* context, UINT8 interfaceNum, UINT32 speed);
51
52/****************************************************************************
53* type
54****************************************************************************/
55//define ep transfer mode
56typedef enum _T_ZDrvUsb_EpXferMode
57{
58 EP_XFER_MODE_CPU=0, //need to change hal define!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
59 EP_XFER_MODE_DMA0=1,
60 EP_XFER_MODE_DMA1REQ0=2,
61 EP_XFER_MODE_DMA1REQ1=3
62}
63T_ZDrvUsb_EpXferMode;
64
65//define ep receive mode
66typedef enum _T_ZDrvUsb_EpXferEndCondition
67{
68 EP_UNKNOW_BASE =0,
69 EP_LENGTH_BASE = 5,
70 EP_PACKET_BASE = 6,
71}
72T_ZDrvUsb_EpXferEndCondition;
73
74//define ep context
75typedef struct _T_ZDrvUsb_EpContext
76{
77 BOOL bEpIsVaild;
78 UINT32 uiEpAddr;
79 T_ZDrvUsb_EpXferMode tEpXferMode;
80 T_ZDrvUsb_EpXferEndCondition tEpXferEndCondi;
81}
82T_ZDrvUsb_EpContext;
83
84//define ep context
85typedef struct _T_ZDrvUsb_InterfacecContext
86{
87 BOOL bIfacIsVaild;
88 UINT32 uiIfacFunction;
89 T_ZDrvUsb_EpContext tInEpContext;
90 T_ZDrvUsb_EpContext tOutEpContext;
91 T_ZDrvUsb_EpContext tExtendEpContext;
92 CHAR* pIfacName;
93 interface_bind f_intf_bind;
94}
95T_ZDrvUsb_InterfacecContext;
96
97typedef struct _T_ZDrvUsb_DeviceContext
98{
99 CHAR* pVendroName;
100 CHAR* pProductName;
101 CHAR* pSerialNum;
102 UINT32 uiVID;
103 UINT32 uiPID;
104 UINT8 DeviceClass;
105 UINT8 DeviceSubClas;
106 UINT8 DeviceProtocol;
107}
108T_ZDrvUsb_DeviceContext;
109
110/*qihongfang add for usb context show on PC*/
111
112typedef struct _T_ZDrvUsb_MSType
113{
114 CHAR* pCdromName;
115 CHAR* pNandName;
116 CHAR* pSdName;
117 CHAR* pRamdiskName;
118}
119T_ZDrvUsb_MSType;
120
121typedef struct _T_ZDrvUsb_MsContext
122{
123CHAR* pVendorName;
124T_ZDrvUsb_MSType pProductName;
125CHAR* pProductRevision;
126}
127T_ZDrvUsb_MsContext;
128
129typedef struct _T_ZDrvUsb_ConfigContext
130{
131 BOOL bContextIsVaild;
132 T_ZDrvUsb_DeviceContext tDeviceContext; //we respect one config as one device
133 T_ZDrvUsb_InterfacecContext tIfacContext[MAX_INTERFACE_NUM];
134}
135T_ZDrvUsb_ConfigContext;
136
137typedef struct _T_ZDrvUsb_EcmFunctionDescriptor
138{
139 CHAR * EcmMacAddr;
140 UINT32 bmEthernetStatistics;
141 UINT16 wMaxSegmentSize;
142 UINT16 wNumberMCFilters;
143}
144T_ZDrvUsb_EcmFunctionDescriptor;
145
146typedef struct _T_ZDrvUsb_EcmContext
147{
148 BOOL bIsVaild;
149 UINT8 ifacNum_CCI;
150 T_ZDrvUsb_EcmFunctionDescriptor tEcmFuncDes;
151}
152T_ZDrvUsb_EcmContext;
153
154
155//------------------------------------------------------------------------------------------------------------------
156
157typedef enum _T_ZDrvUsb_ConfigType
158{
159 USB_CONFIG0=0,
160 USB_CONFIG1=1,
161 USB_CONFIG2=2,
162 USB_CONFIG3=3,
163 USB_CONFIG4=4,
164 USB_CONFIG5=5,
165 USB_CONFIG6=6,
166 USB_CONFIG7=7,
167 USB_CONFIG8=8,
168 USB_CONFIG9=9,
169 USB_CONFIG10=10,
170 USB_CONFIG11=11,
171 USB_MAX_CONFIG_NUM,
172 USB_CONFIG_NONE,
173 USB_CONFIG_END=0xff /* all device uninstalled */
174}
175T_ZDrvUsb_ConfigType;
176
177typedef enum _T_ZDrvUsb_OSType
178{
179 OSType_Windows=0, //means xp,vista,win7
180 OSType_Linux=1,
181 OSType_Mac=2,
182 OSType_Win8=3,
183 OS_MAX_TYPE_NUM,
184 OS_TYPE_END=0xff /* all device uninstalled */
185}
186T_ZDrvUsb_OSType;
187
188//define usb dev type
189typedef enum _T_ZDrvUsb_DevType
190{
191 USB_AT =0,
192 USB_MODEM,
193 USB_LOG,
194 USB_MAX_TYPE_NUM
195}
196T_ZDrvUsb_DevType;
197
198
199//define usb phy mode
200typedef enum _T_ZDrvUsb_PhyType
201{
202 USB_NORMAL =0,
203 USB_HSIC = 1, //usb hsic
204 USB_DWC3=2 //usb 3.0
205}
206T_ZDrvUsb_PhyType;
207
208typedef enum _T_ZDrvUsb_DRMode
209{
210 USB_NONE =0,
211 USE_USB_DEVICE =1,
212 USE_USB_HOST =2
213}
214T_ZDrvUsb_DRMode;
215
216typedef struct _T_ZDrvUsb_IP
217{
218 T_ZDrvUsb_PhyType usb_Tpye;;
219 T_ZDrvUsb_DRMode usb_DRMode;
220}
221T_ZDrvUsb_IP;
222
223typedef enum _T_ZDrvUsb_NVTYPE
224{
225 NAND_TYPE =0,
226 GLOBAL_TYPE =1
227}
228T_ZDrvUsb_NVTYPE;
229
230/****************************************************************************
231* macro module define
232****************************************************************************/
233//Main Function Define (bit1~bit15)
234#define DEV_NULL 0
235#define DEV_CDC (1<<1)
236#define DEV_NDIS (1<<2)
237#define DEV_MASSSTORAGE (1<<3)
238#define DEV_MAIN_FUNC_MASK (0x00FF)
239#define DEV_ECM_CCI (1<<4)
240#define DEV_ECM_DCI (1<<5)
241#define DEV_RNDIS_CCI (1<<6)
242#define DEV_RNDIS_DCI (1<<7)
243#define DEV_ADB (1<<8)
244
245//Sub Function Define (bit16~bit32)
246#define DEV_MASSSTORAGE_CDROM ((1<<16)|DEV_MASSSTORAGE)
247#define DEV_MASSSTORAGE_SD ((1<<17)|DEV_MASSSTORAGE)
248#define DEV_MASSSTORAGE_NAND ((1<<18)|DEV_MASSSTORAGE)
249#define DEV_MASSSTORAGE_RAMDISK ((1<<19)|DEV_MASSSTORAGE)
250
251//basic endpoint class
252#define USB_IN_EP_CPU(epNum,RcvMode) {TRUE,USB_GET_EP_ADDR(epNum,1),EP_XFER_MODE_CPU,RcvMode}
253#define USB_OUT_EP_CPU(epNum,RcvMode) {TRUE,USB_GET_EP_ADDR(epNum,0),EP_XFER_MODE_CPU,RcvMode}
254#define USB_IN_EP_DMA1REQ1(epNum,RcvMode) {TRUE,USB_GET_EP_ADDR(epNum,1),EP_XFER_MODE_DMA1REQ1,RcvMode}
255#define USB_OUT_EP_DMA1REQ1(epNum,RcvMode) {TRUE,USB_GET_EP_ADDR(epNum,0),EP_XFER_MODE_DMA1REQ1,RcvMode}
256#define USB_OUT_EP_DMA1REQ0(epNum,RcvMode) {TRUE,USB_GET_EP_ADDR(epNum,0),EP_XFER_MODE_DMA1REQ0,RcvMode}
257#define USB_NULL_EP {FALSE,0,0,0}
258
259#define USB_EP_XFER_MODE 1
260#define USB_EP_XFEREND_CONDI 2
261
262#define USB_GET_EP_XFER_MODE(epNum) usbStack_GetEpInfo(epNum,USB_EP_XFER_MODE)
263#define USB_GET_EP_XFER_END_CONDI(epNum) usbStack_GetEpInfo(epNum,USB_EP_XFEREND_CONDI)
264
265//cdc interface class
266//#define USB_IFAC_CDC_CPU(funCode,epNum,name) {TRUE,funCode,USB_IN_EP_CPU(epNum,EP_PACKET_BASE),USB_OUT_EP_CPU(epNum,EP_PACKET_BASE),USB_NULL_EP,name}
267#define USB_IFAC_CDC_CPU(funCode,epNum,name,func) {TRUE,funCode,USB_IN_EP_CPU(epNum,EP_PACKET_BASE),USB_OUT_EP_CPU(epNum,EP_PACKET_BASE),USB_NULL_EP,name,func}
268
269#define USB_IFAC_CDC_DMA(funCode,epNum,name,func) {TRUE,funCode,USB_IN_EP_DMA1REQ1(epNum,EP_PACKET_BASE),USB_OUT_EP_DMA1REQ1(epNum,EP_PACKET_BASE),USB_NULL_EP,name,func}
270
271#define USB_CCIFAC_ECM_CPU(funCode,epNum,name,func) {TRUE,funCode,USB_NULL_EP,USB_NULL_EP,USB_IN_EP_CPU(epNum,EP_PACKET_BASE),name,func}
272#define USB_DCIFAC_ECM_DMA(funCode,epNum,name,func) {TRUE,funCode,USB_IN_EP_DMA1REQ1(epNum,EP_PACKET_BASE),USB_OUT_EP_DMA1REQ1(epNum,EP_PACKET_BASE),USB_NULL_EP,name,func}
273//mass storage interface class
274#define USB_IFAC_MASS_CPU(funCode,epNum,name,func) {TRUE,funCode,USB_IN_EP_CPU(epNum,EP_LENGTH_BASE),USB_OUT_EP_CPU(epNum,EP_LENGTH_BASE),USB_NULL_EP,name,func}
275#define USB_IFAC_MASS_DMA(funCode,epNum,name,func) {TRUE,funCode,USB_IN_EP_DMA1REQ1(epNum,EP_LENGTH_BASE),USB_OUT_EP_DMA1REQ0(epNum,EP_LENGTH_BASE),USB_NULL_EP,name,func}
276
277//ndis interface class
278#define USB_IFAC_NDIS_DMA(funCode,epNum1,epNum2,name,func) {TRUE,funCode,USB_IN_EP_DMA1REQ1(epNum1,EP_PACKET_BASE),USB_OUT_EP_DMA1REQ1(epNum1,EP_PACKET_BASE),USB_IN_EP_CPU(epNum2,EP_PACKET_BASE),name,func}
279#define USB_IFAC_NDIS_CPU(funCode,epNum1,epNum2,name,func) {TRUE,funCode,USB_IN_EP_CPU(epNum1,EP_PACKET_BASE),USB_OUT_EP_CPU(epNum1,EP_PACKET_BASE),USB_IN_EP_CPU(epNum2,EP_PACKET_BASE),name,func}
280
281//rndis interface class
282#define USB_CIFAC_RNDIS_CPU(funCode,epNum,name,func) {TRUE,funCode,USB_NULL_EP,USB_NULL_EP,USB_IN_EP_CPU(epNum,EP_PACKET_BASE),name,func}
283#define USB_DIFAC_RNDIS_DMA(funCode,epNum,name,func) {TRUE,funCode,USB_IN_EP_DMA1REQ1(epNum,EP_PACKET_BASE),USB_OUT_EP_DMA1REQ1(epNum,EP_PACKET_BASE),USB_NULL_EP,name,func}
284
285//ecm interface class
286#define USB_IFAC_ECM_DMA(funCode,epNum1,epNum2,name,func) {TRUE,funCode,USB_IN_EP_DMA1REQ1(epNum1,EP_PACKET_BASE),USB_OUT_EP_DMA1REQ1(epNum1,EP_PACKET_BASE),USB_IN_EP_CPU(epNum2,EP_PACKET_BASE),name,func}
287#define USB_IFAC_ECM_CPU(funCode,epNum1,epNum2,name,func) {TRUE,funCode,USB_IN_EP_CPU(epNum1,EP_PACKET_BASE),USB_OUT_EP_CPU(epNum1,EP_PACKET_BASE),USB_IN_EP_CPU(epNum2,EP_PACKET_BASE),name,func}
288
289#define USB_IFAC_ADB_CPU(funCode,epNum,name,func) {TRUE,funCode,USB_IN_EP_CPU(epNum,EP_PACKET_BASE),USB_OUT_EP_CPU(epNum,EP_PACKET_BASE),USB_NULL_EP,name,func}
290#define USB_IFAC_ADB_DMA(funCode,epNum,name,func) {TRUE,funCode,USB_IN_EP_DMA1REQ1(epNum,EP_PACKET_BASE),USB_OUT_EP_DMA1REQ1(epNum,EP_PACKET_BASE),USB_NULL_EP,name,func}
291
292
293/*
294#ifndef _USE_AMT
295*/
296#if 0
297#if !defined(_USE_AMT)&&!defined(_USE_SMALL_VERSION)
298//#define DEFAULT_SWITCH_CONFIG_ECM USB_CONFIG1 //ECM config
299//#define DEFAULT_INSERT_CONFIG USB_CONFIG0 //first config with cdrom
300//#define DEFAULT_INSERT_CONFIG_AMT USB_CONFIG3 //amt only
301//#define DEFAULT_SWITCH_CONFIG_NDIS USB_CONFIG2 //NDIS config
302//#define DEFAULT_SWITCH_CONFIG_RNDIS USB_CONFIG4 //RNDIS CONFIG
303#else/*AMT not config NDIS device*/
304#define DEFAULT_SWITCH_CONFIG_ECM USB_CONFIG3
305#define DEFAULT_INSERT_CONFIG USB_CONFIG3
306#define DEFAULT_INSERT_CONFIG_AMT USB_CONFIG3
307#define DEFAULT_SWITCH_CONFIG_NDIS USB_CONFIG3
308#define DEFAULT_SWITCH_CONFIG_RNDIS USB_CONFIG3
309#endif
310#endif
311/****************************************************************************
312* Function Prototypes
313****************************************************************************/
314/*******************************************************************************
315 * Function: zDrvUsbStack_SwitchConfiguration
316 * Description:usb to switch the usb configuration
317 * Parameters:
318 ConfigNum : the new cofig num, the value should less than macro: MAX_CONFIG_NUM
319 * Input:None
320 * Output:None
321 *
322 * Returns:
323 * Others:
324 ********************************************************************************/
325VOID zDrvUsbStack_SwitchConfiguration(T_ZDrvUsb_ConfigType ConfigNum);
326
327/*******************************************************************************
328 * Function: zDrvUsbStack_GetConfigInfo
329 * Description: user can use this function to inquire function code corresponding to the confignum
330 * Parameters:
331 * Input: config num
332 * Output:None
333 *
334 * Returns:function code, if configNum is vailed, return value is zero
335 * Others:
336 ********************************************************************************/
337UINT32 zDrvUsbStack_GetConfigInfo(UINT32 ConfigNum);
338
339/*******************************************************************************
340 * Function: zDrvUsbStack_SetMsContext
341 * Description: get Mass Storage VendorName;ProductName;and ProductRevision for diff project in ref
342 * Parameters:
343 * Input: config num
344 * Output:None
345 *
346 * Returns:function code, if configNum is vailed, return value is zero
347 * Others:
348 ********************************************************************************/
349
350VOID zDrvUsbStack_SetMsContext(T_ZDrvUsb_MsContext *MsPtr);
351
352/*******************************************************************************
353 * Function: zDrvUsbStack_GetIfacFunctionCode
354 * Description: user can use this function to inquire the specify interface function code corresponding
355 to the confignum
356 * Parameters:
357 * Input: config num
358 * Output:None
359 *
360 * Returns:function code, if configNum is vailed, return value is zero
361 * Others:
362 ********************************************************************************/
363UINT32 zDrvUsbStack_GetIfacFunctionCode(UINT32 ConfigNum, UINT32 ifacNum);
364
365/*******************************************************************************
366 * Function: usbHal_GetUsbConfigContext
367 * Description: get usb config context
368 * Parameters:
369 * Input: N/A
370 *
371 * Output: N/A
372 * Returns: N/A
373
374********************************************************************************/
375T_ZDrvUsb_ConfigContext *usbHal_GetUsbConfigContext(UINT32 ConfigNum);
376
377/*******************************************************************************
378 * Function: usbHal_GetEcmConfigContext
379 * Description: get ecm parameter
380 * Parameters:
381 * Input: N/A
382 *
383 * Output: N/A
384 * Returns: N/A
385
386 * Others: //not use
387
388 ********************************************************************************/
389T_ZDrvUsb_EcmContext * usbHal_GetEcmConfigContext(UINT8 ifacNum_CCI);
390
391/*******************************************************************************
392 * Function: usbHal_CleanEcmConfigContext
393 * Description: clean ecm parameter state
394 * Parameters:
395 * Input: N/A
396 *
397 * Output: N/A
398 * Returns: N/A
399
400 * Others: //not use
401
402 ********************************************************************************/
403VOID usbHal_CleanEcmConfigContext(VOID);
404
405/*******************************************************************************
406 * Function: usbHal_GetUsbMode
407 * Description: get usb mode hisc or normal
408 * Parameters:
409 * Input: N/A
410 *
411 * Output: N/A
412 * Returns: N/A
413
414 * Others: //not use
415
416 ********************************************************************************/
417T_ZDrvUsb_PhyType usbHal_GetUsbMode(VOID);
418
419/*******************************************************************************
420 * Function: usbStack_msSetNVflag
421 * Description: used in datecard set AT\Log\Modem flag in NV
422 * with singn whether enum it
423 * Parameters:
424 * Input: N/A
425 *
426 * Output: N/A
427 * Returns: N/A
428
429 * Others: //not use
430
431 ********************************************************************************/
432SINT32 usbStack_msSetNVflag(VOID);
433
434/*******************************************************************************
435 * Function: USBHSIC_ReConnect_Ind
436 * Description: for usb trap ind to host
437 * Parameters:
438 * Input: N/A
439 *
440 * Output: N/A
441 * Returns: N/A
442
443 * Others: //not use
444
445 ********************************************************************************/
446VOID usbHal_HSICReConnect_Ind(VOID);
447/*******************************************************************************
448* Function: zDrvUsb_GetCommDevName
449* Description:
450* Parameters:
451* Input:
452*
453* Output:
454*
455* Returns:
456*
457* Others:
458********************************************************************************/
459SINT32 zDrvUsb_GetUsbDevName(T_ZDrvUsb_DevType usbType,char * DevName,UINT8 StrSize);
460
461/*******************************************************************************
462 * Function: zDrvUsb_Work_Ahb_Phy_Reset
463 * Description:
464 *
465 * Parameters:
466 * Input:
467 *
468 * Output:
469 *
470 * Returns:
471 *
472 *
473 * Others:
474 ********************************************************************************/
475 VOID zDrvUsb_Work_Ahb_Phy_Reset(VOID);
476
477/*******************************************************************************
478 * Function: zDrvUsb_PowerUp
479 * Description:
480 *
481 * Parameters:
482 * Input:
483 *
484 * Output:
485 *
486 * Returns:
487 *
488 *
489 * Others:
490 ********************************************************************************/
491 SINT32 zDrvUsb_PowerUp(VOID);
492
493/*******************************************************************************
494 * Function: zDrvUsb_Powerdown
495 * Description:
496 *
497 * Parameters:
498 * Input:
499 *
500 * Output:
501 *
502 * Returns:
503 *
504 *
505 * Others:
506 ********************************************************************************/
507 SINT32 zDrvUsb_Powerdown(VOID);
508
509/*******************************************************************************
510 * Function: zDrvUsb3_PowerUp
511 * Description:
512 *
513 * Parameters:
514 * Input:
515 *
516 * Output:
517 *
518 * Returns:
519 *
520 *
521 * Others:
522 ********************************************************************************/
523 SINT32 zDrvUsb3_PowerUp(VOID);
524
525/*******************************************************************************
526 * Function: zDrvUsb3_Powerdown
527 * Description:
528 *
529 * Parameters:
530 * Input:
531 *
532 * Output:
533 *
534 * Returns:
535 *
536 *
537 * Others:
538 ********************************************************************************/
539 SINT32 zDrvUsb3_Powerdown(VOID);
540
541/*******************************************************************************
542 * Function: pow_GetUsbLowPowerFlag
543 * Description: get usb low power flag
544 * Parameters:
545 * Input: N/A
546 *
547 * Output: N/A
548 * Returns:
549 *
550 *
551 * Others: //not use
552 ********************************************************************************/
553
554UINT32 pow_GetUsbLowPowerFlag(VOID);
555
556#endif
557