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

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

?? xsac97ctrl.c

?? 嵌入式系統關于串口傳輸、觸摸屏、定時器、控制器、中斷處理、音頻控制等實驗代碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
* FUNCTION:         XsAc97CtrlLockAcLink
*
* DESCRIPTION:      Try to lock the AC Link for command/status accesses to a
*                   codec.
*
* INPUT PARAMETERS: None
*
* RETURNS:          TRUE if the attempt was successful; FALSE if not.
*
* GLOBAL EFFECTS:   If TRUE, the hardware indicator will show that the AC Link
*                   is locked until either a codec command or status I/O 
*                   operation has completed, or XsAc97CtrlReleaseAcLink 
*                   is called.
*
* ASSUMPTIONS:      
*
* CALLS:            
*
* CALLED BY:        
*
* PROTOTYPE:        BOOL XsAc97CtrlLockAcLink (void);
*
*******************************************************************************
*/

BOOL XsAc97CtrlLockAcLink (void)
{
    int status = TRUE;
    VUINT32 carTmp;

    carTmp = XsAc97CtrlRegsP->CAR;
    if (carTmp & XS_AC97CTRL_CAIP_MSK)  // "1" in CAIP bit means lock failed.
    {
        status = FALSE;
    }
    return (status);

} // XsAc97CtrlLockAcLink ()

/*
*******************************************************************************
*
* FUNCTION:         XsAc97CtrlReleaseAcLink
*
* DESCRIPTION:      Forced release of AC Link lock set by XsAc97CtrlLockAcLink
*
* INPUT PARAMETERS: None
*
* RETURNS:          None
*
* GLOBAL EFFECTS:   
*
* ASSUMPTIONS:      Only used if the link has been locked but SW does not
*                   initiate a command or status query I/O on the link.
*
* CALLS:            
*
* CALLED BY:        Probably never used.
*
* PROTOTYPE:        void XsAc97CtrlReleaseAcLink (void);
*
*******************************************************************************
*/

void XsAc97CtrlReleaseAcLink (void)
{
    XsAc97CtrlRegsP->CAR = XS_AC97CTRL_CAIP_MSK;
}


/*
*******************************************************************************
*
* FUNCTION:         XsAc97CtrlClearStatus 
*
* DESCRIPTION:      Clears the specified status indicator, if possible.  (Some
*                   are, by design, unclearable).  (Can't verify that the
*                   indication has cleared because the clearing mechanism
*                   is not always the same as the reporting mechanism.)
*
*                   Should not be used for status types that are currently in 
*                   use as interrupt triggers.
*
* INPUT PARAMETERS: XsAc97CtrlStatusIdT statusId: ID of indicator to clear
*
* RETURNS:          Success: 0 (ERR_NONE)
*                   Failure: ERR_T_ILLPARAM - Status indicator ID out of range
*
* GLOBAL EFFECTS:   1) Because the status indicator is cleared, it will not be 
*                       available to trigger an interrupt.
*                   2) If the specified status ID is invalid, an error is 
*                       logged in the error log and the context structure.
*
* ASSUMPTIONS:      - Assumes that interrupt protection exists when called.
*                   - We don't have to double-check the hardware by making sure
*                     that a clearable status actually cleared.
*
* CALLS:            
*
* CALLED BY:        
*
* PROTOTYPE:        UINT32 XsAc97CtrlGetStatus (XsAc97CtrlStatusIdT);
*
*******************************************************************************
*/


UINT32 XsAc97CtrlClearStatus (XsAc97CtrlStatusIdT statusId)
{
    UINT32                  status;
    XsAc97CtrlStatusEntryT* statusTableEntryP; 


    status = XsAc97CtrlRangeCheckStatusId (statusId);

    if (status)
    {
//        LOGERROR ( XsAc97CtrlContext.loggedError, 
  //          ERR_L_XSAC97CTRL,
    //        ERR_S_XSAC97CTRL_CLEAR_STATUS,
      //      status, 0, 0, 0)
    }
    else
    {
        statusTableEntryP = XsAc97CtrlStatusTable + statusId;

        // Clear the indication if it can be cleared
        // NULL clear register means it can't be cleared.
        if (statusTableEntryP->clearRegisterP)
        {   
            //  Write a shifted "1" to clear the status.  Don't "OR" it in.
            *statusTableEntryP->clearRegisterP = 
                1u << statusTableEntryP->clearBitShift;
        }
    }  // else (rangeCheckResult)

    return (status);

} // XsAc97CtrlClearStatus()




