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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? xsac97ctrl.c

?? 嵌入式系統(tǒng)關(guān)于串口傳輸、觸摸屏、定時器、控制器、中斷處理、音頻控制等實驗代碼
?? 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 ()

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久99精品一区| 欧美三级乱人伦电影| 日韩精品一区二区三区中文不卡| 午夜精品福利在线| 欧美日韩一区二区三区视频| 天天av天天翘天天综合网色鬼国产| 欧美中文一区二区三区| 亚洲午夜电影在线观看| 欧美一区二区福利视频| 国模一区二区三区白浆 | 色综合天天综合网国产成人综合天| 国产亚洲一本大道中文在线| 韩国av一区二区三区四区| 久久久青草青青国产亚洲免观| 国产馆精品极品| 国产精品女同一区二区三区| 欧洲人成人精品| 男人的j进女人的j一区| 欧美激情在线一区二区| 欧美影视一区二区三区| 日韩高清一级片| 欧美国产激情二区三区| 91国偷自产一区二区三区观看 | 久久这里只有精品6| 成人v精品蜜桃久久一区| 一区二区三区日本| 欧美大尺度电影在线| 成人avav在线| 日本特黄久久久高潮| 欧美国产亚洲另类动漫| 日本电影欧美片| 久久成人精品无人区| 亚洲色图在线看| 91精品国产福利| k8久久久一区二区三区 | 国产精品久久久久久久久久久免费看| 91天堂素人约啪| 久久国产夜色精品鲁鲁99| 亚洲欧洲国产日韩| 精品国产91亚洲一区二区三区婷婷| 99麻豆久久久国产精品免费优播| 亚洲国产va精品久久久不卡综合 | 经典一区二区三区| 综合色中文字幕| 精品国产免费久久| 欧美在线观看你懂的| 国产成人精品亚洲777人妖| 亚洲国产精品麻豆| 国产精品视频免费看| 日韩三级视频中文字幕| 99精品久久久久久| 黄色日韩三级电影| 亚洲图片欧美色图| 中文字幕中文字幕在线一区| 日韩欧美在线一区二区三区| 91啦中文在线观看| 国产成人亚洲综合a∨婷婷| 视频一区视频二区中文字幕| 国产精品福利一区二区| 亚洲精品一区二区精华| 91精品国产色综合久久不卡电影| www.日韩在线| 国产精品一区免费在线观看| 日韩av电影天堂| 亚洲丰满少妇videoshd| 亚洲婷婷综合久久一本伊一区| 精品福利一区二区三区免费视频| 欧美日韩一区视频| 日本高清免费不卡视频| 成人中文字幕电影| 国产精品小仙女| 国产在线精品视频| 蜜桃av噜噜一区二区三区小说| 亚洲午夜久久久久久久久电影院| 日韩美女啊v在线免费观看| 中文av字幕一区| 国产欧美一区视频| 久久精品亚洲麻豆av一区二区 | 亚洲国产综合在线| 亚洲自拍都市欧美小说| 一区二区三区精品在线观看| 亚洲免费观看高清完整| 亚洲欧美激情插| 一区二区三区在线免费观看| 亚洲激情男女视频| 亚洲一区二区在线播放相泽| 中文字幕亚洲一区二区va在线| 国产精品少妇自拍| 国产精品福利av| 一区二区三区小说| 亚洲综合一二区| 日韩福利电影在线| 精品一区二区三区免费观看| 精品写真视频在线观看| 粉嫩绯色av一区二区在线观看| 国产精品乡下勾搭老头1| 东方aⅴ免费观看久久av| 成人中文字幕合集| 91丝袜呻吟高潮美腿白嫩在线观看| 91美女福利视频| 在线观看欧美黄色| 欧美丰满美乳xxx高潮www| 91精品国产综合久久久久久久| 91精品国产色综合久久不卡蜜臀| 久久亚洲捆绑美女| 日韩一区日韩二区| 亚洲成在线观看| 久久综合综合久久综合| 国产成人午夜视频| 欧美在线观看你懂的| 欧美成人vr18sexvr| 国产欧美日本一区视频| 亚洲激情在线播放| 久久国产精品无码网站| 成人18视频日本| 欧美日韩国产影片| 久久先锋影音av鲁色资源网| 综合电影一区二区三区| 日韩激情视频在线观看| 国产一区二区三区黄视频 | 亚洲成人中文在线| 精品一区二区三区视频| 成人午夜激情视频| 欧美日韩精品欧美日韩精品一综合| 日韩欧美一区中文| 国产精品国产三级国产| 毛片av一区二区| 色综合久久中文综合久久牛| 日韩欧美123| 国产精品国产三级国产三级人妇| 婷婷中文字幕综合| 国产在线国偷精品免费看| 欧洲一区二区三区在线| 久久久久久久久一| 三级成人在线视频| 成人午夜精品一区二区三区| 欧美一二区视频| 亚洲欧美精品午睡沙发| 国产精品1024| 91精品国产一区二区| 亚洲女与黑人做爰| 国产乱人伦偷精品视频不卡| 欧美日韩精品一区二区天天拍小说| 中文字幕免费一区| 美日韩黄色大片| 欧美日韩三级一区| 日韩一区在线看| 国产精品夜夜爽| 日韩欧美国产一二三区| 亚洲在线免费播放| www.亚洲激情.com| 欧美国产日韩精品免费观看| 日本aⅴ亚洲精品中文乱码| 欧美在线观看视频在线| 中文字幕中文字幕一区二区 | www.亚洲色图| 国产午夜精品一区二区| 奇米精品一区二区三区在线观看 | 韩国精品久久久| 91麻豆精品国产91久久久资源速度| 亚洲色图欧美在线| 成人免费高清视频| 久久久国产精华| 国产精品综合网| 久久亚洲捆绑美女| 国产精品99久久久久久似苏梦涵| 欧美一级专区免费大片| 五月天视频一区| 91精品久久久久久蜜臀| 日韩综合小视频| 欧美日韩一区二区欧美激情 | 日韩精品一区二区三区视频在线观看| 亚洲一区在线看| 欧美色图免费看| 日韩制服丝袜av| 日韩亚洲欧美高清| 精品午夜一区二区三区在线观看| 欧美成人精精品一区二区频| 久久福利视频一区二区| 欧美不卡一二三| 精品午夜久久福利影院 | 99精品视频在线观看| 亚洲三级在线观看| 欧美中文字幕亚洲一区二区va在线 | 久久久国产一区二区三区四区小说| 久久精品二区亚洲w码| 精品国产一区a| 丁香婷婷综合激情五月色| 国产精品情趣视频| 色婷婷av一区| 丝袜脚交一区二区| 亚洲精品在线免费播放| 国产福利精品导航| 亚洲欧美日韩成人高清在线一区| 色综合天天综合给合国产| 亚洲高清免费在线| 精品久久五月天| 99久久99久久免费精品蜜臀| 午夜免费欧美电影| 久久久久国产精品麻豆ai换脸 |