zte's code,first commit
Change-Id: I9a04da59e459a9bc0d67f101f700d9d7dc8d681b
diff --git a/cp/ps/driver/inc/misc/drvs_usb_config.h b/cp/ps/driver/inc/misc/drvs_usb_config.h
new file mode 100644
index 0000000..38ef65c
--- /dev/null
+++ b/cp/ps/driver/inc/misc/drvs_usb_config.h
@@ -0,0 +1,557 @@
+/*******************************************************************************
+ * Copyright (C) 2008, ZTE Corporation.
+ *
+ * File Name: drvs_usb_config.h
+ * File Mark:
+ * Description:
+ * Others:
+ * Version: V1.0
+ * Author: Weizhigang
+ * Date: 2009-6-18
+ * History 1:
+ * Date:
+ * Version:
+ * Author:
+ * Modification:
+ ********************************************************************************/
+#ifndef _DRVS_USB_CONFIG_H
+#define _DRVS_USB_CONFIG_H
+
+/****************************************************************************
+* macro
+****************************************************************************/
+#define MAX_ENDPOINT_NUM 13 //IN&OUT ENDPOINT INCLUDE EP0
+#define MAX_INTERFACE_NUM 12 //the usb hw only have 12 endpoint set, so the max ifac num is 12
+
+#define POWER_DOMAIN_ISO (0x0010d200+0x41*4)
+#define POWER_DOMAIN_POWERON (0x0010d200+0x42*4)
+#define POWER_DOMAIN_RST (0x0010d200+0x40*4)
+
+#define SOC_CRM_BASE (0x0010c000)
+#define BOOT_SEL (0x3c)
+#define NAND_CFG (0x34)
+#define SOC_MOD_CLKEN0 (0x0010c00c)
+#define SOC_MOD_CLKEN1 (0x0010c010)
+#define SOC_MOD_RSTEN (0x0010c018)
+#define SOC_MOD_USBSTATECTRL (0x0010c05c)
+#define SOC_MOD_RSTEN1 (0x0010c064)
+
+#ifdef _USE_PSM
+#define USE_USB_PSM 1
+#endif
+#define USE_USB_PSM 1//usb²»Çø·ÖÊ¡µçÓ벻ʡµç
+
+#define CHARGER_DETECT 0
+
+
+#define USB_GET_EP_ADDR(ep_num,dir) ((dir<<7)|(ep_num))
+
+
+typedef SINT32 (*interface_bind)(UINT8* config_buf, VOID* context, UINT8 interfaceNum, UINT32 speed);
+
+/****************************************************************************
+* type
+****************************************************************************/
+//define ep transfer mode
+typedef enum _T_ZDrvUsb_EpXferMode
+{
+ EP_XFER_MODE_CPU=0, //need to change hal define!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ EP_XFER_MODE_DMA0=1,
+ EP_XFER_MODE_DMA1REQ0=2,
+ EP_XFER_MODE_DMA1REQ1=3
+}
+T_ZDrvUsb_EpXferMode;
+
+//define ep receive mode
+typedef enum _T_ZDrvUsb_EpXferEndCondition
+{
+ EP_UNKNOW_BASE =0,
+ EP_LENGTH_BASE = 5,
+ EP_PACKET_BASE = 6,
+}
+T_ZDrvUsb_EpXferEndCondition;
+
+//define ep context
+typedef struct _T_ZDrvUsb_EpContext
+{
+ BOOL bEpIsVaild;
+ UINT32 uiEpAddr;
+ T_ZDrvUsb_EpXferMode tEpXferMode;
+ T_ZDrvUsb_EpXferEndCondition tEpXferEndCondi;
+}
+T_ZDrvUsb_EpContext;
+
+//define ep context
+typedef struct _T_ZDrvUsb_InterfacecContext
+{
+ BOOL bIfacIsVaild;
+ UINT32 uiIfacFunction;
+ T_ZDrvUsb_EpContext tInEpContext;
+ T_ZDrvUsb_EpContext tOutEpContext;
+ T_ZDrvUsb_EpContext tExtendEpContext;
+ CHAR* pIfacName;
+ interface_bind f_intf_bind;
+}
+T_ZDrvUsb_InterfacecContext;
+
+typedef struct _T_ZDrvUsb_DeviceContext
+{
+ CHAR* pVendroName;
+ CHAR* pProductName;
+ CHAR* pSerialNum;
+ UINT32 uiVID;
+ UINT32 uiPID;
+ UINT8 DeviceClass;
+ UINT8 DeviceSubClas;
+ UINT8 DeviceProtocol;
+}
+T_ZDrvUsb_DeviceContext;
+
+/*qihongfang add for usb context show on PC*/
+
+typedef struct _T_ZDrvUsb_MSType
+{
+ CHAR* pCdromName;
+ CHAR* pNandName;
+ CHAR* pSdName;
+ CHAR* pRamdiskName;
+}
+T_ZDrvUsb_MSType;
+
+typedef struct _T_ZDrvUsb_MsContext
+{
+CHAR* pVendorName;
+T_ZDrvUsb_MSType pProductName;
+CHAR* pProductRevision;
+}
+T_ZDrvUsb_MsContext;
+
+typedef struct _T_ZDrvUsb_ConfigContext
+{
+ BOOL bContextIsVaild;
+ T_ZDrvUsb_DeviceContext tDeviceContext; //we respect one config as one device
+ T_ZDrvUsb_InterfacecContext tIfacContext[MAX_INTERFACE_NUM];
+}
+T_ZDrvUsb_ConfigContext;
+
+typedef struct _T_ZDrvUsb_EcmFunctionDescriptor
+{
+ CHAR * EcmMacAddr;
+ UINT32 bmEthernetStatistics;
+ UINT16 wMaxSegmentSize;
+ UINT16 wNumberMCFilters;
+}
+T_ZDrvUsb_EcmFunctionDescriptor;
+
+typedef struct _T_ZDrvUsb_EcmContext
+{
+ BOOL bIsVaild;
+ UINT8 ifacNum_CCI;
+ T_ZDrvUsb_EcmFunctionDescriptor tEcmFuncDes;
+}
+T_ZDrvUsb_EcmContext;
+
+
+//------------------------------------------------------------------------------------------------------------------
+
+typedef enum _T_ZDrvUsb_ConfigType
+{
+ USB_CONFIG0=0,
+ USB_CONFIG1=1,
+ USB_CONFIG2=2,
+ USB_CONFIG3=3,
+ USB_CONFIG4=4,
+ USB_CONFIG5=5,
+ USB_CONFIG6=6,
+ USB_CONFIG7=7,
+ USB_CONFIG8=8,
+ USB_CONFIG9=9,
+ USB_CONFIG10=10,
+ USB_CONFIG11=11,
+ USB_MAX_CONFIG_NUM,
+ USB_CONFIG_NONE,
+ USB_CONFIG_END=0xff /* all device uninstalled */
+}
+T_ZDrvUsb_ConfigType;
+
+typedef enum _T_ZDrvUsb_OSType
+{
+ OSType_Windows=0, //means xp,vista,win7
+ OSType_Linux=1,
+ OSType_Mac=2,
+ OSType_Win8=3,
+ OS_MAX_TYPE_NUM,
+ OS_TYPE_END=0xff /* all device uninstalled */
+}
+T_ZDrvUsb_OSType;
+
+//define usb dev type
+typedef enum _T_ZDrvUsb_DevType
+{
+ USB_AT =0,
+ USB_MODEM,
+ USB_LOG,
+ USB_MAX_TYPE_NUM
+}
+T_ZDrvUsb_DevType;
+
+
+//define usb phy mode
+typedef enum _T_ZDrvUsb_PhyType
+{
+ USB_NORMAL =0,
+ USB_HSIC = 1, //usb hsic
+ USB_DWC3=2 //usb 3.0
+}
+T_ZDrvUsb_PhyType;
+
+typedef enum _T_ZDrvUsb_DRMode
+{
+ USB_NONE =0,
+ USE_USB_DEVICE =1,
+ USE_USB_HOST =2
+}
+T_ZDrvUsb_DRMode;
+
+typedef struct _T_ZDrvUsb_IP
+{
+ T_ZDrvUsb_PhyType usb_Tpye;;
+ T_ZDrvUsb_DRMode usb_DRMode;
+}
+T_ZDrvUsb_IP;
+
+typedef enum _T_ZDrvUsb_NVTYPE
+{
+ NAND_TYPE =0,
+ GLOBAL_TYPE =1
+}
+T_ZDrvUsb_NVTYPE;
+
+/****************************************************************************
+* macro module define
+****************************************************************************/
+//Main Function Define (bit1~bit15)
+#define DEV_NULL 0
+#define DEV_CDC (1<<1)
+#define DEV_NDIS (1<<2)
+#define DEV_MASSSTORAGE (1<<3)
+#define DEV_MAIN_FUNC_MASK (0x00FF)
+#define DEV_ECM_CCI (1<<4)
+#define DEV_ECM_DCI (1<<5)
+#define DEV_RNDIS_CCI (1<<6)
+#define DEV_RNDIS_DCI (1<<7)
+#define DEV_ADB (1<<8)
+
+//Sub Function Define (bit16~bit32)
+#define DEV_MASSSTORAGE_CDROM ((1<<16)|DEV_MASSSTORAGE)
+#define DEV_MASSSTORAGE_SD ((1<<17)|DEV_MASSSTORAGE)
+#define DEV_MASSSTORAGE_NAND ((1<<18)|DEV_MASSSTORAGE)
+#define DEV_MASSSTORAGE_RAMDISK ((1<<19)|DEV_MASSSTORAGE)
+
+//basic endpoint class
+#define USB_IN_EP_CPU(epNum,RcvMode) {TRUE,USB_GET_EP_ADDR(epNum,1),EP_XFER_MODE_CPU,RcvMode}
+#define USB_OUT_EP_CPU(epNum,RcvMode) {TRUE,USB_GET_EP_ADDR(epNum,0),EP_XFER_MODE_CPU,RcvMode}
+#define USB_IN_EP_DMA1REQ1(epNum,RcvMode) {TRUE,USB_GET_EP_ADDR(epNum,1),EP_XFER_MODE_DMA1REQ1,RcvMode}
+#define USB_OUT_EP_DMA1REQ1(epNum,RcvMode) {TRUE,USB_GET_EP_ADDR(epNum,0),EP_XFER_MODE_DMA1REQ1,RcvMode}
+#define USB_OUT_EP_DMA1REQ0(epNum,RcvMode) {TRUE,USB_GET_EP_ADDR(epNum,0),EP_XFER_MODE_DMA1REQ0,RcvMode}
+#define USB_NULL_EP {FALSE,0,0,0}
+
+#define USB_EP_XFER_MODE 1
+#define USB_EP_XFEREND_CONDI 2
+
+#define USB_GET_EP_XFER_MODE(epNum) usbStack_GetEpInfo(epNum,USB_EP_XFER_MODE)
+#define USB_GET_EP_XFER_END_CONDI(epNum) usbStack_GetEpInfo(epNum,USB_EP_XFEREND_CONDI)
+
+//cdc interface class
+//#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}
+#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}
+
+#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}
+
+#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}
+#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}
+//mass storage interface class
+#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}
+#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}
+
+//ndis interface class
+#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}
+#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}
+
+//rndis interface class
+#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}
+#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}
+
+//ecm interface class
+#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}
+#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}
+
+#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}
+#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}
+
+
+/*
+#ifndef _USE_AMT
+*/
+#if 0
+#if !defined(_USE_AMT)&&!defined(_USE_SMALL_VERSION)
+//#define DEFAULT_SWITCH_CONFIG_ECM USB_CONFIG1 //ECM config
+//#define DEFAULT_INSERT_CONFIG USB_CONFIG0 //first config with cdrom
+//#define DEFAULT_INSERT_CONFIG_AMT USB_CONFIG3 //amt only
+//#define DEFAULT_SWITCH_CONFIG_NDIS USB_CONFIG2 //NDIS config
+//#define DEFAULT_SWITCH_CONFIG_RNDIS USB_CONFIG4 //RNDIS CONFIG
+#else/*AMT not config NDIS device*/
+#define DEFAULT_SWITCH_CONFIG_ECM USB_CONFIG3
+#define DEFAULT_INSERT_CONFIG USB_CONFIG3
+#define DEFAULT_INSERT_CONFIG_AMT USB_CONFIG3
+#define DEFAULT_SWITCH_CONFIG_NDIS USB_CONFIG3
+#define DEFAULT_SWITCH_CONFIG_RNDIS USB_CONFIG3
+#endif
+#endif
+/****************************************************************************
+* Function Prototypes
+****************************************************************************/
+/*******************************************************************************
+ * Function: zDrvUsbStack_SwitchConfiguration
+ * Description:usb to switch the usb configuration
+ * Parameters:
+ ConfigNum : the new cofig num, the value should less than macro: MAX_CONFIG_NUM
+ * Input:None
+ * Output:None
+ *
+ * Returns:
+ * Others:
+ ********************************************************************************/
+VOID zDrvUsbStack_SwitchConfiguration(T_ZDrvUsb_ConfigType ConfigNum);
+
+/*******************************************************************************
+ * Function: zDrvUsbStack_GetConfigInfo
+ * Description: user can use this function to inquire function code corresponding to the confignum
+ * Parameters:
+ * Input: config num
+ * Output:None
+ *
+ * Returns:function code, if configNum is vailed, return value is zero
+ * Others:
+ ********************************************************************************/
+UINT32 zDrvUsbStack_GetConfigInfo(UINT32 ConfigNum);
+
+/*******************************************************************************
+ * Function: zDrvUsbStack_SetMsContext
+ * Description: get Mass Storage VendorName;ProductName;and ProductRevision for diff project in ref
+ * Parameters:
+ * Input: config num
+ * Output:None
+ *
+ * Returns:function code, if configNum is vailed, return value is zero
+ * Others:
+ ********************************************************************************/
+
+VOID zDrvUsbStack_SetMsContext(T_ZDrvUsb_MsContext *MsPtr);
+
+/*******************************************************************************
+ * Function: zDrvUsbStack_GetIfacFunctionCode
+ * Description: user can use this function to inquire the specify interface function code corresponding
+ to the confignum
+ * Parameters:
+ * Input: config num
+ * Output:None
+ *
+ * Returns:function code, if configNum is vailed, return value is zero
+ * Others:
+ ********************************************************************************/
+UINT32 zDrvUsbStack_GetIfacFunctionCode(UINT32 ConfigNum, UINT32 ifacNum);
+
+/*******************************************************************************
+ * Function: usbHal_GetUsbConfigContext
+ * Description: get usb config context
+ * Parameters:
+ * Input: N/A
+ *
+ * Output: N/A
+ * Returns: N/A
+
+********************************************************************************/
+T_ZDrvUsb_ConfigContext *usbHal_GetUsbConfigContext(UINT32 ConfigNum);
+
+/*******************************************************************************
+ * Function: usbHal_GetEcmConfigContext
+ * Description: get ecm parameter
+ * Parameters:
+ * Input: N/A
+ *
+ * Output: N/A
+ * Returns: N/A
+
+ * Others: //not use
+
+ ********************************************************************************/
+T_ZDrvUsb_EcmContext * usbHal_GetEcmConfigContext(UINT8 ifacNum_CCI);
+
+/*******************************************************************************
+ * Function: usbHal_CleanEcmConfigContext
+ * Description: clean ecm parameter state
+ * Parameters:
+ * Input: N/A
+ *
+ * Output: N/A
+ * Returns: N/A
+
+ * Others: //not use
+
+ ********************************************************************************/
+VOID usbHal_CleanEcmConfigContext(VOID);
+
+/*******************************************************************************
+ * Function: usbHal_GetUsbMode
+ * Description: get usb mode hisc or normal
+ * Parameters:
+ * Input: N/A
+ *
+ * Output: N/A
+ * Returns: N/A
+
+ * Others: //not use
+
+ ********************************************************************************/
+T_ZDrvUsb_PhyType usbHal_GetUsbMode(VOID);
+
+/*******************************************************************************
+ * Function: usbStack_msSetNVflag
+ * Description: used in datecard set AT\Log\Modem flag in NV
+ * with singn whether enum it
+ * Parameters:
+ * Input: N/A
+ *
+ * Output: N/A
+ * Returns: N/A
+
+ * Others: //not use
+
+ ********************************************************************************/
+SINT32 usbStack_msSetNVflag(VOID);
+
+/*******************************************************************************
+ * Function: USBHSIC_ReConnect_Ind
+ * Description: for usb trap ind to host
+ * Parameters:
+ * Input: N/A
+ *
+ * Output: N/A
+ * Returns: N/A
+
+ * Others: //not use
+
+ ********************************************************************************/
+VOID usbHal_HSICReConnect_Ind(VOID);
+/*******************************************************************************
+* Function: zDrvUsb_GetCommDevName
+* Description:
+* Parameters:
+* Input:
+*
+* Output:
+*
+* Returns:
+*
+* Others:
+********************************************************************************/
+SINT32 zDrvUsb_GetUsbDevName(T_ZDrvUsb_DevType usbType,char * DevName,UINT8 StrSize);
+
+/*******************************************************************************
+ * Function: zDrvUsb_Work_Ahb_Phy_Reset
+ * Description:
+ *
+ * Parameters:
+ * Input:
+ *
+ * Output:
+ *
+ * Returns:
+ *
+ *
+ * Others:
+ ********************************************************************************/
+ VOID zDrvUsb_Work_Ahb_Phy_Reset(VOID);
+
+/*******************************************************************************
+ * Function: zDrvUsb_PowerUp
+ * Description:
+ *
+ * Parameters:
+ * Input:
+ *
+ * Output:
+ *
+ * Returns:
+ *
+ *
+ * Others:
+ ********************************************************************************/
+ SINT32 zDrvUsb_PowerUp(VOID);
+
+/*******************************************************************************
+ * Function: zDrvUsb_Powerdown
+ * Description:
+ *
+ * Parameters:
+ * Input:
+ *
+ * Output:
+ *
+ * Returns:
+ *
+ *
+ * Others:
+ ********************************************************************************/
+ SINT32 zDrvUsb_Powerdown(VOID);
+
+/*******************************************************************************
+ * Function: zDrvUsb3_PowerUp
+ * Description:
+ *
+ * Parameters:
+ * Input:
+ *
+ * Output:
+ *
+ * Returns:
+ *
+ *
+ * Others:
+ ********************************************************************************/
+ SINT32 zDrvUsb3_PowerUp(VOID);
+
+/*******************************************************************************
+ * Function: zDrvUsb3_Powerdown
+ * Description:
+ *
+ * Parameters:
+ * Input:
+ *
+ * Output:
+ *
+ * Returns:
+ *
+ *
+ * Others:
+ ********************************************************************************/
+ SINT32 zDrvUsb3_Powerdown(VOID);
+
+/*******************************************************************************
+ * Function: pow_GetUsbLowPowerFlag
+ * Description: get usb low power flag
+ * Parameters:
+ * Input: N/A
+ *
+ * Output: N/A
+ * Returns:
+ *
+ *
+ * Others: //not use
+ ********************************************************************************/
+
+UINT32 pow_GetUsbLowPowerFlag(VOID);
+
+#endif
+