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

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

?? vportdis.c

?? 使用DM642 來進行scaling 有說明檔
?? C
?? 第 1 頁 / 共 4 頁
字號:
            EDMA_enableChannel(chan->hEdma[1]);
            EDMA_disableChannel(chan->hEdma[2]);
            EDMA_clearChannel(chan->hEdma[2]);
            EDMA_enableChannel(chan->hEdma[2]);
        }   
          
        /*
         * The EDMA interrupt dispatcher will be called by the
         * BIOS HWI interrupt dispatcher.
         */
        IRQ_map(IRQ_EVT_EDMAINT, params->irqId);
        HWI_dispatchPlug(params->irqId, (Fxn)EDMA_intDispatcher, -1, NULL);


        EDMA_disableChannel(chan->hEdma[0]);
        EDMA_clearChannel(chan->hEdma[0]);
        EDMA_enableChannel(chan->hEdma[0]);

        EDMA_intClear(chan->tcc[0]);
        EDMA_intEnable(chan->tcc[0]);
        EDMA_intHook(chan->tcc[0], displayEdmaISR);     
        
        EDMA_intClear(chan->tcc[1]);
        EDMA_intEnable(chan->tcc[1]);
        EDMA_intHook(chan->tcc[1], displayEdmaISR);     
        

        chan->status |= _VPORT_READY;
        IRQ_enable(IRQ_EVT_EDMAINT);
    }   
    return IOM_COMPLETED;

}


/*
 *  ======== _configPort ========
 */
static Int _configPort(Ptr chanp, Ptr args)
{
    _VPORT_ChanObj* chan = (_VPORT_ChanObj *)chanp;
    VPORT_PortParams* portParams = (VPORT_PortParams*)args; 
    volatile Int* base = (volatile Int *)chan->base;  


    /* reset video port */
    base[_VP_VPCTL_OFFSET] = 
         VP_VPCTL_VPRST_RESET << _VP_VPCTL_VPRST_SHIFT;

    /* enable video port */
    base[_VP_PCR_OFFSET] |= 
         VP_PCR_PEREN_ENABLE << _VP_PCR_PEREN_SHIFT;
            
    base[_VP_VDCTL_OFFSET] = 
         (Int)VP_VDCTL_RSTCH_RESET << _VP_VDCTL_RSTCH_SHIFT;
    

    /* configure video port control register */
    base[_VP_VPCTL_OFFSET] = VP_VPCTL_RMK(0,0,1,portParams->vc3Polarity,
        portParams->vc2Polarity,portParams->vc1Polarity,0,1,0);

    /* enable video port */
    base[_VP_VPCTL_OFFSET] |= (VP_VPCTL_VPHLT_CLEAR << _VP_VPCTL_VPHLT_SHIFT);
    chan->edcFxns = portParams->edcTbl[0];
    return IOM_COMPLETED;
}
                     

/*
 *  ======== _configRegs ========
 * configure video port registers for display 
 */
