亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? phcd.hpp

?? ISP1161 USB Driver under WinCE for StrongARM processor implementation
?? HPP
?? 第 1 頁 / 共 3 頁
字號:
	ULONG							m_HcControlBLE;

	ULONG							m_HcCommandCLF;
	ULONG							m_HcCommandBLF;


	inline VOID STRONGARM_DELAY(ULONG u_delayTimes)
	{
		for(uTesting = 0; uTesting<u_delayTimes; uTesting++);
	}

	inline USHORT READ_ISP1161_REGISTER_USHORT(PUSHORT reg) 
	{
		WRITE_PORT_USHORT((PUSHORT)(m_regBase+2), (USHORT)reg);
		#ifdef PLAT_STRONGARM		
			STRONGARM_DELAY(10);
		#endif
		
		USHORT temp = READ_PORT_USHORT((PUSHORT)m_regBase);
		#ifdef PLAT_STRONGARM		
			STRONGARM_DELAY(10);
		#endif
		return temp;
	}
 
	inline void WRITE_ISP1161_REGISTER_USHORT(PUSHORT reg, USHORT val) 
	{
  		
		WRITE_PORT_USHORT((PUSHORT)(m_regBase +2),(USHORT)reg);
		#ifdef PLAT_STRONGARM		
			STRONGARM_DELAY(10);
		#endif

		WRITE_PORT_USHORT((PUSHORT)m_regBase, (USHORT)val);
		#ifdef PLAT_STRONGARM		
			STRONGARM_DELAY(10);
		#endif
	}

	
	inline ULONG READ_ISP1161_REGISTER_ULONG(PULONG reg) 
	{

	//	USHORT tempreg = (USHORT)reg - (USHORT)p_DataPort;
	//	tempreg = tempreg /4;

		USHORT tempreg = (USHORT)reg/4;
		
		//Zouying, to access registers not existant
		if ( (tempreg >=0x6 && tempreg <=0xC) || tempreg == 0x10)
		{
			switch (tempreg)
			{
			case 0x06:
				return m_HcHCCA;
			case 0x07:
				return m_HcPeriodCurrentED;
			case 0x08:
				return m_HcControlHeadED;
			case 0x09:
				return m_HcControlCurrentED;
			case 0x0A:
				return m_HcBulkHeadED;
			case 0x0B:
				return m_HcBulkCurrentED;
			case 0x0C:
				return m_HcDoneHead;
			case 0x10:
				return m_HcPeriodicStart;
			default:
				return 0;
			}
		}
			

		WRITE_PORT_USHORT((PUSHORT)(m_regBase +2), tempreg);
		#ifdef PLAT_STRONGARM		
			STRONGARM_DELAY(10);
		#endif
		USHORT temp1 = READ_PORT_USHORT((PUSHORT)m_regBase);
		#ifdef PLAT_STRONGARM		
			STRONGARM_DELAY(10);
		#endif
		ULONG  temp2 = READ_PORT_USHORT((PUSHORT)m_regBase)<<16; 
		#ifdef PLAT_STRONGARM		
			STRONGARM_DELAY(10);
		#endif

		temp2 |= temp1;

		//Zouying, to access HcControl bits, which is not existant
		//We need to add the values in. 

		if (tempreg == 0x01)
		{
			temp2 &= ~gcHcControlCBSRmask;
			temp2 |= m_HcControlCBSR;

			temp2 |= m_HcControlPLE;
			temp2 |= m_HcControlIE;
			temp2 |= m_HcControlCLE;
			temp2 |= m_HcControlBLE;
		}
		
		if (tempreg == 0x02)
		{
			temp2 |= m_HcCommandCLF;
			temp2 |= m_HcCommandBLF;
			
		}

		return temp2;

	}
 
	inline void WRITE_ISP1161_REGISTER_ULONG(PULONG reg, ULONG val) 
	{
  		
	//	USHORT tempreg = (USHORT)reg - (USHORT)p_DataPort;
	//	tempreg = tempreg /4;
		USHORT tempreg = (USHORT)reg/4;

		if ( (tempreg >=0x6 && tempreg <=0xC) || tempreg == 0x10)
		{
			switch (tempreg)
			{
			case 0x06:
				m_HcHCCA = val;
				break;
			case 0x07:
				m_HcPeriodCurrentED = val;
				break;
			case 0x08:
				m_HcControlHeadED = val;
				break;
			case 0x09:
				m_HcControlCurrentED = val;
				break;
			case 0x0A:
				m_HcBulkHeadED = val;
				break;
			case 0x0B:
				m_HcBulkCurrentED = val; 
				break;
			case 0x0C:
				m_HcDoneHead = val;
				break;
			case 0x10:
				m_HcPeriodicStart = val;
				break;
			default:
				return;
			}
			return;
		}

		//If writing to control register, we need to capture the last 6 bits.
		if (tempreg == 0x01)
		{
			m_HcControlCBSR = val & gcHcControlCBSRmask;
			m_HcControlPLE	= val & gcHcControlPLEmask;
			m_HcControlIE	= val & gcHcControlIEmask;
			m_HcControlCLE	= val & gcHcControlCLEmask;
			m_HcControlBLE	= val & gcHcControlBLEmask;
		}
		
		//If writing to command register, we need capture to store the CLF and BLF
		if (tempreg == 0x02)
		{
			m_HcCommandCLF = val & gcHcCommandStatusCLFmask;
			m_HcCommandBLF	= val & gcHcCommandStatusBLFmask;
			
		}

		tempreg += 0x80;

		WRITE_PORT_USHORT((PUSHORT)(m_regBase+2), tempreg);
		#ifdef PLAT_STRONGARM		
			STRONGARM_DELAY(10);
		#endif
		WRITE_PORT_USHORT((PUSHORT)m_regBase, (USHORT)val);
		#ifdef PLAT_STRONGARM		
			STRONGARM_DELAY(10);
		#endif
		WRITE_PORT_USHORT((PUSHORT)m_regBase, (USHORT)(val>>16));
		#ifdef PLAT_STRONGARM		
			STRONGARM_DELAY(10);
		#endif
	}

	// Helper inline functions.

	// Warning!       the following functions can all overwrite eachother
	//                because they all access the HcCommandStatus Register!!!

	inline void
	ClearControlListFilledBit(REGISTER regBase)
	{
		ULONG dwValue;
		dwValue = READ_REGISTER_ULONG(HcCommandStatus(regBase));
		dwValue &= ~gcHcCommandStatusCLFmask;
		WRITE_REGISTER_ULONG(HcCommandStatus(regBase), dwValue);
	}

	inline void
	SetControlListFilledBit(REGISTER regBase)
	{
		ULONG dwValue;
		dwValue = READ_REGISTER_ULONG(HcCommandStatus(regBase));
		dwValue |= gcHcCommandStatusCLFmask;
		WRITE_REGISTER_ULONG(HcCommandStatus(regBase), dwValue);
	}

	inline void
	ClearBulkListFilledBit(REGISTER regBase)
	{
		ULONG dwValue;
		dwValue = READ_REGISTER_ULONG(HcCommandStatus(regBase));
		dwValue &= ~gcHcCommandStatusBLFmask;
		WRITE_REGISTER_ULONG(HcCommandStatus(regBase), dwValue);
	}

	inline void
	SetBulkListFilledBit(REGISTER regBase)
	{
		ULONG dwValue;
		dwValue = READ_REGISTER_ULONG(HcCommandStatus(regBase));
		dwValue |= gcHcCommandStatusBLFmask;
		WRITE_REGISTER_ULONG(HcCommandStatus(regBase), dwValue);
	}

	// WARNING!       the following functions can all overwrite eachother
	//                because they all access the HcControl Register!!!
	inline void
	EnableAllLists(REGISTER regBase)
	{
		ULONG dwValue;
		dwValue = READ_REGISTER_ULONG(HcControl(regBase));
		dwValue |=
			gcHcControlPLEmask  |   // Periodic List
			gcHcControlIEmask   |   // Isochronous
			gcHcControlCLEmask  |   // Control List
			gcHcControlBLEmask;     // Bulk List
		WRITE_REGISTER_ULONG(HcControl(regBase), dwValue);
	}

	inline void
	DisableAllLists(REGISTER regBase)
	{
		ULONG dwValue;
		dwValue = READ_REGISTER_ULONG(HcControl(regBase));
		dwValue &= ~(gcHcControlPLEmask | gcHcControlIEmask | gcHcControlCLEmask |
			gcHcControlBLEmask);
		WRITE_REGISTER_ULONG(HcControl(regBase), dwValue);
	}


	inline void
	EnableControlList(REGISTER regBase)
	{
		ULONG dwValue;
		dwValue = READ_REGISTER_ULONG(HcControl(regBase)) | gcHcControlCLEmask;
		WRITE_REGISTER_ULONG(HcControl(regBase), dwValue);
	}

	inline void
	DisableControlList(REGISTER regBase)
	{
		ULONG dwValue;
		dwValue = READ_REGISTER_ULONG(HcControl(regBase)) & ~gcHcControlCLEmask;
		WRITE_REGISTER_ULONG(HcControl(regBase), dwValue);
	}


	inline void
	EnableBulkList(REGISTER regBase)
	{
		ULONG dwValue;
		dwValue = READ_REGISTER_ULONG(HcControl(regBase)) | gcHcControlBLEmask;
		WRITE_REGISTER_ULONG(HcControl(regBase), dwValue);
	}

	inline void
	DisableBulkList(REGISTER regBase)
	{
		ULONG dwValue;
		dwValue = READ_REGISTER_ULONG(HcControl(regBase)) & ~gcHcControlBLEmask;
		WRITE_REGISTER_ULONG(HcControl(regBase), dwValue);
	}


	inline void
	EnableIntrAndIsochLists(REGISTER regBase)
	{
		ULONG dwValue;
		dwValue = READ_REGISTER_ULONG(HcControl(regBase)) |
			gcHcControlPLEmask | gcHcControlIEmask;
		WRITE_REGISTER_ULONG(HcControl(regBase), dwValue);
	}

	inline void
	DisableIntrAndIsochLists(REGISTER regBase)
	{
		ULONG dwValue;
		dwValue = READ_REGISTER_ULONG(HcControl(regBase)) &
			~(gcHcControlPLEmask | gcHcControlIEmask);
		WRITE_REGISTER_ULONG(HcControl(regBase), dwValue);
	}

};



