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

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

?? aclink.c

?? realtek562x系列驅動源碼。wince
?? C
字號:

#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 BOOL g_IsAC97Configured = FALSE;


BOOL InitializeACLink(BOOL InPowerHandler, UINT8 DevId)
{

    // 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;

    XllpOstDelayMicroSeconds((P_XLLP_OST_T) g_pOSTRegs, 1);

    // Configure the AC97 controller.
    //
    if (!ConfigureAC97Control())
    {
        return(FALSE);
    }

    return(TRUE);
}

BOOL DeInitializeACLink(BOOL InPowerHandler, UINT8 DevId)
{
    if (!DeAllocateACLinkResources(DevId))
    {
        return(FALSE);
    }

    return(TRUE);
}

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 (!g_pICRegs || !g_pAc97Regs || !g_pClockRegs || !g_pGPIORegs || !g_pOSTRegs || !hACLinkControlMutex)
    {
        DEBUGMSG(TRUE, (TEXT("ERROR:  Failed to allocate AC Link resources.\r\n")));
        DeAllocateACLinkResources(DevId);
        return(FALSE);
    }

    return(TRUE);
}

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 (hACLinkControlMutex)
    {
        CloseHandle(hACLinkControlMutex);
    }

    return(TRUE);
}

BOOL ConfigureAC97Control(void)
{
    if (g_IsAC97Configured)
    {
        return(TRUE);
    }

	if((!PrimaryCodecReady())&&(!SecondaryCodecReady()))
	{
	    if (XllpAc97Init(&g_AC97CtxStruct) != XLLP_AC97_NO_ERROR)
   		 {

	        return(FALSE);
    	 }
	}
	else
	{
		return TRUE;
	}

    g_IsAC97Configured = TRUE;

    return(TRUE);
}

BOOL UnConfigureAC97Control(void)
{
    if (!g_IsAC97Configured)
    {
        return(TRUE);
    }

    if (XllpAc97DeInit(&g_AC97CtxStruct) != XLLP_AC97_NO_ERROR)
    {
        return(FALSE);
    }

    g_IsAC97Configured = FALSE;

    return(TRUE);
}

