⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 otgcontroller.h

📁 FIC8120方案的 StartCell_Driver
💻 H
字号:
//////////////////////////////////////////////////////////////////////////////
//
//	File name: OTGController.h
//	Version: 1.0
//	Date: 2005/1/31
//	Author: Bruce
//	Company: Faraday Tech. Corp.
//	Description: 1.Define Data Type
//               2.Define for Bulk
//               3.Define Macro
///////////////////////////////////////////////////////////////////////////////
#ifndef __OTGCONTROL_H
	#define __OTGCONTROL_H



//=================== 1.OTG Condition Setting ============================================================
//========================================================================================================
#define   OTGC_Device_Not_Support_Then_Return             1

//=================== 2.Define Macro =====================================================================
//========================================================================================================

	//#define OTG_BASE_ADDRESS	                      0x92000000//0x92500000
	#define mbFOTGPort(bOffset)	                       *((volatile UINT8 *) ( OTG_BASE_ADDRESS | bOffset))
	#define mwFOTGPort(bOffset)	                       *((volatile UINT16 *) ( OTG_BASE_ADDRESS | bOffset))
	#define mdwFOTGPort(bOffset)	                   *((volatile UINT32 *) ( OTG_BASE_ADDRESS | bOffset))


  //Offset:0x080(OTG Control/Status Register) => Suppose Word-Read & Word-Write
    //~B Function
    #define mdwOTGC_Control_B_BUS_REQ_Rd()		      (mdwFOTGPort(0x80)& BIT0)	
	#define mdwOTGC_Control_B_BUS_REQ_Set()  		  (mdwFOTGPort(0x80) |=  BIT0)  
	#define mdwOTGC_Control_B_BUS_REQ_Clr()  		  (mdwFOTGPort(0x80) &=  (~BIT0))  
   
    #define mdwOTGC_Control_B_HNP_EN_Rd()		      (mdwFOTGPort(0x80)& BIT1)	
	#define mdwOTGC_Control_B_HNP_EN_Set()		      (mdwFOTGPort(0x80) |=  BIT1)   
	#define mdwOTGC_Control_B_HNP_EN_Clr()  		  (mdwFOTGPort(0x80) &=  (~BIT1))  
    
    #define mdwOTGC_Control_B_DSCHG_VBUS_Rd()		  (mdwFOTGPort(0x80)& BIT2)	
	#define mdwOTGC_Control_B_DSCHG_VBUS_Set()		  (mdwFOTGPort(0x80) |=  BIT2)    
	#define mdwOTGC_Control_B_DSCHG_VBUS_Clr() 		  (mdwFOTGPort(0x80) &=  (~BIT2))  

    //~A Function 
    #define mdwOTGC_Control_A_BUS_REQ_Rd()	          (mdwFOTGPort(0x80)& BIT4)	
	#define mdwOTGC_Control_A_BUS_REQ_Set()	          (mdwFOTGPort(0x80) |=  BIT4)    
	#define mdwOTGC_Control_A_BUS_REQ_Clr()	          (mdwFOTGPort(0x80) &=  (~BIT4))        
    
    #define mdwOTGC_Control_A_BUS_DROP_Rd()	          (mdwFOTGPort(0x80)& BIT5)	
	#define mdwOTGC_Control_A_BUS_DROP_Set()	      (mdwFOTGPort(0x80) |=  BIT5)      
	#define mdwOTGC_Control_A_BUS_DROP_Clr()	      (mdwFOTGPort(0x80) &=  (~BIT5))      
    
    #define mdwOTGC_Control_A_SET_B_HNP_EN_Rd()	      (mdwFOTGPort(0x80)& BIT6)	
	#define mdwOTGC_Control_A_SET_B_HNP_EN_Set()	  (mdwFOTGPort(0x80) |=  BIT6)    
	#define mdwOTGC_Control_A_SET_B_HNP_EN_Clr()	  (mdwFOTGPort(0x80) &=  (~BIT6))    
    
    #define mdwOTGC_Control_A_SRP_DET_EN_Rd()	      (mdwFOTGPort(0x80)& BIT7)	
	#define mdwOTGC_Control_A_SRP_DET_EN_Set()	      (mdwFOTGPort(0x80) |=  BIT7)       
 	#define mdwOTGC_Control_A_SRP_DET_EN_Clr()	      (mdwFOTGPort(0x80) &=  (~BIT7))    
    
    #define mdwOTGC_Control_A_SRP_RESP_TYPE_Rd()	  (mdwFOTGPort(0x80)& BIT8)	
	#define mdwOTGC_Control_A_SRP_RESP_TYPE_Set(b)	  (mdwFOTGPort(0x80) |=  b)      
	#define mdwOTGC_Control_A_SRP_RESP_TYPE_Clr()	  (mdwFOTGPort(0x80) &=  (~BIT8))      

    #define mdwOTGC_Control_VBUS_FLT_SEL_Rd()	      (mdwFOTGPort(0x80)& BIT10)	
	#define mdwOTGC_Control_VBUS_FLT_SEL_Set()	      (mdwFOTGPort(0x80) |=  BIT10)     
	#define mdwOTGC_Control_VBUS_FLT_SEL_Clr()	      (mdwFOTGPort(0x80) &=  (~BIT10))  


    #define mdwOTGC_Control_711MA_Phy_Issue_Rd()		  (mdwFOTGPort(0x80)& BIT28)	
    #define mdwOTGC_Control_711MA_Phy_Issue_Set()  		  (mdwFOTGPort(0x80) |=  BIT28)  
    #define mdwOTGC_Control_711MA_Phy_Issue_Clr()  		  (mdwFOTGPort(0x80) &=  (~BIT28))  


    #define mdwOTGC_Control_B_SESS_END_Rd()	          (mdwFOTGPort(0x80)& BIT16)	  
    #define mdwOTGC_Control_B_SESS_VLD_Rd()	          (mdwFOTGPort(0x80)& BIT17)	  
    #define mdwOTGC_Control_A_SESS_VLD_Rd()	          (mdwFOTGPort(0x80)& BIT18)	  
    #define mdwOTGC_Control_A_VBUS_VLD_Rd()	          (mdwFOTGPort(0x80)& BIT19)  
    #define mdwOTGC_Control_CROLE_Rd()	              (mdwFOTGPort(0x80)& BIT20) //0:Host 1:Peripheral
    #define mdwOTGC_Control_ID_Rd()	                  (mdwFOTGPort(0x80)& BIT21) //0:A-Device 1:B-Device
    #define mdwOTGC_Control_Rd()	                  (mdwFOTGPort(0x80))    
    #define mdwOTGC_Control_Speed_Rd()	              ((mdwFOTGPort(0x80)& 0x00C00000)>>22)
  
    #define A_SRP_RESP_TYPE_VBUS	                  0x00	  
    #define A_SRP_RESP_TYPE_DATA_LINE                 0x100
  
  
   //Offset:0x004(OTG Interrupt Status Register) 
    #define mdwOTGC_INT_STS_Rd()                      (mdwFOTGPort(0x84))
    #define mdwOTGC_INT_STS_Clr(wValue)               (mdwFOTGPort(0x84) |= wValue)    
    
    #define OTGC_INT_BSRPDN                           BIT0  
    #define OTGC_INT_ASRPDET                          BIT4
    #define OTGC_INT_AVBUSERR                         BIT5
    #define OTGC_INT_RLCHG                            BIT8
    #define OTGC_INT_IDCHG                            BIT9
    #define OTGC_INT_OVC                              BIT10
    #define OTGC_INT_BPLGRMV                          BIT11
    #define OTGC_INT_APLGRMV                          BIT12

    //
    #define OTGC_INT_A_TYPE                           (OTGC_INT_ASRPDET|OTGC_INT_AVBUSERR|OTGC_INT_OVC|OTGC_INT_RLCHG|OTGC_INT_IDCHG|OTGC_INT_BPLGRMV|OTGC_INT_APLGRMV)
    //
    #define OTGC_INT_B_TYPE                           (OTGC_INT_BSRPDN|OTGC_INT_AVBUSERR|OTGC_INT_OVC|OTGC_INT_RLCHG|OTGC_INT_IDCHG)



   //Offset:0x008(OTG Interrupt Enable Register) 
    #define mdwOTGC_INT_Enable_Rd()                   (mdwFOTGPort(0x88))
    #define mdwOTGC_INT_Enable_Set(wValue)            (mdwFOTGPort(0x88)|= wValue)
    #define mdwOTGC_INT_Enable_Clr(wValue)            (mdwFOTGPort(0x88)&= (~wValue))

    #define mdwOTGC_INT_Enable_BSRPDN_Set()           (mdwFOTGPort(0x88) |=  BIT0)   
    #define mdwOTGC_INT_Enable_ASRPDET_Set()          (mdwFOTGPort(0x88) |=  BIT4)   
    #define mdwOTGC_INT_Enable_AVBUSERR_Set()         (mdwFOTGPort(0x88) |=  BIT5)   
    #define mdwOTGC_INT_Enable_RLCHG_Set()            (mdwFOTGPort(0x88) |=  BIT8)   
    #define mdwOTGC_INT_Enable_IDCHG_Set()            (mdwFOTGPort(0x88) |=  BIT9)   
    #define mdwOTGC_INT_Enable_OVC_Set()              (mdwFOTGPort(0x88) |=  BIT10)   
    #define mdwOTGC_INT_Enable_BPLGRMV_Set()          (mdwFOTGPort(0x88) |=  BIT11)   
    #define mdwOTGC_INT_Enable_APLGRMV_Set()          (mdwFOTGPort(0x88) |=  BIT12)   

    #define mdwOTGC_INT_Enable_BSRPDN_Clr()           (mdwFOTGPort(0x88) &= ~BIT0)        
    #define mdwOTGC_INT_Enable_ASRPDET_Clr()          (mdwFOTGPort(0x88) &= ~BIT4)        
    #define mdwOTGC_INT_Enable_AVBUSERR_Clr()         (mdwFOTGPort(0x88) &= ~BIT5)        
    #define mdwOTGC_INT_Enable_RLCHG_Clr()            (mdwFOTGPort(0x88) &= ~BIT8)        
    #define mdwOTGC_INT_Enable_IDCHG_Clr()            (mdwFOTGPort(0x88) &= ~BIT9)        
    #define mdwOTGC_INT_Enable_OVC_Clr()              (mdwFOTGPort(0x88) &= ~BIT10)        
    #define mdwOTGC_INT_Enable_BPLGRMV_Clr()          (mdwFOTGPort(0x88) &= ~BIT11)       
    #define mdwOTGC_INT_Enable_APLGRMV_Clr()          (mdwFOTGPort(0x88) &= ~BIT12)       



