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

📄 lib_host20.h

📁 FIC8120方案的 StartCell_Driver
💻 H
📖 第 1 页 / 共 3 页
字号:
///////////////////////////////////////////////////////////////////////////////
//
//	File name: Lib_Host20.H
//	Version: 1.0
//	Date: 2005/01/31
//
//	Author: Bruce
//	Phone: (03) 578-7888
//	Company: Faraday Tech. Corp.
//
//	Description: 1.EHCI Data Structure
//               2.EHCI Register
//               3.Others
///////////////////////////////////////////////////////////////////////////////
#ifndef LIB_HOST20__H

//=================== 1.Condition Definition  ============================================================
//========================================================================================================
#include 	"symbol.h"
   //****************************
   // Data Structure Allocation
   //****************************
   // 0x3000000~0x3001000  =>qHD
   // 0x3001000~0x3002000  =>qTD 
   // 0x3002000~0x3003000  =>iTD
   //
	#define Host20_STRUCTURE_BASE_ADDRESS	        0x3000000//(DRAM=48M)

	#define Host20_STRUCTURE_qHD_BASE_ADDRESS	    Host20_STRUCTURE_BASE_ADDRESS//(DRAM=48M)
	#define Host20_qHD_SIZE	                        0x40//(64bytes)
	#define Host20_qHD_MAX	                        10//(10 )
	
	#define Host20_STRUCTURE_qTD_BASE_ADDRESS	    (Host20_STRUCTURE_BASE_ADDRESS+0x1000)//(DRAM=48M)
	#define Host20_qTD_SIZE	                        0x20//(32bytes)
	#define Host20_qTD_MAX	                        50//(50 )  

	#define Host20_STRUCTURE_Preiodic_Frame_List_BASE_ADDRESS (Host20_STRUCTURE_BASE_ADDRESS+0x3000)//(DRAM=48M)
	#define Host20_Preiodic_Frame_SIZE	            0x04//(4bytes)
	#define Host20_Preiodic_Frame_List_MAX	        1024//(1024\)  

	#define Host20_STRUCTURE_iTD_BASE_ADDRESS	    (Host20_STRUCTURE_BASE_ADDRESS+0x10000)//(DRAM=48M)
	#define Host20_iTD_SIZE	                        0x40//(64bytes)
	#define Host20_iTD_MAX	                        1024//(10 )  

	#define Host20_DATA_PAGE_BASE_ADDRESS	        (Host20_STRUCTURE_BASE_ADDRESS+0x100000)//(DRAM=49M)
	#define Host20_Page_SIZE	                    0x1000//(4Kbytes)
	#define Host20_Page_MAX	                        1024//(10 )  

	#define Host20_MEM_TYPE_qTD               	    0x00
	#define Host20_MEM_TYPE_iTD               	    0x01
	#define Host20_MEM_TYPE_4K_BUFFER         	    0x02
	#define Host20_MEM_TYPE_siTD               	    0x03

	#define Host20_MEM_FREE         	            0x01
	#define Host20_MEM_USED         	            0x02

 #define OTGH_Dir_IN 	                     0x01
 #define OTGH_Dir_Out 	                     0x00	 
 #define OTGH_NULL			                 0x00	
 #define OTGH_ED_ISO 	                     0x01
 #define OTGH_ED_BULK 	                     0x02	 
 #define OTGH_ED_INT 	                     0x03	 
 #define OTGH_ED_Control	                 0x00		    
 #define OTGH_FARADAY_TEST_AP                0x10237856
 #define OTGH_SRP_HNP_Enable                 0x03
 #define OTGH_Remote_Wake_UP                 0x00000400	 
 #define OTGH_Remote_Wake_UP_INT             0x00000008	
 
