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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? aclink.c

?? realtek562x系列驅(qū)動(dòng)源碼。wince
?? C
字號(hào):
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this sample source code is subject to the terms of the Microsoft
// license agreement under which you licensed this sample source code. If
// you did not accept the terms of the license agreement, you are not
// authorized to use this sample source code. For the terms of the license,
// please see the license agreement between you and Microsoft or, if applicable,
// see the LICENSE.RTF on your install media or the root of your tools installation.
// THE SAMPLE SOURCE CODE IS PROVIDED "AS IS", WITH NO WARRANTIES.
//
/* 
** Copyright 2000-2003 Intel Corporation All Rights Reserved.
**
** Portions of the source code contained or described herein and all documents
** related to such source code (Material) are owned by Intel Corporation
** or its suppliers or licensors and is licensed by Microsoft Corporation for distribution.  
** Title to the Material remains with Intel Corporation or its suppliers and licensors. 
** Use of the Materials is subject to the terms of the Microsoft license agreement which accompanied the Materials.  
** No other license under any patent, copyright, trade secret or other intellectual
** property right is granted to or conferred upon you by disclosure or
** delivery of the Materials, either expressly, by implication, inducement,
** estoppel or otherwise 
** Some portion of the Materials may be copyrighted by Microsoft Corporation.
*/


#include <windows.h>
#include <xllp_ac97.h>
#include <bulverde.h>
#include <ceddk.h>
#include "aclink.h"

static volatile BULVERDE_AC97_REG   *g_pAc97Regs  = NULL;
static volatile BULVERDE_OST_REG    *g_pOSTRegs   = NULL;
static volatile BULVERDE_INTR_REG   *g_pICRegs    = NULL;
static volatile BULVERDE_GPIO_REG   *g_pGPIORegs  = NULL;
static volatile BULVERDE_CLKMGR_REG *g_pClockRegs = NULL;

static XLLP_AC97_CONTEXT_T g_AC97CtxStruct;

static volatile AC97_GLOBALS *g_pAc97Shared = NULL;

BOOL InitializeACLink(BOOL InPowerHandler, UINT8 DevId)
{
    DEBUGMSG(1, (TEXT("InitializeACLink()\r\n")));

    // Allocate AC link control resources.
    //
    if (!AllocateACLinkResources(DevId))
    {
        return(FALSE);
    }

    // Data structure used by XLLP routines.
    //
    g_AC97CtxStruct.pGpioReg          = (P_XLLP_GPIO_T)   g_pGPIORegs;
    g_AC97CtxStruct.pClockReg         = (P_XLLP_CLKMGR_T) g_pClockRegs;
    g_AC97CtxStruct.pAc97Reg          = (P_XLLP_AC97_T)   g_pAc97Regs;
    g_AC97CtxStruct.pOstRegs          = (P_XLLP_OST_T)    g_pOSTRegs;
    g_AC97CtxStruct.pIntcReg          = (P_XLLP_INTC_T)   g_pICRegs;
    g_AC97CtxStruct.maxSetupTimeOutUs = 1000;
    g_AC97CtxStruct.useSecondaryCodec = 0;

    return(TRUE);
}

BOOL DeInitializeACLink(BOOL InPowerHandler, UINT8 DevId)
{
    DEBUGMSG(1, (TEXT("DeInitializeACLink()\r\n")));

    if (!DeAllocateACLinkResources(DevId))
    {
        return(FALSE);
    }

    return(TRUE);
}

