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

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

?? plx9054.c

?? Vxworks 下PLX 9054 的驅動
?? C
?? 第 1 頁 / 共 4 頁
字號:
            sprintf(pPlxSpace->spaceName, "Pci I/O For Local Reg");
            pPlxSpace->dwPciBar = pDrvCtrl->pDevice[index]->PlxPciRsrc.iobaseCsr;
            pPlxSpace->dwRange = 256;
            pPlxSpace->fIsEnable = TRUE;
            pPlxSpace->fIsMemory = FALSE;
            return OK;
            break;
           
        case P9054_ADDR_SPACE0:  /* local space 0*/
            PLX9054_Local_Reg_Read(index, P9054_LAS0RR, &range);
            PLX9054_Local_Reg_Read(index, P9054_LAS0BA, &localBase);
            PLX9054_Pci_Reg_Read(index, PCI_BAR2, &pciBase, DATA_DWORD);
            sprintf(pPlxSpace->spaceName, "PLX9054 Local Space 0");
            break;
        case P9054_ADDR_SPACE1:  /* local space 1*/
            PLX9054_Local_Reg_Read(index, P9054_LAS1RR, &range);
            PLX9054_Local_Reg_Read(index, P9054_LAS1BA, &localBase);
            PLX9054_Pci_Reg_Read(index, PCI_BAR3, &pciBase, DATA_DWORD);
            sprintf(pPlxSpace->spaceName, "PLX9054 Local Space 1");
            break;
        case P9054_ADDR_EPROM:  /* local EPROM space*/
            PLX9054_Local_Reg_Read(index, P9054_EROMRR, &range);
            PLX9054_Local_Reg_Read(index, P9054_EROMBA, &localBase);
            PLX9054_Pci_Reg_Read(index, PCI_ERBAR, &pciBase, DATA_DWORD);
            sprintf(pPlxSpace->spaceName, "PLX9054 Local Eprom Space");
            break;
        default:
            return ERROR;
            break;
    }
    
    /*初始化結構體*/
    pPlxSpace->fIsMemory = (BIT0 == (range & BIT0)); 
    if(pPlxSpace->fIsMemory)
    {
        pPlxSpace->fIsPrefetch = (BIT3 == (range & BIT3));  
        pPlxSpace->dwRange = (~(range & PCI_MEMBASE_MASK)) + 1; 
    }
    else
    {
        pPlxSpace->dwRange = (~(range & 0xfffffff8)) + 1;
    }

    pPlxSpace->fIsEnable = (BIT0 == (localBase & BIT0));
    
    if(pPlxSpace->fIsMemory) /* memory base */
    {
        pPlxSpace->dwLocalBase = (localBase & PCI_MEMBASE_MASK);
    }
    else  /* i/o base */
    {
        pPlxSpace->dwLocalBase = (localBase & 0xfffffffc);
    }

    if(pPlxSpace->fIsEnable)
    {
        pPlxSpace->dwPciBar = pciBase & PCI_MEMBASE_MASK;
    }

    return OK;
}

/*
PLX9054_GetSpaceInfo
獲取PLX9054 所有本地空間信息Space0、Space1、Programe ROM Space
input
      int index: 設備索引
*/
STATUS PLX9054_GetAllSpaceInfo(int index)
{
    PLX9054_DRVCTRL * pDrvCtrl;
    PLX9054_SPACE_DESC plxSpace;
    int i;
    
    pDrvCtrl = pPlxDrvCtrl;
    
    /* 輸入參數判斷*/
    if( (index < 0)  || (index > (pDrvCtrl->plxCardNum - 1)))
    {
        printf("Index(%d) out of range file:%s, line:%d.\n", index, __FILE__, __LINE__);
        return ERROR;
    }

    for(i = 0; i < AD_PCI_BAR_EPROM; i++)
    {
        memset((void *)(&plxSpace), 0, sizeof(PLX9054_SPACE_DESC));
        if(OK == PLX9054_GetSpaceInfo(index, (PLX9054_SPACE_INDEX)i, &plxSpace))
        {
            pDrvCtrl->pDevice[index]->spaceDesc[i] = plxSpace;
        }    
    }

    return OK;
}