inline UINT
CalcHubIntrDataSize(UINT numPorts)
{
    // Calculate the number of bytes needed to hold interrupt data for
    // this number of ports.  Need 1 bit per port and bit zero is reserved.
    return(((numPorts + 1) / 8) + 1);
}

extern "C"
{

BOOL HcdGetFrameNumber(LPVOID lpvHcd, LPDWORD lpdwFrameNumber);
BOOL HcdGetFrameLength(LPVOID lpvHcd, LPUSHORT lpuFrameLength);
BOOL HcdSetFrameLength(LPVOID lpvHcd, HANDLE hEvent, USHORT uFrameLength);
BOOL HcdStopAdjustingFrame(LPVOID lpvHcd);


BOOL HcdOpenPipe(LPVOID lpvHcd, UINT iDevice,
                 LPCUSB_ENDPOINT_DESCRIPTOR lpEndpointDescriptor,
                 LPUINT lpiEndpointIndex);
BOOL HcdClosePipe(LPVOID lpvHcd, UINT iDevice, UINT iEndpointIndex);
BOOL HcdResetPipe(LPVOID lpvHcd, UINT iDevice, UINT iEndpointIndex);
BOOL HcdIsPipeHalted(LPVOID lpvHcd, UINT iDevice, UINT iEndpointIndex,
        LPBOOL lpbHalted);


BOOL HcdIssueTransfer(LPVOID lpvHcd, UINT iDevice, UINT iEndpointIndex,
                      LPTRANSFER_NOTIFY_ROUTINE lpStartAddress,
                      LPVOID lpvNotifyParameter, DWORD dwFlags,
                      LPCVOID lpvControlHeader, DWORD dwStartingFrame,
                      DWORD dwFrames, LPCDWORD aLengths, DWORD dwBufferSize,
                      LPVOID lpvBuffer, ULONG paBuffer, LPCVOID lpvCancelId,
                      LPDWORD adwIsochErrors, LPDWORD adwIsochLengths,
                      LPBOOL lpfComplete, LPDWORD lpdwBytesTransfered,
                      LPDWORD lpdwError);

BOOL HcdAbortTransfer(LPVOID lpvHcd, UINT iDevice, UINT iEndpointIndex,
                      LPTRANSFER_NOTIFY_ROUTINE lpStartAddress,
                      LPVOID lpvNotifyParameter, LPCVOID lpvCancelId);

}

