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

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

?? card.c

?? Wince4.2 BSP for SH4 engineering development board
?? C
?? 第 1 頁 / 共 2 頁
字號:

//
//      Copyright (c) Renesas Technology Corp. 1999-2003 All Rights Reserved.
//
//      LAN91C111 network hardware driver
//
//----------------------------------------------------------------------------
//
//  FILE      : CARD.C
//  CREATED   : 1998. 8.21 (for NE2000 driver)
//  MODIFIED  : 2003.08.06
//  AUTHOR    : Renesas Technology Corp.
//  HARDWARE  : RENESAS HS7751RSTC01H (S1-E, ITS-DS5)
//  TARGET OS : Microsoft(R) Windows(R) CE .NET 4.2
//  FUNCTION  : Card-specific driver functions
//  HISTORY   :
//              1999.04.26
//              - Released as SMSC LAN91C94 driver for PFM-DS6x by modifying
//               NE2000 driver in PB2.12 reference drivers.
//              (Detailed history for PFM-DS6x are omitted.)
//              2002.05.21
//              - Modified for HS7751RSTC01H. Target device is changed to
//               LAN91C111.
//              2002.09.05
//              - Header style is changed and file informations are added.
//              - Unreferenced header file inclusions are removed.

/*++
THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
PARTICULAR PURPOSE.
Copyright (c) 1995-1998 Microsoft Corporation.  All rights reserved.
--*/

#include "precomp.h"
#include "smc91c94.h"

PBYTE   EtherNetBase;
extern  PVOID   RegisterBase;
extern  WORD    MAC0,MAC1,MAC2;


void LAN91C111Init();
void PHYDiag();
void WRITE_PHY(unsigned char address, unsigned short data);
unsigned short READ_PHY(unsigned char address);
void SendData0();
void SendData1();
void SendDataZ();



