📄 otgcontroller.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 + -