//=================== 2.Define Register Macro ================================================================
//========================================================================================================
	//<1>.Macro volatile
	#define mwHost20Port(bOffset)	                           *((volatile UINT32 *) ( Host20_BASE_ADDRESS | bOffset))
	#define mwHost20Bit_Rd(bByte,wBitNum)                     (mwHost20Port(bByte)&wBitNum)
	#define mwHost20Bit_Set(bByte,wBitNum)                    (mwHost20Port(bByte)|=wBitNum)
	#define mwHost20Bit_Clr(bByte,wBitNum)                    (mwHost20Port(bByte)&=~wBitNum)
		
	//<2>.0x000(Capability Register)
	#define mwHost20_HCIVersion_Rd()		                  ((mwHost20Port(0x00)>>16)&0x0000FFFF)	
	#define mwHost20_CapLength_Rd()		                      (mwHost20Port(0x00)&0x000000FF)	

	//<3>.0x004(HCSPARAMS - Structural Parameters)
	#define mwHost20_NumPorts_Rd()		                      ((mwHost20Port(0x04)&0x0000000F)	

	//<4>.0x008(HCCPARAMS - Capability Parameters)
	#define mbHost20_ProgrammableFrameListFlag_Rd()		      (mwHost20Bit_Rd(0x08,BIT1)) 	//Bit 1

	//<4>.0x010(USBCMD - USB Command Register)
	#define mwHost20_USBCMD_IntThreshold_Rd()		          ((mwHost20Port(0x010)>>16)&0x0000FFFF)	//Bit 16~23
	#define mbHost20_USBCMD_IntThreshold_Set(bValue)		  (mwHost20Port(0x010)=((mwHost20Port(0x010)&0xFF00FFFF)|(((UINT32)(bValue))<<16))	//Bit 16~23
    //----->Add  "Asynchronous schedule Park mode ENable"
    //----->Add  "ASYNchronous schedule Park mode CouNT"
    
	#define mbHost20_USBCMD_ParkMode_Rd()       	          (mwHost20Bit_Rd(0x10,BIT11)>>11) 	
	#define mbHost20_USBCMD_ParkMode_Set()     	              (mwHost20Bit_Set(0x10,BIT11))    
	#define mbHost20_USBCMD_ParkMode_Clr()	                  (mwHost20Bit_Clr(0x10,BIT11))	
    
	#define mbHost20_USBCMD_ParkMode_CNT_Rd()       	      ((mwHost20Port(0x10)>>8)&0x00000003)   
	#define mbHost20_USBCMD_ParkMode_CNT_Set(bValue)     	  (mwHost20Port(0x010)=(mwHost20Port(0x010)&0xFFFFFCFF)|(( (UINT32) bValue )<<8)  )	//Bit 8~9

	#define mbHost20_USBCMD_InterruptOnAsync_Rd()       	  (mwHost20Bit_Rd(0x10,BIT6)) 	//Bit 6
	#define mbHost20_USBCMD_InterruptOnAsync_Set()     	      (mwHost20Bit_Set(0x10,BIT6))    //Bit 6
	#define mbHost20_USBCMD_InterruptOnAsync_Clr()	          (mwHost20Bit_Clr(0x10,BIT6))	//Bit 6

	#define mbHost20_USBCMD_AsynchronousEnable_Rd()     	  (mwHost20Bit_Rd(0x10,BIT5))     //Bit 5
	#define mbHost20_USBCMD_AsynchronousEnable_Set()     	  (mwHost20Bit_Set(0x10,BIT5))    //Bit 5
	#define mbHost20_USBCMD_AsynchronousEnable_Clr()	      (mwHost20Bit_Clr(0x10,BIT5))	//Bit 5

	#define mbHost20_USBCMD_PeriodicEnable_Rd()     	      (mwHost20Bit_Rd(0x10,BIT4) )    //Bit 4
	#define mbHost20_USBCMD_PeriodicEnable_Set()     	      (mwHost20Bit_Set(0x10,BIT4))    //Bit 4
	#define mbHost20_USBCMD_PeriodicEnable_Clr()	          (mwHost20Bit_Clr(0x10,BIT4))	//Bit 4

	#define mbHost20_USBCMD_FrameListSize_Rd()	              ((mwHost20Port(0x10)>>2)&0x00000003)	   //Bit 2~3
	#define mbHost20_USBCMD_FrameListSize_Set(bValue)     	  ((mwHost20Port(0x10)=((mwHost20Port(0x10)&0xFFFFFFF3)|(((UINT32)(bValue))<<2)))	//Bit 2~3

    #define HOST20_USBCMD_FrameListSize_1024                  0x00
    #define HOST20_USBCMD_FrameListSize_512                   0x01
    #define HOST20_USBCMD_FrameListSize_256                   0x02    
    
	#define mbHost20_USBCMD_HCReset_Rd()	                  (mwHost20Bit_Rd(0x10,BIT1))	   //Bit 1
	#define mbHost20_USBCMD_HCReset_Set()	                  (mwHost20Bit_Set(0x10,BIT1))   //Bit 1

	#define mbHost20_USBCMD_RunStop_Rd()	                  (mwHost20Bit_Rd(0x10,BIT0) )  //Bit 0
	#define mbHost20_USBCMD_RunStop_Set()	                  (mwHost20Bit_Set(0x10,BIT0))  //Bit 0
	#define mbHost20_USBCMD_RunStop_Clr()	                  (mwHost20Bit_Clr(0x10,BIT0))  //Bit 0

	#define HOST20_Enable                                      0x01
	#define HOST20_Disable                                     0x00

	//<5>.0x014(USBSTS - USB Status Register)
	#define mwHost20_USBSTS_Rd()		                      (mwHost20Port(0x14)) 	
	#define mwHost20_USBSTS_Set(wValue)		                  (mwHost20Port(0x14)=wValue) 	
	
	#define mwHost20_USBSTS_AsynchronousStatus_Rd()		      (mwHost20Bit_Rd(0x14,BIT15)) 	//Bit 15

	#define mwHost20_USBSTS_PeriodicStatus_Rd()		          (mwHost20Bit_Rd(0x14,BIT14)) 	//Bit 14
	
	#define mwHost20_USBSTS_Reclamation_Rd()		          (mwHost20Bit_Rd(0x14,BIT13)) 	//Bit 13

	#define mwHost20_USBSTS_HCHalted_Rd()		              (mwHost20Bit_Rd(0x14,BIT12)) 	//Bit 12
	
	#define mwHost20_USBSTS_IntOnAsyncAdvance_Rd()		      (mwHost20Bit_Rd(0x14,BIT5)) 	//Bit 5
	#define mwHost20_USBSTS_IntOnAsyncAdvance_Set()		      (mwHost20Bit_Set(0x14,BIT5)) 	//Bit 5

	#define mwHost20_USBSTS_SystemError_Rd()		          (mwHost20Bit_Rd(0x14,BIT4) )	//Bit 4
	#define mwHost20_USBSTS_SystemError_Set()		          (mwHost20Bit_Set(0x14,BIT4)) 	//Bit 4

	#define mwHost20_USBSTS_FrameRollover_Rd()		          (mwHost20Bit_Rd(0x14,BIT3)) 	//Bit 3
	#define mwHost20_USBSTS_FrameRollover_Set()		          (mwHost20Bit_Set(0x14,BIT3)) 	//Bit 3

	#define mwHost20_USBSTS_PortChangeDetect_Rd()		      (mwHost20Bit_Rd(0x14,BIT2)) 	//Bit 2
	#define mwHost20_USBSTS_PortChangeDetect_Set()		      (mwHost20Bit_Set(0x14,BIT2)) 	//Bit 2
		
	#define mwHost20_USBSTS_USBError_Rd()		              (mwHost20Bit_Rd(0x14,BIT1)) 	//Bit 1
	#define mwHost20_USBSTS_USBError_Set()		              (mwHost20Bit_Set(0x14,BIT1)) 	//Bit 1
		
	#define mwHost20_USBSTS_CompletionOfTransaction_Rd()	  (mwHost20Bit_Rd(0x14,BIT0)) 	//Bit 0
	#define mwHost20_USBSTS_CompletionOfTransaction_Set()	  (mwHost20Bit_Set(0x14,BIT0)) 	//Bit 0
		
	//<6>.0x018(USBINTR - USB Interrupt Enable Register)
	#define mwHost20_USBINTR_Rd()		                      (mwHost20Port(0x18)) 	
	#define mwHost20_USBINTR_Set(bValue)		              (mwHost20Port(0x18)=bValue)

	#define mwHost20_USBINTR_IntOnAsyncAdvance_Rd()		      (mwHost20Bit_Rd(0x18,BIT5) )	//Bit 5
	#define mwHost20_USBINTR_IntOnAsyncAdvance_Set()		  (mwHost20Bit_Set(0x18,BIT5)) 	//Bit 5
    #define mwHost20_USBINTR_IntOnAsyncAdvance_Clr()		  (mwHost20Bit_Clr(0x18,BIT5)) 	//Bit 5
	
	#define mwHost20_USBINTR_SystemError_Rd()		          (mwHost20Bit_Rd(0x18,BIT4)) 	//Bit 4
	#define mwHost20_USBINTR_SystemError_Set()		          (mwHost20Bit_Set(0x18,BIT4)) 	//Bit 4
	#define mwHost20_USBINTR_SystemError_Clr()		          (mwHost20Bit_Clr(0x18,BIT4)) 	//Bit 4

	#define mwHost20_USBINTR_FrameRollover_Rd()		          (mwHost20Bit_Rd(0x18,BIT3) )	//Bit 3
	#define mwHost20_USBINTR_FrameRollover_Set()		      (mwHost20Bit_Set(0x18,BIT3)) 	//Bit 3
	#define mwHost20_USBINTR_FrameRollover_Clr()		      (mwHost20Bit_Clr(0x18,BIT3)) 	//Bit 3

	#define mwHost20_USBINTR_PortChangeDetect_Rd()		      (mwHost20Bit_Rd(0x18,BIT2) )	//Bit 2
	#define mwHost20_USBINTR_PortChangeDetect_Set()		      (mwHost20Bit_Set(0x18,BIT2)) 	//Bit 2
	#define mwHost20_USBINTR_PortChangeDetect_Clr()		      (mwHost20Bit_Clr(0x18,BIT2)) 	//Bit 2

	#define mwHost20_USBINTR_USBError_Rd()		              (mwHost20Bit_Rd(0x18,BIT1) )	//Bit 1
	#define mwHost20_USBINTR_USBError_Set()		              (mwHost20Bit_Set(0x18,BIT1)) 	//Bit 1
	#define mwHost20_USBINTR_USBError_Clr()		              (mwHost20Bit_Clr(0x18,BIT1)) 	//Bit 1

	#define mwHost20_USBINTR_CompletionOfTransaction_Rd()	  (mwHost20Bit_Rd(0x18,BIT0) )	//Bit 0
	#define mwHost20_USBINTR_CompletionOfTransaction_Set()	  (mwHost20Bit_Set(0x18,BIT0)) 	//Bit 0		
	#define mwHost20_USBINTR_CompletionOfTransaction_Clr()	  (mwHost20Bit_Clr(0x18,BIT0)) 	//Bit 0		
	
    #define HOST20_USBINTR_IntOnAsyncAdvance                  0x20
    #define HOST20_USBINTR_SystemError                        0x10
    #define HOST20_USBINTR_FrameRollover                      0x08
    #define HOST20_USBINTR_PortChangeDetect                   0x04
    #define HOST20_USBINTR_USBError                           0x02
    #define HOST20_USBINTR_CompletionOfTransaction            0x01
	
	//<7>.0x01C(FRINDEX - Frame Index Register (Address = 01Ch))
	#define mwHost20_FrameIndex_Rd()		                  (mwHost20Port(0x1C)&0x00001FFF) 	//Only Read Bit0~Bit12(Skip Bit 13)     	
	#define mwHost20_FrameIndex14Bit_Rd()                     (mwHost20Port(0x1C)&0x00003FFF) 	//Only Read Bit0~Bit12(Skip Bit 13)     	
	#define mwHost20_FrameIndex_Set(wValue)		              (mwHost20Port(0x1C)=wValue) 	
	
	//<8>.0x024(PERIODICLISTBASE - Periodic Frame List Base Address Register (Address = 024h))
	#define mwHost20_PeriodicBaseAddr_Rd()		              (mwHost20Port(0x24)) 	     	
	#define mwHost20_PeriodicBaseAddr_Set(wValue)		      (mwHost20Port(0x24)=wValue) 	
	
	//<9>.0x028(ASYNCLISTADDR - Current Asynchronous List Address Register (Address = 028h))
	#define mwHost20_CurrentAsynchronousAddr_Rd()		      (mwHost20Port(0x28) )	     	
	#define mwHost20_CurrentAsynchronousAddr_Set(wValue)	  (mwHost20Port(0x28)=wValue) 	

	//<10>.0x030(PORTSC - Port Status and Control Register(Address = 030h))
	#define mwHost20_PORTSC_Rd()		                      mwHost20Port(0x30)

	#define mwHost20_PORTSC_LineStatus_Rd()		              ((mwHost20Port(0x30)>>10)&0x00000003) 	     	
	     	
	#define mwHost20_PORTSC_PortReset_Rd()		              mwHost20Bit_Rd(0x30,BIT8) 	     	
	#define mwHost20_PORTSC_PortReset_Set()		              mwHost20Bit_Set(0x30,BIT8) 	     	
	#define mwHost20_PORTSC_PortReset_Clr()		              mwHost20Bit_Clr(0x30,BIT8) 	     	

	#define mwHost20_PORTSC_ForceSuspend_Rd()		          mwHost20Bit_Rd(0x30,BIT7) 	     	
	#define mwHost20_PORTSC_ForceSuspend_Set()		          mwHost20Bit_Set(0x30,BIT7) 	     	
	
	#define mwHost20_PORTSC_ForceResume_Rd()		          mwHost20Bit_Rd(0x30,BIT6) 	     	
	#define mwHost20_PORTSC_ForceResume_Set()		          mwHost20Bit_Set(0x30,BIT6) 	     	
	#define mwHost20_PORTSC_ForceResume_Clr()		          mwHost20Bit_Clr(0x30,BIT6) 	     	

	#define mwHost20_PORTSC_EnableDisableChange_Rd()		  mwHost20Bit_Rd(0x30,BIT3) 	     	
	#define mwHost20_PORTSC_EnableDisableChange_Set()		  mwHost20Bit_Set(0x30,BIT3) 	     	

	#define mwHost20_PORTSC_EnableDisable_Rd()		          mwHost20Bit_Rd(0x30,BIT2) 	     	
	#define mwHost20_PORTSC_EnableDisable_Set()		          mwHost20Bit_Set(0x30,BIT2) 	     	
	#define mwHost20_PORTSC_EnableDisable_Clr()		          mwHost20Bit_Clr(0x30,BIT2) 	

	#define mwHost20_PORTSC_ConnectChange_Rd()		          mwHost20Bit_Rd(0x30,BIT1) 	
	#define mwHost20_PORTSC_ConnectChange_Set()		          mwHost20Bit_Set(0x30,BIT1) 

	#define mwHost20_PORTSC_ConnectStatus_Rd()		          mwHost20Bit_Rd(0x30,BIT0) 	


	#define mwHost20_Misc_LineStatus_Rd()		              ((mwHost20Port(0x30)>>10)&0x00000003) 	     	

	
	//<10>.0x040(Misc. Register(Address = 040h))
	#define mwHost20_Misc_EOF1Time_Set(bValue)		           (mwHost20Port(0x40)=((mwHost20Port(0x40)&0xFFFFFFF3)|(((UINT32)(bValue))<<2)))	//Bit 2~3
	#define mwHost20_Misc_Physuspend_Rd()		           (mwHost20Bit_Rd(0x40,BIT6)) 	//Bit 2~3
	#define mwHost20_Misc_Physuspend_Set()		           (mwHost20Bit_Set(0x40,BIT6)) 	//Bit 2~3
	#define mwHost20_Misc_Physuspend_Clr()		           (mwHost20Bit_Clr(0x40,BIT6)) 	//Bit 2~3
	
	//<11>.0x080(OTG Control / Status Register (Address = 080h))
	#define mwOTG20_Control_HOST_SPD_TYP_Rd()		          ((mwHost20Port(0x80)>>22)&0x00000003) 
	#define mwOTG20_Control_A_BUS_REQ_Set()		              (mwHost20Bit_Set(0x80,BIT4))  

	#define mwHost20_Control_ForceFullSpeed_Rd()		      (mwHost20Port(0x80)& BIT12)
	#define mwHost20_Control_ForceFullSpeed_Set()	          (mwHost20Bit_Set(0x80,BIT12))  
	#define mwHost20_Control_ForceFullSpeed_Clr()	          (mwHost20Bit_Clr(0x80,BIT12))

	#define mwHost20_Control_ForceHighSpeed_Rd()		      (mwHost20Port(0x80)& BIT14)
	#define mwHost20_Control_ForceHighSpeed_Set()	          (mwHost20Bit_Set(0x80,BIT14))  
	#define mwHost20_Control_ForceHighSpeed_Clr()	          (mwHost20Bit_Clr(0x80,BIT14)) 

	#define mwOTG20_Control_Phy_Reset_Set()		              (mwHost20Bit_Set(0x80,BIT15))  
	#define mwOTG20_Control_Phy_Reset_Clr()		              (mwHost20Bit_Clr(0x80,BIT15))  
	#define mwOTG20_Control_OTG_Reset_Set()		              (mwHost20Bit_Set(0x80,BIT24))  
	#define mwOTG20_Control_OTG_Reset_Clr()		              (mwHost20Bit_Clr(0x80,BIT24))  

	
	//<12>.0x0C4(Interrupt Mask)
	#define mwOTG20_Interrupt_Mask_Rd()		                  (mwHost20Port(0xC4)&0x00000007) 
	#define mwOTG20_Interrupt_Mask_Set(bValue)		          (mwHost20Port(0xC4)=bValue)
	#define mwOTG20_Interrupt_Mask_Device_Set()		          (mwHost20Bit_Set(0xC4,BIT0)) 
	#define mwOTG20_Interrupt_Mask_OTG_Set()		          (mwHost20Bit_Set(0xC4,BIT1))
	#define mwOTG20_Interrupt_Mask_HOST_Set()		          (mwHost20Bit_Set(0xC4,BIT2))
	#define mwOTG20_Interrupt_OutPut_High_Set()		          (mwHost20Bit_Set(0xC4,BIT3))
	#define mwOTG20_Interrupt_OutPut_High_Clr()		          (mwHost20Bit_Clr(0xC4,BIT3))

	//<13>.0x100(Device Controller Registers(Address = 100h~1FFh) )
	#define mwPeri20_Control_ChipEnable_Set()		          (mwHost20Bit_Set(0x100,BIT5)) 	
	#define mwPeri20_Control_HALFSPEEDEnable_Set()		      (mwHost20Bit_Set(0x100,BIT1)) 	
	#define mwPeri20_Control_HALFSPEEDEnable_Clr()		      (mwHost20Bit_Clr(0x100,BIT1)) 

//=================== 3.Structure Definition =============================================================
//========================================================================================================

//<3.1>iTD Structure Definition****************************************

typedef struct   {
     
   //<1>.Next_Link_Pointer Word
   UINT32   bTerminal:1;             //Bit11~0
   UINT32   bType:2;             //Bit11~0
   UINT32   bReserved:2;          //Bit14~12   
   UINT32   bLinkPointer:27; //Bit15  

} Periodic_Frame_List_Cell_Structure;

typedef struct  {
     

⌨️ 快捷键说明

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