static BOOL AllocateACLinkResources(UINT8 DevId)
{
    PHYSICAL_ADDRESS RegPA;

    if (g_pICRegs == NULL)
    {
        RegPA.QuadPart = BULVERDE_BASE_REG_PA_INTC;
        g_pICRegs = (volatile BULVERDE_INTR_REG *) MmMapIoSpace(RegPA, 0x400, FALSE);
    }

    if (g_pAc97Regs == NULL)
    {
        RegPA.QuadPart = BULVERDE_BASE_REG_PA_AC97;
        g_pAc97Regs = (volatile BULVERDE_AC97_REG *) MmMapIoSpace(RegPA, 0x400, FALSE);
    }

    if (g_pClockRegs == NULL)
    {
        RegPA.QuadPart = BULVERDE_BASE_REG_PA_CLKMGR;
        g_pClockRegs = (volatile BULVERDE_CLKMGR_REG *) MmMapIoSpace(RegPA, 0x400, FALSE);
    }

    if (g_pGPIORegs == NULL)
    {
        RegPA.QuadPart = BULVERDE_BASE_REG_PA_GPIO;
        g_pGPIORegs = (volatile BULVERDE_GPIO_REG *) MmMapIoSpace(RegPA, 0x400, FALSE);
    }

    if (g_pOSTRegs == NULL)
    {
        RegPA.QuadPart = BULVERDE_BASE_REG_PA_OST;
        g_pOSTRegs = (volatile BULVERDE_OST_REG *) MmMapIoSpace(RegPA, 0x400, FALSE);
    }

    if (hACLinkControlMutex == NULL)
    {
        hACLinkControlMutex = CreateMutex(NULL, FALSE, ACLINK_MUTEX_NAME);
    }

    if (NULL == g_pAc97Shared)
    {
        HANDLE hShareMap;
        DWORD dwError;
        hShareMap = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE,
                    0, sizeof(AC97_GLOBALS), AC97_SHARED_FILENAME );
        dwError = GetLastError();
        if((0 == dwError) || (ERROR_ALREADY_EXISTS == dwError))
        {
            // Get a valid process pointer to the buffer mapped above.
            g_pAc97Shared = (volatile AC97_GLOBALS *)MapViewOfFile( hShareMap, FILE_MAP_ALL_ACCESS, 0, 0, 0 );
            //handle is not needed because mapped view has an internal open handle to the object
            CloseHandle(hShareMap);

            if (g_pAc97Shared && (0 == dwError))
            {
                g_pAc97Shared->InitRefCnt = 0;
            }
        }
    }

    if (!g_pICRegs || !g_pAc97Regs || !g_pClockRegs || !g_pGPIORegs || !g_pOSTRegs || !hACLinkControlMutex 
    || !g_pAc97Shared)
    {
        DEBUGMSG(TRUE, (TEXT("ERROR:  Failed to allocate AC Link resources.\r\n")));
        DeAllocateACLinkResources(DevId);
        return(FALSE);
    }

    return(TRUE);
}

static BOOL DeAllocateACLinkResources(UINT8 DevId)
{

    if (g_pAc97Regs)
    {
        VirtualFree((void *)g_pAc97Regs, 0, MEM_RELEASE);
        g_pAc97Regs = NULL;
    }

    if (g_pICRegs)
    {
        VirtualFree((void *)g_pICRegs, 0, MEM_RELEASE);
        g_pICRegs = NULL;
    }

    if (g_pClockRegs)
    {
        VirtualFree((void *)g_pClockRegs, 0, MEM_RELEASE);
        g_pClockRegs = NULL;
    }

    if (g_pGPIORegs)
    {
        VirtualFree((void *)g_pGPIORegs, 0, MEM_RELEASE);
        g_pGPIORegs = NULL;
    }

    if (g_pOSTRegs)
    {
        VirtualFree((void *)g_pOSTRegs, 0, MEM_RELEASE);
        g_pOSTRegs = NULL;
    }

    if (g_pAc97Shared)    
    {
        UnmapViewOfFile((void *)g_pAc97Shared);
        g_pAc97Shared = NULL;
    }

    if (hACLinkControlMutex)
    {
        CloseHandle(hACLinkControlMutex);
        hACLinkControlMutex = NULL;
    }

    return(TRUE);
}

BOOL ConfigureAC97Control(void)
{	
    if (!GetAC97Lock())
    {
        return(FALSE);
    }

    DEBUGMSG(1, (TEXT("ConfigureAC97Control: InitRefCnt=%d\r\n"), g_pAc97Shared->InitRefCnt));

    if (g_pAc97Shared->InitRefCnt)
    {
        g_pAc97Shared->InitRefCnt++;
        ReleaseAC97Lock();
        return(TRUE);
    }	
    if (XllpAc97Init(&g_AC97CtxStruct) != XLLP_AC97_NO_ERROR)
    {
        DEBUGMSG(1, (TEXT("CongirureAC97Control: XllipAc97Init() failed\r\n")));
        ReleaseAC97Lock();
        return(FALSE);
    }

    g_pAc97Shared->InitRefCnt = 1;
    ReleaseAC97Lock();
    
    return(TRUE);
}