//#ifdef    DEBUG
void    printregs(void)
{
    WORD    BankReg = ReadWord(BANK_SELECT);
    DEBUGMSG(1, (TEXT("SMSC91C94 Registers\r\n")));

    DEBUGMSG(1, (TEXT("  BANK0\r\n")));
    SelectBank(BANK0);
    DEBUGMSG(1, (TEXT("    TCR        : 0x%04X\r\n"),ReadWord(TCR)));
    DEBUGMSG(1, (TEXT("    EPH_STATUS : 0x%04X\r\n"),ReadWord(EPH_STATUS)));
    DEBUGMSG(1, (TEXT("    RCR        : 0x%04X\r\n"),ReadWord(RCR)));
    DEBUGMSG(1, (TEXT("    COUNTER    : 0x%04X\r\n"),ReadWord(COUNTER)));
    DEBUGMSG(1, (TEXT("    MIR        : 0x%04X\r\n"),ReadWord(MIR)));
    DEBUGMSG(1, (TEXT("    MCR        : 0x%04X\r\n"),ReadWord(MCR)));

    DEBUGMSG(1, (TEXT("  BANK1\r\n")));
    SelectBank(BANK1);
    DEBUGMSG(1, (TEXT("    CONFIG     : 0x%04X\r\n"),ReadWord(CONFIG)));
    DEBUGMSG(1, (TEXT("    BASE       : 0x%04X\r\n"),ReadWord(BASE)));
    DEBUGMSG(1, (TEXT("    ADDR0      : 0x%04X\r\n"),ReadWord(ADDR0)));
    DEBUGMSG(1, (TEXT("    ADDR1      : 0x%04X\r\n"),ReadWord(ADDR1)));
    DEBUGMSG(1, (TEXT("    ADDR2      : 0x%04X\r\n"),ReadWord(ADDR2)));
    DEBUGMSG(1, (TEXT("    GENERAL    : 0x%04X\r\n"),ReadWord(GENERAL)));
    DEBUGMSG(1, (TEXT("    CONTROL    : 0x%04X\r\n"),ReadWord(CONTROL)));

    DEBUGMSG(1, (TEXT("  BANK2\r\n")));
    SelectBank(BANK2);
    DEBUGMSG(1, (TEXT("    MMU_CMD    : 0x%04X\r\n"),ReadWord(MMU_CMD)));
    DEBUGMSG(1, (TEXT("    PNR_ARR    : 0x%04X\r\n"),ReadWord(PNR_ARR)));
    DEBUGMSG(1, (TEXT("    FIFO_PORTS : 0x%04X\r\n"),ReadWord(FIFO_PORTS)));
    DEBUGMSG(1, (TEXT("    POINTER    : 0x%04X\r\n"),ReadWord(POINTER)));
    DEBUGMSG(1, (TEXT("    DATA_1     : 0x%04X\r\n"),ReadWord(DATA_1)));
    DEBUGMSG(1, (TEXT("    DATA_2     : 0x%04X\r\n"),ReadWord(DATA_2)));
    DEBUGMSG(1, (TEXT("    INTERRUPT  : 0x%04X\r\n"),ReadWord(INT_REG)));

    DEBUGMSG(1, (TEXT("  BANK3\r\n")));
    SelectBank(BANK3);
    DEBUGMSG(1, (TEXT("    MULTICAST1 : 0x%04X\r\n"),ReadWord(MULTICAST1)));
    DEBUGMSG(1, (TEXT("    MULTICAST2 : 0x%04X\r\n"),ReadWord(MULTICAST2)));
    DEBUGMSG(1, (TEXT("    MULTICAST3 : 0x%04X\r\n"),ReadWord(MULTICAST3)));
    DEBUGMSG(1, (TEXT("    MULTICAST4 : 0x%04X\r\n"),ReadWord(MULTICAST4)));
    DEBUGMSG(1, (TEXT("    MGMT       : 0x%04X\r\n"),ReadWord(MGMT)));
    DEBUGMSG(1, (TEXT("    REVISION   : 0x%04X\r\n"),ReadWord(REVISION)));
    DEBUGMSG(1, (TEXT("    ERCV       : 0x%04X\r\n"),ReadWord(ERCV)));

    DEBUGMSG(1, (TEXT("  Bank select  : 0x%04X\r\n"),BankReg));

    WriteWord(BANK_SELECT,BankReg);
}
#define PrintRegs   printregs()
//#else 
//#define   PrintRegs
//#endif    DEBUG

BOOLEAN
CardSlotTest(
    IN PCELAN_ADAPTER Adapter
    );

BOOLEAN
CardRamTest(
    IN PCELAN_ADAPTER Adapter
    );


#pragma NDIS_PAGEABLE_FUNCTION(CardCheckParameters)

BOOLEAN CardCheckParameters(
    IN PCELAN_ADAPTER Adapter
)

/*++

Routine Description:

    Checks that the I/O base address is correct.

Arguments:

    Adapter - pointer to the adapter block.

Return Value:

    TRUE, if IoBaseAddress appears correct.

--*/

{
    return TRUE;
}

#pragma NDIS_PAGEABLE_FUNCTION(CardRamTest)

BOOLEAN
CardRamTest(
    IN PCELAN_ADAPTER Adapter
    )

/*++

Routine Description:

    Finds out how much RAM the adapter has.  It starts at 1K and checks thru
    60K.  It will set Adapter->RamSize to the appropriate value iff this
    function returns TRUE.

Arguments:

    Adapter - pointer to the adapter block.

Return Value:

    TRUE, if all goes well, else FALSE.

--*/

{
    return(TRUE);

}

#pragma NDIS_PAGEABLE_FUNCTION(CardInitialize)

BOOLEAN
CardInitialize(
    IN PCELAN_ADAPTER Adapter
    )

/*++

Routine Description:

    Initializes the card into a running state.

Arguments:

    Adapter - pointer to the adapter block.

Return Value:

    TRUE, if all goes well, else FALSE.

--*/