#endif // _PHCD_HPP_

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产美女在线精品| 一区二区高清视频在线观看| 日韩高清在线电影| 91精品国产综合久久国产大片| 亚洲一区二区不卡免费| 欧美亚洲动漫精品| 日韩专区中文字幕一区二区| 欧美精品在线一区二区三区| 天堂成人免费av电影一区| 欧美一级一级性生活免费录像| 美女被吸乳得到大胸91| 久久久综合精品| 不卡视频一二三| 樱桃视频在线观看一区| 欧美日韩一区二区三区四区| 秋霞av亚洲一区二区三| 久久久精品人体av艺术| 成人深夜在线观看| 三级精品在线观看| 久久五月婷婷丁香社区| 91污在线观看| 麻豆免费看一区二区三区| 久久久精品免费网站| 色婷婷av一区二区三区之一色屋| 午夜亚洲福利老司机| 欧美精品一区二区三| 99久久er热在这里只有精品15| 亚洲成av人**亚洲成av**| 精品国产伦一区二区三区免费 | 成人爽a毛片一区二区免费| 中文字幕一区二区三区不卡 | 美女在线视频一区| 亚洲乱码日产精品bd| 日韩一区二区三区四区五区六区| 国产91露脸合集magnet| 亚洲高清在线精品| 国产亚洲欧美色| 欧美精品在线观看一区二区| 国产在线精品一区二区不卡了| 综合激情成人伊人| 精品成人一区二区三区四区| av资源站一区| 久久国产欧美日韩精品| 亚洲精品国久久99热| 26uuu国产在线精品一区二区| 99精品国产99久久久久久白柏| 肉肉av福利一精品导航| 亚洲日本成人在线观看| 26uuu色噜噜精品一区| 欧美裸体一区二区三区| 99久久精品国产观看| 九色综合国产一区二区三区| 亚洲欧美偷拍卡通变态| 久久久久国产精品麻豆ai换脸 | 日本高清免费不卡视频| 国产精品主播直播| 麻豆精品国产91久久久久久| 亚洲美女少妇撒尿| 国产精品久久三区| 久久综合久久99| 欧美电影免费观看高清完整版在线观看| 91在线观看视频| 丁香婷婷综合五月| 国产馆精品极品| 国产一区二区三区视频在线播放| 午夜视频在线观看一区| 亚洲sss视频在线视频| 亚洲三级在线免费观看| 国产精品情趣视频| 国产欧美日韩卡一| 国产欧美一区二区精品忘忧草| 日韩久久久精品| 欧美一区二区精品在线| 欧美精品 国产精品| 欧美色图在线观看| 欧美日韩精品电影| 欧美疯狂性受xxxxx喷水图片| 在线精品亚洲一区二区不卡| 91视视频在线直接观看在线看网页在线看 | 高清不卡在线观看av| 国产精品综合av一区二区国产馆| 国产一区二区在线免费观看| 精彩视频一区二区| 国产真实乱对白精彩久久| 亚洲日本在线a| 国产精品每日更新在线播放网址| 欧美一级电影网站| 欧美一区二区三区啪啪| 91精品国产色综合久久不卡蜜臀 | 精品一区二区成人精品| 麻豆国产欧美一区二区三区| 精品午夜久久福利影院| 国产一区二区在线观看免费| 国产精品亚洲成人| 91亚洲永久精品| 欧美亚洲国产bt| 91精品国产一区二区人妖| 亚洲精品一区在线观看| 国产女人18毛片水真多成人如厕| 中文字幕av一区二区三区| 亚洲天堂中文字幕| 午夜影院在线观看欧美| 久久激情五月激情| 成人性生交大合| 在线免费一区三区| 678五月天丁香亚洲综合网| 精品国产亚洲在线| 国产精品国产三级国产普通话99| 一二三四区精品视频| 男女男精品视频| 国产成人亚洲精品青草天美| 91美女视频网站| 欧美福利一区二区| 国产日韩欧美精品电影三级在线| 伊人夜夜躁av伊人久久| 美日韩黄色大片| 色综合天天综合网天天看片| 欧美一区二区三区四区视频 | 欧美一区二区在线免费观看| 国产亚洲1区2区3区| 亚洲精品国产精品乱码不99| 蜜臀久久久久久久| 91偷拍与自偷拍精品| 日韩欧美在线影院| 亚洲欧美日韩一区二区| 蜜桃视频在线观看一区| 色综合久久综合| 久久综合色鬼综合色| 午夜影院在线观看欧美| 成人免费黄色大片| 亚洲精品一区二区三区蜜桃下载 | 国产精品私人自拍| 日本人妖一区二区| 色噜噜狠狠成人中文综合| 精品免费99久久| 亚洲地区一二三色| a亚洲天堂av| 2021久久国产精品不只是精品| 亚洲线精品一区二区三区| 国产成人综合在线观看| 5566中文字幕一区二区电影| 亚洲人精品一区| 国产高清不卡二三区| 日韩亚洲欧美在线| 亚洲综合成人网| 97精品久久久午夜一区二区三区 | 欧美一区二区三区免费观看视频| 中文字幕在线免费不卡| 国产麻豆91精品| 日韩欧美一级精品久久| 日韩影院在线观看| 欧美又粗又大又爽| 亚洲欧美色图小说| 成人激情综合网站| 国产欧美一区二区精品仙草咪| 激情文学综合插| 日韩欧美另类在线| 欧美aa在线视频| 欧美一级片免费看| 美日韩一区二区| 日韩视频免费观看高清完整版在线观看| 亚洲一区二区三区四区五区黄 | 亚洲欧洲色图综合| 成人免费三级在线| 国产精品麻豆久久久| 国产盗摄女厕一区二区三区| 精品三级在线观看| 国产乱码精品一区二区三区av | 日韩精品亚洲专区| 91精品婷婷国产综合久久性色| 亚洲6080在线| 777色狠狠一区二区三区| 亚洲国产成人av网| 91精品国产乱码久久蜜臀| 石原莉奈一区二区三区在线观看 | 欧美三级电影网站| 亚洲一区二区在线视频| 欧美系列亚洲系列| 午夜视频在线观看一区二区三区| 欧美日韩精品系列| 麻豆精品一区二区三区| 欧美精品一区二区三区高清aⅴ | 91老司机福利 在线| 亚洲精品成人a在线观看| 欧美唯美清纯偷拍| 天堂va蜜桃一区二区三区| 欧美成人综合网站| 国产成人精品三级| 亚洲视频免费观看| 欧美日韩国产色站一区二区三区| 午夜一区二区三区视频| 日韩免费高清视频| 成人国产精品免费观看| 亚洲精品乱码久久久久久黑人| 欧美三级视频在线观看| 久88久久88久久久| 亚洲日本电影在线| 日韩区在线观看| 成人99免费视频| 五月激情综合色|