BOOL UnConfigureAC97Control(void)
{
    DEBUGMSG(1, (TEXT("UnConfigureAC97Control: InitRefCnt=%d\r\n"), g_pAc97Shared->InitRefCnt));
	
    if(g_pAc97Shared->InitRefCnt == 0)
    {
        DEBUGMSG(1, (TEXT("Reference count is zero!\r\n")));
        return FALSE;
    }

    if (!GetAC97Lock())
    {
        return(FALSE);
    }
    
    g_pAc97Shared->InitRefCnt--;

    if (g_pAc97Shared->InitRefCnt)
    {
        ReleaseAC97Lock();
        return(TRUE);
    }

    if (XllpAc97DeInit(&g_AC97CtxStruct) != XLLP_AC97_NO_ERROR)
    {
        DEBUGMSG(1, (TEXT("UnCongirureAC97Control: XllipAc97DeInit() failed\r\n")));
        ReleaseAC97Lock();
        return(FALSE);
    }

    ReleaseAC97Lock();
    
    return(TRUE);
}

BOOL GetAC97Lock(void)
{   

    if (WaitForSingleObject(hACLinkControlMutex, 3000) == WAIT_OBJECT_0)
    {
        return(TRUE);
    }
    else
    {
        DEBUGMSG(1, (TEXT("GetAC97Lock failed\r\n")));
        return(FALSE);
    }
}

BOOL ReleaseAC97Lock(void)
{
    if (!g_pAc97Regs) return(FALSE);

    g_pAc97Regs->car &= ~AC97CAR_CAIP;
    ReleaseMutex(hACLinkControlMutex);

    return(TRUE);
}

BOOL ReadAC97Raw(UINT8 Offset, UINT16 *pData, UINT8 DevId)
{

    if (XllpAc97Read((XLLP_UINT16_T)   Offset,
                     (XLLP_UINT16_T *) pData,
                     (P_XLLP_AC97_T)   g_pAc97Regs, 
                     (P_XLLP_OST_T)    g_pOSTRegs,
                     5000, 
                     XLLP_AC97_CODEC_PRIMARY) != XLLP_AC97_NO_ERROR)
    {
        DEBUGMSG(1, (TEXT("ReadAC97Raw failed\r\n")));
        return(FALSE);
    }

    return(TRUE);
}

BOOL ReadAC97(UINT8 Offset, UINT16 *pData, UINT8 DevId)
{
    BOOL retVal = FALSE;

    if (GetAC97Lock() == TRUE)
    {
        retVal = ReadAC97Raw(Offset, pData, DevId);
        ReleaseAC97Lock();
    }

    return(retVal);
}

BOOL WriteAC97Raw(UINT8 Offset, UINT16 Data, UINT8 DevId)
{

    if (XllpAc97Write((XLLP_UINT16_T) Offset,
                      (XLLP_UINT16_T) Data, 
                      (P_XLLP_AC97_T) g_pAc97Regs, 
                      (P_XLLP_OST_T)  g_pOSTRegs,
                      5000, 
                      XLLP_AC97_CODEC_PRIMARY) != XLLP_AC97_NO_ERROR)
    {
        DEBUGMSG(1, (TEXT("WriteAC97Raw failed\r\n")));
        return(FALSE);
    }

    return(TRUE);
}

BOOL WriteAC97(UINT8 Offset, UINT16 Data, UINT8 DevId)
{
    BOOL retVal = FALSE;

    if (GetAC97Lock() == TRUE)
    {
        retVal = WriteAC97Raw(Offset, Data, DevId);
        ReleaseAC97Lock();
    }

    return(retVal);
}


BOOL ColdResetAC97Control(void)
{
    DEBUGMSG(1, (TEXT("InitializeACLink()\r\n")));

    if (!GetAC97Lock())
    {
        return(FALSE);
    }

    if (XllpAc97ColdReset(&g_AC97CtxStruct) != XLLP_AC97_NO_ERROR)
    {
        DEBUGMSG(1, (TEXT("ColdResetAC97Control: XllipAc97ColdReset() failed\r\n")));
        ReleaseAC97Lock();
        return(FALSE);
    }

    ReleaseAC97Lock();
    return(TRUE);
}