{

    DEBUGMSG(ZONE_INIT, (TEXT("91C94:CardInitialize - Entered.\r\n")));
    
    // VirtualAlloc Register Area for HS7751RSTC01H LAN Controller Base Address 
    EtherNetBase = (PBYTE)VirtualAlloc(0,0x20,MEM_RESERVE,PAGE_NOACCESS);
    DEBUGMSG(ZONE_INIT, (TEXT("91C94:VirtualAlloc at 0x%x.\r\n"),EtherNetBase));
    if(!VirtualCopy((PVOID)EtherNetBase,(PVOID)RegisterBase,0x20,PAGE_READWRITE|PAGE_NOCACHE)) {
            DEBUGMSG(ZONE_INIT, (TEXT("91C94:VirtualCopy failed.\r\n")));
        RETAILMSG(1,(TEXT("91C94:VirtualCopy failed.\r\n")));
    }
    
    // Reset the 91C94
    SelectBank(BANK0);
    WriteWord(RCR,RCR_SOFTRESET);
    Sleep(10);
    WriteWord(RCR,0);
    Sleep(10);
    
    // Initialize the control register
    SelectBank(BANK1);
    WriteWord(CONTROL,0x0020);

    // Reset MMU
    SelectBank(BANK2);
    WriteWord(MMU_CMD,MC_RESET);
    {
        int i;
        for (i=0;i<10000;i++) {
            if(!(ReadWord(MMU_CMD)&MC_BUSY)) {
                break;
            }
        }
        if (i==10000) {
                DEBUGMSG(ZONE_INIT, (TEXT("91C94:MMU reset failed.\r\n")));
                RETAILMSG(1, (TEXT("91C94:MMU reset failed.\r\n")));
            return(FALSE);
        }
    }

    DEBUGMSG(ZONE_INIT, (TEXT("91C94:CardInitialize - Finished.\r\n")));
    RETAILMSG(1, (TEXT("91C94:CardInitialize - Finished.\r\n")));

    return(TRUE);
}


#pragma NDIS_PAGEABLE_FUNCTION(CardReadEthernetAddress)

BOOLEAN CardReadEthernetAddress(
    IN PCELAN_ADAPTER Adapter
)

/*++

Routine Description:

    Reads in the Ethernet address from the LAN91C94.

Arguments:

    Adapter - pointer to the adapter block.

Return Value:

    The address is stored in Adapter->PermanentAddress, and StationAddress if it
    is currently zero.

--*/

