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

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

?? tmhal.c

?? PNX系列設備驅動 PNX系列設備驅動
?? C
?? 第 1 頁 / 共 3 頁
字號:

	if ( TMManGlobal->MapSDRAM )
	{
	    VirtualFree(Hal->SDRAMAddrKernel,0,MEM_RELEASE);
	}

    VirtualFree(Hal->MMIOAddrKernel,0,MEM_RELEASE);

	objectFree ( Hal );

	return statusSuccess;;
}

TMStatus	halReset (
	UInt32	HalHandle )
{
	HalObject*	Hal = (HalObject*)HalHandle;

	if ( objectValidate ( Hal, HalFourCC ) != True )
	{
        DPF(0,("tmman:halReset:objectValidate:FAIL\n" ));
		return statusInvalidHandle;
	}

	Hal->Control->HostInterruptSpinLock = 
		halAccess32 ( HalHandle, False );

	Hal->Control->TargetInterruptSpinLock = 
		halAccess32 ( HalHandle, False );

	return statusSuccess;
}

TMStatus	halSetPeerVersion (
	UInt32	HalHandle, 
	UInt32	MajorVersion,
	UInt32	MinorVersion )
{
	HalObject*	Hal = (HalObject*)HalHandle;

	if ( objectValidate ( Hal, HalFourCC ) != True )
	{
        DPF(0,("tmman:halSetPeerVersion:objectValidate:FAIL\n" ));
		return statusInvalidHandle;
	}

	Hal->PeerMajorVersion = MajorVersion;
	Hal->PeerMinorVersion = MinorVersion;

	return statusSuccess;
}

TMStatus	halGetPeerVersion (
	UInt32	HalHandle,
	UInt32*	MajorVersionPtr,
	UInt32*	MinorVersionPtr )
{
	HalObject*	Hal = (HalObject*)HalHandle;

	if ( objectValidate ( Hal, HalFourCC ) != True )
	{
        DPF(0,("tmman:halGetPeerVersion:objectValidate:FAIL\n" ));
		return statusInvalidHandle;
	}

	*MajorVersionPtr = Hal->PeerMajorVersion;
	*MinorVersionPtr = Hal->PeerMinorVersion;

	return statusSuccess;
}

TMStatus	halStartDSP (
	UInt32	HalHandle )
{
	HalObject*	Hal = (HalObject*)HalHandle;
	ULONG		TempBIU;

	if ( objectValidate ( Hal, HalFourCC ) != True )
	{
        DPF(0,("tmman:halStartDSP:objectValidate:FAIL\n" ));
		return statusInvalidHandle;
	}

	if ( Hal->SpeculativeLoadFix )
	{
		/* disable the PCI apperture */
		*(PULONG)(Hal->MMIOAddrKernel + DC_LOCK_CTL) = 
			/* read the value of DC_LOCK_CTL - retain all bits except bits 5 & 6 */
			( ( (*(PULONG)(Hal->MMIOAddrKernel + DC_LOCK_CTL)) & (~constTMManDC_LOCK_CTL_MASK) ) | 
			/* or it with the new values of bits 5 & 6 */
			( constTMManDC_LOCK_CTL_MASK  & ( ( constTMManDC_LOCK_CTL_PDS ) << constTMManDC_LOCK_CTL_POSITION ) ) );
	}
	else
	{
		/* enable the PCI apperture */
		*(PULONG)(Hal->MMIOAddrKernel + DC_LOCK_CTL) = 
			/* read the value of DC_LOCK_CTL - retain all bits except bits 5 & 6 */
			( ( (*(PULONG)(Hal->MMIOAddrKernel + DC_LOCK_CTL)) & (~constTMManDC_LOCK_CTL_MASK) ) | 
			/* or it with the new values of bits 5 & 6 */
			( constTMManDC_LOCK_CTL_MASK  & ( ( constTMManDC_LOCK_CTL_HEN ) << constTMManDC_LOCK_CTL_POSITION ) ) );
	}

	// clear the IMask & IClear register 
	*(PULONG)(Hal->MMIOAddrKernel + ICLEAR) = (ULONG)(0x0);
	
	DPF(0,("tmman:halStartDSP:ICLEAR[%x]\n", *(PULONG)(Hal->MMIOAddrKernel + ICLEAR) ));

	*(PULONG)(Hal->MMIOAddrKernel + IMASK) = (ULONG)(~0x0);

	DPF(0,("tmman:halStartDSP:IMASK[%x]\n", *(PULONG)(Hal->MMIOAddrKernel + IMASK) ));

	TempBIU = *(PULONG)(Hal->MMIOAddrKernel + BIU_CTL);
	TempBIU &= (~constTMManBIU_CTL_SR);
	TempBIU |= constTMManBIU_CTL_CR;
	*(PULONG)(Hal->MMIOAddrKernel + BIU_CTL) = TempBIU;

	DPF(0,("tmman:halStartDSP:BIU_CTL[%x]\n", *(PULONG)(Hal->MMIOAddrKernel + BIU_CTL) ));

	return statusSuccess;
}