BOOL GetAC97Lock(void)
{   

    if (WaitForSingleObject(hACLinkControlMutex, 3000) == WAIT_OBJECT_0)
    {
        return(TRUE);
    }
    else
    {
        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)
    {

        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)
    {

        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)
{

    if (XllpAc97ColdReset(&g_AC97CtxStruct) != XLLP_AC97_NO_ERROR)
    {
        return(FALSE);
    }

    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;
	}	
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕一区免费在线观看| 欧美电影影音先锋| 亚洲成a天堂v人片| 日韩三级伦理片妻子的秘密按摩| 国产一区二区不卡老阿姨| 亚洲视频 欧洲视频| 欧美精品日韩综合在线| 激情欧美一区二区| 国产亚洲美州欧州综合国| 日本久久一区二区| 精品写真视频在线观看 | 成人美女视频在线观看| 亚洲影视在线观看| 久久久国产精华| 欧美三级欧美一级| 激情五月播播久久久精品| 亚洲欧美视频在线观看| 亚洲精品在线观看网站| 在线观看视频一区二区欧美日韩| 国产精品99久久久久久宅男| 亚洲国产视频网站| 中文字幕免费一区| 欧美一区二区三区在线观看视频| 国产夫妻精品视频| 日韩一区欧美二区| 亚洲最大色网站| 国产精品久久久久四虎| 久久视频一区二区| 欧美精品日韩精品| 色婷婷综合久久久中文字幕| 国产99久久久久| 极品美女销魂一区二区三区 | 日韩影视精彩在线| 亚洲桃色在线一区| 国产精品视频免费看| 欧美一区二区三区性视频| 色偷偷成人一区二区三区91 | 国产精品国产精品国产专区不蜜| 日韩精品一区二区三区视频播放| 欧美无砖砖区免费| 色综合一个色综合亚洲| 粉嫩13p一区二区三区| 国产一区二区三区四区在线观看| 蜜桃一区二区三区四区| 青青草97国产精品免费观看 | 日本一区中文字幕| 天天色天天操综合| 亚洲一区二区三区在线| 中文字幕欧美日本乱码一线二线| 欧美xxx久久| 欧美电影免费观看高清完整版在线| 色综合色综合色综合色综合色综合 | 色天天综合久久久久综合片| 99久久精品免费看| 99久久国产综合色|国产精品| 国产成人av资源| 成人免费视频一区| 成人99免费视频| 成人激情视频网站| 99久久精品久久久久久清纯| www.av精品| 色综合久久精品| 亚洲欧美自拍偷拍色图| 欧美精品18+| 在线综合亚洲欧美在线视频| 日韩欧美国产三级电影视频| 国产欧美一区二区精品性色| 亚洲色图一区二区三区| 日韩精品一二三四| 国产白丝精品91爽爽久久| 在线观看亚洲精品| 精品国产制服丝袜高跟| 中文字幕在线观看一区| 午夜精品久久久久久久99樱桃| 国产精品88888| 成人黄色软件下载| 欧美日本在线播放| 久久精品视频在线免费观看| 一级特黄大欧美久久久| 久久国产精品99精品国产| 不卡电影一区二区三区| 5月丁香婷婷综合| 国产精品国产三级国产| 麻豆高清免费国产一区| 99re这里都是精品| 精品欧美一区二区久久| 亚洲日本免费电影| 精品一区二区三区免费毛片爱| 色综合天天综合在线视频| 日韩女优av电影在线观看| 亚洲精品一二三区| 国产一区二区福利| 欧美久久高跟鞋激| 成人免费在线播放视频| 久久丁香综合五月国产三级网站 | 成人va在线观看| 69成人精品免费视频| 自拍偷拍国产亚洲| 国产传媒日韩欧美成人| 日韩一区和二区| 夜夜爽夜夜爽精品视频| 成人性生交大合| 欧美本精品男人aⅴ天堂| 一区二区三区日本| 成人免费毛片a| www国产精品av| 日韩电影网1区2区| 91成人在线精品| 国产精品久久久久久久久动漫| 久久99日本精品| 欧美美女黄视频| 亚洲一区在线观看免费| 99精品黄色片免费大全| 国产日产欧美一区| 国产麻豆精品theporn| 日韩免费视频一区| 日韩中文字幕区一区有砖一区| 欧美制服丝袜第一页| 亚洲欧美在线视频| 波多野结衣中文字幕一区二区三区| 久久看人人爽人人| 国产精品一区二区视频| 精品美女在线播放| 久久精品国产亚洲高清剧情介绍 | ww久久中文字幕| 激情综合色丁香一区二区| 日韩视频123| 久久成人18免费观看| 欧美日韩国产综合一区二区| 亚洲成va人在线观看| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 亚洲摸摸操操av| 色嗨嗨av一区二区三区| 亚洲免费在线视频| 欧洲精品中文字幕| 亚洲国产乱码最新视频 | 日韩激情一二三区| 日韩午夜激情电影| 国产一区二区在线影院| 久久精品夜夜夜夜久久| 国产露脸91国语对白| 久久久99精品免费观看不卡| 波多野结衣中文字幕一区| 亚洲三级小视频| 欧日韩精品视频| 日韩国产成人精品| 亚洲精品一区二区精华| 国产一区二区三区免费| 国产婷婷一区二区| 91丨九色porny丨蝌蚪| 亚洲与欧洲av电影| 日韩视频中午一区| 国产在线精品一区二区不卡了| 久久精品一区四区| 99久久777色| 午夜视频久久久久久| 91精品欧美综合在线观看最新 | 91影院在线免费观看| 亚洲精品乱码久久久久久日本蜜臀| 欧美日韩一区不卡| 久久激情五月婷婷| 国产精品素人一区二区| 91精品1区2区| 久久精品国产**网站演员| 国产精品久久久久久久久久久免费看| 日本精品一级二级| 久久99在线观看| 亚洲美女免费在线| 欧美一卡二卡在线观看| 成人在线视频一区二区| 亚洲制服欧美中文字幕中文字幕| 日韩亚洲欧美综合| www.av精品| 免费国产亚洲视频| 亚洲视频精选在线| 日韩欧美一区中文| 91麻豆123| 精品一区免费av| 曰韩精品一区二区| 精品国产成人系列| 在线观看中文字幕不卡| 久久 天天综合| 亚洲国产日产av| 欧美国产综合色视频| 欧美一区二区私人影院日本| 本田岬高潮一区二区三区| 日韩国产高清影视| 亚洲欧美日韩在线不卡| 久久综合久久综合久久综合| 欧美视频一区二区在线观看| 精品在线一区二区| 亚洲一区二区不卡免费| 亚洲国产成人一区二区三区| 日韩丝袜美女视频| 欧美曰成人黄网| 91视频你懂的| 国产成人精品影院| 精品影视av免费| 日本成人在线电影网| 亚洲福中文字幕伊人影院|