/********************************************************************
PLX9054_Int
PLX9054中斷入口函數
*/
void PLX9054_Int(int index)
{
  
    UINT32 intcsr, intSource;
    UCHAR dmacsr;
    int level;
    
    PLX9054_DMA_CH ch;
    PLX9054_DRVCTRL * pDrvCtrl;

    level = intLock ();
    
    pDrvCtrl = PLX9054_GetDrvCtrl( );
    ch = pDrvCtrl->pDevice[index]->channel;
      
    /* 讀取中斷控制/狀態寄存器*/
    PLX9054_Local_Reg_Read (index, P9054_INTCSR, &intcsr);

    /* 計算中斷源*/
    if(0xffffffff == intcsr)
    {
        return;
    }
    
    /* Check for master PCI interrupt enable */
    if ((intcsr & (1 << 8)) == 0)
        return;

    #if 0
    intSource = INTR_TYPE_NONE;

     /* Check if PCI Doorbell Interrupt is active and not masked*/
    if ((intcsr & (1 << 13)) && (intcsr & (1 << 9)))
    {
        intSource |= INTR_TYPE_DOORBELL;
    }

    /* Check if PCI Abort Interrupt is active and not masked */
    if ((intcsr & (1 << 14)) && (intcsr & (1 << 10)))
    {
        intSource |= INTR_TYPE_PCI_ABORT;
    }

    /* Check if Local->PCI Interrupt is active and not masked */
    if ((intcsr & (1 << 15)) && (intcsr & (1 << 11)))
    {
        intSource |= INTR_TYPE_LOCAL_1;
    }
    #endif
    
    if((intcsr & BIT21) && (intcsr & BIT18))  /* DMA 通道0 產生中斷*/
    {
        /*采集來的數據已經經DMA 傳輸到內存中,這里通過 釋放信號量激活數據處理任務*/
        semGive(pDrvCtrl->pDevice[index]->dmaCh[ch].syncSem);
        /* 清中斷*/
        dmacsr = *(UCHAR *)(pPlxDrvCtrl->pDevice[index]->spaceDesc[AD_PCI_BAR0].dwPciBar + P9054_DMACSR);
        *(UCHAR *)(pPlxDrvCtrl->pDevice[index]->spaceDesc[AD_PCI_BAR0].dwPciBar + P9054_DMACSR) = dmacsr | (1 << 3);
    }
    
    intUnlock(level);
}

/********************************************************************
PLX9054_Ioctl
PLX9054的配置與控制接口函數
*/
STATUS PLX9054_Ioctl(int index, PLX9054_IOCTL_CMD cmd, UINT32 * pData)
{
    return OK;
}

/*
PLX9054_IntEnable
開中斷
*/
void PLX9054_IntEnable (int index)
{
    UINT32 dwIntStatus;
    PLX9054_DRVCTRL * pDrvCtrl;
    PLX9054_DEVICE * pDevCtrl;

    pDrvCtrl = pPlxDrvCtrl;
    
    /* 輸入參數判斷*/
    if( (index < 0)  || (index > (pDrvCtrl->plxCardNum - 1)))
    {
        printf("Index out of range file:%s, line:%d.\n", __FILE__, __LINE__);
        return;
    }
    
    if(0) /*如果中斷已經使能,直接返回*/
    {
        return;
    }

    pDevCtrl = pDrvCtrl->pDevice[index];

    /* this enables interrupts*/
    PLX9054_Local_Reg_Read (index, P9054_INTCSR, &dwIntStatus);
    PLX9054_Local_Reg_Write (index, P9054_INTCSR, dwIntStatus | (BIT8|BIT10 | BIT18));

    pDevCtrl->intIsEnable = TRUE;
}
 
/*
PLX9054_IntDisable
關中斷
*/
void PLX9054_IntDisable (int index)
{
    UINT32 dwIntStatus;
    PLX9054_DRVCTRL * pDrvCtrl;
    PLX9054_DEVICE * pDevCtrl;

    pDrvCtrl = pPlxDrvCtrl;
    
    /* 輸入參數判斷*/
    if( (index < 0)  || (index > (pDrvCtrl->plxCardNum - 1)))
    {
        printf("Index out of range file:%s, line:%d.\n", __FILE__, __LINE__);
        return;
    }
    
    if(0) /*如果中斷已經使能,直接返回*/
    {
        return;
    }

    pDevCtrl = pDrvCtrl->pDevice[index];

    /* this disables interrupts*/
    dwIntStatus = PLX9054_Local_Reg_Read (index, P9054_INTCSR, &dwIntStatus);
    PLX9054_Local_Reg_Write (index, P9054_INTCSR, dwIntStatus & ~(BIT8|BIT10));

    pDevCtrl->intIsEnable = FALSE;
}