TMStatus	halStopDSP (
	UInt32	HalHandle )
{
	HalObject*	Hal = (HalObject*)HalHandle;
	ULONG	Idx;

	if ( objectValidate ( Hal, HalFourCC ) != True )
	{
        DPF(0,("tmman:halStopDSP:objectValidate:FAIL\n" ));
		return statusInvalidHandle;
	}

	// biu reset BIU_CTL
	*(PULONG)(Hal->MMIOAddrKernel + BIU_CTL) &= (~constTMManBIU_CTL_CR);
	*(PULONG)(Hal->MMIOAddrKernel + BIU_CTL) |= constTMManBIU_CTL_SR;

	// reset the peripherals
	// audio out AO_CTL
	*(PULONG)( Hal->MMIOAddrKernel + AO_CTL ) = 0x80000000;
	*(PULONG)( Hal->MMIOAddrKernel + AO2_CTL ) = 0x80000000;

	// audio in AI_CTL
	*(PULONG)( Hal->MMIOAddrKernel +AI_CTL ) = 0x80000000;
	*(PULONG)( Hal->MMIOAddrKernel +AI2_CTL ) = 0x80000000;

	// video in VI_CTL
	*(PULONG)( Hal->MMIOAddrKernel +VI_CTL ) = 0x00080000;
	*(PULONG)( Hal->MMIOAddrKernel +VI2_CTL ) = 0x00080000;

	// video out VO_CTL
	*(PULONG)( Hal->MMIOAddrKernel +VO_CTL ) = 0x80000000;

	//ssi SSI_CTL
	*(PULONG)( Hal->MMIOAddrKernel +SSI_CTL ) = 0xc0000000;

	//SPDIF SDO_CTL
	*(PULONG)( Hal->MMIOAddrKernel +SPDO_CTL ) = 0x80000000;

	//IIC Slave IICS_CTL
	*(PULONG)( Hal->MMIOAddrKernel +IICS_CTL ) = 0x00200000;

	// disable 
	*(PULONG)( Hal->MMIOAddrKernel + IIC_CTL ) &= ~(0x00000001);
	//enable
	*(PULONG)( Hal->MMIOAddrKernel + IIC_CTL ) |= 0x00000001;

	// reset the VLD once
	*(PULONG)( Hal->MMIOAddrKernel + VLD_COMMAND ) = 0x00000401;

	// reset the HDVO
	*(PULONG)( Hal->MMIOAddrKernel + (HDVO_BASE + (0x20 << 1 )) ) = (ULONG)( 3 << 1 );

	// reset the transport demux
	*(PULONG)( Hal->MMIOAddrKernel + TP1_CTL ) = 0x80000000;
	*(PULONG)( Hal->MMIOAddrKernel + TP2_CTL ) = 0x80000000;

	//icp ICP_SR
	for ( Idx= 0 ; Idx < 10 ; Idx ++ )
	{
		// do it 10 times just to make sure ....
		if ( *( Hal->MMIOAddrKernel + ICP_SR ) & 0x01 ) 
			break;
		// changed on usman's request TRC970225
		*( Hal->MMIOAddrKernel + ICP_SR )  = 0x80;
	}

	//jtag JTAG_CTL
	*(PULONG)( Hal->MMIOAddrKernel + JTAG_DATA_IN ) = 0x00000000;
	*(PULONG)( Hal->MMIOAddrKernel + JTAG_DATA_OUT ) = 0x00000000;
	*(PULONG)( Hal->MMIOAddrKernel + JTAG_CTL ) = 0x00000004;

	return statusSuccess;

}