/*
*******************************************************************************
*
* FUNCTION:         XsAc97CtrlRangeCheckIntTypeId
*
* DESCRIPTION:      Report whether the interrupt type ID is valid.
*
* INPUT PARAMETERS: XsAc97CtrlIntIdT   intTypeId  - AC '97 interrupt type ID
*                                                   to range-check
*
* RETURNS:          Success: 0 (ERR_NONE)
*                   Failure: ERR_T_ILLPARAM  - Interrupt type ID out of range
*                            ERR_T_NOT_AVAIL - Interrupt type ID unsupported
*
* GLOBAL EFFECTS:   None
*
* ASSUMPTIONS:      None
*
* CALLS:            
*
* CALLED BY:        
*
* PROTOTYPE:        UINT32 XsAc97CtrlRangeCheckIntTypeId (XsAc97CtrlIntIdT);
*
*******************************************************************************
*/
UINT32 XsAc97CtrlRangeCheckIntTypeId (XsAc97CtrlIntIdT interruptTypeId)
{
    UINT32 status       = ERR_NONE;
    BOOL   isSupported;

    if ((interruptTypeId < 0 )|| (interruptTypeId > XS_AC97CTRL_INT_MAX))
    {
        status = ERR_T_ILLPARAM;
    }
    else
    {
        // Map interrupt type ID onto status IDs and get supported status
        isSupported = XsAc97CtrlStatusTable
            [ XsAc97CtrlIntToStatusTransTbl [ interruptTypeId ]]
            .intIsSupported;
        if (FALSE == isSupported)
        {
            status = ERR_T_NOT_AVAIL;
        }
    }
    return(status);

} // XsAc97CtrlRangeCheckIntTypeId ()

/*
*******************************************************************************
*
* FUNCTION:         XsAc97CtrlRangeCheckStatusId
*
* DESCRIPTION:      Report whether the status indicator ID is valid.
*
* INPUT PARAMETERS: XsAc97CtrlStatusIdT   statusIndicatorId  
*                                   - AC '97 status indicator ID to range-check
*
* RETURNS:          Success: 0 (ERR_NONE)
*                   Failure: ERR_T_ILLPARAM - Status indicator ID out of range
*
* GLOBAL EFFECTS:   None
*
* ASSUMPTIONS:      None
*
* CALLS:            
*
* CALLED BY:        
*
* PROTOTYPE:        UINT32 XsAc97CtrlRangeCheckStatusId (XsAc97CtrlStatusIdT);
*
*******************************************************************************
*/
UINT32 XsAc97CtrlRangeCheckStatusId (XsAc97CtrlStatusIdT statusIndicatorId)
{
    UINT32 status = ERR_NONE;
    if ((statusIndicatorId < 0 )|| (statusIndicatorId > XS_AC97CTRL_STAT_MAX))
    {
        status = ERR_T_ILLPARAM;
    }
    return(status);

} // XsAc97CtrlRangeCheckStatusId ()


/*
*******************************************************************************
*
* FUNCTION:         XsAc97CtrlSetStatusEntry
*
* DESCRIPTION:      Initialize one entry in the XsAc97CtrlStatusTable.
*                   Force to disabled, with no registered handler or param.
*                   All other entry values come from parameters.
*
* INPUT PARAMETERS: None
*
* RETURNS:          None
*
* GLOBAL EFFECTS:   None
*
* ASSUMPTIONS:      
*
* CALLS:            
*
* CALLED BY:        Only XsAc97CtrlSWInit
*
* PROTOTYPE:        void XsAc97CtrlSetStatusEntry ( XsAc97CtrlStatusEntryT*,
*                                                   INT,
*                                                   VUINT32*,
*                                                   INT,
*                                                   UINT32,
*                                                   INT,
*                                                   VUINT32*,
*                                                   INT);
*
*******************************************************************************
*/

// Helper function to initialize the entries in XsAc97CtrlStatusTable[].
// All entries are set to int disabled, with no registered handler or param.