/**************************************************************************
* PLX9054_DMAReadWriteBlock
* 對外接口
* DMA塊方式讀寫
*/
STATUS PLX9054_DMAReadWriteBlock (int index, UINT32 dwLocalAddr, UINT32 buffer, UINT32 dwBytes, BOOL fIsRead)
{
    PLX9054_DRVCTRL * pDrvCtrl;
    PLX9054_DMA * pDmaCtrl = NULL;
    int channel;

    pDrvCtrl = PLX9054_GetDrvCtrl();
    
    /* 輸入參數判斷*/
    if( (index < 0)  || (index > (pDrvCtrl->plxCardNum - 1)))
    {
        printf("Index out of range file:%s, line:%d.\n", __FILE__, __LINE__);
        return ERROR;
    }

    channel = pDrvCtrl->pDevice[index]->channel;                       /* 獲取設置使用的DMA通道*/
    pDmaCtrl = &(pDrvCtrl->pDevice[index]->dmaCh[channel]);

    pDmaCtrl->pDmaDesc->pciAddr = buffer;                              /* 設置DMAPADR0/1 寄存器*/
    pDmaCtrl->pDmaDesc->localAddr = dwLocalAddr;                 /* 設置DMALADR0/1 寄存器*/
    pDmaCtrl->pDmaDesc->nBytes = dwBytes;                            /* 設置DMASIZ0/1 寄存器*/
    if(fIsRead)
    {
        pDmaCtrl->pDmaDesc->descPointer = BIT3;
    }
    else
    {
        pDmaCtrl->pDmaDesc->descPointer = 0;
    }
    
    PLX9054_DMAStart(pDmaCtrl);
    
    return OK;
}
/*
PLX9054_DmaCtrl
對外接口
DMA控制與配置模塊,與IOCTL類似
input 
       index: 設備索引
       cmd: 命令(設置項索引)
       pData: 數據指針
*/
STATUS PLX9054_DMACtl(int index, PLX9054_DMA_CMD cmd, UINT32 * pData)
{
    PLX9054_DRVCTRL * pDrvCtrl;
    PLX9054_DMA * pDmaCtrl = NULL;
    int channel;
    UINT32 data;

    pDrvCtrl = PLX9054_GetDrvCtrl();
    
    /* 輸入參數判斷*/
    if( (index < 0)  || (index > (pDrvCtrl->plxCardNum - 1)))
    {
        printf("Index out of range file:%s, line:%d.\n", __FILE__, __LINE__);
        return ERROR;
    }

    channel = pDrvCtrl->pDevice[index]->channel;
    pDmaCtrl = &(pDrvCtrl->pDevice[index]->dmaCh[channel]);

    switch(cmd)
    {
        case DMA_CHANNEL_SET: /* 設置DMA 通道號*/
            pDrvCtrl->pDevice[index]->channel = (PLX9054_DMA_CH)(pData);
            break;
        case DMA_CHANNEL_GET: /* 獲取DMA 通道號*/
            *pData = (UINT32)(pDrvCtrl->pDevice[index]->channel);
            break;
        case DMA_READ_ENABLE: /* 設置DMA 讀*/
            pDmaCtrl->fIsRead = TRUE;
            break;
        case DMA_WRITE_ENABLE: /* 設置DMA 寫*/
            pDmaCtrl->fIsRead = FALSE;
            break;
        case DMA_BUS_WIDTH_SET: /* Set Local Bus Width*/
            data = *(pDmaCtrl->pDmaMode);
            *(pDmaCtrl->pDmaMode) = (data & (~(BIT0 | BIT1))) | (UINT32)(pData);
            break;
        case DMA_BUS_WIDTH_GET: /* Get Local Bus Width*/
            data = *(pDmaCtrl->pDmaMode);
            *pData = data & (BIT0 | BIT1);
            break;
        case DMA_WAIT_SET:  /* Set Internal Wait States */
            break;
        case DMA_WAIT_GET:  /* Get Internal Wait States */
            break;
        case DMA_BURST_ENABLE:      /* Local Burst Enable */
            data = *(pDmaCtrl->pDmaMode);
            *(pDmaCtrl->pDmaMode) = data | BIT8;
            break;
        case DMA_BURST_DISABLE:    /* Local Burst Disable */
            data = *(pDmaCtrl->pDmaMode);
            *(pDmaCtrl->pDmaMode) = data & (~BIT8);
            break;
        case DMA_GATHER_MODE_ENABLE:  /* Scatter/Gather mode Enable */
            break;
        case DMA_GATHER_MODE_DISABLE: /* Scatter/Gather mode Disable */
            break;
        case DMA_INT_ENABLE:      /* Done Interrupt Enable */
            break; 
        case DMA_INT_DISABLE:    /* Done Interrupt Disable */
            break;
        case DMA_LOCAL_ADDR_INC: /* 本地地址遞增*/
            data = *(pDmaCtrl->pDmaMode);
            *(pDmaCtrl->pDmaMode) = data & (~BIT11);
            break;
        case DMA_LOCAL_ADDR_HOLD: /* 本地地址保持不變*/
            data = *(pDmaCtrl->pDmaMode);
            *(pDmaCtrl->pDmaMode) = data | BIT11;
            break;
        default:
            break;
    }
    
    return OK;
}