TMStatus	halResetDSP (
	UInt32	HalHandle )
{
	HalObject*		Hal = (HalObject*)HalHandle;
	ULONG			Idx;
	PCI_CONFIG_ADDRESS PCIConfigAddress;

	// we don't write anything into the first 3 registers
	// we write the command status at the very end.
	// write to all the registers except the last 2.
	// NT goes bonkers if we write to the interrupt register.


    // we have to write to the unterrupt register as well because PORT I/O
    // is not supported for all platforms
    for ( Idx = 3 ; Idx < (constTMMANPCIRegisters)  ; Idx ++ )
	{
        if ( HalSetBusDataByOffset (
			PCIConfiguration,
			(ULONG)Hal->BusNumber,
			Hal->SlotNumber.u.AsULONG,
			&Hal->PCIRegisters[Idx], 
			(ULONG)Idx*4, 
			sizeof (ULONG) ) == 0 )
		{
            DPF(0,("HalSetBusDataByOffset[0x%x] FAILED\n",Idx));
			return statusPCIConfigAccessFail; 
		}
	}

	if ( HalSetBusDataByOffset (
		PCIConfiguration,
		(ULONG)Hal->BusNumber,
		Hal->SlotNumber.u.AsULONG,
		&Hal->PCIRegisters[1], 
		(ULONG)1*4, 
		sizeof (ULONG) ) == 0 )
	{
        DPF(0,("HalSetBusDataByOffset FAILED\n"));
		return statusPCIConfigAccessFail; 
	}

    DPF(8,("Rewrote PCI config space\n"));
	/* do this only if we have to run in INTEL MODE */

    // assume TM1S+
    if ( ( *(PULONG)(Hal->MMIOAddrKernel + BIU_CTL) &
        (constTMManBIU_CTL_SE | constTMManBIU_CTL_BO | constTMManBIU_CTL_HE) ) == 0x0 )
    {	// virgin biu control
		ULONG	SwappedBIUControl;
		UCHAR	TempByte;

        SwappedBIUControl = 
            ( constTMManBIU_CTL_SE | constTMManBIU_CTL_BO | constTMManBIU_CTL_HE | constTMManBIU_CTL_SR );
        // do a dword swap
        TempByte = ((PUCHAR)&SwappedBIUControl)[0];
        ((PUCHAR)&SwappedBIUControl)[0] = ((PUCHAR)&SwappedBIUControl)[3];
        ((PUCHAR)&SwappedBIUControl)[3] = TempByte;
        TempByte = ((PUCHAR)&SwappedBIUControl)[1];
        ((PUCHAR)&SwappedBIUControl)[1] = ((PUCHAR)&SwappedBIUControl)[2];
        ((PUCHAR)&SwappedBIUControl)[2] = TempByte;

        *(PULONG)(Hal->MMIOAddrKernel + BIU_CTL) = SwappedBIUControl;

    }

    // set the cache details every time this function is called
    *(PULONG)(Hal->MMIOAddrKernel + DRAM_LIMIT) = Hal->SDRAMAddrPhysical.LowPart + Hal->SDRAMLength; 
    *(PULONG)(Hal->MMIOAddrKernel + DRAM_CACHEABLE_LIMIT) = Hal->SDRAMAddrPhysical.LowPart + Hal->SDRAMLength;

	*(PULONG)(Hal->MMIOAddrKernel + ICLEAR) = (ULONG)(0x0);
	*(PULONG)(Hal->MMIOAddrKernel + IMASK) = (ULONG)(~0x0);

}

TMStatus	halGetMMIOInfo (
	UInt32	HalHandle,
	Pointer *MMIOPhysical, 
	Pointer *MMIOKernelMapped, 
	UInt32 *MMIOSize )

{
	HalObject*	Hal = (HalObject*)HalHandle;
	if ( objectValidate ( Hal, HalFourCC ) != True )
	{
		DPF(0,("tmman:halGetMMIOInfo:objectValidate:FAIL\n" ));
		return statusInvalidHandle;
	}

	*MMIOPhysical = (Pointer)Hal->MMIOAddrPhysical.LowPart;
	*MMIOKernelMapped = Hal->MMIOAddrKernel;
	*MMIOSize = Hal->MMIOLength;
	return statusSuccess;
}

TMStatus	halGetSDRAMInfo ( 
	UInt32	HalHandle,
	Pointer *SDRAMPhysical, 
	Pointer *SDRAMKernelMapped, 
	UInt32 *SDRAMSize )
{
	HalObject*	Hal = (HalObject*)HalHandle;

	if ( objectValidate ( Hal, HalFourCC ) != True )
	{
		DPF(0,("tmman:halGetSDRAMInfo:objectValidate:FAIL\n" ));
		return statusInvalidHandle;
	}

	*SDRAMPhysical = (Pointer)Hal->SDRAMAddrPhysical.LowPart;
	*SDRAMKernelMapped = Hal->SDRAMAddrKernel;
	*SDRAMSize = Hal->SDRAMLength;
	return statusSuccess;

}