static
void XsAc97CtrlSetStatusEntry ( XsAc97CtrlStatusEntryT* targetEntryP,
                                BOOL                    intIsSupported,
                                VUINT32*                enableRegisterP,
                                INT                     enableBitShift,
                                UINT32                  reportBitMaskGsr,
                                INT                     reportBitShiftGsr,
                                VUINT32*                clearRegisterP,
                                INT                     clearBitShift)
{
    targetEntryP->intIsSupported       = intIsSupported;
    targetEntryP->intIsEnabled         = FALSE;             // Forced
    targetEntryP->registeredParamP     = NULL;              // Forced
    targetEntryP->enableRegisterP      = enableRegisterP;
    targetEntryP->enableBitShift       = enableBitShift;
    targetEntryP->reportBitMaskGsr     = reportBitMaskGsr;
    targetEntryP->reportBitShiftGsr    = reportBitShiftGsr;
    targetEntryP->clearRegisterP       = clearRegisterP;
    targetEntryP->clearBitShift        = clearBitShift;

} // XsAc97CtrlSetStatusEntry()


UINT32 XsAc97CtrlGetStats (XsAc97CtrlCodecModemIdT targetCodec,
                                      XsAc97CtrlStatsT*       statsP)
{
    UINT32 status = ERR_NONE;

    if ((targetCodec < 0) || (targetCodec > XS_AC97CTRL_CM_ID_MAX))
    {
         status = ERR_T_ILLPARAM;
    }
    else
    {
        *statsP = XsAc97CtrlContext.statistics[targetCodec];
    }
    return(status);

} // XsAc97CtrlGetStats