{
    // Read MAC address registers
    SelectBank(BANK1);
    Adapter->PermanentAddress[0] = ReadWord(ADDR0) & 0xFF;
    Adapter->PermanentAddress[1] = ReadWord(ADDR0) >> 8;
    Adapter->PermanentAddress[2] = ReadWord(ADDR1) & 0xFF;
    Adapter->PermanentAddress[3] = ReadWord(ADDR1) >> 8;
    Adapter->PermanentAddress[4] = ReadWord(ADDR2) & 0xFF;
    Adapter->PermanentAddress[5] = ReadWord(ADDR2) >> 8;

#if 1   // for ROM
    if(
    ((Adapter->PermanentAddress[0] == 0) &&
     (Adapter->PermanentAddress[1] == 0) &&
     (Adapter->PermanentAddress[2] == 0) &&
     (Adapter->PermanentAddress[3] == 0) &&
     (Adapter->PermanentAddress[4] == 0) &&
     (Adapter->PermanentAddress[5] == 0) )
    ||
    ((Adapter->PermanentAddress[0] == 0xff) &&
     (Adapter->PermanentAddress[1] == 0xff) &&
     (Adapter->PermanentAddress[2] == 0xff) &&
     (Adapter->PermanentAddress[3] == 0xff) &&
     (Adapter->PermanentAddress[4] == 0xff) &&
     (Adapter->PermanentAddress[5] == 0xff) ) )
    {
       if (Adapter->PermanentAddress[0] == 0xff)
       RETAILMSG(1, (TEXT("CELAN: !!Warning!! EEPROM doesn't have MAC address. \r\n")));
       
       if ( (MAC0 == 0) && (MAC1 == 0) && (MAC2 == 0) )
       {
       RETAILMSG(1, (TEXT("CELAN: !!ERROR!! MAC address is not specified. \r\n")));
       return FALSE;    // Registry not set
       }
       else
       {
       // We do not have EEPROM, so let's set MAC address by software
       // MAC address is specified in the registry
#define SWAPB(Word) ((Word<<8)&0xff00 | (Word>>8)&0x00ff)
       SelectBank(BANK1);
       WriteWord(ADDR0,SWAPB(MAC0));
       WriteWord(ADDR1,SWAPB(MAC1));
       WriteWord(ADDR2,SWAPB(MAC2));

       }
   }
   // IP address save again
   Adapter->PermanentAddress[0] = ReadWord(ADDR0) & 0xFF;
   Adapter->PermanentAddress[1] = ReadWord(ADDR0) >> 8;
   Adapter->PermanentAddress[2] = ReadWord(ADDR1) & 0xFF;
   Adapter->PermanentAddress[3] = ReadWord(ADDR1) >> 8;
   Adapter->PermanentAddress[4] = ReadWord(ADDR2) & 0xFF;
   Adapter->PermanentAddress[5] = ReadWord(ADDR2) >> 8;
#endif  // for ROM
      
    RETAILMSG(1,
        (TEXT("CELAN: PermanentAddress [ %02x-%02x-%02x-%02x-%02x-%02x ]\r\n"),
            Adapter->PermanentAddress[0],
            Adapter->PermanentAddress[1],
            Adapter->PermanentAddress[2],
            Adapter->PermanentAddress[3],
            Adapter->PermanentAddress[4],
            Adapter->PermanentAddress[5]));

    //
    // Use the burned in address as the station address, unless the
    // registry specified an override value.
    //
    if ((Adapter->StationAddress[0] == 0x00) &&
        (Adapter->StationAddress[1] == 0x00) &&
        (Adapter->StationAddress[2] == 0x00) &&
        (Adapter->StationAddress[3] == 0x00) &&
        (Adapter->StationAddress[4] == 0x00) &&
        (Adapter->StationAddress[5] == 0x00)
    )
    {
        Adapter->StationAddress[0] = Adapter->PermanentAddress[0];
        Adapter->StationAddress[1] = Adapter->PermanentAddress[1];
        Adapter->StationAddress[2] = Adapter->PermanentAddress[2];
        Adapter->StationAddress[3] = Adapter->PermanentAddress[3];
        Adapter->StationAddress[4] = Adapter->PermanentAddress[4];
        Adapter->StationAddress[5] = Adapter->PermanentAddress[5];
    }

    return(TRUE);
}

BOOLEAN
CardSetup(
    IN PCELAN_ADAPTER Adapter
    )

/*++

Routine Description:

    Sets up the card.

Arguments:

    Adapter - pointer to the adapter block, which must be initialized.

Return Value:

    TRUE if successful.

--*/