TMStatus	halGetTMPCIInfo ( 
	UInt32	HalHandle,
	UInt32* DeviceVendorID,
	UInt32* SubsystemID,
	UInt32* ClassRevisionID )
{
	HalObject*	Hal = (HalObject*)HalHandle;

	if ( objectValidate ( Hal, HalFourCC ) != True )
	{
		DPF(0,("tmman:halGetTMPCIInfo:objectValidate:FAIL\n" ));
		return statusInvalidHandle;
	}

	*DeviceVendorID = Hal->TMDeviceVendorID;
	*SubsystemID = Hal->TMSubsystemID;
	*ClassRevisionID = Hal->TMClassRevisionID;

	return statusSuccess;
}

TMStatus	halGetBridgePCIInfo ( 
	UInt32	HalHandle,
	UInt32* DeviceVendorID,
	UInt32* SubsystemID,
	UInt32* ClassRevisionID )
{
	HalObject*	Hal = (HalObject*)HalHandle;

	if ( objectValidate ( Hal, HalFourCC ) != True )
	{
		DPF(0,("tmman:halGetBridgePCIInfo:objectValidate:FAIL\n" ));
		return statusInvalidHandle;
	}

	*DeviceVendorID = Hal->BridgeDeviceVendorID;
	*SubsystemID = Hal->BridgeSubsystemID;
	*ClassRevisionID = Hal->BridgeClassRevisionID;


	return statusSuccess;
}

TMStatus	halInstallHandler ( 
	UInt32	HalHandle,
	HalInterruptHandler Handler, 
	Pointer Context )
{
	HalObject*	Hal = (HalObject*)HalHandle;


	if ( objectValidate ( Hal, HalFourCC ) != True )
	{
		DPF(0,("tmman:halInstallHandler:objectValidate:FAIL\n" ));
		return statusInvalidHandle;
	}

	Hal->Handler = Handler;
	Hal->Context = Context;
	return statusSuccess;
}

TMStatus	halRemoveHandler ( 
	UInt32	HalHandle )
{
	HalObject*	Hal = (HalObject*)HalHandle;

	if ( objectValidate ( Hal, HalFourCC ) != True )
	{
		DPF(0,("tmman:halRemoveHandler:objectValidate:FAIL\n" ));
		return statusInvalidHandle;
	}

	Hal->Handler = NULL;
	return statusSuccess;
}