/*
PLX9054_DMA_Init
DMA初始化函數
*/
STATUS PLX9054_DMA_Init(int index)
{
    PLX9054_DRVCTRL * pDrvCtrl;
    PLX9054_DMA * pDmaCtrl = NULL;
    UINT32  membaseCsr;
    int i;

    pDrvCtrl = PLX9054_GetDrvCtrl();
    
    /* 輸入參數判斷*/
    if( (index < 0)  || (index > (pDrvCtrl->plxCardNum - 1)))
    {
        printf("Index out of range file:%s, line:%d.\n", __FILE__, __LINE__);
        return ERROR;
    }
    /* 獲取寄存器映射到PCI Memory空間的基地址*/
    membaseCsr = pDrvCtrl->pDevice[index]->PlxPciRsrc.membaseCsr;

    /*初始化DMA結構體,包括設置一些初始狀態,寄存器地址*/
    for(i = 0; i < PLX9054_DMA_NUM; i++)
    {
        pDmaCtrl = &(pDrvCtrl->pDevice[index]->dmaCh[i]);
        if(NULL == pDmaCtrl)
        {
            break;
        }
        pDmaCtrl->pDmaMode = (UINT32 *)(membaseCsr + P9054_DMAMODE + i * PLX9054_DMA_CHANNEL_SHIFT);
        pDmaCtrl->pDmaDesc  = (PLX9054_DMA_DESC *)(membaseCsr + P9054_DMAPADR + i * PLX9054_DMA_CHANNEL_SHIFT);
        pDmaCtrl->pDmaCs = (UINT8 *)(membaseCsr +  P9054_DMACSR + i);    
        pDmaCtrl->fIschkDone = TRUE;   /* 默認查詢模式*/
        pDmaCtrl->fIsRead = TRUE;        /* 默認DMA用于讀FIFO*/
        pDmaCtrl->semTimeOut = PLX9054_DMA_TIME_OUT;
        pDmaCtrl->timeOutCount = 0;
        pDmaCtrl->syncSem = semBCreate(SEM_Q_FIFO, SEM_EMPTY);  /*創建信號量*/

        /* DMA 模式初始化 
          BIT0: 16-bit lOCAL bus
          BIT10: Done Interrupt Enable
          BIT11:LocaL address hold        
          BIT17:DMA Interrupt INTA*/
        *(pDmaCtrl->pDmaMode) = BIT0 | BIT10 |BIT11|BIT17;
    }   

    PLX9054_DMACtl(index, DMA_CHANNEL_SET, (UINT32 *)PLX9054_DMA_CH_0);      /* 設置使用DMA 0 */
    PLX9054_DMACtl(index, DMA_BUS_WIDTH_SET, (UINT32 *)PLX9054_BUS_WORD); /* 設置本地總線為16 位*/
    #if 1
    PLX9054_DMACtl(index, DMA_BURST_DISABLE, NULL);  /* 本地總線禁止BURST 操作*/
    #else
    PLX9054_DMACtl(index, DMA_BURST_ENABLE, NULL);  /* 本地總線使能BURST 操作*/
    #endif
    return OK;
}

/*
PLX9054_DMAIsDone
查詢DMA傳輸是否完成
*/
BOOL PLX9054_DMAIsDone (PLX9054_DMA * pDmaCtrl)
{
    return(BIT4 == (*(pDmaCtrl->pDmaCs) & BIT4));
}

/*
PLX9054_DMAStart
啟動DMA傳輸
*/
STATUS PLX9054_DMAStart (PLX9054_DMA * pDmaCtrl)
{
    int semStatus;
    
    *(pDmaCtrl->pDmaCs) = BIT0 | BIT1;

    #if 0
    /* Busy wait for plx to finish DMA transfer*/
    if (pDmaCtrl->fIschkDone) 
    {
        while (!PLX9054_DMAIsDone(pDmaCtrl))
            ;
    }
    printf("DMA Done.\n");
    else  /* 中斷方式, 調試用*/
    #else
    {
        semStatus = semTake(pDmaCtrl->syncSem, PLX9054_DMA_TIME_OUT);   /*需要 在中斷處理中釋放信號量*/

        if(ERROR == semStatus)
        {
            printf("DMA Operation TIME_OUT.file:%s, line:%d.\n", __FILE__, __LINE__);
            pDmaCtrl->timeOutCount++;
            return ERROR;
        }
    }
    #endif
    
    return OK;
}

/*
PLX9054PciShow
顯示所有PLX9054擴展卡的PCI資源信息
*/
void PLX9054_Pci_Show(void)
{
    int unit;
    PLX9054_DRVCTRL * pDrvCtrl;
    PLX9054_DEVICE * pDevCtrl;

    pDrvCtrl = PLX9054_GetDrvCtrl();
    
    if (0 == pDrvCtrl->plxCardNum)
    {
        printf("No Plx9054 Card Installed!\n");
        return;
    }
    
    for(unit = 0; unit < (pDrvCtrl->plxCardNum); unit++)
    {
        pDevCtrl = pDrvCtrl->pDevice[unit];
        printf("Bus:%d Device:%d Function:%d MemBase:0x%08x IOBase:0x%04x  Irq:%d\n",
        pDevCtrl->PlxPciRsrc.pciBus, pDevCtrl->PlxPciRsrc.pciDevice, pDevCtrl->PlxPciRsrc.pciFunc,
        pDevCtrl->PlxPciRsrc.membaseCsr, pDevCtrl->PlxPciRsrc.iobaseCsr, pDevCtrl->PlxPciRsrc.irq);       
    }
    
    return;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99国产麻豆精品| 91首页免费视频| 99久久精品国产一区| 精品视频在线视频| 久久亚洲二区三区| 亚洲小说欧美激情另类| 成人中文字幕合集| 日韩精品一区二区三区四区视频| 国产精品电影院| 国产99久久精品| 日韩欧美不卡在线观看视频| 亚洲一区中文在线| 成人av免费在线| 久久精品欧美日韩精品| 青青草国产成人av片免费| 在线观看91精品国产入口| 国产精品久久午夜| 国产成人精品网址| 亚洲精品在线电影| 九九在线精品视频| 欧美一区二区免费观在线| 亚洲第一综合色| 色狠狠综合天天综合综合| 国产精品久久久久久久午夜片| 久久99深爱久久99精品| 日韩一区二区三区电影在线观看| 亚洲一区二区三区自拍| 日本乱码高清不卡字幕| 亚洲女与黑人做爰| 一本色道综合亚洲| 亚洲精品水蜜桃| 色综合色综合色综合色综合色综合 | 精品国产网站在线观看| 日本不卡视频在线| 欧美一区二区三区视频免费 | 欧美不卡一二三| 麻豆精品在线播放| www国产成人免费观看视频 深夜成人网| 免费看黄色91| 久久欧美一区二区| 丁香啪啪综合成人亚洲小说| 中文字幕av不卡| 97久久超碰国产精品| 亚洲欧美日韩国产成人精品影院| 色婷婷综合五月| 亚洲国产美国国产综合一区二区| 欧美日韩在线播| 久久99国产精品久久| 久久蜜臀精品av| 97se亚洲国产综合自在线观| 一区二区三区在线观看国产| 欧美午夜视频网站| 狠狠色丁香婷婷综合| 国产精品网友自拍| 欧美在线免费观看视频| 久久99国产精品尤物| 国产精品无遮挡| 欧美日韩视频第一区| 久久99这里只有精品| 亚洲情趣在线观看| 欧美一卡在线观看| 成人精品国产一区二区4080| 亚洲影视在线观看| 欧美精品一区二区三区蜜桃| 99天天综合性| 麻豆国产精品777777在线| 国产精品美女久久久久久久网站| 欧美探花视频资源| 久久日韩精品一区二区五区| 亚洲成av人片在线观看无码| 欧美精品v国产精品v日韩精品| 日本一区二区三区在线不卡| 日本道免费精品一区二区三区| 日韩黄色免费电影| 中文字幕av不卡| 日韩三级中文字幕| 91亚洲国产成人精品一区二三 | 蜜桃一区二区三区四区| 国产欧美日韩卡一| 91精品国产综合久久久久久| 国产·精品毛片| 青青草97国产精品免费观看无弹窗版| 中文字幕制服丝袜成人av| 精品国免费一区二区三区| 色婷婷亚洲精品| 成人小视频免费在线观看| 日韩综合在线视频| 亚洲精品视频一区二区| 久久精品一区二区三区不卡 | 欧洲国产伦久久久久久久| 亚洲午夜私人影院| 国产精品网站在线播放| 精品国产一区久久| 欧美久久久久久久久| 99re这里都是精品| 国产成人精品免费一区二区| 性感美女久久精品| 一区二区三区久久| 亚洲同性gay激情无套| 久久久久久久久久久久电影| 欧美一区二区三区喷汁尤物| 91电影在线观看| 91小视频免费观看| 成人涩涩免费视频| 成人污视频在线观看| 国产一区二区三区电影在线观看 | 日韩欧美一区电影| 欧美美女激情18p| 欧美怡红院视频| 91国内精品野花午夜精品| proumb性欧美在线观看| 成人少妇影院yyyy| 99精品一区二区| 91在线观看一区二区| 99精品一区二区三区| 91麻豆免费观看| 91精品福利视频| 欧美影院一区二区| 在线播放中文一区| 日韩精品一区二区三区中文不卡| 日韩小视频在线观看专区| 欧美日韩黄色影视| 在线不卡的av| 亚洲精品一区二区三区精华液 | 亚洲午夜一区二区| 日韩在线a电影| 蜜桃视频一区二区| 国产一区不卡视频| jlzzjlzz亚洲日本少妇| 91论坛在线播放| 欧美精品v日韩精品v韩国精品v| 欧美一区二区三区白人| 久久免费看少妇高潮| 国产精品美日韩| 午夜久久久影院| 激情成人午夜视频| 91一区二区三区在线观看| 欧美三级欧美一级| 精品国产免费人成在线观看| 国产精品天干天干在线综合| 国产精品亚洲专一区二区三区 | 成人av午夜电影| 色香色香欲天天天影视综合网| 欧美中文字幕一二三区视频| 91麻豆精品国产91| 国产色91在线| 亚洲精品日韩专区silk| 日韩av中文字幕一区二区三区| 国产激情精品久久久第一区二区| 成人av在线网站| 正在播放亚洲一区| 国产蜜臀av在线一区二区三区| 亚洲女女做受ⅹxx高潮| 蜜臀av一级做a爰片久久| 懂色一区二区三区免费观看| 欧美三日本三级三级在线播放| 精品国产伦一区二区三区观看体验| 国产精品视频yy9299一区| 偷窥国产亚洲免费视频| 粉嫩欧美一区二区三区高清影视| 欧美日韩在线综合| 欧美国产97人人爽人人喊| 久久不见久久见免费视频7| 免费在线观看一区二区三区| 亚洲一区影音先锋| 国产一区二区三区免费| 欧美日韩一区二区三区不卡| 久久久精品免费免费| 亚洲自拍偷拍av| 国产成人鲁色资源国产91色综| 欧美视频日韩视频| 国产精品久久久久影院色老大| 热久久久久久久| 欧美天堂亚洲电影院在线播放| 欧美激情一区二区三区蜜桃视频| 日韩和欧美一区二区三区| 99re6这里只有精品视频在线观看| 日韩欧美国产综合| 亚洲成人1区2区| 91精品1区2区| 亚洲最大的成人av| www.爱久久.com| 中文字幕日韩一区| 国产成都精品91一区二区三| 精品国产乱码久久久久久闺蜜| 午夜精品福利视频网站| 在线免费观看一区| 中文字幕一区二区三区在线观看 | 精品理论电影在线观看 | 亚洲精品国产a久久久久久| 国产精品一区三区| 精品久久久久久久久久久院品网| 日韩高清国产一区在线| 欧美日韩视频专区在线播放| 亚洲不卡在线观看| 欧美视频在线不卡| 亚洲h在线观看| 欧美日韩国产免费| 无码av中文一区二区三区桃花岛| 精品视频999|