static  Int _configRegs(Ptr chanp, VPORTDIS_Params* params)
{
    _VPORT_ChanObj* chan = (_VPORT_ChanObj *)chanp;
    volatile Int* base = (volatile Int *)chan->base;                          
    Int numPixels, numLines, numCPixels;
    Int vdCtl;
    Int nh1 = 0, nh2 = 0, nv1 = 0, nv2 = 0;    
    
    
    if(chan->status & _VPORT_OPENED) {
        /* configure display settings  */
        chan->status |= _VPORT_CFGED;
        vdCtl = VP_VDCTL_RMK(0,1,0,((params->extCtl&4) >> 2),
            ((params->extCtl&2)>>1), params->extCtl&1,params->vctl3Config,
            params->vctl2Config,params->vctl1Config,0, params->bpk10Bit,
            params->rgbX,0,params->defValEn,params->resmpl,
            params->scale, 1,((params->fldOp & 4) >> 2),
            ((params->fldOp & 2) >> 1), 
            (params->fldOp & 1), 
            params->dmode);

        numLines = 0;
        numPixels = 0;
        if(params->fldOp != VPORT_FLDOP_FLD2){
            // progressive scan, or field 1 or frame
            numPixels = params->imgHSizeFld1;
            numLines = params->imgVSizeFld1;
        } 
        chan->numLinesFld1 = numLines;
        if(params->fldOp == VPORT_FLDOP_FLD2 || 
           params->fldOp == VPORT_FLDOP_FRAME){
            if(!numPixels) numPixels = params->imgHSizeFld2;
            numLines += params->imgVSizeFld2;
            chan->interlaced = TRUE;
        }
        chan->numLines = numLines;
        chan->frmSz = params->frmVSize;

        base[_VP_VDCTL_OFFSET] = vdCtl;

        base[_VP_VDFRMSZ_OFFSET]   = 
            VP_VDFRMSZ_RMK(params->frmVSize, params->frmHSize);
        base[_VP_VDHBLNK_OFFSET]   = 
            VP_VDHBLNK_RMK(params->hBlnkStop, !(params->dmode&_VPORT_MASK_RAW), 
            params->hBlnkStart);
        
        base[_VP_VDVBLKS1_OFFSET]  = 
            VP_VDVBLKS1_RMK(params->vBlnkYStartFld1, params->vBlnkXStartFld1);
        base[_VP_VDVBLKE1_OFFSET]  = 
            VP_VDVBLKE1_RMK(params->vBlnkYStopFld1, params->vBlnkXStopFld1);
        base[_VP_VDVBLKS2_OFFSET]  = 
            VP_VDVBLKS2_RMK(params->vBlnkYStartFld2, params->vBlnkXStartFld2);
        base[_VP_VDVBLKE2_OFFSET]  = 
            VP_VDVBLKE2_RMK(params->vBlnkYStopFld2, params->vBlnkXStopFld2);

        base[_VP_VDVBIT1_OFFSET]   = 
            VP_VDVBIT1_RMK(params->vBlnkYStopFld1, params->vBlnkYStartFld1);
        base[_VP_VDVBIT2_OFFSET] = 
            VP_VDVBIT1_RMK(params->vBlnkYStopFld2, params->vBlnkYStartFld2);
        
        if(params->imgHOffsetFld1<0) {
            nh1 = 1;
            params->imgHOffsetFld1 = -params->imgHOffsetFld1;
        }
        if(params->imgHOffsetFld2<0) {
            nh2 = 1;
            params->imgHOffsetFld2 = -params->imgHOffsetFld2;
        }
        if(params->imgVOffsetFld1<0) {
            nv1 = 1;
            params->imgVOffsetFld1 = -params->imgVOffsetFld1;
        }
        if(params->imgHOffsetFld2<0) {
            nv2 = 1;
            params->imgVOffsetFld2 = -params->imgVOffsetFld2;
        }
        
        base[_VP_VDIMGOFF1_OFFSET] = 
            VP_VDIMGOFF1_RMK(nv1, params->imgVOffsetFld1, nh1, 
            params->imgHOffsetFld1);
        base[_VP_VDIMGSZ1_OFFSET]  = 
            VP_VDIMGSZ1_RMK(params->imgVSizeFld1, params->imgHSizeFld1);
        base[_VP_VDIMGOFF2_OFFSET] = 
            VP_VDIMGOFF2_RMK(nv2, params->imgVOffsetFld2, nh2, 
            params->imgHOffsetFld2);
        base[_VP_VDIMGSZ2_OFFSET]  = 
            VP_VDIMGSZ2_RMK(params->imgVSizeFld2, params->imgHSizeFld2);

        base[_VP_VDFLDT1_OFFSET]   = 
            VP_VDFLDT1_RMK(params->yStartFld1, params->xStartFld1);  
        base[_VP_VDFLDT2_OFFSET]   = 
            VP_VDFLDT2_RMK(params->yStartFld2, params->xStartFld2); 
        base[_VP_VDFBIT_OFFSET]   = 
            VP_VDFBIT_RMK(params->yStartFld2, params->yStartFld1);
        
        base[_VP_VDHSYNC_OFFSET]   = 
            VP_VDHSYNC_RMK(params->hSyncStop, params->hSyncStart);
        base[_VP_VDVSYNS1_OFFSET]  = 
            VP_VDVSYNS1_RMK(params->vSyncYStartFld1, params->vSyncXStartFld1);
        base[_VP_VDVSYNE1_OFFSET]  = 
            VP_VDVSYNE1_RMK(params->vSyncYStopFld1, params->vSyncXStopFld1);  
        base[_VP_VDVSYNS2_OFFSET]  = 
            VP_VDVSYNS2_RMK(params->vSyncYStartFld2, params->vSyncXStartFld2);
        base[_VP_VDVSYNE2_OFFSET]  = 
            VP_VDVSYNE2_RMK(params->vSyncYStopFld2, params->vSyncXStopFld2);  

        base[_VP_VDCLIP_OFFSET]    = 
            VP_VDCLIP_RMK(params->cClipHigh, params->cClipLow,
            params->yClipHigh, params->yClipLow);
        base[_VP_VDDEFVAL_OFFSET]  = params->yDefVal |
           (params->cbDefVal << 16) | (params->crDefVal << 24);
        
        chan->resmpl = params->resmpl;
        chan->scale = params->scale;
        numPixels >>= params->scale;
        chan->numPixels = numPixels;
        numCPixels = (params->dmode & _VPORT_MASK_RAW) ? 0 : numPixels >> 1;
        
        if(params->dmode & _VPORT_MASK_RAW) { /* raw mode */
            chan->cPitch = 0;
            if(params->dmode == VPORT_MODE_RAW_8BIT) {
                chan->yPitch = (numPixels + 7) & (~ 7);
                chan->cPitch = (numCPixels + 7) & (~ 7);
            } else if(params->dmode == VPORT_MODE_RAW_10BIT) {
                if(params->bpk10Bit == VPORTDIS_BPK_10BIT_DENSE){
                    chan->yPitch = (numPixels * 4 / 3 + 7) & (~ 7);
                }else {
                    chan->yPitch = (numPixels * 2 + 7) & (~ 7);
                }
            } else if(params->dmode == VPORT_MODE_RAW_16BIT) {
                chan->yPitch = (numPixels * 2 + 7) & (~ 7);
            } else {
                chan->yPitch = (numPixels * 4 + 7) & (~ 7);
            }                                                                        
        } else {
            if(params->dmode & _VPORT_MASK_10BIT) {
                if(params->bpk10Bit == VPORTDIS_BPK_10BIT_DENSE){
                    chan->yPitch = (numPixels * 4 / 3 + 7) & (~ 7);
                    chan->cPitch = (numCPixels* 4 / 3 + 7) & (~ 7);
                }else {
                    chan->yPitch = (numPixels * 2 + 7) & (~ 7);
                    chan->cPitch = (numCPixels * 2 + 7) & (~ 7);
                }
            } else {/* 8 bit mode */
                chan->yPitch = (numPixels + 7) & (~ 7);
                chan->cPitch = (numCPixels + 7) & (~ 7);
            }
        }
        chan->yThrld = params->thrld;       
        if(params->mergeFlds && params->fldOp == VPORT_FLDOP_FRAME) {
            /* frame capture and merge 2 fields into one frame */
            /* make sure threshold is same as line size */
            chan->yThrld = chan->yPitch >> 3;
            chan->numEventsFld1 = chan->numLinesFld1;
            chan->numEvents = chan->numLines;
            chan->mergeFlds = TRUE;  
        }else {            
            /* these two asserts make sure that total transfer sizes of */
            /* both the whole frame and the first field are multiples   */
            /* of the threshold                                         */
            assert(((chan->yPitch*chan->numLinesFld1)/(chan->yThrld << 3)) 
                *(chan->yThrld << 3) == (chan->yPitch*chan->numLinesFld1));
            assert(((chan->yPitch*chan->numLines)/(chan->yThrld << 3)) 
                *(chan->yThrld << 3) == (chan->yPitch*chan->numLines));
            chan->numEventsFld1 = 
                chan->yPitch * chan->numLinesFld1 / (chan->yThrld << 3);
            chan->numEvents = 
                chan->yPitch * chan->numLines / (chan->yThrld << 3);
            chan->mergeFlds = FALSE;
        }                    
        if(params->dmode & _VPORT_MASK_RAW) {
            chan->cThrld = 0;
        }    
        else {
            chan->cThrld = (chan->yThrld + 1) >> 1;
        }    
        base[_VP_VDTHRLD_OFFSET] = 
            VP_VDTHRLD_RMK(chan->yThrld,params->incPix,chan->yThrld);
        base[_VP_VDDISPEVT_OFFSET] = 
            VP_VDDISPEVT_RMK((chan->numEvents-chan->numEventsFld1), 
            chan->numEventsFld1 );  

        
        chan->mode = params->dmode;
        chan->status |= _VPORT_CFGED;
    }
    return IOM_COMPLETED;

}