TMStatus	halDisableInterrupts ( 
	UInt32	HalHandle,
	UInt32* Saved );

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品日日鲁夜夜添| 欧美综合在线视频| 国产日产欧产精品推荐色| 国产精品一区免费在线观看| 欧美精品一区二区三区久久久| 精品一区中文字幕| 国产人成亚洲第一网站在线播放| 国产91对白在线观看九色| 中文字幕日韩精品一区 | 亚洲乱码国产乱码精品精小说 | 久久国产日韩欧美精品| 精品久久国产字幕高潮| 成人毛片老司机大片| 一区二区三区在线免费观看| 欧美日韩国产高清一区| 国产乱国产乱300精品| 亚洲欧美日韩在线不卡| 91精品国产综合久久婷婷香蕉| 狠狠色丁香婷婷综合| 国产精品女上位| 欧美乱妇15p| 国产精品亚洲午夜一区二区三区 | 国产精品高潮久久久久无| 欧洲一区在线电影| 蜜臀99久久精品久久久久久软件| 国产欧美日韩视频在线观看| 日本伦理一区二区| 激情国产一区二区| 亚洲综合999| 国产偷v国产偷v亚洲高清| 91精品福利在线| 蜜臀av性久久久久蜜臀av麻豆| 中文字幕一区二区三区在线不卡| 欧美日韩一卡二卡三卡| 国产成人8x视频一区二区| 亚洲午夜久久久久中文字幕久| 久久嫩草精品久久久久| 欧美日韩一区二区三区免费看| 国产在线播放一区| 偷拍一区二区三区四区| 中文字幕中文字幕在线一区 | 蜜桃一区二区三区在线观看| 国产精品国产成人国产三级| 欧美大片日本大片免费观看| 色婷婷精品大在线视频| 国产成人超碰人人澡人人澡| 日本aⅴ免费视频一区二区三区 | 在线中文字幕一区二区| 国产高清精品网站| 久久精品国产成人一区二区三区| 亚洲美女视频一区| 国产精品色眯眯| 精品国产一区二区三区av性色| 欧美性生活影院| 99精品久久99久久久久| 国内精品久久久久影院色| 日韩精品午夜视频| 亚洲大片免费看| 亚洲激情男女视频| 中文字幕在线观看一区二区| 久久久蜜臀国产一区二区| 日韩色视频在线观看| 欧美午夜精品久久久久久超碰| 99精品视频一区| 97久久久精品综合88久久| 懂色av中文字幕一区二区三区 | 国产成人啪午夜精品网站男同| 午夜欧美视频在线观看| 亚洲精品第1页| 亚洲精品视频一区| 综合久久综合久久| 亚洲欧美激情插 | 精品国产伦一区二区三区观看体验| 日本精品视频一区二区| 91丨九色丨国产丨porny| a级精品国产片在线观看| av在线播放不卡| 成人免费视频一区| 国产高清视频一区| 成人天堂资源www在线| 国产激情视频一区二区在线观看 | 久久久久久久久99精品| 久久日韩精品一区二区五区| 日韩欧美在线网站| 欧美sm极限捆绑bd| 国产午夜精品久久久久久久| 国产亚洲精久久久久久| 欧美激情一区二区三区不卡| 国产精品福利av| 亚洲黄色片在线观看| 亚洲综合丝袜美腿| 免费看日韩a级影片| 日韩一区欧美二区| 久久狠狠亚洲综合| 国产美女一区二区| 91在线小视频| 欧美日韩免费观看一区二区三区 | 欧美一二三区在线观看| 精品粉嫩超白一线天av| 久久久久久日产精品| 国产精品久久久久精k8| 亚洲一区二区不卡免费| 日韩专区在线视频| 国产精品一级片在线观看| 99久久精品一区| 欧美性生交片4| 337p粉嫩大胆噜噜噜噜噜91av| 国产香蕉久久精品综合网| 国产精品久久看| 五月综合激情婷婷六月色窝| 老司机免费视频一区二区| 成人午夜激情在线| 欧美三级三级三级爽爽爽| 欧美大尺度电影在线| 中文字幕一区二区三区视频| 五月婷婷久久综合| 国产高清成人在线| 欧美久久婷婷综合色| 国产日韩欧美一区二区三区乱码| 亚洲日本在线a| 老司机精品视频导航| 91网上在线视频| 久久网站热最新地址| 伊人一区二区三区| 国产精品一区二区在线看| 在线亚洲一区二区| 久久久久高清精品| 亚洲成人你懂的| 成人三级在线视频| 日韩精品中午字幕| 亚洲黄网站在线观看| 国产成人精品亚洲777人妖| 欧美日韩在线播放一区| 欧美经典一区二区三区| 日韩av一区二区三区| 99久久er热在这里只有精品15| 日韩一卡二卡三卡| 一区二区三区自拍| 国产福利精品一区| 91精品国产乱| 亚洲男帅同性gay1069| 国产精品99久久久久久久女警 | 免费成人在线观看| 欧美天天综合网| 亚洲欧美日韩中文字幕一区二区三区| 久久精品国产一区二区三区免费看 | 国产亚洲综合在线| 日韩福利电影在线| 欧美体内she精高潮| 《视频一区视频二区| 国产一区二区调教| 精品日产卡一卡二卡麻豆| 丝袜脚交一区二区| 日本久久精品电影| 亚洲日本在线a| 99精品桃花视频在线观看| 国产日产欧产精品推荐色 | 亚洲国产精品v| 韩国v欧美v亚洲v日本v| 欧美一区二区在线免费观看| 亚洲大片一区二区三区| 在线精品视频一区二区三四| 亚洲欧美日韩系列| 91首页免费视频| 亚洲男人的天堂av| 91丨国产丨九色丨pron| 亚洲男人天堂一区| 日本高清无吗v一区| 亚洲精品福利视频网站| 日本韩国欧美在线| 亚洲综合网站在线观看| 在线中文字幕一区二区| 亚洲成人免费视| 欧美日韩精品电影| 日本欧美肥老太交大片| 日韩一区二区免费高清| 奇米777欧美一区二区| 日韩女优av电影在线观看| 精品午夜一区二区三区在线观看| 欧美mv日韩mv国产| 国产永久精品大片wwwapp| 国产欧美日韩综合| 91麻豆国产自产在线观看| 一区二区三区av电影| 欧美精品18+| 看片的网站亚洲| 国产日韩欧美精品综合| 99视频一区二区三区| 一区二区三区精品在线| 911精品产国品一二三产区| 美女一区二区视频| 国产情人综合久久777777| 91免费国产在线观看| 亚洲超碰97人人做人人爱| 日韩三级免费观看| 国产电影精品久久禁18| 一区二区成人在线| 日韩视频免费直播| av在线不卡免费看| 日韩中文字幕91|