UINT32 XsAc97CtrlClearStats (XsAc97CtrlCodecModemIdT targetCodec)
{
    UINT32 status = ERR_NONE;

    if ((targetCodec < 0) || (targetCodec > XS_AC97CTRL_CM_ID_MAX))
    {
         status = ERR_T_ILLPARAM;
    }
    else
    {
        memset (&XsAc97CtrlContext.statistics[targetCodec],
                0,
                sizeof (XsAc97CtrlContext.statistics[targetCodec]));
    }
    return(status);
    
} // XsAc97CtrlClearStats ()

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人av影院在线| 国产欧美日韩视频在线观看| 国产一区二区美女诱惑| 免费观看久久久4p| 天堂蜜桃91精品| 亚洲一区二区偷拍精品| 亚洲在线视频一区| 一区二区三区免费看视频| 18成人在线观看| 中文字幕在线观看一区二区| 中文字幕中文字幕中文字幕亚洲无线| 久久伊人中文字幕| 久久男人中文字幕资源站| 久久青草国产手机看片福利盒子| 亚洲精品在线电影| 国产欧美一区二区三区鸳鸯浴| 久久久久久麻豆| 中文乱码免费一区二区| 中文字幕一区二区不卡| 一区二区三区在线免费视频| 夜夜亚洲天天久久| 毛片一区二区三区| 麻豆精品视频在线观看免费 | 国产一区激情在线| 丁香婷婷综合五月| 欧美在线观看你懂的| 精品视频1区2区| 精品国产露脸精彩对白| 成人欧美一区二区三区小说 | 欧美一区午夜视频在线观看| 欧美视频在线播放| 欧美一区二区三区啪啪| 国产午夜精品一区二区| 亚洲男人的天堂在线aⅴ视频| 午夜欧美一区二区三区在线播放| 久久精品国产第一区二区三区| 懂色av中文一区二区三区| 欧美日韩国产综合视频在线观看| 欧美一区二区三区免费大片| 久久精品日韩一区二区三区| 一区二区三区丝袜| 麻豆精品一区二区三区| 色av成人天堂桃色av| 久久在线免费观看| 亚洲主播在线播放| 岛国精品在线播放| 欧美一区二区三区免费| 中文字幕一区二区三区在线不卡| 蜜臀av性久久久久av蜜臀妖精| 丁香天五香天堂综合| 欧美三级午夜理伦三级中视频| 欧美一二三区在线观看| 久久久精品免费免费| 一区二区三区精品视频| 国产综合久久久久久鬼色| 在线亚洲高清视频| 国产精品免费网站在线观看| 蜜臀久久99精品久久久久久9| 99re这里只有精品首页| 日本一区二区三区四区在线视频| 日韩电影在线观看电影| 在线免费观看日本一区| 久久久久久久综合狠狠综合| 蜜臂av日日欢夜夜爽一区| 成人av电影在线观看| 久久麻豆一区二区| 精东粉嫩av免费一区二区三区| 在线视频国内自拍亚洲视频| 中文字幕在线观看一区| 福利视频网站一区二区三区| 欧美大片在线观看| 久久99精品国产麻豆婷婷洗澡| 欧美色大人视频| 亚洲激情六月丁香| 在线观看欧美日本| 亚洲伦理在线精品| 91国模大尺度私拍在线视频| 国产精品不卡在线| 色哟哟在线观看一区二区三区| 成人欧美一区二区三区1314 | 国产精品免费看片| 国产成人综合在线观看| 欧美mv日韩mv国产| 国产综合久久久久久久久久久久| 欧美成人一区二区三区片免费| 美女视频黄频大全不卡视频在线播放| 欧美日韩在线播放三区| 日本大胆欧美人术艺术动态| 在线不卡欧美精品一区二区三区| 欧美精品在线观看一区二区| 日韩国产精品久久久久久亚洲| 精品免费视频一区二区| 国产福利电影一区二区三区| 中文字幕国产精品一区二区| 波多野洁衣一区| 亚洲午夜三级在线| 日韩欧美美女一区二区三区| 激情文学综合插| 日韩欧美不卡在线观看视频| 国产一区二区伦理片| 欧美午夜精品理论片a级按摩| 午夜欧美2019年伦理| 日韩一级高清毛片| 不卡的av电影在线观看| 一区二区三区四区中文字幕| 51精品国自产在线| 国产成人免费av在线| 精品视频一区三区九区| 青青草成人在线观看| 97se亚洲国产综合自在线观| 欧美激情一区二区三区全黄| 亚洲成人777| www.亚洲在线| 国产精品久久久久aaaa樱花| 欧美中文字幕一区二区三区亚洲 | 欧美大黄免费观看| 黄页视频在线91| 一区二区三区在线免费观看| 精品少妇一区二区三区| 成人av电影在线| 久久99精品国产麻豆不卡| 日本一区二区免费在线观看视频| 在线观看日韩国产| 国产老女人精品毛片久久| 亚洲一区二区三区四区五区中文| 欧美精品自拍偷拍| 国产精品1区2区3区在线观看| 亚洲国产欧美在线人成| 国产欧美在线观看一区| 在线不卡免费av| 99re8在线精品视频免费播放| 亚洲不卡在线观看| 国产网站一区二区| 欧美xingq一区二区| 欧美影视一区二区三区| 国产在线看一区| 午夜久久久久久| 一区二区三区自拍| 亚洲免费观看高清完整版在线观看 | 色婷婷激情综合| 国产精品911| 精品一区二区成人精品| 午夜精品一区二区三区免费视频| 最新成人av在线| 欧美国产一区二区| 久久久激情视频| 精品国产一区二区亚洲人成毛片| 欧美日韩国产另类不卡| eeuss国产一区二区三区| 懂色一区二区三区免费观看| 国产高清在线观看免费不卡| 韩国一区二区在线观看| 蜜桃视频免费观看一区| 日韩精品一区第一页| 日韩高清欧美激情| 一区二区三区国产精华| 国产精品久久久久7777按摩| 国产校园另类小说区| 久久网站最新地址| 精品久久一区二区三区| 日韩视频在线永久播放| 日韩欧美一二区| 精品sm在线观看| 久久精品无码一区二区三区| 日韩欧美一级精品久久| 亚洲精品一区二区三区精华液 | 午夜免费久久看| 午夜伦欧美伦电影理论片| 日本sm残虐另类| 狠狠色伊人亚洲综合成人| 成人在线综合网| 色婷婷国产精品| 欧美日韩国产精选| 欧美区一区二区三区| 精品久久国产97色综合| 欧美国产日韩在线观看| 亚洲青青青在线视频| 偷拍亚洲欧洲综合| 国产精品一区专区| 成人深夜福利app| 在线观看亚洲专区| 精品88久久久久88久久久| 国产欧美日韩一区二区三区在线观看| 国产欧美一区二区精品久导航| 国产欧美日韩中文久久| 午夜久久久久久| 国产精品自在在线| 欧美亚洲免费在线一区| 精品sm在线观看| 亚洲精品视频自拍| 另类人妖一区二区av| 91福利视频在线| 精品日韩在线观看| 亚洲欧美激情插| 国模娜娜一区二区三区| 99国产精品视频免费观看| 欧美一区二区三区视频在线观看| 国产人伦精品一区二区| 男女男精品视频| 91日韩精品一区|