/*
 *  ======== displayEdmaISR ========
 */      
int frmCnt = 0;
static void displayEdmaISR(tcc) 
{
    Int i;
    FVID_Frame *viop, *curViop;      
    Int offset;
    
    
    /* find out the source of the edma interrupt */
    for(i = 0; i < _VP_PORT_CNT; i ++) {      
        _VPORT_ChanObj* chan = &chanObjs[i];
        if((chan->status & _VPORT_READY) && 
          (tcc == chan->tcc[0] || tcc == chan->tcc[1])){

/*****************************************************************************/
// AVSync changes (Tim Simerly) Feb. 8th, 2004
/*****************************************************************************/
//	VideoAVSyncISR();
            /* re-sync tcc with activeEDMARlds */
            /* they may be out of sync after interrupt over-run */
            /* e.g. execution is halted at break-point */
            frmCnt ++;
            chan->nextEDMARlds = (tcc == chan->tcc[0]) ? 0 : 1;
            offset = chan->nextEDMARlds << 1;
            /* update the current and next viop pointers */
            curViop = chan->curViop;
            chan->curViop = chan->nextViop;
            chan->startFlag = 1;
            
            if(!chan->asyncModeEnable) {
                if((viop = (FVID_Frame *)QUE_dequeue(&chan->qIn))
                    != (FVID_Frame *)&chan->qIn) {
                    /* queue IS not empty */
                    chan->nextViop = viop;
                }else {
                    chan->queEmpty = TRUE;
                }
            }

            /* Update the EDMA reload entry  */
            if(chan->mergeFlds){
                EDMA_RSETH(chan->hRld[offset], SRC, 
                    chan->nextViop->frame.iFrm.y1);
                EDMA_RSETH(chan->hRld[offset + 1], SRC, 
                    chan->nextViop->frame.iFrm.y2);
                if(!(chan->mode & _VPORT_MASK_RAW)){
                    EDMA_RSETH(chan->hRld[4 + offset], SRC, 
                        chan->nextViop->frame.iFrm.cb1);     
                    EDMA_RSETH(chan->hRld[5 + offset], SRC, 
                        chan->nextViop->frame.iFrm.cb2);                         
                    EDMA_RSETH(chan->hRld[8 + offset], SRC, 
                        chan->nextViop->frame.iFrm.cr1);     
                    EDMA_RSETH(chan->hRld[9 + offset], SRC, 
                        chan->nextViop->frame.iFrm.cr2);                         
                }
            } else {
                EDMA_RSETH(chan->hRld[offset], SRC, 
                    chan->nextViop->frame.iFrm.y1);
                if(! (chan->mode & _VPORT_MASK_RAW)){
                    EDMA_RSETH(chan->hRld[offset + 4], SRC, 
                        chan->nextViop->frame.iFrm.cb1);
                    EDMA_RSETH(chan->hRld[offset + 8], SRC, 
                        chan->nextViop->frame.iFrm.cr1);
                }
            }/* if(chan->mergeFlds) {*/
            
            if(curViop != chan->curViop) {
                if(chan->packetIOM != INV) {
                    /* call the channel's callback function */
                    *(void **)chan->packetIOM->addr = curViop;             
                    chan->packetIOM->size = sizeof(FVID_Frame);  
                    chan->packetIOM->status = IOM_COMPLETED;                    
                    chan->cbFxn((Ptr)chan->cbArg, chan->packetIOM);  
                    chan->packetIOM = INV;
                }else {
                    QUE_enqueue(&chan->qOut,curViop);
                }
            }/*if(curViop != chan->curViop) {*/  
        }/*if((chan->status & READY) && tcc == chan->tcc){*/
    } /*for(i = 0; i <_VP_PORT_CNT; i++) {  */
}