{
    UINT i;
    UINT Filter;
    USHORT Tmp;

    DEBUGMSG(ZONE_FUNCTION, (TEXT("+CELAN:CardSetup\r\n")));

    //
    // Write to and read from RCR to make sure it is there.
    //
    DEBUGMSG(ZONE_INIT, (TEXT("91C94:Reset 91C94\r\n")));
    SelectBank(BANK0);
    WriteWord(RCR,RCR_SOFTRESET);
    Sleep(10);
    Tmp = ReadWord(RCR);

    if ((Tmp & RCR_SOFTRESET) != RCR_SOFTRESET) {
        DEBUGMSG(ZONE_INIT,
            (TEXT("91C94:CardSetup - Tmp = 0x%x, Expected 0x%x\r\n"),
            Tmp, (RCR_SOFTRESET)));
        return(FALSE);
    }
    WriteWord(RCR,0);
    Sleep(10);

    // Initialize the control register
    DEBUGMSG(ZONE_INIT, (TEXT("91C94:Init Control register\r\n")));
    SelectBank(BANK1);
    WriteWord(CONTROL,0x0920);

    //
    // Set Loopback Mode
    //
//  DEBUGMSG(ZONE_INIT, (TEXT("91C94:Set loopbacke mode\r\n")));
//  SelectBank(BANK0);
//  WriteWord(TCR,TCR_LOOP);

    //
    // Clear all pending interrupts
    //
    DEBUGMSG(ZONE_INIT, (TEXT("91C94:Cleare current pending interrupt\r\n")));
    SelectBank(BANK2);
    WriteWord(INT_REG,ReadWord(INT_REG));


    //
    // Set Interrupt Mask Register
    //
    DEBUGMSG(ZONE_INIT, (TEXT("91C94:Set interrupt mask reg %02x\r\n"),Adapter->NicInterruptMask));
    SelectBank(BANK2);
    WriteWord(INT_REG,Adapter->NicInterruptMask);


#if 0   // Station Address setting is in CardInitialize
    //
    // Set Station Address
    //
    DEBUGMSG(ZONE_INIT, (TEXT("91C94:Set station address regs\r\n")));
    SelectBank(BANK1);
    WriteWord(ADDR0,Adapter->StationAddress[0] | 
            Adapter->StationAddress[1]<<8);
    WriteWord(ADDR1,Adapter->StationAddress[2] | 
            Adapter->StationAddress[3]<<8);
    WriteWord(ADDR2,Adapter->StationAddress[4] | 
            Adapter->StationAddress[5]<<8);
#endif //#if 0

    Filter = Adapter->PacketFilter;

    //
    // Write out the multicast addresses
    //
    SelectBank(BANK3);
    for (i = 0; i < 8; i+=2)
    {
        WriteWord(MULTICAST1+i,
            (USHORT)((Filter & NDIS_PACKET_TYPE_ALL_MULTICAST) ?
            0xffff : Adapter->NicMulticastRegs[i] 
            | Adapter->NicMulticastRegs[i+1]<<8));
    }

    PrintRegs;

    DEBUGMSG(ZONE_FUNCTION, (TEXT("-CELAN:CardSetup\r\n")));

    //
    // ... but it is still in loopback mode.
    //
    return(TRUE);
}

VOID CardStop(
    IN PCELAN_ADAPTER Adapter
)

/*++

Routine Description:

    Stops the card.

Arguments:

    Adapter - pointer to the adapter block

Return Value:

    None.

--*/

{
    DEBUGMSG(ZONE_FUNCTION, (TEXT("+CELAN:CardStop\r\n")));

    SelectBank(BANK0);
    WriteWord(RCR,0);

    DEBUGMSG(ZONE_FUNCTION, (TEXT("-CELAN:CardStop\r\n")));
}

BOOLEAN CardReset(
    IN PCELAN_ADAPTER Adapter
)

/*++

Routine Description:

    Resets the card.

Arguments:

    Adapter - pointer to the adapter block

Return Value:

    TRUE if everything is OK.

--*/

