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

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

?? usbhcdsl811hslib.c

?? sl811hs_vxworks_host_driver_v1_0_13 sl811的主驅動
?? C
?? 第 1 頁 / 共 5 頁
字號:
 * Each UHCI_QH must be aligned to a 16 byte boundary.
 */

typedef union qh_wrapper
    {
    VOLATILE UHCI_QH qh;	/* standard UHCI QH, 8 bytes */
        struct
        {
        VOLATILE UINT32 reserved [2]; /* 2 DWORDs used by QH */
        UINT32 reserved1;	    /* 1 DWORD pad */
        struct irp_workspace *pWork;/* workspace which owns QH */
        } sw;
    } QH_WRAPPER, *pQH_WRAPPER;

#define QH_WRAPPER_LEN	    16
#define QH_WRAPPER_ACTLEN   sizeof (QH_WRAPPER)

#define INT_ANCHOR_LIST_SIZE	(QH_WRAPPER_ACTLEN * UHCI_FRAME_LIST_ENTRIES)


/*
 * 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 */

    UINT32 time;	    /* bandwidth (time) allocated to pipe */

    } HCD_PIPE, *pHCD_PIPE;


/*
 * IRP_WORKSPACE
 *
 * Associates QHs and TDs with the IRPs they are currently servicing.
 *
 * Note: The pTdInUse and pTdFree lists use the TD_WRAPPER.sw.pNext field to 
 * maintain lists of TDs.  When TDs are scheduled, their UHCI_TD.linkPtr
 * fields are also used to link the TDs in the correct order.  The reader
 * must be aware that the UHCI_TD.linkPtr fields are formatted for direct
 * access by the UHCI PCI controller, and may not be dereferenced directly
 * by software.  Instead, the TD_FROM_PCIPTR() macro may be used to 
 * dereference the UHCI_TD.linkPtr field if necessary.	There is no such
 * restriction for the TD_WRAPPER.sw.pNext field.
 *
 * Note also that the linkPtr field uses the UHC convention that the end 
 * of a TD list is marked by a pointer with only the UHC_LINK_TERMINATE bit 
 * set (unlike the more conventional use of NULL to mark end of list).
 */

