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

📄 fotg200_peripheral.h

📁 GM8120 linux driver.
💻 H
字号:
#ifndef __FOTG200_Peripheral_M_H	#define __FOTG200_Peripheral_M_H#include 	"symbol.h"//	#define code //	#define bdata//	#define xdata	//#define IRQ_FOTG200 					40	//27//========== 1.Define Data Type  =========================================================================================	typedef unsigned char BOOLEAN;	typedef unsigned char INT8U;			/* 1 byte */	typedef unsigned short INT16U;		/* 2 bytes */	typedef unsigned int INT32U;			/* 4 bytes */	typedef signed char INT8S;			/* 1 byte */	typedef signed short INT16S;			/* 2 bytes */	typedef signed int INT32S;			/* 4 bytes */		#define MESS_ERROR		(0x01 << 0)	#define MESS_WARNING	(0x01 << 1)	#define MESS_INFO		(0x01 << 2)	#define TRUE				1	#define FALSE			0		#define mLowByte(u16)	((INT8U)(u16	 ))	#define mHighByte(u16)	((INT8U)(u16 >> 8))	// Macro	#define bFOTGPeri_Port(bOffset)		*((volatile INT8U *) ( CPE_FOTG200_BASE | (bOffset)))	#define hwFOTGPeri_Port(bOffset)		*((volatile INT16U *) ( CPE_FOTG200_BASE | (bOffset)))	#define wFOTGPeri_Port(bOffset)		*((volatile INT32U *) ( CPE_FOTG200_BASE | (bOffset)))		// Macro		// Main control register(0x100)	#define mUsbRmWkupST()			(wFOTGPeri_Port(0x100) & BIT0)	#define mUsbRmWkupSet()		(wFOTGPeri_Port(0x100) |= BIT0)	#define mUsbRmWkupClr()			(wFOTGPeri_Port(0x100) &= ~BIT0)		#define mUsbTstHalfSpeedEn()		(wFOTGPeri_Port(0x100) |= BIT1)	#define mUsbTstHalfSpeedDis()	(wFOTGPeri_Port(0x100) &= ~BIT1)	#define mUsbGlobIntEnRd()		(wFOTGPeri_Port(0x100) & BIT2)	#define mUsbGlobIntEnSet()		(wFOTGPeri_Port(0x100) |= BIT2)	#define mUsbGlobIntDis()			(wFOTGPeri_Port(0x100) &= ~BIT2)		#define mUsbGoSuspend()			(wFOTGPeri_Port(0x100) |=  BIT3)		#define mUsbSoftRstSet()			(wFOTGPeri_Port(0x100) |=  BIT4)	#define mUsbSoftRstClr()			(wFOTGPeri_Port(0x100) &= ~BIT4)	#define mUsbChipEnSet()			(wFOTGPeri_Port(0x100) |= BIT5)		#define mUsbOTGHighSpeedST()		(wFOTGPeri_Port(0x100) & BIT6)		// Device address register(0x104)	#define mUsbDevAddrSet(Value)	(wFOTGPeri_Port(0x104) = (INT32U)Value)	#define mUsbCfgST()				(wFOTGPeri_Port(0x104) & BIT7)	#define mUsbCfgSet()				(wFOTGPeri_Port(0x104) |= BIT7)	#define mUsbCfgClr()				(wFOTGPeri_Port(0x104) &= ~BIT7)  #define mUsbDMARst()   (wFOTGPeri_Port(0x100) |= BIT8)  #define mUsbFIFOClr(fifo_num)   (wFOTGPeri_Port(0x1b0+fifo_num*4) |= BIT12)	// Test register(0x108)	#define mUsbClrAllFIFOSet()		(wFOTGPeri_Port(0x108) |= BIT0)	#define mUsbClrAllFIFOClr()		(wFOTGPeri_Port(0x108) &= ~BIT0)	// SOF Frame Number register(0x10C)	#define mUsbFrameNo()			(INT16U)(wFOTGPeri_Port(0x10C) & 0x7FF)	#define mUsbMicroFrameNo()		(INT8U)((wFOTGPeri_Port(0x10C) & 0x3800)>>11)	// SOF Mask register(0x110)	#define mUsbSOFMaskHS()		(wFOTGPeri_Port(0x110) = 0x44c)	#define mUsbSOFMaskFS()		(wFOTGPeri_Port(0x110) = 0x2710)	// PHY Test Mode Selector register(0x114)	#define mUsbTsMdWr(item)		(wFOTGPeri_Port(0x114) = (INT32U)item)	#define mUsbUnPLGClr()			(wFOTGPeri_Port(0x114) &= ~BIT0)	#define mUsbUnPLGSet()			(wFOTGPeri_Port(0x114) |= BIT0)	// Vendor Specific IO Control register(0x118)	// Cx configuration and status register(0x11C)	// Cx configuration and FIFO Empty Status register(0x120)	#define mUsbEP0DoneSet()		(wFOTGPeri_Port(0x120) |= BIT0)	#define mUsbTsPkDoneSet()		(wFOTGPeri_Port(0x120) |= BIT1)	#define mUsbEP0StallSet()			(wFOTGPeri_Port(0x120) |= BIT2)	#define mUsbCxFClr()				(wFOTGPeri_Port(0x120) |= BIT3)	#define mUsbCxFFull()			(wFOTGPeri_Port(0x120) & BIT4)	#define mUsbCxFEmpty()			(wFOTGPeri_Port(0x120) & BIT5)	#define mUsbCxFByteCnt()		(INT8U)((wFOTGPeri_Port(0x120) & 0x7F000000)>>24)		// IDLE Counter register(0x124)	#define mUsbIdleCnt(time)		(wFOTGPeri_Port(0x124) = (INT32U)time)	// Mask of interrupt group(0x130)	#define mUsbIntGrp0Dis()			(wFOTGPeri_Port(0x130) |= BIT0)	#define mUsbIntGrp1Dis()			(wFOTGPeri_Port(0x130) |= BIT1)	#define mUsbIntGrp2Dis()			(wFOTGPeri_Port(0x130) |= BIT2)	#define mUsbIntGroupMaskRd()	(wFOTGPeri_Port(0x130))		// Mask of interrupt source group 0(0x134)	#define mUsbIntEP0SetupDis()		(wFOTGPeri_Port(0x134) |= BIT0)	#define mUsbIntEP0InDis()		(wFOTGPeri_Port(0x134) |= BIT1)	#define mUsbIntEP0OutDis()		(wFOTGPeri_Port(0x134) |= BIT2)	#define mUsbIntEP0EndDis()		(wFOTGPeri_Port(0x134) |= BIT3)	#define mUsbIntEP0FailDis()		(wFOTGPeri_Port(0x134) |= BIT4)	#define mUsbIntEP0SetupEn()		(wFOTGPeri_Port(0x134) &= ~(BIT0))	#define mUsbIntEP0InEn()			(wFOTGPeri_Port(0x134) &= ~(BIT1))	#define mUsbIntEP0OutEn()		(wFOTGPeri_Port(0x134) &= ~(BIT2))	#define mUsbIntEP0EndEn()		(wFOTGPeri_Port(0x134) &= ~(BIT3))	#define mUsbIntEP0FailEn()		(wFOTGPeri_Port(0x134) &= ~(BIT4))	#define mUsbIntSrc0MaskRd()		(wFOTGPeri_Port(0x134))		// Mask of interrupt source group 1(0x138)	#define mUsbIntFIFO0_3OUTDis()	(wFOTGPeri_Port(0x138) |= 0xFF)	#define mUsbIntFIFO0_3INDis()	(wFOTGPeri_Port(0x138) |= 0xF0000)		#define mUsbIntF0OUTEn()		(wFOTGPeri_Port(0x138) &= ~(BIT1 | BIT0))		#define mUsbIntF0OUTDis()		(wFOTGPeri_Port(0x138) |= (BIT1 | BIT0))		#define mUsbIntF1OUTEn()		(wFOTGPeri_Port(0x138) &= ~(BIT3 | BIT2))	#define mUsbIntF1OUTDis()		(wFOTGPeri_Port(0x138) |= (BIT3 | BIT2))	#define mUsbIntF2OUTEn()		(wFOTGPeri_Port(0x138) &= ~(BIT5 | BIT4))	#define mUsbIntF2OUTDis()		(wFOTGPeri_Port(0x138) |= (BIT5 | BIT4))	#define mUsbIntF0INEn()			(wFOTGPeri_Port(0x138) &= ~BIT16)	#define mUsbIntF0INDis()			(wFOTGPeri_Port(0x138) |= BIT16)	#define mUsbIntF3OUTEn()		(wFOTGPeri_Port(0x138) &= ~(BIT7 | BIT6))	#define mUsbIntF3OUTDis()		(wFOTGPeri_Port(0x138) |= (BIT7 | BIT6))	#define mUsbIntF0INEn()			(wFOTGPeri_Port(0x138) &= ~BIT16)	#define mUsbIntF0INDis()			(wFOTGPeri_Port(0x138) |= BIT16)	#define mUsbIntF2INEn()			(wFOTGPeri_Port(0x138) &= ~BIT18)	#define mUsbIntF2INDis()			(wFOTGPeri_Port(0x138) |= BIT18)	#define mUsbIntSrc1MaskRd()		(wFOTGPeri_Port(0x138))		// Mask of interrupt source group 2(DMA int mask)(0x13C)	#define mUsbIntSuspDis()			(wFOTGPeri_Port(0x13C) |= BIT1)			#define mUsbIntDmaErrDis()		(wFOTGPeri_Port(0x13C) |= BIT8)	#define mUsbIntDmaFinishDis()	(wFOTGPeri_Port(0x13C) |= BIT7)	#define mUsbIntSuspEn()			(wFOTGPeri_Port(0x13C) &= ~(BIT1))			#define mUsbIntDmaErrEn()		(wFOTGPeri_Port(0x13C) &= ~(BIT8))	#define mUsbIntDmaFinishEn()		(wFOTGPeri_Port(0x13C) &= ~(BIT7))	#define mUsbIntSrc2MaskRd()		(wFOTGPeri_Port(0x13C))	// Interrupt group (0x140)	#define mUsbIntGroupRegRd()		(wFOTGPeri_Port(0x140))	#define mUsbIntGroupRegSet(wValue)	(wFOTGPeri_Port(0x140) |= wValue)		// Interrupt source group 0(0x144)	#define mUsbIntSrc0Rd()			(wFOTGPeri_Port(0x144))		#define mUsbIntEP0AbortClr()		(wFOTGPeri_Port(0x144) &= ~(BIT5))		#define mUsbIntSrc0Clr()			(wFOTGPeri_Port(0x144) = 0)	#define mUsbIntSrc0Set(wValue)	(wFOTGPeri_Port(0x144) |= wValue)		// Interrupt source group 1(0x148)	#define mUsbIntSrc1Rd()			(wFOTGPeri_Port(0x148))	#define mUsbIntSrc1Set(wValue)	(wFOTGPeri_Port(0x148) |= wValue)		// Interrupt source group 2(0x14C)	#define mUsbIntSrc2Rd()			(wFOTGPeri_Port(0x14C))	#define mUsbIntSrc2Set(wValue)	(wFOTGPeri_Port(0x14C) |= wValue)			#define mUsbIntBusRstClr()		(wFOTGPeri_Port(0x14C) &= ~BIT0)			#define mUsbIntSuspClr()			(wFOTGPeri_Port(0x14C) &= ~BIT1)			#define mUsbIntResmClr()			(wFOTGPeri_Port(0x14C) &= ~BIT2)			#define mUsbIntIsoSeqErrClr()		(wFOTGPeri_Port(0x14C) &= ~BIT3)				#define mUsbIntIsoSeqAbortClr()	(wFOTGPeri_Port(0x14C) &= ~BIT4)				#define mUsbIntTX0ByteClr()		(wFOTGPeri_Port(0x14C) &= ~BIT5)				#define mUsbIntRX0ByteClr()		(wFOTGPeri_Port(0x14C) &= ~BIT6)				#define mUsbIntDmaFinishClr()	(wFOTGPeri_Port(0x14C) &= ~BIT7)				#define mUsbIntDmaErrClr()		(wFOTGPeri_Port(0x14C) &= ~BIT8)				#define mUsbIntDmaFinishRd()	(wFOTGPeri_Port(0x14C) &BIT7)				#define mUsbIntDmaFinish()		(wFOTGPeri_Port(0x14C) & BIT7)				#define mUsbIntDmaErr()			(wFOTGPeri_Port(0x14C) & BIT8)					// Rx 0 byte packet register(0x150)	#define mUsbIntRX0ByteRd()		(INT8U)(wFOTGPeri_Port(0x150))	#define mUsbIntRX0ByteSetClr(set)		(wFOTGPeri_Port(0x150) &= ~((INT32U)set))		// Tx 0 byte packet register(0x154)	#define mUsbIntTX0ByteRd()		(INT8U)(wFOTGPeri_Port(0x154))	#define mUsbIntTX0ByteSetClr(data)		(wFOTGPeri_Port(0x154) &= ~((INT32U)data))	// ISO sequential Error/Abort register(0x158)	#define mUsbIntIsoSeqErrRd()		(INT8U)((wFOTGPeri_Port(0x158) & 0xff0000)>>16)	#define mUsbIntIsoSeqErrSetClr(data)		(wFOTGPeri_Port(0x158) &= ~(((INT32U)data)<<16))	#define mUsbIntIsoSeqAbortRd()	(INT8U)(wFOTGPeri_Port(0x158) & 0xff)	#define mUsbIntIsoSeqAbortSetClr(data)	(wFOTGPeri_Port(0x158) &= ~((INT32U)data))	// IN Endpoint MaxPacketSize register(0x160,0x164,...,0x17C)	#define mUsbEPinHighBandSet(EPn, dir , size )	(wFOTGPeri_Port(0x160 + ((EPn - 1) << 2)) &= ~(BIT14 |BIT13));  (wFOTGPeri_Port(0x160 + ((EPn - 1) << 2)) |= ((((INT8U)(size >> 11)+1) << 13)*(1 - dir)) )	#define mUsbEPMxPtSz(EPn, dir, size)		(wFOTGPeri_Port(0x160 + (dir * 0x20) + ((EPn - 1) << 2)) = (INT16U)(size))	#define mUsbEPMxPtSzClr(EPn, dir)			(wFOTGPeri_Port(0x160 + (dir * 0x20) + ((EPn - 1) << 2)) = 0)	#define mUsbEPinMxPtSz(EPn)		(wFOTGPeri_Port(0x160 + ((EPn - 1) << 2)) & 0x7ff)	#define mUsbEPinStallST(EPn)		((wFOTGPeri_Port(0x160 + ((EPn - 1) << 2)) & BIT11) >> 11)	#define mUsbEPinStallClr(EPn)		(wFOTGPeri_Port(0x160 + ((EPn - 1) << 2)) &= ~BIT11)	#define mUsbEPinStallSet(EPn)		(wFOTGPeri_Port(0x160 + ((EPn - 1) << 2)) |=  BIT11)	#define mUsbEPinRsTgClr(EPn)		(wFOTGPeri_Port(0x160 + ((EPn - 1) << 2)) &= ~BIT12)	#define mUsbEPinRsTgSet(EPn)	(wFOTGPeri_Port(0x160 + ((EPn - 1) << 2)) |=  BIT12)	// OUT Endpoint MaxPacketSize register(0x180,0x164,...,0x19C)	#define mUsbEPoutMxPtSz(EPn)	((wFOTGPeri_Port(0x180 + ((EPn - 1) << 2))) & 0x7ff)	#define mUsbEPoutStallST(EPn)	((wFOTGPeri_Port(0x180 + ((EPn - 1) << 2)) & BIT11) >> 11)	#define mUsbEPoutStallClr(EPn)	(wFOTGPeri_Port(0x180 + ((EPn - 1) << 2)) &= ~BIT11)	#define mUsbEPoutStallSet(EPn)	(wFOTGPeri_Port(0x180 + ((EPn - 1) << 2)) |=  BIT11)	#define mUsbEPoutRsTgClr(EPn)	(wFOTGPeri_Port(0x180 + ((EPn - 1) << 2)) &= ~BIT12)	#define mUsbEPoutRsTgSet(EPn)	(wFOTGPeri_Port(0x180 + ((EPn - 1) << 2)) |=  BIT12)	// Endpoint & FIFO Configuration	// Endpoint 1~4 Map register(0x1a0), Endpoint 5~8 Map register(0x1a4)	#define mUsbEPMap(EPn, MAP)	(bFOTGPeri_Port(0x1a0 + (EPn-1)) = MAP)	#define mUsbEPMapRd(EPn)		(bFOTGPeri_Port(0x1a0+ (EPn-1)))	#define mUsbEPMapAllClr()		(wFOTGPeri_Port(0x1a0) = 0);(wFOTGPeri_Port(0x1a4) = 0)		// FIFO Map register(0x1a8)	#define mUsbFIFOMap(FIFOn, MAP)	(bFOTGPeri_Port(0x1a8 + FIFOn) = MAP)	#define mUsbFIFOMapRd(FIFOn)		(bFOTGPeri_Port(0x1a8 + FIFOn))	#define mUsbFIFOMapAllClr()			(wFOTGPeri_Port(0x1a8) = 0)		// FIFO Configuration register(0x1ac)	#define mUsbFIFOConfig(FIFOn, CONFIG)	(bFOTGPeri_Port(0x1ac + FIFOn) = CONFIG)	#define mUsbFIFOConfigRd(FIFOn)			(bFOTGPeri_Port(0x1ac + FIFOn))	#define mUsbFIFOConfigAllClr()		(bFOTGPeri_Port(0x1ac) = 0)	#define FIFOEnBit					0x20	// FIFO byte count register(0x1b0)	#define mUsbFIFOOutByteCount(fifo_num)	(((wFOTGPeri_Port(0x1b0+fifo_num*4)&0x7ff)))	#define mUsbFIFODone(fifo_num)			(wFOTGPeri_Port(0x1b0+fifo_num*4) |= BIT11)	// DMA target FIFO register(0x1c0)	#define FOTG200_DMA2FIFO_Non 		0	#define FOTG200_DMA2FIFO0 			BIT0	#define FOTG200_DMA2FIFO1 			BIT1	#define FOTG200_DMA2FIFO2 			BIT2	#define FOTG200_DMA2FIFO3 			BIT3	#define FOTG200_DMA2CxFIFO 		BIT4		#define mUsbDMA2FIFOSel(sel)		(wFOTGPeri_Port(0x1c0) = sel)	#define mUsbDMA2FIFORd()			(wFOTGPeri_Port(0x1c0))		// DMA parameter set 1 (0x1c8)		#define mUsbDmaConfig(len,Dir)		(wFOTGPeri_Port(0x1c8) = (((INT32U)len)<<8)|((1-Dir)<<1))	//#define mUsbDmaLenRd()				((wFOTGPeri_Port(0x1c8) & 0x1fff0000) >> 8)        #define mUsbDmaLenRd()				((wFOTGPeri_Port(0x1c8) & 0x00FFFFFF00) >> 8)		#define mUsbDmaConfigRd()			(wFOTGPeri_Port(0x1c8))	#define mUsbDmaConfigSet(set)		(wFOTGPeri_Port(0x1c8) = set)		#define mUsbDmaStart()				(wFOTGPeri_Port(0x1c8) |= BIT0)	#define mUsbDmaStop()				(wFOTGPeri_Port(0x1c8) &= ~BIT0)	// DMA parameter set 2 (0x1cc)		#define mUsbDmaAddr(addr)			(wFOTGPeri_Port(0x1cc) = addr)	#define mUsbDmaAddrRd()			(wFOTGPeri_Port(0x1cc))		// 8 byte command data port(0x1d0)	#define mUsbEP0CmdDataRdDWord()	(wFOTGPeri_Port(0x1d0))		#endif /* __FOTG200_Peripheral_M_H  */

⌨️ 快捷键说明

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