{
    WORD Tmp;

    DEBUGMSG(ZONE_FUNCTION, (TEXT("+CELAN:CardReset\r\n")));

    //
    // Stop the chip
    //
    CardStop(Adapter);

    //
    // Write to and read from RCR to make sure it is there.
    //
    DEBUGMSG(ZONE_INIT, (TEXT("91C94:Reset 91C94\r\n")));
    SelectBank(BANK0);
    WriteWord(RCR,RCR_SOFTRESET);
    Sleep(10);
    Tmp = ReadWord(RCR);

    if ((Tmp & RCR_SOFTRESET) != RCR_SOFTRESET) {
        DEBUGMSG(ZONE_ERROR,
            (TEXT("91C94:CardSetup - Tmp = 0x%x, Expected 0x%x\r\n"),
            Tmp, (RCR_SOFTRESET)));
        return(FALSE);
    }
    WriteWord(RCR,0);
    Sleep(10);

    //
    // Restart the chip
    //
    CardStart(Adapter);

    DEBUGMSG(ZONE_FUNCTION, (TEXT("-CELAN:CardReset\r\n")));

    return TRUE;
}

ULONG
CardComputeCrc(
    IN PUCHAR Buffer,
    IN UINT Length
    )

/*++

Routine Description:

    Runs the AUTODIN II CRC algorithm on buffer Buffer of
    length Length.

Arguments:

    Buffer - the input buffer

    Length - the length of Buffer

Return Value:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品欧美久久久久无广告 | 91精品国产一区二区三区香蕉| 国产成人亚洲综合a∨婷婷 | 亚洲三级电影网站| 日韩欧美国产午夜精品| 精品三级在线观看| 久久久久久夜精品精品免费| 欧美精品一区二| 精品久久久久av影院| 久久青草欧美一区二区三区| 欧美成人一级视频| 2017欧美狠狠色| 国产精品久久久久久久浪潮网站| 国产欧美一区二区精品仙草咪| 欧美国产一区二区在线观看| 中文字幕欧美激情| 一区二区三区中文字幕精品精品| 一区二区国产盗摄色噜噜| 午夜影院在线观看欧美| 老司机午夜精品| 国产大片一区二区| 欧美性淫爽ww久久久久无| 欧美电影在线免费观看| 久久亚洲欧美国产精品乐播 | 亚洲三级在线观看| 日本免费新一区视频| 久久66热偷产精品| av爱爱亚洲一区| 9191精品国产综合久久久久久| 91精品国产综合久久久蜜臀图片 | 亚洲免费视频中文字幕| 伊人开心综合网| 精品在线视频一区| 91免费在线看| 精品国产伦一区二区三区观看体验 | 亚洲精品一区二区精华| 亚洲欧洲日韩女同| 免费的国产精品| 99久久精品情趣| 欧美xxx久久| 一区二区三区视频在线看| 韩国精品一区二区| 日本乱码高清不卡字幕| 国产无一区二区| 亚洲成在人线免费| 成熟亚洲日本毛茸茸凸凹| 日韩一级黄色大片| 一区二区三区免费看视频| 国产精品一区在线| 欧美日韩精品一区二区天天拍小说 | 久久久噜噜噜久噜久久综合| 亚洲欧美日韩久久| 国产呦精品一区二区三区网站| 欧美日韩精品欧美日韩精品一| 国产精品乱码久久久久久| 日韩黄色片在线观看| 色综合婷婷久久| 国产拍揄自揄精品视频麻豆| 精品一区二区三区免费播放 | 亚洲一级在线观看| 波多野结衣的一区二区三区| 精品久久久网站| 亚洲午夜一二三区视频| 91丨九色丨黑人外教| 日本一区免费视频| 久久99久久99精品免视看婷婷| 欧美日韩国产bt| 一区二区三区在线观看欧美| 99精品视频在线免费观看| www日韩大片| 久久99热这里只有精品| 日韩欧美国产不卡| 奇米影视在线99精品| 这里是久久伊人| 午夜精品影院在线观看| 欧美日韩亚洲综合一区| 一区二区三区视频在线看| 一本久久a久久精品亚洲| 综合欧美一区二区三区| 波多野结衣亚洲| 一区二区三区四区乱视频| 91在线观看免费视频| 亚洲免费观看高清完整版在线观看| 99久久精品国产一区二区三区| 成人免费一区二区三区视频| 色av综合在线| 亚洲高清不卡在线观看| 日韩一区二区在线观看| 老色鬼精品视频在线观看播放| 日韩一区二区视频在线观看| 国内国产精品久久| 国产精品免费av| 99精品久久免费看蜜臀剧情介绍| 亚洲色图欧美激情| 欧美日韩国产精品自在自线| 五月天中文字幕一区二区| 日韩欧美一区二区免费| 国产剧情一区二区三区| 国产精品大尺度| 欧美日韩国产bt| 狠狠色丁香久久婷婷综合丁香| 国产精品毛片久久久久久| 色偷偷久久一区二区三区| 亚洲成人自拍网| 国产亚洲欧美日韩俺去了| 99国产一区二区三精品乱码| 天堂蜜桃一区二区三区| 久久精品人人做人人爽97| 一本在线高清不卡dvd| 天堂久久一区二区三区| 久久精品一区二区三区不卡牛牛| 色综合网色综合| 激情文学综合丁香| 亚洲日本在线a| 久久精品视频一区| 7777精品伊人久久久大香线蕉完整版| 国产综合久久久久久久久久久久| 亚洲视频 欧洲视频| 久久亚洲二区三区| 在线观看亚洲成人| 国产精品一区二区91| 午夜电影网一区| 亚洲少妇30p| 久久久久久久电影| 欧美肥妇bbw| 91精彩视频在线观看| 韩国精品在线观看| 三级欧美韩日大片在线看| 国产精品国产精品国产专区不片| 91精品免费在线观看| 欧美日韩一区成人| 99久久99久久精品国产片果冻| 激情综合一区二区三区| 亚洲一二三区在线观看| 亚洲免费毛片网站| 国产精品色哟哟| 精品成人免费观看| 91精品国产欧美一区二区成人 | av欧美精品.com| 国产露脸91国语对白| 毛片av中文字幕一区二区| 亚洲国产精品影院| 亚洲欧美偷拍卡通变态| 欧美国产丝袜视频| 久久久国际精品| 26uuu欧美| 久久久久久一二三区| 欧美电影免费观看高清完整版| 欧美日本国产一区| 91精品国产一区二区三区蜜臀| 欧美三级欧美一级| 欧美视频中文字幕| 欧美猛男男办公室激情| 欧美调教femdomvk| 91精品国产丝袜白色高跟鞋| 欧美美女bb生活片| 日韩一区二区中文字幕| 欧美年轻男男videosbes| 欧美三级日韩三级| 91麻豆精品国产91| 欧美一区二区在线播放| 日韩欧美一级二级三级久久久| 日韩一区二区不卡| 精品理论电影在线观看| 久久夜色精品国产欧美乱极品| 2020日本不卡一区二区视频| 久久精品视频一区二区三区| 国产精品久久二区二区| 亚洲一区自拍偷拍| 日韩av在线免费观看不卡| 国内国产精品久久| eeuss鲁片一区二区三区| 99r国产精品| 欧美电影一区二区| 久久久久综合网| 综合久久综合久久| 亚洲va欧美va人人爽| 激情欧美日韩一区二区| 成人精品视频.| 在线这里只有精品| 精品国产亚洲在线| 最好看的中文字幕久久| 日本亚洲欧美天堂免费| 成人黄色小视频在线观看| 91精品视频网| 久久亚区不卡日本| 亚洲色图一区二区三区| 日韩av中文在线观看| 大胆亚洲人体视频| 欧美日韩精品福利| 国产精品国产三级国产有无不卡 | 欧美日韩国产影片| xf在线a精品一区二区视频网站| 国产精品伦理在线| 视频一区二区三区中文字幕| 国产精品一二三在| 欧美日韩国产免费| 国产精品午夜电影| 蜜桃av一区二区| 一本大道综合伊人精品热热|