typedef struct irp_workspace
    {
    pHCD_PIPE pPipe;		/* pointer to pipe for this IRP */
    pUSB_IRP pIrp;	    /* pointer to parent IRP */

    UINT16 qhCount;	    /* count of QHs allocated for IRP */
    pQH_WRAPPER pQh;		/* pointer to QH for this transfer */

    UINT16 tdCount;	    /* count of TDs allocated for IRP */
    pTD_WRAPPER pTdPool;	/* pointer to block of TDs allocated */
    pTD_WRAPPER pTdFree;	/* unused TDs */
    pTD_WRAPPER pTdInUse;	/* first TD in use */
    pTD_WRAPPER pLastTdInUse;	    /* pointer to last TD */

    UINT32 nanoseconds; 	/* bus time required for TDs in use */

    UINT16 bfrNo;	    /* highest IRP bfrList[] serviced */
    UINT32 bfrOffset;		/* offset into bfrList[].pBfr */
    BOOL zeroLenMapped; 	/* TRUE when zero len bfrList [] serviced */

    UINT16 interval;		/* how often interrupt xfr scheduled */

    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 */
    UINT16 isochCount;		/* count of isoch frames scheduled */
    pTD_WRAPPER pNextIsochTd;	    /* next isoch TD 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
 * universal host controller (UHC).
 */

typedef struct hcd_host
    {
    HCD_CLIENT_HANDLE handle;	/* handle associated with host */
    BOOL shutdown;	    	/* TRUE during shutdown */

    SL811_IO_CFG sl811CfgHdr;	/* SL811 IO config */
    UINT16 uhcAttributes;	/* vendor/model specific attributes */
    UINT32 ioBase;	    	/* Base I/O address */
    UINT32 ioBaseData;	    	/* Base I/O data address */

    USB_HCD_MNGMT_CALLBACK mngmtCallback; /* callback routine for mngmt evt */
    pVOID mngmtCallbackParam;	/* caller-defined parameter */

    MUTEX_HANDLE hostMutex;	/* guards host structure */

    int 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 */
    UINT8 intBits;	    	/* interrupt bits */
    int  xmitPending;
    BOOL sofPending;

    UINT16 rootAddress; 	/* current address of root hub */
    UINT8 configValue;		/* current configuration value */
    BOOL powered [SL811_PORTS];	/* TRUE if port is powered */
    BOOL cSuspend [SL811_PORTS]; /* TRUE if suspend status change */
    BOOL cReset [SL811_PORTS];	/* TRUE if reset status change */

    /* added DGJ */
    BOOL connected[SL811_PORTS];/* TRUE if port is connected to device*/
    BOOL suspended[SL811_PORTS];/* TRUE if port is suspended */
    BOOL enabled[SL811_PORTS];  /* TRUE if port is enabled */
    BOOL lowSpeed[SL811_PORTS]; /* TRUE if port is lowSpeed */
    BOOL cConnect[SL811_PORTS]; /* TRUE if connection status change */
    BOOL cEnable[SL811_PORTS];  /* TRUE if enabled status change */

    /* descriptor fields order-dependent */

    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 */

    pUHCI_FRAME_LIST pFrameList;    /* UHC frame list */
    pQH_WRAPPER pIntAnchorQhs;	    /* UHC QH "anchor" list */
    pQH_WRAPPER pCtlAnchorQh;	    /* Anchor for ctl transfer QHs */
    pQH_WRAPPER pLastCtlQh;	/* pointer to last ctl QH in use */
    pQH_WRAPPER pBulkAnchorQh;	    /* Anchor for bulk transfer QHs */
    UINT32 pciPtrToBulkAnchorQh;    /* pre-calculated PCIPTR */
    pQH_WRAPPER pLastBulkQh;	    /* pointer to last bulk QH in use */
    /* added DGJ */  
    VOLATILE UHCI_QH *pCurrentQH;   /* current QH in progress */
    VOLATILE UHCI_TD *pCurrentTD;   /* current TD in progress */
    char eof;


    UINT32 hostErrCount;	/* incremented if host ctlr reports err */

    UINT32 nanoseconds; 	/* current worst case of bus time */
		    		/* required for scheduled TDs */

    UINT16 sofInterval; 	/* current SOF interval */

    BOOL gSuspended;	     	/* TRUE when global suspend is TRUE */

    SEM_ID hcSyncSem;           /* syncronization semaphore */

    UINT16 frameNo;             /* frame number. */
    void *nextTDQH;             /* next TD or QH to send */

    } HCD_HOST, *pHCD_HOST;


/* locals */

/* UHC vendor/device table.
 *
 * The following table defines the features/operating modes we use for
 * UHCI controllers with which we've tested.  
 *
 * Intel PIIX4: Hard system crashes have been observed when enabling
 * bandwidth reclamation on the PIIX4.	There are unconfirmed reports
 * that the PIIX3 can consume all available PCI bandwidth when all QHs
 * on the bandwidth reclamation loop are complete, thus hanging the
 * system.  We surmise that this may also be the cause of the problems
 * observed on the PIIX4.
 *
 * ViaTech: The ViaTech parts appear to work fine with bandwidth
 * reclamation enabled.
 */

#define UHC_ATTR_INTEL_PIIX (UHC_ATTR_HC_SYNCH)
#define UHC_ATTR_VIATECH    (UHC_ATTR_HC_SYNCH | UHC_ATTR_BW_RECLAMATION)

/* Language descriptor */

LOCAL USB_LANGUAGE_DESCR langDescr =
    {sizeof (USB_LANGUAGE_DESCR), USB_DESCR_STRING, 
    {TO_LITTLEW (UNICODE_ENGLISH)}};

static  pHCD_HOST pDbgHost=NULL;

/***************************************************************************
*
* sl811Reset - reset the SL811HS controller chip and attached USB devices
*
*
* RETURNS: N/A
*/
void sl811Reset(pHCD_HOST pHost)
{
  UINT8 status;

  DBG_PRINTF(("R"));
  DBG_LOG("Reset\n",1,2,3,4,5,6);

  /* disable all interrupts  */
  SL811_REG_WRITE(SL811HS_IER, 0);

  SL811_REG_WRITE(SL811HS_CTRL_REG_1, 0);

  OSS_THREAD_SLEEP(500);

  /* clear interrupt status reg */
  SL811_REG_WRITE(SL811HS_INT_STAT_REG, 0xFF);

  /* check connection status */
  status = SL811_REG_READ(SL811HS_INT_STAT_REG);

  /* Check if device is removed */
  if (status & 0x40) 
    {
      pHost->connected[0] = FALSE;
      DBG_LOG("sl881Reset : No device or no power\n",1,2,3,4,5,6);
    }
  else 
    {
      pHost->connected[0] = TRUE;

      if (!(status & 0x80 ))
	{	
	  /* slow speed device connected directly to root-hub */
	  SL811_REG_WRITE(SL811HS_SOFCNTH_CTRL_2, 0xEE);
	  SL811_REG_WRITE(SL811HS_SOFCNTL_REV, 0xE0);
	  SL811_REG_WRITE(SL811HS_CTRL_REG_1, 0x29);
	  OSS_THREAD_SLEEP(10);
	  SL811_REG_WRITE(SL811HS_CTRL_REG_1, 0x21);
	  pHost->lowSpeed[0] = TRUE;
	  DBG_LOG("sl881Reset : Low speed device connected\n",1,2,3,4,5,6);
	}
      else
	{
	  /* full speed device connect directly to root hub */
	  SL811_REG_WRITE(SL811HS_SOFCNTH_CTRL_2, 0xAE);
	  SL811_REG_WRITE(SL811HS_SOFCNTL_REV, 0xE0);
	  SL811_REG_WRITE(SL811HS_CTRL_REG_1, 0xd);
	  OSS_THREAD_SLEEP(10);
	  SL811_REG_WRITE(SL811HS_CTRL_REG_1, 0x5);
	  pHost->lowSpeed[0] = FALSE;
	  DBG_LOG("sl881Reset : Full speed device connected\n",1,2,3,4,5,6);
	}

      /* start the SOF or EOP */
      SL811_REG_WRITE(SL811HS_PID_DEVEND_A, 0x50) ;  
      SL811_REG_WRITE(SL811HS_DEVADDR_TCNT_A, 0) ;
      SL811_REG_WRITE(SL811HS_CTRL_REG_A, 1) ;
    }

  pHost->frameNo = 0;

  OSS_THREAD_SLEEP(25);

  /* clear interrupt status reg */
  SL811_REG_WRITE(SL811HS_INT_STAT_REG, 0xFF);

  /* Enable interrupts */
  SL811_REG_WRITE(SL811HS_IER, pHost->intBits);

  pHost->xmitPending = 0;
  pHost->sofPending = FALSE;
}

#ifndef INCLUDE_USB_PCI
/***************************************************************************
*
* sl811DcrInit -
*
* RETURNS: N/A
*/
LOCAL void sl811DcrInit()
{
  int regValue = 0;
  printf ("Enter sl811DcrInit\n");
  
   /* IRQ0 from SL811HS daugther card is edge sensitive */
   regValue = sysDcrUictrGet() | 0x00000040; 
   sysDcrUictrSet(regValue); /* set int trigger levels */

  /* Configure the DCR CR0 register */   
  /* Disable GPIO 17 to enable IRQ0 as an interrupt */   
  regValue = sysDcrCr0Get() & ~CR0_GPIO_17_EN;
  sysDcrCr0Set(regValue);
  /* printf ("dcrInit: DCR CR0 reg value = 0x%x\n", sysDcrCr0Get()); */

  /* Configure the DCR CR1 register to set the enable pin */   
  regValue = sysDcrCr1Get() | CR1_PCI_PW_EN;
  sysDcrCr1Set(regValue);
  /* printf ("dcrInit: DCR CR1 reg value = 0x%x\n", sysDcrCr1Get()); */
  
  /* Configure the EBC Configuration Register EBC0_CFG */
  sysDcrEbcSet (EBC_CFG, 0xb84c0000);
  
  /* Configure the Peripheral Bank 2 Configuration Reg	*/
  sysDcrEbcSet (EBC_B2CR, 0x700f8000);
  
  /* Configure the Peripheral Bank 2 Access Reg */
  sysDcrEbcSet (EBC_B2AP, 0x090ffe00);
}
#endif


/***************************************************************************
*
* sl811Init - initialize the SL811HS controller chip
*
*
* Adapted from SL811HS Application Notes, page 12
*
* RETURNS: N/A
*/
LOCAL void sl811Init(pHCD_HOST pHost)
{
  UINT8 status;

  /* disable all interrupts  */
  SL811_REG_WRITE(SL811HS_IER, 0);

  SL811_REG_WRITE(SL811HS_CTRL_REG_1, 0);

  OSS_THREAD_SLEEP(500);

  /* clear interrupt status reg */
  SL811_REG_WRITE(SL811HS_INT_STAT_REG, 0xFF);

  /* check connection status */
  status = SL811_REG_READ(SL811HS_INT_STAT_REG);

  if (status & 0x40) 
    {
      pHost->connected[0] = FALSE;
      DBG_LOG("sl881Init : No device or no power\n",1,2,3,4,5,6);
    }
  else 
    {
      pHost->connected[0] = TRUE;

      if (!(status & 0x80 ))
	{	
	  /* slow speed device connected directly to root-hub */
	  pHost->lowSpeed[0] = TRUE;
	  DBG_LOG("sl881Init : Low speed device connected\n",1,2,3,4,5,6);
	}
      else
	{
	  /* full speed device connect directly to root hub */
	  pHost->lowSpeed[0] = FALSE;
	  DBG_LOG("sl881Reset : Full speed device connected\n",1,2,3,4,5,6);
	}
    }
}


/***************************************************************************
*
* fetchTD - follow a QH to get a TD 
*
*
*
* RETURNS: pointer to next TD in QH, NULL if no more TDs remaning in QH
*/
LOCAL void *fetchTD(pHCD_HOST pHost, BOOL vertical)
{
  void *pTD = NULL;
  BOOL gotTD = FALSE;

  /* Special processing if this QH should process TD depth first */
  if (!vertical) goto step10;

  while (!gotTD)
    {
      /* is element pointer an inactive entry ? */
      if (UHC_FROM_LITTLEL(pHost->pCurrentQH->tdLink) & UHCI_LINK_TERMINATE)
	{
	  /* element pointer inactive. Follow horizontal link */
	step10:
          if (UHC_FROM_LITTLEL(pHost->pCurrentQH->qhLink) & UHCI_LINK_TERMINATE)
            {
              return(pTD);
            }

	  pHost->pCurrentQH = (UHCI_QH *) (UHC_FROM_LITTLEL(pHost->pCurrentQH->qhLink) & 
	    UHCI_LINK_PTR_MASK);
	  
          if ((UHC_FROM_LITTLEL(pHost->pCurrentQH->tdLink) & UHCI_LINK_TERMINATE)
              && (UHC_FROM_LITTLEL(pHost->pCurrentQH->qhLink) & UHCI_LINK_TERMINATE))
            {
              /* header pointer inactive. Leave function and then idle */
              gotTD = TRUE;
            }
	  
	  continue;
	}
      /* element pointer not inactive. Is element pointer pointing to a QH ?*/
      else if (UHC_FROM_LITTLEL(pHost->pCurrentQH->tdLink) & UHCI_LINK_QH)
	{
	  /* element pointer points to a QH. Get next QH from vertical link */
	  /* and continue processing */
	  pHost->pCurrentQH = (UHCI_QH *) (UHC_FROM_LITTLEL(pHost->pCurrentQH->tdLink) & 
	    UHCI_LINK_PTR_MASK);

	  continue;
	}
      /* element pointer points to a TD. return it */
      else
	{
	  gotTD = TRUE;
	  pTD = (void *) (UHC_FROM_LITTLEL(pHost->pCurrentQH->tdLink) & UHCI_LINK_PTR_MASK);
	}
    }

  return(pTD);
}

/***************************************************************************
*
* execute TD - execute a TD
*
*
*

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
51午夜精品国产| 欧美va天堂va视频va在线| 国产日韩成人精品| 国产一区二区美女诱惑| 精品国产欧美一区二区| 激情六月婷婷久久| 国产欧美一区二区三区沐欲| 成人精品视频一区二区三区| 亚洲日本电影在线| 在线观看国产日韩| 日韩av中文在线观看| 欧美成人官网二区| 成人免费毛片a| 亚洲狠狠丁香婷婷综合久久久| 欧美视频一区二| 亚洲激情在线激情| 麻豆freexxxx性91精品| 3atv在线一区二区三区| 中文一区一区三区高中清不卡| 91精品蜜臀在线一区尤物| 日本一区二区免费在线观看视频| 亚洲成人av电影在线| 亚洲欧美日韩国产综合| 亚洲午夜在线观看视频在线| 国产精品一区专区| 亚洲欧洲制服丝袜| 欧美日本一区二区三区四区 | 欧美日韩国产大片| 蜜臀av一级做a爰片久久| 久久亚洲一级片| 99视频在线观看一区三区| 亚洲观看高清完整版在线观看| 欧美大片国产精品| 91免费看视频| 黑人精品欧美一区二区蜜桃| 一区二区三区在线视频免费观看| 欧美福利一区二区| 99久久精品免费看| 黄网站免费久久| 亚洲综合色丁香婷婷六月图片| 精品乱人伦小说| 日本韩国精品在线| 丰满少妇久久久久久久| 青青草原综合久久大伊人精品 | 免费高清在线视频一区·| 热久久免费视频| 国产精品久久久久四虎| 欧美一级片在线观看| 99这里只有精品| 国产尤物一区二区在线| 亚洲午夜视频在线观看| 国产精品久久久久婷婷| 精品国产污污免费网站入口| 欧美三级电影一区| aaa亚洲精品| 国产麻豆欧美日韩一区| 日韩高清不卡一区| 伊人婷婷欧美激情| 国产精品久久三区| 久久久久国产免费免费| 日韩亚洲欧美中文三级| 欧美午夜精品理论片a级按摩| jlzzjlzz欧美大全| 国产福利一区在线| 老司机免费视频一区二区| 亚洲成人免费看| 亚洲综合免费观看高清完整版| 国产精品色噜噜| 久久久久国产免费免费| 久久久三级国产网站| 日韩免费视频线观看| 在线成人免费视频| 欧美日韩一本到| 欧美视频完全免费看| 日本韩国精品一区二区在线观看| 色综合咪咪久久| 成人精品视频一区二区三区 | 国产二区国产一区在线观看| 久久精品国产77777蜜臀| 日日摸夜夜添夜夜添国产精品 | 亚洲一区二区在线播放相泽| 亚洲欧美国产毛片在线| 亚洲蜜臀av乱码久久精品蜜桃| 国产精品国产三级国产有无不卡 | 亚洲久草在线视频| 亚洲人成7777| 亚洲婷婷国产精品电影人久久| 中文字幕佐山爱一区二区免费| 亚洲欧洲无码一区二区三区| 亚洲欧洲日韩av| 亚洲精品一卡二卡| 国产精品乱人伦中文| 国产精品美日韩| 亚洲欧美自拍偷拍色图| 一级精品视频在线观看宜春院| 在线一区二区视频| 蜜臀av性久久久久蜜臀aⅴ四虎| 蜜桃av一区二区三区| 国产呦精品一区二区三区网站| 国产很黄免费观看久久| 91丨九色丨黑人外教| 欧美精品成人一区二区三区四区| 欧美精品xxxxbbbb| 久久久亚洲国产美女国产盗摄 | 日韩免费视频一区| 国产欧美精品一区aⅴ影院 | 欧美精品一区二区三区在线| 国产欧美一区二区三区在线看蜜臀| 亚洲日本在线天堂| 首页亚洲欧美制服丝腿| 国产精品一卡二| 91免费看片在线观看| 欧美一区二区播放| 欧美国产日韩a欧美在线观看 | 蜜臀91精品一区二区三区| 国产精品1区2区3区| 在线视频观看一区| 欧美成人精品1314www| 亚洲少妇最新在线视频| 男男视频亚洲欧美| 97久久久精品综合88久久| 欧美一区二区三区四区久久 | 亚洲日本一区二区| 美脚の诱脚舐め脚责91| fc2成人免费人成在线观看播放| 精品视频1区2区| 欧美国产激情一区二区三区蜜月| 亚洲国产视频直播| 成人蜜臀av电影| 欧美mv日韩mv亚洲| 亚洲精品伦理在线| 国产精品白丝jk黑袜喷水| 欧美日韩一区二区三区高清| 久久精品人人做| 日韩电影一区二区三区四区| 波多野结衣亚洲| 26uuu国产电影一区二区| 一区二区三区91| 成人综合婷婷国产精品久久蜜臀| 5858s免费视频成人| 亚洲麻豆国产自偷在线| 国产精品88888| 91精品国产综合久久久蜜臀图片| 亚洲欧美日韩中文播放| 国产乱子轮精品视频| 欧美精品777| 亚洲资源中文字幕| 99久久婷婷国产综合精品电影| 亚洲精品在线观| 麻豆国产精品一区二区三区| 欧美日韩在线精品一区二区三区激情| 中文在线一区二区 | 成人黄色777网| 精品对白一区国产伦| 午夜视频一区二区三区| 色综合天天综合网国产成人综合天| 久久综合av免费| 精品一区二区在线看| 欧美一区二区三区啪啪| 天天影视网天天综合色在线播放| 色菇凉天天综合网| 亚洲欧美日韩在线| 91性感美女视频| 亚洲免费视频中文字幕| av一区二区三区在线| 国产精品嫩草99a| 成人av网站在线观看免费| 久久嫩草精品久久久久| 国产精品123| 久久久久久久久久久久久夜| 国产精品一区二区久久精品爱涩| 久久久无码精品亚洲日韩按摩| 国产大片一区二区| 国产女人18水真多18精品一级做| 国产乱码一区二区三区| 国产亚洲欧美日韩日本| 国产成人小视频| 国产精品久久久久久久久搜平片| 91高清视频在线| 亚洲欧洲精品一区二区精品久久久| 成人精品免费看| 亚洲特级片在线| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 夜夜精品浪潮av一区二区三区| 欧美日韩精品一区二区| 免费成人在线观看| 久久久精品免费观看| 成人黄色在线看| 一区二区三区中文字幕精品精品 | 成人动漫一区二区在线| 依依成人综合视频| 欧美美女网站色| 麻豆精品一二三| 国产欧美一区二区三区网站| 色综合视频在线观看| 污片在线观看一区二区| 国产亚洲美州欧州综合国| 99精品一区二区| 日韩av电影免费观看高清完整版 | 性做久久久久久免费观看欧美|