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

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

?? usbhcdohcilib.c

?? 基于VXWORK環境的ARM9 S2410的USB驅動程序
?? C
?? 第 1 頁 / 共 5 頁
字號:
/* usbHcdOhciLib.c - Host Controller Driver (HCD) for OHCI *//* Copyright 2000-2002 Wind River Systems, Inc. *//*Modification history--------------------01p,22may02,wef  Fix SPR 73864 - USB crashes when cable is disconnected while 		 iscoh transfer is in progress - valid only on PPC, MIPS and 		 STRONGARM, not X86.010,29apr02,wef  Fix SPR's 71274, 71273 and clean up fncAttach().01p,18mar02,h_k  made buffer swap's in several places - spr # 73896 and 73920.01o,05feb01,wef  explicitly power to ports on initial HC attachment.01k,13dec01,wef  merge from veloce view01j,24jul01,wef  Fixed SPR #6861701i,23jul01,wef  Fixed SPR #68202 and SPR #6820901h,01jan01,wef  Fixed alignment problems w/ code, general clean up01g,12apr00,wef  Fixed uninitialized variable warning: controlin assignTds(),		 fixed a comment that was messing up the man page generation01f,27mar00,rcb  Fix bug in scheduling interrupt EDs which allowed an ED		 to be circularly-linked.01e,20mar00,rcb  Flush all cache buffers during assignTds() to avoid 		 cache-line boundary problems with some CPU architectures		 (e.g., MIPS).01d,17mar00,rcb  Add code to update tdHead in ED structure when removing		 TDs from queue...corrects bug which allowed OHCI ctlr		 to try to process an aborted TD.01c,10mar00,rcb  Fix bug in pipe destroy logic which attempted to free		 non-existent EDs for root hub.		 Add "volatile" declaration in HC_DWORD_IN/OUT().01b,26jan00,rcb  Change references to "bytesPerFrame" to "bandwidth" in		 pipe creation logic.		 Modify isoch. timing to maintain rate as specified by		 pipe bandwidth parameter.		 Fix big vs. little-endian bug in unscheduleControlIrp()		 and unscheduleBulkIrp().01a,05oct99,rcb  First.*//*DESCRIPTIONThis is the HCD (host controller driver) for OHCI.  This file implementslow-level functions required by the client (typically the USBD) to talk tothe underlying USB host controller hardware.  The <param> to the HRB_ATTACH request should be a pointer to a PCI_CFG_HEADER which contains the PCI configuration header for theOpenHCI host controller to be managed.	Each invocation of the HRB_ATTACHfunction will return an HCD_CLIENT_HANDLE for which a single host controllerwill be exposed.NOTE: This HCD implementation assumes that the caller has already initializedthe osServices and handleFuncs libraries by calling ossInitialize() andusbHandleInitialize(), respectively.  The USBD implementation guarantees thatthese libraries have been initialized prior to invoking the HCD.Regarding IRP callbacks...There are two callback function pointers in each IRP, <usbdCallback> and<userCallback>.  By convention, if a non-NULL <usbdCallback> is supplied,then the HCD invokes only the <usbdCallback> upon IRP completion - and it isthe USBD's responsibility to invoke the <userCallback>.  If no <usbdCallback>is provided, then the HCD invokes the <userCallback> directly.	Typically, all IRPs are delivered to the HCD through the USBD and a non-NULL <usbdCallback>will in fact be provided.Regarding OHCI frame lists...We use the OHCI frame list largely as anticipated in the OpenHCI specification.Each of the 32 interrupt list heads points either to an interrupt ED (endpointdescriptor) or to an isochronous ED "anchor" (at which point all 32 lists converge).  When one or more interrupt pipes are created, EDs for these pipes will be inserted in the interrupt list one or more times, corresponding to thedesired interrupt polling interval.  The last interrupt ED in each list points to the common isochronous anchor ED.  While clients can request any interrupt service interval they like, the algorithms here always choose aninterval which is the largest power of 2 less than or equal to the client'sdesired interval.  For example, if a client requests an interval of 20msec, theHCD will select a real interval of 16msec.  In each frame work list, the leastfrequently scheduled EDs appear ahead of more frequently scheduled EDs.  Sinceonly a single ED is actually created for each interrupt transfer, the individualframe lists actually "merge" at each interrupt ED.   The OpenHCI host controller maintains separate lists for control and bulktransfers.  OpenHCI allows for a control/bulk service ratio, so the control listcan be serviced n times for each servicing of the bulk list.  In the presentimplementation, we use a service ratio of 3:1.Regarding bus time calculations...The host controller driver is responsible for ensuring that certain kinds ofscheduled transfers never exceed the time available in a USB frame.  The HCD and the USBD work cooperatively to ensure this.  For its part, the USBD never allows isochronous and interrupt transfers to be scheduled which would exceed 90% of the bus bandwidth.  However, the USBD will freely allow control and bulk pipes to be created, as these types of transfers take whatever bus time is left over after isochronous and interrupt transfers have been schedule - and theHCD gives priority to control transfers.The HCD keeps a running total of the worst case amount of bus time alloted to active isochronous and interrupt transfers.  As for control and bulk transfers,the HC theoretically allows us to schedule as many of them as we desire, and itkeeps track of how much time remains in each frame, executing only as many ofthese transfers as will fit.  However, the HC requires that the driver scheduleonly as many low speed control transfers (as opposed to full speed controltransfers) as can actually fit within the frame.  Therefore, after taking intoaccount the time already allotted to isochronous and interrupt transfers, theHCD only schedules as many low speed control transfers as can fit within thecurrent frame - and full speed control and bulk transfers follow. *//* includes */#include "usb/usbPlatform.h"#include "string.h"#include "memLib.h"	    /* memory sub-allocation functions */#include "cacheLib.h"		/* cache functions */#include "semLib.h"		/* cache functions */#include "usb/ossLib.h"#include "usb/usbHandleLib.h"#include "usb/pciConstants.h"#include "usb/usbPciLib.h"#include "usb/usbLib.h"#include "drv/usb/usbHcd.h"#include "drv/usb/usbOhci.h"#include "drv/usb/usbHcdOhciLib.h"/* defines */#define PENDING 	1#define HCD_HOST_SIG	    ((UINT32) 0x00cd0080)#define HCD_PIPE_SIG	    ((UINT32) 0x00cd0081)#define MAX_INT_DEPTH	    8	    /* max depth of pending interrupts */#define INT_TIMEOUT	5000	/* wait 5 seconds for int routine to exit */#define BIT_TIMEOUT	1000	/* max time to wait for a bit change */#define HC_TIMEOUT_SRVC_INTERVAL    1000    /* milliseconds *//* HC_HOST_DELAY and HC_HUB_LS_SETUP are host-controller specific. * The following values are estimates for the OHCI controller. */#define HC_HOST_DELAY	((UINT32) 500L)     /* 500 ns, est. */#define HC_HUB_LS_SETUP ((UINT32) 500L)     /* 500 ns, est. *//* OHCI constants unique to this driver implementation. */#define REQUIRED_OHCI_LEVEL 0x10    /* OHCI rev 1.0 or higher */#define MAX_FRAME_OVERHEAD  210 /* cf. OHCI spec. sec 5.4 */#define MAX_ROOT_PORTS	    8	/* max root hub ports we support */#define OHCI_HUB_CONTR_CURRENT	0   /* root hub controller current */#define OHCI_HUB_INTERVAL   255 /* root hub polling interval */#define TD_COUNT_GEN	    2	/* count of TDs for generic pipe */#define TD_COUNT_ISO	    16	/* count of TDs for isoch pipe */#ifndef USB_BUFFER_SWAP#define USB_BUFFER_SWAP(pBuf,len)   /* default: don't swap buffers */#endif  /* USB_BUFFER_SWAP */#ifndef SYS_OHCI_RESET#define SYS_OHCI_RESET()	/* default: don't need reset */#endif  /* SYS_OHCI_RESET *//* * MEMORY *  * To improve performance, a single block of (probably) "non-cached" * memory is allocated.  Then, all OHCI control structures are sub-allocated * from this block as needed.  The vxWorks CACHE_DMA_FLUSH/INVALIDATE macros * are used to ensure that this memory is flushed/invalidated at the correct * times (assuming that cacheable-memory *might* be allocated). */#define DMA_MEMORY_SIZE 	0x10000 /* 64k *//*  Ensure that alignment is actually a multiple of the cache line size */#ifdef _CACHE_ALIGN_SIZE#define DMA_MALLOC(bytes, alignment)    \    memPartAlignedAlloc (pHost->memPartId, \			 bytes, \			 max(alignment, _CACHE_ALIGN_SIZE))#else#define DMA_MALLOC(bytes, alignment)    \    memPartAlignedAlloc (pHost->memPartId, bytes, alignment)#endif#define DMA_FREE(pBfr)		memPartFree (pHost->memPartId, (char *) pBfr)#define DMA_FLUSH(pBfr, bytes)	    CACHE_DMA_FLUSH (pBfr, bytes)#define DMA_INVALIDATE(pBfr, bytes) CACHE_DMA_INVALIDATE (pBfr, bytes)#define USER_FLUSH(pBfr, bytes)     CACHE_USER_FLUSH (pBfr, bytes)#define USER_INVALIDATE(pBfr,bytes) CACHE_USER_INVALIDATE (pBfr, bytes)/* HC I/O access macros. * * NOTE: These macros assume that the calling function defines pHost. *  * NOTE: These macros also require that the register offset, p, be evenly * divisible by 4, e.g., UINT32 access only. */#define HC_DWORD_IN(p)     ohciLongRead(pHost, p)#define HC_DWORD_OUT(p,d)   *((volatile UINT32 *) (pHost->memBase \					 + (p) / 4))  = TO_LITTLEL (d)#define HC_SET_BITS(p,bits) HC_DWORD_OUT (p, HC_DWORD_IN (p) | (bits))#define HC_CLR_BITS(p,bits) HC_DWORD_OUT (p, HC_DWORD_IN (p) & ~(bits))/* FINDEX() creates a valid OHCI frame number from the argument. */#define FINDEX(f)   ((f) & (OHCI_FRAME_WINDOW - 1))/* * The HCD adds HC_FRAME_SKIP to the current frame counter to determine * the first available frame for scheduling. This introduces a latency at * the beginning of each IRP, but also helps to ensure that the HC won't * run ahead of the HCD while the HCD is scheduling a transaction. */#define HC_FRAME_SKIP	    2/* defaults for IRPs which don't specify corresponding values */#define DEFAULT_PACKET_SIZE 8	/* max packet size */#define DEFAULT_INTERVAL    32	/* interrupt pipe srvc interval *//* defines for emulated USB descriptors */#define USB_RELEASE	0x0110	/* USB level supported by this code */#define HC_MAX_PACKET_SIZE  8    #define HC_CONFIG_VALUE     1#define HC_STATUS_ENDPOINT_ADRS (1 | USB_ENDPOINT_IN)/* string identifiers */#define UNICODE_ENGLISH     0x409#define HC_STR_MFG	1#define HC_STR_MFG_VAL	    "Wind River Systems"#define HC_STR_PROD	2#define HC_STR_PROD_VAL     "OHCI Root Hub"/* PCI pointer macros */#define TO_PCIPTR(p)	    (((p) == NULL) ? 0 : USB_MEM_TO_PCI (p))#define FROM_PCIPTR(d)	    (((d) == 0) ? 0 : USB_PCI_TO_MEM (d))#define ED_FROM_PCIPTR(d)   ((pED_WRAPPER) (FROM_PCIPTR (FROM_LITTLEL (d))))#define TD_FROM_PCIPTR(d)   ((pTD_WRAPPER) (FROM_PCIPTR (FROM_LITTLEL (d))))/* interrupt definitions */#define INT_ENABLE_MASK \    (OHCI_INT_WDH | OHCI_INT_RD | OHCI_INT_UE | OHCI_INT_RHSC | OHCI_INT_MIE)/* typedefs *//* * ED_WRAPPER * * ED_WRAPPER combines the OHCI_ED with software-specific data. */typedef union ed_wrapper    {    VOLATILE OHCI_ED ed;	/* OHCI ED, 16 bytes */    struct	{	UINT8 resvd [sizeof (OHCI_ED)];	/* space used by OHCI ED */	struct hcd_pipe *pPipe;		/* pointer to owning pipe */	} sw;    } ED_WRAPPER, *pED_WRAPPER;/* * TD_WRAPPER * * OHCI defines two TD formats: "general" for ctl/bulk/int and "isochronous". * The TD_WRAPPER combines these structures with software-specific data. */typedef union td_wrapper    {    VOLATILE OHCI_TD_GEN tdg;		/* ctl/bulk/int OHCI TD, 16 bytes */    VOLATILE OHCI_TD_ISO tdi;		/* isochronous OHCI TD, 32 bytes */    struct	{	UINT8 resvd [sizeof (OHCI_TD_ISO)]; /* space used by OHCI TD */	struct irp_workspace *pWork;	/* pointer to IRP workspace */	UINT32 nanoseconds; 		/* exec time for this TD */	UINT32 curBfrPtr;		/* original cbp for this TD */	union td_wrapper *doneLink;     /* used when handling done queue */	UINT32 inUse;			/* non-zero if TD in use */	UINT32 pad [3];			/* pad to an even 64 bytes */	} sw;    } TD_WRAPPER, *pTD_WRAPPER;#define TD_WRAPPER_LEN	    64			/* expected TD_WRAPPER length */#define TD_WRAPPER_ACTLEN   sizeof (TD_WRAPPER)	/* actual *//* * HCD_PIPE * * HCD_PIPE maintains all information about an active pipe. */typedef struct hcd_pipe    {    HCD_PIPE_HANDLE pipeHandle;	/* handle assigned to pipe */    LINK link;			/* linked list of pipes */    UINT16 busAddress;		/* bus address of USB device */    UINT16 endpoint;		/* device endpoint */    UINT16 transferType;	/* transfer type */    UINT16 direction;		/* transfer/pipe direction */    UINT16 speed;		/* transfer speed */    UINT16 maxPacketSize;	/* packet size */    UINT32 bandwidth;		/* bandwidth required by pipe */    UINT16 interval;		/* service interval */    UINT16 actInterval; 	/* service interval we really use */    UINT32 time;		/* bandwidth (time) allocated to pipe */    pED_WRAPPER pEd;		/* ED allocated for this pipe */    UINT16 tdCount;		/* number of TDs allocated for pipe */    UINT16 freeTdCount; 	/* count of TDs currently available */    UINT16 freeTdIndex; 	/* first available TD */    pTD_WRAPPER pTds;		/* pointer to TD(s) */    } HCD_PIPE, *pHCD_PIPE;/* * IRP_WORKSPACE * * Associates EDs and TDs with the IRPs they are currently servicing. */typedef struct irp_workspace    {    pHCD_PIPE pPipe;		/* pointer to pipe for this IRP */    pUSB_IRP pIrp;		    /* pointer to parent IRP */    UINT16 bfrNo;		/* highest IRP bfrList[] serviced */    UINT32 bfrOffset;		/* offset into bfrList[].pBfr */    BOOL zeroLenMapped; 	/* TRUE when zero len bfrList [] serviced */    UINT32 isochTdsCreated;	/* count of isoch TDs created, in total */    UINT32 frameCount;		/* count of frames used for isoch pipe */    UINT32 bytesSoFar;		/* bytes transferred so far for isoch pipe */    UINT16 isochNext;		/* next isoch frame number to schedule */    BOOL irpRunning;		/* TRUE once IRP scheduled onto bus */    UINT32 startTime;		/* time when IRP was scheduled onto bus */    } IRP_WORKSPACE, *pIRP_WORKSPACE;/* * HCD_HOST * * HCD_HOST maintains all information about a connection to a specific * host controller (HC). */typedef struct hcd_host    {    HCD_CLIENT_HANDLE handle;	/* handle associated with host */    BOOL shutdown;		/* TRUE during shutdown */    PCI_CFG_HEADER pciCfgHdr;	/* PCI config header for HC */    VOLATILE UINT32 * memBase;	    /* Base address */    USB_HCD_MNGMT_CALLBACK mngmtCallback; /* callback routine for mngmt evt */    pVOID mngmtCallbackParam;	/* caller-defined parameter */    MUTEX_HANDLE hostMutex;	/* guards host structure */    THREAD_HANDLE intThread;	/* Thread used to handle interrupts */    SEM_HANDLE intPending;	/* semaphore indicates int pending */    BOOL intThreadExitRequest;	/* TRUE when intThread should terminate */    SEM_HANDLE intThreadExit;	/* signalled when int thread exits */    UINT32 intCount;		/* number of interrupts processed */    BOOL intInstalled;		/* TRUE when h/w int handler installed */    UINT16 rootAddress; 	/* current address of root hub */    UINT8 configValue;		/* current configuration value */    UINT16 numPorts;		/* number of root ports */    UINT16 pwrOn2PwrGood;	/* Power ON to power good time. */    pUINT32 pRhPortChange;	/* port change status */    USB_DEVICE_DESCR devDescr;	    /* standard device descriptor */    USB_CONFIG_DESCR configDescr;   /* standard config descriptor */    USB_INTERFACE_DESCR ifDescr;    /* standard interface descriptor */    USB_ENDPOINT_DESCR endpntDescr; /* standard endpoint descriptor */    USB_HUB_DESCR hubDescr;	/* root hub descriptor */    LIST_HEAD pipes;		/* active pipes */    UINT16 rootIrpCount;	/* count of entries on pRootIrps */    LIST_HEAD rootIrps; 	/* IRPs pending on root hub */    LIST_HEAD busIrps;		/* IRPs pending on devices not */				/* including root hub */    char *dmaPool;		/* memory alloc'd by cacheDmaMalloc() */    PART_ID memPartId;		/* memory partition ID */    pOHCI_HCCA pHcca;		/* OHCI HCCA */    pED_WRAPPER pIsochAnchorEd;	/* Anchor for isochronous transfers */    UINT32 nanoseconds; 	/* current worst case of bus time */				/* required for scheduled TDs */    UINT16 sofInterval; 	/* current SOF interval */    BOOL suspended;		/* TRUE when global suspend is TRUE */    UINT32 errScheduleOverrun;	/* count of schedule overrun errors */    UINT32 errUnrecoverable;	/* count of unrecoverabl HC errors */    UINT32 pHcControlReg;	/* Control Register Copy */    SEM_ID hcSyncSem;		/* syncronization semaphore */    } HCD_HOST, *pHCD_HOST;/* locals *//* Language descriptor */LOCAL USB_LANGUAGE_DESCR langDescr =    {sizeof (USB_LANGUAGE_DESCR), USB_DESCR_STRING,     {TO_LITTLEW (UNICODE_ENGLISH)}};/***************************************************************************** ohciLongRead - Read a 32 bit value from the OHCI controller.** RETURNS: A big-endian adjusted UINT32 */LOCAL UINT32 ohciLongRead    (    pHCD_HOST pHost,    UINT32 offset    )    {    CACHE_PIPE_FLUSH ();    return FROM_LITTLEL (*((volatile UINT32 *) (pHost->memBase + \					(offset) / 4)));    }/***************************************************************************** waitOnBits - wait for a word register bit to reach the desired state** RETURNS: TRUE if successful, else FALSE if desired bit state not detected*/LOCAL BOOL waitOnBits    (    pHCD_HOST pHost,    UINT32 p,    UINT32 bitMask,    UINT32 bitState    )    {    UINT32 start = OSS_TIME ();    BOOL desiredState;    while (!(desiredState = ((HC_DWORD_IN (p) & bitMask) == bitState)) && \	    OSS_TIME () - start < BIT_TIMEOUT)	;    return desiredState;        }/***************************************************************************** getFrameNo - returns current hardware frame number** RETURNS: value of current frame number*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美另类久久久精品| 欧美不卡视频一区| 免费黄网站欧美| 久久综合五月天婷婷伊人| 波多野结衣91| 亚洲高清在线精品| 国产精品久久国产精麻豆99网站| 欧美日本一道本| 青青青爽久久午夜综合久久午夜| ●精品国产综合乱码久久久久| 国产日韩欧美高清| 琪琪久久久久日韩精品| 一本色道久久加勒比精品| 日韩丝袜美女视频| 午夜不卡av免费| 3atv在线一区二区三区| 日韩一区精品视频| 日韩欧美中文一区| 国产成人在线网站| 国产日韩av一区二区| 成人精品免费视频| 亚洲三级在线看| 欧美日韩一区二区三区高清| 亚洲成a人片在线不卡一二三区 | 韩国三级中文字幕hd久久精品| 精品奇米国产一区二区三区| 日韩中文字幕一区二区三区| 欧美区在线观看| 欧美xxx久久| 亚洲国产日韩一级| 日韩视频在线永久播放| 国产精品一区三区| 中文字幕在线不卡| 欧美日本一区二区在线观看| 首页亚洲欧美制服丝腿| 欧美岛国在线观看| 91视频免费观看| 看片网站欧美日韩| 国产精品久久毛片a| 91精品国产色综合久久久蜜香臀| 男女激情视频一区| 亚洲午夜视频在线观看| 国产精品卡一卡二卡三| 久久影院午夜论| 欧美一区二区免费观在线| 色婷婷亚洲婷婷| 懂色av一区二区在线播放| 久久精品二区亚洲w码| 亚洲精品免费播放| 国产精品成人一区二区艾草| 欧美一区二区在线视频| 欧美色图免费看| 91成人在线精品| 色先锋久久av资源部| 成人国产在线观看| 国产精品一区二区三区99| 午夜影院在线观看欧美| 国产精品久久久久一区二区三区| 亚洲你懂的在线视频| 欧美日韩一卡二卡三卡| 欧美性猛交xxxxxx富婆| 国产精品综合久久| 日韩中文字幕91| 亚洲伦理在线精品| 夜夜嗨av一区二区三区中文字幕 | 国产精品丝袜在线| 欧美群妇大交群中文字幕| 成人avav在线| 国产高清成人在线| 国产一区激情在线| 五月婷婷久久丁香| 国产日韩一级二级三级| 欧美激情中文字幕| 日韩欧美国产电影| 91精品国产麻豆国产自产在线 | 亚洲电影第三页| 日韩一区二区三区精品视频| 精品一区二区三区在线播放视频| 琪琪一区二区三区| 日本vs亚洲vs韩国一区三区| 亚洲欧美区自拍先锋| 国产伦精品一区二区三区免费迷| 在线免费观看一区| av午夜一区麻豆| 成人av电影在线播放| 国产suv精品一区二区6| 亚洲精品网站在线观看| 日本免费在线视频不卡一不卡二| 亚洲欧洲日韩在线| 亚洲日本青草视频在线怡红院| 2020日本不卡一区二区视频| 亚洲三级免费电影| 亚洲午夜精品在线| 奇米影视7777精品一区二区| 日韩一区有码在线| 美国av一区二区| 99久久精品免费看| 91麻豆精品国产无毒不卡在线观看 | 国产福利视频一区二区三区| 成人精品视频网站| 7777精品伊人久久久大香线蕉的| 欧美日韩国产在线播放网站| 精品成人一区二区| 亚洲免费视频中文字幕| 日本中文字幕一区二区有限公司| 国产一区二区精品久久99| 欧美亚洲国产一区二区三区va| 亚洲欧洲三级电影| 国内欧美视频一区二区| 欧美美女直播网站| 欧美国产日本韩| 美国三级日本三级久久99| 日韩欧美一区在线观看| 中文字幕av免费专区久久| 日本欧美久久久久免费播放网| 国产剧情一区在线| 欧美三级三级三级爽爽爽| 欧美xingq一区二区| 精品制服美女丁香| 欧美日韩国产另类不卡| 亚洲视频 欧洲视频| 懂色av一区二区三区免费看| 亚洲最大成人综合| 色噜噜狠狠色综合中国| 精品捆绑美女sm三区| 欧美精品第一页| 亚洲欧美激情一区二区| 精品亚洲免费视频| 91.麻豆视频| 一区二区三区在线观看视频| 久久国产免费看| 久久九九全国免费| 久久精品一区二区三区不卡牛牛| 国产亚洲欧美日韩在线一区| 4438成人网| 日韩精品三区四区| 欧美日韩一区成人| 中文字幕制服丝袜成人av| 国产在线日韩欧美| 91社区在线播放| 久久久综合精品| 成人一区二区三区视频| 欧美色图免费看| 亚洲最新视频在线观看| 亚洲欧美激情一区二区| 韩国三级在线一区| 久久久精品tv| 欧美亚洲动漫另类| 97久久超碰精品国产| 丁香婷婷综合激情五月色| 欧美军同video69gay| 亚洲欧美在线视频| 91精品国产综合久久婷婷香蕉| 麻豆精品在线观看| 日韩欧美国产精品一区| 色哟哟国产精品| 日韩精品久久久久久| 自拍偷自拍亚洲精品播放| 91麻豆精品国产91久久久资源速度 | 国产精品久久二区二区| 日韩天堂在线观看| 国产黑丝在线一区二区三区| 日本不卡123| 国产美女精品在线| 久久99久久久欧美国产| 亚洲成av人影院在线观看网| 日本一区二区三区国色天香 | 毛片av一区二区三区| 亚洲精品在线一区二区| 日韩欧美区一区二| 成人国产免费视频| 久久99国产精品尤物| 天天影视网天天综合色在线播放| 蜜臀av性久久久久蜜臀aⅴ四虎| 日韩专区在线视频| 午夜私人影院久久久久| 亚洲成人av在线电影| 国产成人av电影| 美女脱光内衣内裤视频久久影院| 日韩精品一卡二卡三卡四卡无卡| 国产一区 二区| 麻豆精品一区二区三区| 久久久噜噜噜久噜久久综合| 久久久久久久精| 国产欧美视频在线观看| 中文字幕一区二区三| 一区二区三区资源| 亚洲综合视频网| 欧美成人女星排名| 亚洲美女免费视频| 丝袜美腿亚洲综合| 国产精品自拍在线| 91丨九色丨国产丨porny| 7777精品伊人久久久大香线蕉完整版 | 日韩精品一级中文字幕精品视频免费观看| 亚洲国产精品传媒在线观看| 亚洲欧洲韩国日本视频| 午夜亚洲国产au精品一区二区| 韩国女主播一区| 日韩一区二区三区在线|