BOOL WarmResetAC97Control(void)
{
    if (XllpAc97WarmReset(&g_AC97CtxStruct)!= XLLP_AC97_NO_ERROR)
    {
        return(FALSE);
    }

    return(TRUE);
}


BOOL PrimaryCodecReady(void)
{
	BOOL codecReady=FALSE;
	XLLP_AC97_STAT_T ac97_state;
	
	if(!g_pAc97Regs)
	{
		return FALSE;
	}

	XllpAc97GetStatus(&ac97_state,(P_XLLP_AC97_T)g_pAc97Regs,XLLP_AC97_CODEC_PRIMARY);
	
	if(ac97_state.codecReady==XLLP_TRUE)
	{
		return TRUE;
	}
	else
	{
		return FALSE;
	}	
}

BOOL SecondaryCodecReady(void)
{
	BOOL codecReady=FALSE;
	XLLP_AC97_STAT_T ac97_state;
	
	if(!g_pAc97Regs)
	{
		return FALSE;
	}

	XllpAc97GetStatus(&ac97_state,(P_XLLP_AC97_T)g_pAc97Regs,XLLP_AC97_CODEC_SECONDARY);
	
	if(ac97_state.codecReady==XLLP_TRUE)
	{
		return TRUE;
	}
	else
	{
		return FALSE;
	}	
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品网站在线观看| 成人福利视频网站| 日韩西西人体444www| 亚洲一区二区三区自拍| 欧美福利视频一区| 蜜臀av性久久久久蜜臀aⅴ四虎 | 亚洲五码中文字幕| 欧美视频你懂的| 日韩影院精彩在线| 精品国产91洋老外米糕| 激情文学综合插| 亚洲欧洲精品一区二区三区| 欧美亚日韩国产aⅴ精品中极品| 亚洲在线视频网站| 日韩免费一区二区| 国产夫妻精品视频| 一区二区在线免费| 日韩一级片在线播放| 国产电影精品久久禁18| 亚洲美女视频一区| 日韩一区二区三区视频在线观看| 国产在线视频不卡二| 亚洲欧美在线视频| 91精品国产综合久久精品性色| 国产在线日韩欧美| 亚洲一区av在线| 精品区一区二区| 色又黄又爽网站www久久| 麻豆精品精品国产自在97香蕉| 国产女主播视频一区二区| 99久久er热在这里只有精品66| 午夜视频一区二区| 国产欧美日韩久久| 欧美精品少妇一区二区三区| 国产精品一区二区三区99| 亚洲国产婷婷综合在线精品| 精品国产一区二区三区不卡| 色婷婷久久久久swag精品| 国内欧美视频一区二区 | 日韩欧美亚洲另类制服综合在线| 国产成人av影院| 日韩精品亚洲专区| 亚洲欧洲日韩一区二区三区| 日韩一级黄色片| 色婷婷综合久久久久中文| 老汉av免费一区二区三区| 亚洲最新视频在线观看| 国产三级一区二区| 欧美一级高清片| 欧美亚洲免费在线一区| 成人小视频免费在线观看| 日本大胆欧美人术艺术动态| 一个色综合av| 亚洲国产精品成人综合色在线婷婷 | 精品国偷自产国产一区| 欧美系列日韩一区| av网站一区二区三区| 激情小说欧美图片| 免费久久精品视频| 香港成人在线视频| 尤物av一区二区| 亚洲欧洲国产日本综合| 日本一区二区三区久久久久久久久不 | 高清日韩电视剧大全免费| 日韩av在线免费观看不卡| 一区二区三区四区中文字幕| 国产精品的网站| 中文字幕精品一区二区三区精品 | 成人a区在线观看| 国产福利一区在线观看| 狠狠色2019综合网| 日本vs亚洲vs韩国一区三区| 日韩中文字幕一区二区三区| 无码av中文一区二区三区桃花岛| 亚洲精品视频在线观看网站| 亚洲乱码国产乱码精品精的特点| 国产精品美女一区二区在线观看| 久久久久久影视| 国产亚洲成av人在线观看导航| 2020国产精品自拍| 久久免费的精品国产v∧| 26uuu国产在线精品一区二区| 欧美成人在线直播| 久久色在线视频| 中文字幕不卡的av| 国产精品福利一区二区| 欧美国产激情二区三区| 国产精品久久久久久久久快鸭| 日本一区二区在线不卡| 成人欧美一区二区三区| 一区二区三区四区高清精品免费观看| ㊣最新国产の精品bt伙计久久| 欧美激情一区三区| 亚洲欧美一区二区三区国产精品| 亚洲欧美在线视频| 亚洲午夜精品一区二区三区他趣| 亚州成人在线电影| 激情小说欧美图片| 精品久久免费看| 国产精品视频观看| 亚洲激情网站免费观看| 婷婷中文字幕一区三区| 国产一区二区成人久久免费影院| 高清视频一区二区| 欧美唯美清纯偷拍| 欧美精品一区二区三| 中文字幕佐山爱一区二区免费| 亚洲综合av网| 经典一区二区三区| 成人深夜在线观看| 欧美日韩在线电影| 亚洲精品一区二区精华| 中文字幕一区二区三区av| 亚洲成av人在线观看| 精品综合久久久久久8888| 95精品视频在线| 日韩午夜精品电影| 亚洲欧洲日韩女同| 蜜臀av性久久久久蜜臀av麻豆| 成人深夜在线观看| 日韩一级免费观看| 亚洲女与黑人做爰| 久久99久国产精品黄毛片色诱| 粉嫩在线一区二区三区视频| 欧美揉bbbbb揉bbbbb| 久久久久久麻豆| 亚洲va欧美va人人爽| 国产白丝网站精品污在线入口| 欧美午夜精品电影| 1024亚洲合集| 久久91精品国产91久久小草 | 99久久久无码国产精品| 91精品国产手机| 亚洲免费av在线| 韩国一区二区三区| 欧美日韩一区二区三区在线| 欧美国产精品久久| 麻豆成人av在线| 欧美嫩在线观看| 国产精品久久久久久久久久久免费看| 青青草97国产精品免费观看无弹窗版| 91碰在线视频| 欧美经典一区二区| 麻豆91在线看| 欧美一区二区三区视频免费 | 日韩欧美一级在线播放| 亚洲一区二区美女| 97久久人人超碰| 国产欧美一区二区三区在线老狼| 蜜芽一区二区三区| 欧美男同性恋视频网站| 亚洲一区在线免费观看| 91无套直看片红桃| 国产精品九色蝌蚪自拍| 国产高清在线精品| 国产日韩三级在线| 国产一区欧美日韩| 久久综合九色综合97_久久久 | 国产一区二区成人久久免费影院 | 亚洲成人av一区二区| 99视频在线精品| 国产精品免费久久| 成人高清免费在线播放| 国产精品污污网站在线观看| 国产成人夜色高潮福利影视| 精品三级在线看| 九一九一国产精品| 亚洲精品一区二区三区99| 激情综合网av| 国产偷v国产偷v亚洲高清| 精品一区二区综合| 久久精品欧美一区二区三区不卡| 国产在线精品视频| 久久精品日产第一区二区三区高清版| 精品一区二区三区免费毛片爱| 久久综合久久综合亚洲| 国产精品影音先锋| 国产精品国产三级国产a| 99精品国产热久久91蜜凸| 亚洲精品国产视频| 欧美日韩国产区一| 免费久久99精品国产| 精品国产sm最大网站| 国产精品18久久久久久vr| 国产精品毛片a∨一区二区三区| 波多野结衣欧美| 亚洲国产精品久久人人爱蜜臀| 欧美色视频在线| 精品亚洲aⅴ乱码一区二区三区| 久久这里只有精品6| 99精品偷自拍| 亚洲地区一二三色| 精品美女一区二区三区| 国产凹凸在线观看一区二区| 一区二区三区四区五区视频在线观看| 欧美人狂配大交3d怪物一区| 激情综合色丁香一区二区| 日韩美女视频19| 91精品久久久久久久99蜜桃 | 久久99精品久久久久久动态图|