//===================3.Define Stricture ==================================================================
//========================================================================================================
   typedef enum 
	{
		OTG_ID_A_TYPE = 0,
		OTG_ID_B_TYPE

	} OTGC_ID_Type;         
   
     typedef enum 
	{
		OTG_CurrentRole_Host = 0,
		OTG_CurrentRole_Peripheral 

	} OTGC_CurrentRole; 
   
   
    typedef struct OTGC_STS
	{
		OTGC_ID_Type                     ID;                       //0:A-Type   1: B-Type
        volatile OTGC_CurrentRole        CurrentRole;	           //1:Host  0:Peripheral
        INT8U                            bVBUSAlwaysOn;             //0:For Standard-ISR 1:For AP-ISR          

           
        INT32U                           wCurrentInterruptMask;
        volatile INT8U                   bVBUS_Vaild;        
        INT8U                            bHostISRType;             //0:For Standard-ISR 1:For AP-ISR          
        volatile INT8U                   bBusResetRequest;
        volatile INT8U                   bPortSuspendStatusChange;        
        volatile INT8U                   bPortEnableStatusChange;       
        volatile INT8U                   bPortConnectStatusChange;        
        volatile INT8U                   bDevice_RESET_Received;        
        volatile INT8U                   bDevice_RemoteWakeUp_Received;
                                         
        INT8U                            A_bGet_SRP_HNP_Support;
        volatile INT8U                   A_bASRPDET; 
        volatile INT8U                   B_bBSRPDN; 
                                         
        volatile INT8U                   A_BPLGRMV;        
        volatile INT8U                   A_APLGRMV; 
        volatile INT8U                   IDCHG;
		INT32U                           wOTGH_Interrupr_Save ;        
		INT32U                           wOTGP_Interrupr_Save ;        

	} OTGC_STS;
	
	