/*
 *  ======== displayISR ========
 */
static void displayISR(int portNum)
{
    volatile Int *base =  
        (volatile Int *)chanObjs[portNum].base;
    Int vpis = base[_VP_VPIS_OFFSET];
    Int mask = vpis & chanObjs[portNum].vIntMask;
        

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成a人片在线不卡一二三区| 精品亚洲免费视频| 美女一区二区久久| 一本色道综合亚洲| 欧美mv和日韩mv国产网站| 一区二区在线观看视频在线观看| 韩国av一区二区三区在线观看| 91麻豆国产福利精品| 久久男人中文字幕资源站| 亚洲午夜在线电影| 9人人澡人人爽人人精品| 欧美电视剧免费全集观看| 亚洲精品老司机| 成人激情综合网站| 久久久久久久综合日本| 秋霞午夜av一区二区三区| 在线观看视频91| 亚洲女与黑人做爰| 97se亚洲国产综合在线| 婷婷国产v国产偷v亚洲高清| 色狠狠桃花综合| 一区二区三区资源| 色综合天天做天天爱| 国产精品久久久久7777按摩| 成人激情开心网| 国产欧美日韩久久| 国产精品亚洲综合一区在线观看| 26uuu另类欧美亚洲曰本| 久久国产成人午夜av影院| 日韩一区二区在线观看| 男女男精品视频网| 欧美日韩aaaaaa| 五月婷婷激情综合| 欧美一区二区三区在线视频| 奇米色777欧美一区二区| 日韩免费高清视频| 国产真实乱子伦精品视频| 久久亚洲欧美国产精品乐播| 国产一区二区成人久久免费影院| 日韩精品中文字幕在线不卡尤物| 久久99蜜桃精品| 久久久欧美精品sm网站 | 日韩一区二区精品葵司在线| 七七婷婷婷婷精品国产| 久久一区二区三区四区| 国产激情视频一区二区三区欧美| 国产精品美女久久久久高潮| 91小宝寻花一区二区三区| 亚洲精品成a人| 欧美日韩免费一区二区三区视频| 视频一区在线播放| 精品国产91九色蝌蚪| 成人综合婷婷国产精品久久免费| 中文字幕视频一区| 欧美日韩亚州综合| 国产在线播放一区三区四| 国产精品日日摸夜夜摸av| 欧美色国产精品| 精品夜夜嗨av一区二区三区| 国产精品国产成人国产三级| 欧美人牲a欧美精品| 国产一区不卡精品| 亚洲香蕉伊在人在线观| 日韩欧美成人激情| caoporm超碰国产精品| 亚洲第一激情av| 欧美mv日韩mv亚洲| 欧洲生活片亚洲生活在线观看| 蜜臀av一区二区在线免费观看| 中文一区一区三区高中清不卡| 欧美在线不卡视频| 国产精品资源站在线| 亚洲最色的网站| 2023国产精华国产精品| 在线观看成人免费视频| 国产精品影音先锋| 午夜免费欧美电影| 国产精品对白交换视频| 欧美一区二区在线免费播放| av亚洲精华国产精华| 裸体一区二区三区| 亚洲精品国产视频| 久久久精品中文字幕麻豆发布| 欧美日韩电影在线播放| 日韩一区二区中文字幕| 色av成人天堂桃色av| 大胆亚洲人体视频| 久久99热狠狠色一区二区| 亚洲成人黄色小说| 中文字幕在线观看一区二区| 久久免费精品国产久精品久久久久| 欧美在线视频你懂得| 91一区在线观看| 高清国产午夜精品久久久久久| 奇米一区二区三区| 亚洲h精品动漫在线观看| 亚洲色图一区二区三区| 国产日韩影视精品| 久久综合九色综合97婷婷| 欧美一卡二卡在线观看| 欧美精品九九99久久| 精品视频一区二区三区免费| 91亚洲永久精品| 99久久国产综合精品女不卡| 成人av免费观看| 高清不卡一区二区在线| 国产成人精品亚洲午夜麻豆| 极品美女销魂一区二区三区| 轻轻草成人在线| 日韩中文字幕av电影| 亚洲va韩国va欧美va精品| 一区二区三区欧美亚洲| 亚洲国产sm捆绑调教视频 | 色琪琪一区二区三区亚洲区| 94-欧美-setu| 91色porny| 91久久线看在观草草青青| 日本高清不卡一区| 91久久精品一区二区三区| 一本久久精品一区二区| 欧洲一区二区av| 51久久夜色精品国产麻豆| 欧美第一区第二区| 国产欧美日韩综合| 中文字幕一区二区三区四区不卡 | 777精品伊人久久久久大香线蕉| 欧洲精品在线观看| 91精品国产一区二区三区蜜臀 | 国产一区二区三区免费看| 国产精品一线二线三线精华| 成人看片黄a免费看在线| 色综合亚洲欧洲| 欧美精品在线一区二区三区| 精品女同一区二区| 欧美国产精品一区二区三区| 亚洲视频一区在线观看| 亚洲成a人片综合在线| 激情综合色丁香一区二区| 国产不卡免费视频| 色婷婷一区二区三区四区| 欧美区视频在线观看| 欧美精品一区二区精品网| 国产精品久久久99| 日韩高清不卡一区二区| 成人的网站免费观看| 亚洲丝袜美腿综合| 午夜精品久久久久久久99水蜜桃| 美腿丝袜亚洲一区| 97久久人人超碰| 日韩精品在线一区| 中文字幕一区二区不卡| 免费在线观看不卡| 99视频在线精品| 91精品国产综合久久蜜臀| 亚洲国产精品v| 日韩国产精品大片| 91伊人久久大香线蕉| 精品成人佐山爱一区二区| 亚洲人成网站影音先锋播放| 黄色日韩三级电影| 欧美日本国产视频| 国产欧美日韩激情| 久久精品国内一区二区三区| 色婷婷av一区二区三区gif| 久久久精品免费观看| 三级欧美在线一区| 91亚洲精华国产精华精华液| 欧美精品一区二区蜜臀亚洲| 亚洲图片欧美综合| 成a人片亚洲日本久久| 欧美电视剧在线看免费| 天天操天天综合网| 97久久精品人人做人人爽| 欧美成人官网二区| 午夜激情综合网| 色国产综合视频| 一区在线中文字幕| 国产成人免费视频一区| 日韩一级二级三级| 丝袜脚交一区二区| 欧美亚州韩日在线看免费版国语版| 国产丝袜欧美中文另类| 久草热8精品视频在线观看| 欧美日韩国产区一| 亚洲成人动漫在线观看| 日本精品裸体写真集在线观看| 中文幕一区二区三区久久蜜桃| 国产一区二区三区日韩| 精品国产伦一区二区三区观看方式| 日产国产高清一区二区三区| 欧美另类高清zo欧美| 亚洲国产人成综合网站| 在线视频你懂得一区| 一区二区三区国产豹纹内裤在线| 91丨九色丨尤物| 亚洲免费观看在线观看| 色综合天天综合| 一区二区三区精密机械公司| 91福利国产精品| 亚洲成人中文在线|