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

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

?? vportdis.c

?? DSP DM642 視頻端口顯示驅動程序
?? C
?? 第 1 頁 / 共 3 頁
字號:
    Int8* curAddr;
    
    if(chan->status & _VPORT_CFGED) {
        assert(params->numFrmBufs  >= 2 
            && params->numFrmBufs <= VPORT_MAX_NUM_FRMBUFS);
        chan->numFrms = params->numFrmBufs;

        chan->segId = params->segId;

        /* allocate frame buffers */
        chan->bufSz = chan->yPitch * chan->numLines 
              + chan->cPitch * chan->numLines * 2;
        for(i = 0; i < chan->numFrms; i ++) {  
            if((curAddr = MEM_calloc(params->segId,chan->bufSz, 
                params->alignment)) == MEM_ILLEGAL){
                int j;               
                for(j = 0; j < i ; j ++) {
                    MEM_free(params->segId, chan->viops[j].frame.iFrm.y1, 
                        chan->bufSz);
                }
                /* memory allocation fails */
                return IOM_EALLOC;
            }    
            /* field 1 */
            chan->viops[i].frame.iFrm.y1 = curAddr;
            curAddr += chan->numLines*chan->yPitch;
            chan->viops[i].frame.iFrm.cb1 = curAddr;
            curAddr += chan->numLines*chan->cPitch;
            chan->viops[i].frame.iFrm.cr1 = curAddr;
            curAddr += chan->numLines*chan->cPitch;

            /* field 2 */
            if(params->fldOp == VPORT_FLDOP_FLD2) {
                chan->viops[i].frame.iFrm.y2 = chan->viops[i].frame.iFrm.y1;
                chan->viops[i].frame.iFrm.cb2 = chan->viops[i].frame.iFrm.cb1;
                chan->viops[i].frame.iFrm.cr2 = chan->viops[i].frame.iFrm.cr1;
            } else if(chan->mergeFlds) {
                chan->viops[i].frame.iFrm.y2 = chan->viops[i].frame.iFrm.y1
                    + chan->yPitch;
                chan->viops[i].frame.iFrm.cb2 = chan->viops[i].frame.iFrm.cb1
                    + chan->cPitch;
                chan->viops[i].frame.iFrm.cr2 = chan->viops[i].frame.iFrm.cr1
                    + chan->cPitch;
            }else {
                chan->viops[i].frame.iFrm.y2 = chan->viops[i].frame.iFrm.y1
                    + (chan->numLinesFld1*chan->yPitch);
                chan->viops[i].frame.iFrm.cb2 = chan->viops[i].frame.iFrm.cb1
                    + (chan->numLinesFld1*chan->cPitch);
                chan->viops[i].frame.iFrm.cr2 = chan->viops[i].frame.iFrm.cr1
                    + (chan->numLinesFld1*chan->cPitch);            
            }    
            if(i > 1) {
                /* don't put the first 1 viop into the queue */
                QUE_enqueue(&chan->qOut, (QUE_Handle)&chan->viops[i]);
            }
        }
        chan->nextViop = &chan->viops[1];
         chan->curViop = &chan->viops[0];
    

        if(chan->mode & _VPORT_MASK_RAW) edmaChans = 1;
        else edmaChans = 3;

        for(i = 0; i < edmaChans; i ++) {
            Int optFld1 = EDMA_OPT_RMK(
                  params->edmaPri,
                  EDMA_OPT_ESIZE_32BIT,
                  EDMA_OPT_2DS_YES, 
                  EDMA_OPT_SUM_INC,
                  EDMA_OPT_2DD_NO,
                  EDMA_OPT_DUM_NONE,
                  EDMA_OPT_TCINT_NO,
                  EDMA_OPT_TCC_OF(chan->tcc[i]&0x0f), 
                  EDMA_OPT_TCCM_OF(chan->tcc[i]>>4),
                  EDMA_OPT_ATCINT_NO,
                  EDMA_OPT_ATCC_DEFAULT,
                  EDMA_OPT_PDTS_DISABLE,
                  EDMA_OPT_PDTD_DISABLE,
                  EDMA_OPT_LINK_YES,
                  EDMA_OPT_FS_NO
            );
            Int optFld2 = EDMA_OPT_RMK(
                
                  params->edmaPri,
                  EDMA_OPT_ESIZE_32BIT,
                  EDMA_OPT_2DS_YES, 
                  EDMA_OPT_SUM_INC,
                  EDMA_OPT_2DD_NO,
                  EDMA_OPT_DUM_NONE,
                  EDMA_OPT_TCINT_YES,
                  EDMA_OPT_TCC_OF(chan->tcc[i]&0x0f), 
                  EDMA_OPT_TCCM_OF(chan->tcc[i]>>4),
                  EDMA_OPT_ATCINT_NO,
                  EDMA_OPT_ATCC_DEFAULT,
                  EDMA_OPT_PDTS_DISABLE,
                  EDMA_OPT_PDTD_DISABLE,
                  EDMA_OPT_LINK_YES,
                  EDMA_OPT_FS_NO
            );
            thrld = (i == 0)? chan->yThrld:chan->cThrld;
            cfgEdma.dst = EDMA_DST_RMK(chan->edmaAddr[i]);
            if(chan->mergeFlds) {
                /* to merge the two fields together */
                /* EDMA is configured to transfer only field 1 initially */
                /* line pitch is twice the line size */
                /* this requires that the threlhold is the same as line size*/
                /* first field */
                cfgEdma.opt = optFld1;
                cfgEdma.cnt = EDMA_CNT_RMK(
                    (chan->numEventsFld1) - 1, (thrld << 1));
                cfgEdma.idx = EDMA_IDX_RMK(thrld << 4, 0);
                /* hard code the field 1 & 2 of the first     */
                /* frame buffer as current and reload buffers */
                cfgEdma.src = EDMA_SRC_RMK(
                    *((Int *)(&chan->viops[0].frame.iFrm.y1) + i));
                cfgEdma.rld = EDMA_RLD_RMK(0, chan->hRld[2*i + 1]);
                EDMA_config(chan->hEdma[i], &cfgEdma);
                EDMA_config(chan->hRld[2 * i], &cfgEdma);
                /* second field */
                cfgEdma.opt = optFld2;
                cfgEdma.rld = EDMA_RLD_RMK(0, chan->hRld[2 * i]);
                cfgEdma.cnt = EDMA_CNT_RMK(
                    (chan->numEvents-chan->numEventsFld1) - 1, (thrld << 1));
                cfgEdma.src = EDMA_SRC_RMK(
                    *((Int *)(&chan->viops[0].frame.iFrm.y2) + i));
                EDMA_config(chan->hRld[2 * i + 1], &cfgEdma); 
            }else {/* if fields are not merged, configure EDMA to transfer */
                   /* for both field1 and field 2                          */
                   /* the line pitch is just the line size                 */
                cfgEdma.opt = optFld2;
                cfgEdma.cnt = EDMA_CNT_RMK((chan->numEvents) - 1, (thrld << 1));
                cfgEdma.idx = EDMA_IDX_RMK(thrld << 3, 0);
                /* hard code the first and second frame buffer as current  */
                /*and reload buffers */
                cfgEdma.src = EDMA_SRC_RMK(
                    *((Int *)(&chan->viops[0].frame.iFrm.y1) + i));
                cfgEdma.rld = EDMA_RLD_RMK(0, chan->hRld[i]);
                EDMA_config(chan->hEdma[i], &cfgEdma);
                cfgEdma.src = EDMA_SRC_RMK(
                    *((Int *)(&chan->viops[1].frame.iFrm.y1) + i));
                EDMA_config(chan->hRld[i], &cfgEdma);
            }
        }
        /* enable EDMA channel */
        
        if(!(chan->mode & _VPORT_MASK_RAW)) {
            EDMA_clearChannel(chan->hEdma[1]);
            EDMA_enableChannel(chan->hEdma[1]);
            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_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);     
        
        

        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->numLines = numLines;

        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 |

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美性受xxxx黑人xyx| 一区二区激情小说| 亚洲精品成a人| 精品亚洲成av人在线观看| 91在线观看成人| 久久日韩精品一区二区五区| 亚洲一线二线三线视频| 岛国一区二区三区| 欧美精品一区二| 久久97超碰国产精品超碰| 欧美日韩一区二区欧美激情| 综合在线观看色| 丁香一区二区三区| 国产偷国产偷亚洲高清人白洁 | 国产乱码精品一品二品| 欧美亚洲免费在线一区| 亚洲婷婷综合色高清在线| 激情欧美一区二区三区在线观看| 欧美日韩在线亚洲一区蜜芽| 亚洲天堂免费在线观看视频| 国产99久久久精品| 久久婷婷一区二区三区| 国内精品伊人久久久久av影院| 在线播放视频一区| 亚洲午夜在线观看视频在线| 91高清视频在线| 亚洲精品少妇30p| 色婷婷一区二区| 亚洲午夜影视影院在线观看| 91麻豆国产福利精品| 亚洲精品欧美激情| 在线一区二区视频| 亚洲一卡二卡三卡四卡| 欧美精品久久久久久久多人混战 | 91精品国产日韩91久久久久久| 亚洲一区在线视频观看| 欧美三级视频在线| 丝袜亚洲另类欧美| 日韩一区二区精品| 麻豆国产欧美日韩综合精品二区 | 亚洲欧洲一区二区三区| 成人的网站免费观看| 国产精品久久久久天堂| 99久久精品国产一区二区三区 | 日本精品一级二级| 午夜精品久久久久久久99樱桃| 欧美日韩亚洲综合一区二区三区| 日本中文字幕一区二区视频| 欧美一级生活片| 国产精品一线二线三线| 亚洲日本青草视频在线怡红院| 欧洲av一区二区嗯嗯嗯啊| 日本欧美在线观看| 精品久久久久久久久久久院品网 | 国产91丝袜在线播放九色| 国产精品久久毛片| 在线一区二区三区四区五区| 日本va欧美va精品发布| 国产欧美日韩综合| 欧美午夜片在线看| 精品在线视频一区| 国产精品美女一区二区三区| 欧美天堂亚洲电影院在线播放| 蜜桃视频一区二区三区在线观看| 亚洲国产高清不卡| 欧美日韩高清一区| 国产精品一品视频| 亚洲福中文字幕伊人影院| 久久日韩精品一区二区五区| 欧美在线免费视屏| 国产一区二区女| 一区二区三区四区蜜桃| 精品国产精品网麻豆系列| 一本久久精品一区二区| 国产精品中文有码| 亚洲一区二区视频在线观看| 国产亚洲va综合人人澡精品| 7777精品伊人久久久大香线蕉超级流畅 | 欧美一级免费观看| 91论坛在线播放| 国产精品一区二区在线看| 亚洲图片有声小说| 国产精品天天摸av网| 欧美美女直播网站| 9l国产精品久久久久麻豆| 久久精品国内一区二区三区| 亚洲另类春色国产| 欧美激情一区三区| 精品国产乱码久久久久久免费| 欧美日韩午夜在线| 色婷婷亚洲婷婷| 高清日韩电视剧大全免费| 久久www免费人成看片高清| 亚洲sss视频在线视频| 中文字幕在线一区免费| 久久久久国产精品麻豆| 欧美一区二区视频在线观看2020| 91欧美激情一区二区三区成人| 国产一区不卡在线| 麻豆精品在线观看| 日韩不卡一二三区| 亚洲成av人片一区二区三区 | 色悠悠久久综合| 成人av在线播放网站| 国产+成+人+亚洲欧洲自线| 国产一区二区在线观看免费| 蜜桃视频一区二区三区在线观看 | 成人免费毛片嘿嘿连载视频| 狠狠色丁香婷综合久久| 男女性色大片免费观看一区二区| 亚洲国产毛片aaaaa无费看| 亚洲品质自拍视频| 亚洲欧美偷拍卡通变态| 亚洲品质自拍视频网站| 亚洲视频资源在线| 中文字幕综合网| 亚洲免费观看高清| 伊人婷婷欧美激情| 一区二区三区久久| 亚洲国产视频网站| 日本中文字幕一区| 韩国成人精品a∨在线观看| 国产一区二区三区四区五区美女| 国产综合久久久久久久久久久久| 精品亚洲国产成人av制服丝袜| 国产麻豆日韩欧美久久| 成人精品小蝌蚪| 91小视频免费看| 日韩免费视频一区二区| 日韩欧美国产1| 久久免费看少妇高潮| 欧美激情综合五月色丁香小说| 综合分类小说区另类春色亚洲小说欧美 | 91亚洲午夜精品久久久久久| 色婷婷亚洲婷婷| 欧美一区日本一区韩国一区| 久久久国产综合精品女国产盗摄| 国产精品国产a| 天天亚洲美女在线视频| 国产另类ts人妖一区二区| 成人动漫在线一区| 欧美精品日日鲁夜夜添| 精品国产亚洲一区二区三区在线观看| 久久久久综合网| 亚洲精品国产精华液| 日韩电影免费在线观看网站| 国产精品1024| 欧美在线视频日韩| 国产日产欧美一区二区视频| 亚洲在线成人精品| 国产美女一区二区| 欧美综合欧美视频| 国产欧美精品一区二区三区四区| 亚洲综合丁香婷婷六月香| 精品一区二区av| 91福利精品视频| 久久综合九色综合97_久久久| 一区二区三区四区中文字幕| 国产一区二区三区电影在线观看| 在线欧美日韩精品| 国产亚洲精品aa| 免费一区二区视频| 一本久久a久久精品亚洲| 精品国产凹凸成av人网站| 亚洲精品日产精品乱码不卡| 国产不卡免费视频| 日韩欧美一区在线观看| 亚洲精品日韩一| 成人天堂资源www在线| 精品免费视频.| 午夜不卡在线视频| 色呦呦国产精品| 国产精品麻豆欧美日韩ww| 精品一区二区三区视频在线观看| 欧美在线短视频| 亚洲人成网站色在线观看| 国产成人av一区二区| 日韩精品一区二区三区swag| 亚洲一区二区欧美日韩| 91免费看片在线观看| 欧美激情一区不卡| 国产麻豆精品久久一二三| 91精品在线一区二区| 亚洲国产欧美在线| 色综合天天狠狠| 中文字幕在线观看不卡| 国产成人一区二区精品非洲| 久久蜜桃一区二区| 精品一区二区三区久久| 日韩一区和二区| 免费观看在线综合| 91麻豆精品国产自产在线观看一区 | 亚洲一二三四区| 97se亚洲国产综合自在线不卡| 日本一区二区久久| 成人免费视频一区| 国产精品国产自产拍高清av王其| 国产不卡在线播放| 亚洲欧洲成人av每日更新| 不卡av电影在线播放|