//===================4.Define Extern Function =====================================================================
//========================================================================================================
  //--From OTGController.C 
  extern void OTG_Init(void);
  extern void OTG_INT_ISR(void);
  extern void OTG_RoleChange(INT8U bRole);
  extern void OTGC_Init(void);
  extern void OTGC_INT_ISR(UINT32 wINTStatus);
  extern void OTGC_A_Bus_Drop(void);
  extern INT8U OTGC_A_SRP_Init(void);
  extern INT8U OTGC_A_HNP_Init(void);
  extern void OTGC_A_Menu(void);
  extern UINT8 OTGC_B_SRP_Init(void);
  extern UINT8 OTGC_B_HNP_Init(void);
  extern void OTGC_B_Menu(void);
  extern UINT8 OTGC_VBS_Valid(void);
  //--From other file
  extern void OTGH_PathTest_Main(void);    
  extern void OTGP_init(UINT8 bInitAP);
  extern void OTGP_Close(void);
  extern void OTGP_main(UINT8 bDoNotInit,UINT8 bWaitForVBUS,UINT8 bExitMode);
  extern void OTGP_CV_Test_main(void);
  extern void OTGP_Resume_Test_main(void);  
  extern void OTGH_AP_Main(void);    
  extern void OTGC_A_PHY_Reset(void);  
  extern void OTGH_Error_Handle(void);
  
//===================5.Define Extern Variable =====================================================================
//========================================================================================================


  extern OTGC_STS  OTG;



	
#endif	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -