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

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

?? scutest.c

?? 這是單板上DPRAM的驅動程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include <psos.h>
#include "board.h"
#include "bspcomm.h"
#include "bspspec.h"
#include "scutest.h"

static ULONG TestTaskID, TestQueID;
static volatile int FNCount, TicksCount, GPriority;
static volatile char pSendBuf[MAX_TEST_BUF_LEN], pRecvBuf[MAX_TEST_BUF_LEN];
static void (*pCallback)(int cmd, void *param, int len);

int TestTaskInit(int priority, void (*callback)(int cmd, void *param, int len))
{
    volatile int rc;
    
    GPriority = priority;
    
    if(callback == NULL)
        return SDE_FAIL;
    
    pCallback = callback;
    
    rc = q_create("TstQ", 20, Q_LOCAL|Q_PRIOR|Q_LIMIT|Q_PRIBUF, &TestQueID);
    if(rc != 0){
        return SDE_CREATE_QUEUE_FAIL;
    }
    
    rc = CreateTask("TstT", TestTask, &TestTaskID, GPriority, 0);
    if(rc != 0){
        return SDE_CREATE_TASK_FAIL;
    }
    
    return SDE_OK;
}

void TestTaskCmd(int cmd, void *param, int len)
{
    int i;
    ULONG QSendMsgBuf[4];
    
    QSendMsgBuf[0] = cmd;
    QSendMsgBuf[1] = (ULONG)param;
    QSendMsgBuf[2] = len;
    
    q_send(TestQueID, QSendMsgBuf);
}

static void TestTask(void)
{
    int i;
    volatile int rc;
    TestStruct Ti, To;
    SDCEventQueueStruct eq;
    TestRsltStruct tr;
    CommTestRsltStruct ctr;
    ULONG QRecvMsgBuf[4];
    
    while (1) {
        if(q_receive(TestQueID, Q_WAIT, 0, QRecvMsgBuf) != 0) {
            tm_wkafter(1);
            continue;
        }
        Ti.cmd   = QRecvMsgBuf[0];
        Ti.param = (void *)QRecvMsgBuf[1];
        Ti.len   = QRecvMsgBuf[2];
        
        memset(&tr, 0, sizeof(TestRsltStruct));
        memset(&ctr, 0, sizeof(CommTestRsltStruct));
        switch(Ti.cmd){
            case SDC_MT8980_TEST:
                rc = sd_cntrl(SDN_MT8980, SDC_SET_TEST_MODE, 0, 0);
                if(Ti.len < sizeof(CommTestStruct)){
                    ctr.WrTest     = SDE_FAIL;
                    ctr.OnLineTest = SDE_FAIL;
                    ctr.FacTest    = SDE_FAIL;
                    ctr.ErrInfo[0] = SDE_INVALID_ARG;
                }    
                else
                    MT8980Test(Ti.param, &ctr);
                To.cmd   = Ti.cmd;
                To.param = &ctr;
                To.len   = sizeof(CommTestRsltStruct);
                rc = sd_cntrl(SDN_MT8980, SDC_SET_UNTEST_MODE, 0, 0);
                break;
            case SDC_NIU_TEST:
                rc = sd_cntrl(SDN_NIU, SDC_SET_TEST_MODE, 0, 0);
                if(Ti.len < sizeof(CommTestStruct)){
                    ctr.WrTest     = SDE_FAIL;
                    ctr.OnLineTest = SDE_FAIL;
                    ctr.FacTest    = SDE_FAIL;
                    ctr.ErrInfo[0] = SDE_INVALID_ARG;
                }    
                else
                    NiuTest(Ti.param, &ctr);
                To.cmd   = Ti.cmd;
                To.param = &ctr;
                To.len   = sizeof(CommTestRsltStruct);
                rc = sd_cntrl(SDN_NIU, SDC_SET_UNTEST_MODE, 0, 0);
                break;
            case SDC_SPI_TEST:
                rc = sd_cntrl(SDN_SPI, SDC_SET_TEST_MODE, &eq, sizeof(SDCEventQueueStruct));
                SpiTest(&tr);
                To.cmd   = Ti.cmd;
                To.param = &tr;
                To.len   = sizeof(TestRsltStruct);
                rc = sd_cntrl(SDN_SPI, SDC_SET_UNTEST_MODE, &eq, sizeof(SDCEventQueueStruct));
                break;
            case SDC_HPI_TEST:
                HpiTest(&tr);
                To.cmd   = Ti.cmd;
                To.param = &tr;
                To.len   = sizeof(TestRsltStruct);
                break;
            case SDC_FLASH_TEST:
                rc = sd_cntrl(SDN_FLASH, SDC_SET_TEST_MODE, 0, 0);
                FlashTest(&tr);
                To.cmd   = Ti.cmd;
                To.param = &tr;
                To.len   = sizeof(TestRsltStruct);
                rc = sd_cntrl(SDN_FLASH, SDC_SET_UNTEST_MODE, 0, 0);
                break;
            case SDC_DS1620_TEST:
                rc = sd_cntrl(SDN_DS1620A, SDC_SET_TEST_MODE, 0, 0);
                rc = sd_cntrl(SDN_DS1620B, SDC_SET_TEST_MODE, 0, 0);
                rc = sd_cntrl(SDN_DS1620C, SDC_SET_TEST_MODE, 0, 0);
                rc = sd_cntrl(SDN_DS1620D, SDC_SET_TEST_MODE, 0, 0);
                DS1620Test(&tr);
                To.cmd   = Ti.cmd;
                To.param = &tr;
                To.len   = sizeof(TestRsltStruct);
                rc = sd_cntrl(SDN_DS1620A, SDC_SET_UNTEST_MODE, 0, 0);
                rc = sd_cntrl(SDN_DS1620B, SDC_SET_UNTEST_MODE, 0, 0);
                rc = sd_cntrl(SDN_DS1620C, SDC_SET_UNTEST_MODE, 0, 0);
                rc = sd_cntrl(SDN_DS1620D, SDC_SET_UNTEST_MODE, 0, 0);
                break;
            case SDC_ALARMS_TEST:
                AlarmsTest(&tr);
                To.cmd   = Ti.cmd;
                To.param = &tr;
                To.len   = sizeof(TestRsltStruct);
                break;
            case SDC_FN_TEST:
                FNTest(&tr);
                To.cmd   = Ti.cmd;
                To.param = &tr;
                To.len   = sizeof(TestRsltStruct);
                break;
            default:
                break;
        }
        
        pCallback(To.cmd, To.param, To.len);
    }
}

static int CreateTask(char *name,void (*task)(void), ULONG *tid, int priority, ULONG *p)
{
    volatile int rc;
    rc = t_create(name, priority, SCUTEST_TASK_SSTACK_SIZE, SCUTEST_TASK_USTACK_SIZE, 0, tid);
    if (rc != 0) 
        return rc;
    rc = t_start(*tid, T_SUPV|T_PREEMPT|T_TSLICE, task, p);
    if (rc != 0) { t_delete(*tid); return rc; }
    return 0;
}

static void NiuTest(CommTestStruct *pct, CommTestRsltStruct *pctr)
{
    int i;
    NiuTestStruct nt;
    NiuTestStruct nr;
    volatile int rc, ErrCount=0;
    
    nt.Niu0 = 1;
    nt.Niu1 = 1;
    nt.ParamLen = sizeof(NiuTestStruct);
     
    if(pct->WrTest == 1){
        nr.Niu0 = -1;
        nr.Niu1 = -1;
        nr.ParamLen = sizeof(NiuTestStruct);
        
        rc = NiuChipWRTest(&nt, &nr);
        if(rc == SDE_NIU_MODE_ERROR){
            pctr->WrTest = SDE_FAIL;
            pctr->ErrInfo[ErrCount++] = SDE_NIU_MODE_ERROR;
        }
        else{
            pctr->WrTest = ((nr.Niu0==SDE_OK)&&(nr.Niu1==SDE_OK))?SDE_OK:SDE_FAIL;
            if(pctr->WrTest == SDE_FAIL){
                if(nr.Niu0 == SDE_FAIL)
                    pctr->ErrInfo[ErrCount++] = SDE_NIU0_WR_FAIL;
                if(nr.Niu1 == SDE_FAIL)
                    pctr->ErrInfo[ErrCount++] = SDE_NIU1_WR_FAIL;
            }
        }
    }
    if(pct->OnLineTest == 1){
        nr.Niu0 = -1;
        nr.Niu1 = -1;
        nr.ParamLen = sizeof(NiuTestStruct);
        
        rc = NiuLoopTest(&nt, &nr, INLOOP);
        if(rc == SDE_NIU_MODE_ERROR){
             pctr->OnLineTest = SDE_FAIL;
             pctr->ErrInfo[ErrCount++] = SDE_NIU_MODE_ERROR;
        }
        else{
            pctr->OnLineTest = ((nr.Niu0==SDE_OK)&&(nr.Niu1==SDE_OK))?SDE_OK:SDE_FAIL;
            if(pctr->OnLineTest == SDE_FAIL){
                if(nr.Niu0 == SDE_FAIL)
                    pctr->ErrInfo[ErrCount++] = SDE_NIU0_ONLINE_TEST_FAIL;
                if(nr.Niu1 == SDE_FAIL)
                    pctr->ErrInfo[ErrCount++] = SDE_NIU1_ONLINE_TEST_FAIL;    
            }
        }
    }
    if(pct->FacTest == 1){
        nr.Niu0 = -1;
        nr.Niu1 = -1;
        nr.ParamLen = sizeof(NiuTestStruct);
        
        rc = NiuLoopTest(&nt, &nr, EXLOOP);
        if(rc == SDE_NIU_MODE_ERROR){
             pctr->FacTest = SDE_FAIL;
             pctr->ErrInfo[ErrCount++] = SDE_NIU_MODE_ERROR;
        }
        else{
            pctr->FacTest = ((nr.Niu0==SDE_OK)&&(nr.Niu1==SDE_OK))?SDE_OK:SDE_FAIL;
            if(pctr->FacTest == SDE_FAIL){
                if(nr.Niu0 == SDE_FAIL)
                    pctr->ErrInfo[ErrCount++] = SDE_NIU0_FAC_TEST_FAIL;
                if(nr.Niu1 == SDE_FAIL)
                    pctr->ErrInfo[ErrCount++] = SDE_NIU1_FAC_TEST_FAIL;    
            }
        }    
    }
}

static void MT8980Test(CommTestStruct *pct, CommTestRsltStruct *pctr)
{
    TSTestStruct tsc,tsr;
    volatile int rc;
    
    if(pct->WrTest == 1){
        pctr->WrTest = (MT8980ChipWRTest()==SDE_OK)?SDE_OK:SDE_FAIL;
    }
    if(pct->OnLineTest == 1){
        tsc.ts0 = 0;
        tsc.ts1 = 1;
        tsc.ts2 = 1;
        tsc.ParamLen = sizeof(TSTestStruct);
        
        tsr.ts0 = -1;
        tsr.ts1 = -1;
        tsr.ts2 = -1;
        tsr.ParamLen = sizeof(TSTestStruct);
        
        rc = MT8980LoopTest(&tsc, &tsr);
        pctr->OnLineTest = ((tsr.ts1==SDE_OK)&&(tsr.ts2==SDE_OK))?SDE_OK:SDE_FAIL;
    }
    if(pct->FacTest == 1){
        tsc.ts0 = 1;
        tsc.ts1 = 1;
        tsc.ts2 = 1;
        tsc.ParamLen = sizeof(TSTestStruct);
        
        tsr.ts0 = -1;
        tsr.ts1 = -1;
        tsr.ts2 = -1;
        tsr.ParamLen = sizeof(TSTestStruct);
        
        rc = MT8980LoopTest(&tsc, &tsr);
        pctr->FacTest = ((tsr.ts0==SDE_OK)&&(tsr.ts1==SDE_OK)&&(tsr.ts2==SDE_OK))?SDE_OK:SDE_FAIL;
    }
}

static void HpiTest(TestRsltStruct *ptr)
{
    int i, j, DspNum, MaxDspNum, TestBlocks=10, RamBlock=10, ErrCount=0, ErrCount0;
    ULONG RetValue, WriteRam[10], ReadRam[10];
    
    MaxDspNum = (IsBPU2Installed()==TRUE)?4:2;
    
    for(DspNum = 0; DspNum < MaxDspNum; DspNum++) {
        ErrCount0 = 0;
        HPIReset(DspNum);
        
        HPIWriteULONG(DspNum, 0x80000002, 0x77777777);
        RetValue = HPIReadULONG(DspNum, 0x80000002);
        if(RetValue != 0x77777777) {
            ErrCount0++;
        }
        
        for(i = 0; i < TestBlocks; i++) {
            for (j = 0; j < RamBlock; j++)
                WriteRam[j] = (char)rand();
    
            HPIWriteRam(DspNum, i * RamBlock+0x80000000, RamBlock, WriteRam);
            HPIReadRam(DspNum, i * RamBlock+0x80000000, RamBlock, ReadRam);
            if(memcmp(WriteRam, ReadRam, RamBlock*4) != 0)
                ErrCount0++;
        }
        
        if(ErrCount0 != 0)
            ptr->ErrInfo[ErrCount++] = SDE_DSP0_FAIL - DspNum;
 
        HPIRunning(DspNum);
    }
    ptr->TestRslt = (ErrCount==0)?SDE_OK:SDE_FAIL;
}

static void SpiTest(TestRsltStruct *ptr)
{
    volatile int rc;
    int i, Slave, OpCodeRead, OpCodeWrite, TestByte=10, ErrCount0, ErrCount=0, CurDev;
    char pData[20], WriteValue;
    
    CurDev = SDN_SPI;
    tm_wkafter(2);
    for(i = 0; i < 16; i++){                        /* clear receive buffer */
        rc = sd_read(CurDev, pRecvBuf, MAX_TEST_BUF_LEN);
        if(rc == SDE_BUF_EMPTY) break;
    }
    
    for(Slave = 0; Slave < 2; Slave++){
        ErrCount0 = 0;
        rc = sd_cntrl(CurDev, SDC_SEL_SLAVE, &Slave, sizeof(int));
        rc = sd_cntrl(CurDev, SDC_PROGRAM_MODE, &Slave, sizeof(int));
        tm_wkafter(100);
        
        for (i = 1024; i < 1024 + TestByte; i++){
            /*  program enable */
        	rc = sd_cntrl(CurDev, SDC_SEL_SLAVE, &Slave, sizeof(int));
            pData[0] = pData[1] = 0xAC;
        	pData[2] = pData[3] = 0x53;
        	pData[4] = pData[5] = 0x00;
        	rc = sd_write(CurDev, pData, 6);
        	tm_wkafter(2);    
            rc = sd_read(CurDev, pRecvBuf, 6);
        	
            if(i >= 0 && i <= 255) OpCodeRead = 0x05;          /* data: 0x05; code : 0x01 */
            else if (i >= 256 && i <= 511) OpCodeRead = 0x0d;  /* data: 0x0d; code : 0x09 */
            else if (i >= 512 && i <= 1023) OpCodeRead = 0x15; /* data: 0x15; code : 0x11 */
            else if (i >= 1024 && i <= 2047) OpCodeRead = 0x25;/* data: 0x25; code : 0x21 */
            OpCodeWrite = OpCodeRead + 1;
        	
        	/*  write data memory */
        	rc = sd_cntrl(CurDev, SDC_SEL_SLAVE, &Slave, sizeof(int));
            pData[0] = pData[1] = OpCodeWrite;
        	pData[2] = pData[3] = i % 256;
        	pData[4] = pData[5] = WriteValue = (char)rand();
        	rc = sd_write(CurDev, pData, 6);
        	tm_wkafter(2);  
        	rc = sd_read(CurDev, pRecvBuf, 6);
        	
        	/*  read data memory */
        	rc = sd_cntrl(CurDev, SDC_SEL_SLAVE, &Slave, sizeof(int));
            pData[0] = pData[1] = OpCodeRead;
        	pData[2] = pData[3] = i % 256;
        	pData[4] = pData[5] = 0x00;
        	rc = sd_write(CurDev, pData, 6);
        	tm_wkafter(4);
            rc = sd_read(CurDev, pRecvBuf, 6);
        	
            if(pRecvBuf[4] != WriteValue)
                ErrCount0++;
        }
        if(ErrCount0 != 0)
            ptr->ErrInfo[ErrCount++] = SDE_RFIU0_FAIL - Slave;
        rc = sd_cntrl(CurDev, SDC_CLOSE, &Slave, sizeof(int));
        rc = sd_cntrl(CurDev, SDC_RUN, &Slave, sizeof(int));
    }
    ptr->TestRslt = (ErrCount==0)?SDE_OK:SDE_FAIL;
}

static int MT8980ChipWRTest(void)
{
    int i, j, ErrCount=0;
    char ReadVal, WriteVal;
    
    for (i = 0; i < 8; i++) {
        WriteVal = (0x18 | (i & 0x7));
        REG8(MT8980_BASE) = WriteVal;                     /* Conn Mem High(11) */
        ReadVal = REG8(MT8980_BASE);
        if(ReadVal != WriteVal)
            ErrCount++;
            
        for (j = 0; j < 32; j++) {
            WriteVal = 0x1;
            REG8(MT8980_BASE + 0x20 + j) = WriteVal;
            ReadVal = REG8(MT8980_BASE + 0x20 + j);
            if(ReadVal != WriteVal)
                ErrCount++;
        }
        
        WriteVal = (0x10 | (i & 0x7));
        REG8(MT8980_BASE) = WriteVal;                     /* Conn Mem Low(10) */
        ReadVal = REG8(MT8980_BASE);
        if(ReadVal != WriteVal)
            ErrCount++;
            
        for (j = 0; j < 32; j++) {
            WriteVal = j;
            REG8(MT8980_BASE + 0x20 + j) = WriteVal; 
            ReadVal = REG8(MT8980_BASE + 0x20 + j);
            if(ReadVal != WriteVal)
                ErrCount++;
        }
    }
    return (ErrCount==0)?SDE_OK:SDE_FAIL;
}

            

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
最好看的中文字幕久久| 麻豆精品一二三| 日韩精品电影一区亚洲| 国产精品1024久久| 在线播放/欧美激情| 国产精品九色蝌蚪自拍| 美女视频免费一区| 欧美色综合网站| 国产精品嫩草影院com| 久久精品久久精品| 精品视频1区2区3区| 国产精品久久综合| 国产一区二区三区高清播放| 欧美日韩在线播| 日韩美女啊v在线免费观看| 国产一区二区三区免费播放| 91麻豆精品国产91久久久| 亚洲区小说区图片区qvod| 精品在线视频一区| 9191成人精品久久| 亚洲蜜臀av乱码久久精品| 国产成人啪午夜精品网站男同| 欧美日韩不卡视频| 亚洲女女做受ⅹxx高潮| 成人精品高清在线| 亚洲国产精品精华液ab| 国产精品一区二区在线观看网站| 欧美一级电影网站| 日韩成人一区二区| 欧美日韩大陆一区二区| 日韩制服丝袜先锋影音| 欧美系列日韩一区| 亚洲午夜在线观看视频在线| 99久久国产综合精品色伊| 日韩一区中文字幕| heyzo一本久久综合| 国产精品免费久久| www.欧美精品一二区| 日本一区二区在线不卡| 成人动漫一区二区| 欧美激情一区二区三区| 国产综合色精品一区二区三区| 日韩欧美一级二级| 国产一区 二区 三区一级| 国产午夜精品理论片a级大结局| 国产呦精品一区二区三区网站| 国产农村妇女毛片精品久久麻豆| 国产成人99久久亚洲综合精品| 国产精品理论在线观看| av一本久道久久综合久久鬼色| 亚洲另类在线制服丝袜| 欧美日韩精品系列| 狂野欧美性猛交blacked| 欧美变态tickle挠乳网站| 福利电影一区二区| 日韩美女视频一区| 欧美一区二区三区在| 国产乱人伦精品一区二区在线观看| 欧美激情一区二区三区全黄| 91极品美女在线| 日本不卡的三区四区五区| 国产欧美日本一区二区三区| 99re这里只有精品视频首页| 亚洲国产精品久久一线不卡| 精品毛片乱码1区2区3区| 成人网在线免费视频| 一区二区三区在线观看欧美| 欧美一区二区三区四区在线观看 | 免费成人美女在线观看.| 精品少妇一区二区三区免费观看 | 久久99久久99小草精品免视看| 久久91精品久久久久久秒播| 欧美精品在线视频| 欧美国产成人精品| 91蜜桃网址入口| 日本美女一区二区三区| 国产偷v国产偷v亚洲高清| 91久久精品国产91性色tv| 日本免费新一区视频| 日韩美女精品在线| 久久色.com| 欧美精品在欧美一区二区少妇| 国产成人福利片| 青草国产精品久久久久久| 亚洲另类一区二区| 国产日韩欧美亚洲| 日韩一区二区免费视频| 色哟哟一区二区在线观看| 国产精品69毛片高清亚洲| 亚洲国产日韩av| 亚洲欧美日韩综合aⅴ视频| 久久精品一级爱片| 欧美xxxxxxxx| 91精品久久久久久蜜臀| 欧日韩精品视频| 成人黄色在线看| 国产成人综合自拍| 国产在线国偷精品免费看| 蜜桃精品视频在线| 亚洲gay无套男同| 一区二区三区 在线观看视频| 中国色在线观看另类| 日韩欧美另类在线| 欧美一区二区三区在线看| 欧美日韩日日骚| www..com久久爱| 成人污污视频在线观看| 国产精品2024| 国产成人欧美日韩在线电影| 国产一区二区三区久久悠悠色av | 色香蕉久久蜜桃| 99久久免费精品高清特色大片| 国产福利一区在线观看| 国产一区免费电影| 国产精品影视天天线| 久久福利视频一区二区| 美女脱光内衣内裤视频久久影院| 麻豆一区二区三区| 狠狠色狠狠色综合| 国产成人在线色| 成人综合日日夜夜| 一本久道中文字幕精品亚洲嫩| 91九色02白丝porn| 欧美视频三区在线播放| 欧美日韩aaaaa| 精品国产露脸精彩对白| 精品盗摄一区二区三区| www国产亚洲精品久久麻豆| 国产亚洲精品aa午夜观看| 国产精品久久久久7777按摩| 亚洲免费在线播放| 日韩有码一区二区三区| 秋霞午夜鲁丝一区二区老狼| 日韩电影在线一区二区三区| 欧美a级一区二区| 丁香婷婷综合五月| 色综合久久88色综合天天| 欧美日韩在线不卡| 欧美精品一区男女天堂| 中文字幕中文在线不卡住| 一区二区三区高清不卡| 奇米精品一区二区三区在线观看| 国产精一品亚洲二区在线视频| 不卡视频在线看| 制服丝袜中文字幕一区| 久久精品一区八戒影视| 亚洲国产aⅴ成人精品无吗| 麻豆精品一区二区综合av| www.综合网.com| 欧美一区二区三区日韩视频| 国产精品丝袜在线| 亚洲444eee在线观看| 国产福利视频一区二区三区| 欧美综合色免费| 久久久一区二区三区| 亚洲一二三四区| 大桥未久av一区二区三区中文| 欧美午夜寂寞影院| 久久久蜜臀国产一区二区| 亚洲高清在线视频| 成人免费的视频| 欧美一级免费大片| 亚洲欧美视频在线观看| 国产成人精品影视| 欧美精品高清视频| 中文在线资源观看网站视频免费不卡| 亚洲一区二区三区美女| 懂色av一区二区三区蜜臀| 日韩欧美在线一区二区三区| 一区二区三区国产豹纹内裤在线| 国产传媒欧美日韩成人| 日韩区在线观看| 亚洲一级二级在线| 99国产精品国产精品久久| 精品国产乱码久久| 麻豆精品国产91久久久久久| 欧美四级电影网| 国产精品国产三级国产普通话蜜臀 | 欧美一级在线观看| 国产精品情趣视频| 极品销魂美女一区二区三区| 欧美日韩综合色| 亚洲黄色av一区| 97超碰欧美中文字幕| 国产亚洲制服色| 六月丁香综合在线视频| 欧美精品777| 亚洲电影激情视频网站| 欧美性色黄大片| 亚洲自拍偷拍欧美| 色香色香欲天天天影视综合网| 中文字幕一区二区三区不卡在线| 国产99久久久久久免费看农村| 精品福利一区二区三区免费视频| 男人操女人的视频在线观看欧美| 欧美裸体bbwbbwbbw| 亚瑟在线精品视频| 欧美区一区二区三区| 午夜精品免费在线观看| 欧美日韩综合色|