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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? sc2440_usb_hw.c

?? windows ce 50 drive program
?? C
?? 第 1 頁 / 共 4 頁
字號:
            goto _done;
            break;

        case SUSPEND:
            // should never get here
            //RETAILMSG(1, (TEXT("SUSPEND\r\n")));
			ASSERT(0);
            goto _done;
            break;

        case RESUME:
            // Suspend disconnects us from the USB.
            // When we Resume we re-enumerate on the USB.
            //RETAILMSG(1, (TEXT("RESUME => ")));

        default:            
            pHWHead->State = IDLE;
            goto _re_enable;
            break;
    }
    
    //
    // Initialize the USBD Controller
    //
    index = pHWHead->pUSBCtrlAddr->INDEX.index;
    
    // suspend mode disable
    pHWHead->pUSBCtrlAddr->PMR.sus_en = 0x0;
    ASSERT(pHWHead->pUSBCtrlAddr->PMR.sus_en == 0x0);

    // setup endpoint 0
    pHWHead->pUSBCtrlAddr->INDEX.index = 0;
    ASSERT(pHWHead->pUSBCtrlAddr->INDEX.index == 0);

    pHWHead->pUSBCtrlAddr->MAXP.maxp = 0x1;         // 8 BYTE
    ASSERT(pHWHead->pUSBCtrlAddr->MAXP.maxp == 0x1);

    pHWHead->pUSBCtrlAddr->EP0ICSR1.sopr_cdt = 1;   // OUT_PKT_RDY
    //ASSERT(pHWHead->pUSBCtrlAddr->EP0ICSR1.sopr_cdt == 1); // W only

    pHWHead->pUSBCtrlAddr->EP0ICSR1.sse_ = 1;       // SETUP_END
    //ASSERT(pHWHead->pUSBCtrlAddr->EP0ICSR1.sse_ == 1); // W only

    // setup endpoint 1
    pHWHead->pUSBCtrlAddr->INDEX.index = 1;
    ASSERT(pHWHead->pUSBCtrlAddr->INDEX.index == 1);
        
    pHWHead->pUSBCtrlAddr->MAXP.maxp = 0x8;     // 64 BYTE
    ASSERT(pHWHead->pUSBCtrlAddr->MAXP.maxp == 0x8);
    
    pHWHead->pUSBCtrlAddr->ICSR2.mode_in = 1;   // IN
    ASSERT(pHWHead->pUSBCtrlAddr->ICSR2.mode_in == 1);
    
    pHWHead->pUSBCtrlAddr->ICSR2.iso = 0;       // BULK
    ASSERT(pHWHead->pUSBCtrlAddr->ICSR2.iso == 0);

    // setup endpoint 4
    pHWHead->pUSBCtrlAddr->INDEX.index = 4;
    ASSERT(pHWHead->pUSBCtrlAddr->INDEX.index == 4);
    
    pHWHead->pUSBCtrlAddr->MAXP.maxp = 0x8;     // 64 BYTE
    ASSERT(pHWHead->pUSBCtrlAddr->MAXP.maxp == 0x8);
    
    pHWHead->pUSBCtrlAddr->ICSR2.mode_in = 0;   // OUT
    ASSERT(pHWHead->pUSBCtrlAddr->ICSR2.mode_in == 0);
    
    pHWHead->pUSBCtrlAddr->OCSR2.iso = 0;       // BULK
    ASSERT(pHWHead->pUSBCtrlAddr->OCSR2.iso == 0);

    // clear all EP interrupts
    pHWHead->pUSBCtrlAddr->EIR.ep0_int = 0x1;
    ASSERT(pHWHead->pUSBCtrlAddr->EIR.ep0_int == 0);
    
    pHWHead->pUSBCtrlAddr->EIR.ep1_int = 0x1;
    ASSERT(pHWHead->pUSBCtrlAddr->EIR.ep1_int == 0);
    
    pHWHead->pUSBCtrlAddr->EIR.ep2_int = 0x1;
    ASSERT(pHWHead->pUSBCtrlAddr->EIR.ep2_int == 0);
    
    pHWHead->pUSBCtrlAddr->EIR.ep3_int = 0x1;
    ASSERT(pHWHead->pUSBCtrlAddr->EIR.ep3_int == 0);
        
    pHWHead->pUSBCtrlAddr->EIR.ep4_int = 0x1;
    ASSERT(pHWHead->pUSBCtrlAddr->EIR.ep4_int == 0);

    // clear reset int
    pHWHead->pUSBCtrlAddr->UIR.reset_int = 0x1;
    ASSERT(pHWHead->pUSBCtrlAddr->UIR.reset_int == 0x0);

    // EP0, 1, & 4 Enabled, EP2, 3 Disabled

    pHWHead->pUSBCtrlAddr->EIER.ep2_int_en = 0x0;
    ASSERT(pHWHead->pUSBCtrlAddr->EIER.ep2_int_en == 0x0);
    
    pHWHead->pUSBCtrlAddr->EIER.ep3_int_en = 0x0;
    ASSERT(pHWHead->pUSBCtrlAddr->EIER.ep3_int_en == 0x0);

    pHWHead->pUSBCtrlAddr->EIER.ep0_int_en = 0x1;
    ASSERT(pHWHead->pUSBCtrlAddr->EIER.ep0_int_en == 0x1);
    
    pHWHead->pUSBCtrlAddr->EIER.ep1_int_en = 0x1;
    ASSERT(pHWHead->pUSBCtrlAddr->EIER.ep1_int_en == 0x1);
    
    pHWHead->pUSBCtrlAddr->EIER.ep4_int_en = 0x1;
    ASSERT(pHWHead->pUSBCtrlAddr->EIER.ep4_int_en == 0x1);

    // enable reset int 
    pHWHead->pUSBCtrlAddr->UIER.reset_int_en = 0x1;
    ASSERT(pHWHead->pUSBCtrlAddr->UIER.reset_int_en == 0x1);


	if(v_pDMAregs==NULL)
	{
		//RETAILMSG(1, (TEXT("ERROR: SC2440_usb_hw: v_pDMAregs=NULL\r\n")));
		while(1);
	}
	
	pHWHead->pUSBCtrlAddr->INDEX.index = 0x4;	

	*(volatile BYTE *)&pHWHead->pUSBCtrlAddr->EP4DC=0x0; 
	    //may not be needed, not to operate DMA during initialization.
	UsbdInitDma3(0,0);

	usbdShMem->usbdRxRdPt=0;
	usbdShMem->usbdRxWrPt=0;
	usbdShMem->usbdRxCnt=0;
	usbdShMem->usbdEir=0;
 	usbdShMem->usbdUir=0;
	usbdShMem->usbdDma3Int=0; 

    //rEP4_DMA_FIFO=0x40; //not needed for OUT operation.	

	*(volatile BYTE *)&pHWHead->pUSBCtrlAddr->EP4DTL=USBD_GLOBALS_BUF_SIZE&0xff;
	*(volatile BYTE *)&pHWHead->pUSBCtrlAddr->EP4DTM=(USBD_GLOBALS_BUF_SIZE>>8)&0xff;
	*(volatile BYTE *)&pHWHead->pUSBCtrlAddr->EP4DTH=(USBD_GLOBALS_BUF_SIZE>>16)&0x0f;

	*(volatile BYTE *)&pHWHead->pUSBCtrlAddr->OCSR2=
	*(BYTE *)&pHWHead->pUSBCtrlAddr->OCSR2 | (BYTE)EPO_AUTO_CLR /*| EPO_OUT_DMA_INT_MASK*/;  
	//AUTO_CLR(OUT_PKT_READY is cleared automatically), interrupt_masking.

	*(volatile BYTE *)&pHWHead->pUSBCtrlAddr->EP4DU=0x01; //DMA transfer unit=1byte
	*(volatile BYTE *)&pHWHead->pUSBCtrlAddr->EP4DC=UDMA_OUT_DMA_RUN|UDMA_DMA_MODE_EN;
		//deamnd disable,out_dma_run=run,in_dma_run=stop,DMA mode enable

	//wait until DMA_CON is effective.
	*(volatile BYTE *)&pHWHead->pUSBCtrlAddr->EP4DC;
	for(i=0;i<10;i++);	  


	v_pINTregs->rINTMSK&=~(BIT_DMA3);  //enable DMA3 interrupt

	pHWHead->pUSBCtrlAddr->INDEX.index = 0x0;	//del me
	
_done:
	LeaveCriticalSection(&pHWHead->HwRegCritSec);
    
	USBDMSG(1, (TEXT("--SC2440_USB_Init\r\n")));
	//RETAILMSG(1, (TEXT("--SC2440_USB_Init\r\n")));
}

/*************************************************************************
Process Endpoint 0 interrupt. We are called here on every EIR interrupt.
We need to check the EP0 status and send the next packet, if any. We need
to handle errors as follows:

SE - This is set if we received a new command before we finished the last
	one. This happens when the host does not wish to read all reply data
	(it may only be interested in the first 8 bytes of a device descriptor
	to get the max packet size, for example). We will simply discard the
	next data to send and continue with the normal command handling. We
 	need to clear SE by asserting SSE before we continue.
 
SST - This is set when the UDC actually issues a stall. We just clear it
	and continue.

 Normal setup is as follows:

 OPR - This indicates a receive command packet is ready to be read. Commands
	are always 8 bytes in length and follow the form defined in chapter 9.
 
 If OPR is not set and IPR is not set and SE is not set we must be here
 because IPR transitioned from 1 -> 0. This means the last packet has been
 sent (ACK'd). Send the next packet, if any.

 We are emulating a serial line here. The state of the modem control lines
 are sent in a command packet. Extract these and set the modem status bits
 as for a normal serial line. This allows the upper levels to treat this
 link just like a serial line with modem control (no flow control is
 explicitly required and hence is not supported.
**************************************************************************/
void SC2440_USB_DoEndpoint0(PSER_INFO pHWHead, PDWORD pModemStatus)
{
	BYTE dbuf[8];
	WORD len, totLen;
	PUCHAR p;
	unsigned int cnt=0;

	struct EP0ICSR1Bits EP0ICSR1=pHWHead->pUSBCtrlAddr->EP0ICSR1;

	// Endpoint 0 mode
	UDC_REG_BITSET(struct INDEXBits, &pHWHead->pUSBCtrlAddr->INDEX, index, 0x0); 
	
	DEBUGMSG(1, (TEXT("++SC2440_USB_DoEndpoint0\r\n")));
	//RETAILMSG(1, (TEXT("++SC2440_USB_DoEndpoint0\r\n")));

	/* If there is data to send and the transmitter is open go send
	* the next packet. But, do not continue to send if the host has
	* aborted the transfer or sent a new one. We'll clean up below.
	*/
	if ((EP0ICSR1.se_sds == 0) && (EP0ICSR1.ipr_ == 0) && 
				(EP0ICSR1.opr_ipr == 0) && (sendPacket))
	{
		DEBUGMSG( 1, (TEXT("Send remaining data !!!\r\n")));
		
		sendData(pHWHead, sendPacket, sendPacketLength, sendTotalLength);
	}
	
	// If setup end, the host has aborted the last transfer. Kill any
	//remaining packets and continue;
	if (EP0ICSR1.se_sds) {
		sendPacketLength = 0;
		sendPacket = NULL;
		UDC_REG_BITSET(struct EP0ICSR1Bits, &pHWHead->pUSBCtrlAddr->EP0ICSR1, sse_, 1); 
	}

	// If stall ack, not sure what needs to be done here.
	if (EP0ICSR1.sts_ur) 
	{
		DEBUGMSG( 1, (TEXT("Stall ACK set\r\n")));
		UDC_REG_BITSET(struct EP0ICSR1Bits, &pHWHead->pUSBCtrlAddr->EP0ICSR1, sts_ur, 0);  // 0 -> clear
	}

	// If new command received ...

	DEBUGMSG(1, (TEXT("OUT_PKT_RDY = 0x%x\r\n"), EP0ICSR1.opr_ipr));
	// if (EP0ICSR1.opr_ipr) 
	if (EP0ICSR1.opr_ipr)
	{

		// New command with existing data. Not sure how this can happen but if
		// it does just clear the old data and continue.
		if (sendPacket)
	 		sendPacket = NULL;

		cnt = pHWHead->pUSBCtrlAddr->OFCR1.out_cnt_low | pHWHead->pUSBCtrlAddr->OFCR2.out_cnt_high << 8; 
		DEBUGMSG(1,(TEXT("UDC received setup, EP0ICSR1 %x, len %d\n"), 
					EP0ICSR1, cnt));
	
		// Read the command from the input FIFO
		if (getCommand(pHWHead, (void*)&pHWHead->dReq) != 0) 
		{
			sendDone(pHWHead,1);
		}
	
		DEBUGMSG(1, 
			(TEXT("bmRequest: %02x bRequest: %02x wValue: %04x wIndex: %04x wLength: %04x\n"), 
			pHWHead->dReq.bmRequest,
			pHWHead->dReq.bRequest,
			pHWHead->dReq.wValue,
			pHWHead->dReq.wIndex,
			pHWHead->dReq.wLength));
				
		// Decode and execute the command. We support two sets of commands, vendor
		// specific (modem control) and chapter 9 standard commands.
		if (pHWHead->dReq.bmRequest & 0x60)	// vendor or class command
		{ 		
			DEBUGMSG(1, (TEXT("Vendor/Class Command !!\n")));			
			
			if (SET_CONTROL_LINE_STATE == pHWHead->dReq.bRequest) 
			{
				// Host is notifying us of control line state.
				// wValue contains bitmask
				// 0 - DTR
				// 1 - RTS
				DEBUGMSG(1, (TEXT("SET_CONTROL_LINE_STATE %4.4X\r\n"),
					pHWHead->dReq.wValue));		
				
				if (pHWHead->dReq.wValue & 0x01)
					*pModemStatus |= (MS_DSR_ON|MS_RLSD_ON);  // DTR active, set DSR/RLSD
				else
					*pModemStatus &= ~(MS_DSR_ON|MS_RLSD_ON); // DTR clear, clr DSR/RLSD
	        
				if (pHWHead->dReq.wValue & 0x02) 
					*pModemStatus |= MS_CTS_ON;		  // RTS active, set CTS
				else
					*pModemStatus &= ~MS_CTS_ON;		  // RTS clear, clear CTS
			}			
			else {
				// Unknown vendor/class request
				DEBUGMSG(1,(TEXT("Unknown vendor/class request %2.2X\r\n"),
					pHWHead->dReq.bRequest));
			}			
			
			// Command is complete
			sendDone(pHWHead,0);
			return;
		}			
				
		// standard chapter 9 commands
		switch (pHWHead->dReq.bRequest) {
		case GET_STATUS:
			RETAILMSG(1, (TEXT("GET_STATUS\r\n")));
	
			dbuf[0] = 0;
			dbuf[1] = 0;
	
			// If this is a request to the endpoint return the stalled status.
			if (pHWHead->dReq.bmRequest == 0x82) {
				dbuf[0] = 0;
				switch (pHWHead->dReq.wIndex & 15) {
	
				// Control endpoint can't stall (we wouldn't get this message).
				case 0:
					break;			
		  
				// OUT endpoint. Return send_stall.
				case 1:
					UDC_REG_BITSET(struct INDEXBits, &pHWHead->pUSBCtrlAddr->INDEX, index, 0x4); 
					if (pHWHead->pUSBCtrlAddr->OCSR1.send_stall)
						dbuf[0] = 1;
					break;
	
				// IN endpoint. Return send_stall.
				case 2:
				//case 3:
				case 4:
					UDC_REG_BITSET(struct INDEXBits, &pHWHead->pUSBCtrlAddr->INDEX, index, 0x1); 
					if (pHWHead->pUSBCtrlAddr->EP0ICSR1.se_sds)
						dbuf[0] = 1;
					break;
				}
				UDC_REG_BITSET(struct INDEXBits, &pHWHead->pUSBCtrlAddr->INDEX, index, 0);
			}			
				
			// Clear the OPR bit and start the data phase
			sendCommandDone(pHWHead);
	
			// Send the reply data.
			sendData(pHWHead, dbuf, 2, 2);
			//RETAILMSG(1, (TEXT("GS[0x%X]\r\n"), pHWHead->dReq.wIndex & 0xFF));
			break;				
	
		case CLEAR_FEATURE:
			DEBUGMSG(1, (TEXT("CLEAR_FEATURE\r\n")));
	
			if (pHWHead->dReq.bmRequest == 0x02) {		// Halt 
				switch (pHWHead->dReq.wIndex & 15) {
				// Control endpoint. Not suggested.
				case 0:
					break;
	
				// OUT endpoint. Set and clear sendstall to reset DATA0/DATA1.
				case 1:
					UDC_REG_BITSET(struct INDEXBits, &pHWHead->pUSBCtrlAddr->INDEX, index, 0x4); 
					UDC_REG_BITSET(struct OCSR1Bits,
						&pHWHead->pUSBCtrlAddr->OCSR1,send_stall,1);	// STALL!!!
					UDC_REG_BITSET(struct OCSR1Bits,
						&pHWHead->pUSBCtrlAddr->OCSR1,send_stall,0);
					UDC_REG_BITSET(struct OCSR1Bits,
						&pHWHead->pUSBCtrlAddr->OCSR1,sent_stall,0);	// CLEAR STALL
					break;
	
				// IN endpoint. Set and clear sendstall to reset DATA0/DATA1.
				case 2:
				//case 3:
				case 4:
					UDC_REG_WRITE(struct INDEXBits, &pHWHead->pUSBCtrlAddr->INDEX, index, 0x1); 
					UDC_REG_BITSET(struct EP0ICSR1Bits,
						&pHWHead->pUSBCtrlAddr->EP0ICSR1,se_sds,1);	// STALL!!!
					UDC_REG_BITSET(struct EP0ICSR1Bits,
						&pHWHead->pUSBCtrlAddr->EP0ICSR1,se_sds,0);
					UDC_REG_BITSET(struct EP0ICSR1Bits,
						&pHWHead->pUSBCtrlAddr->EP0ICSR1,sds_sts,0);	// CLEAR STALL
					break;
				}
				UDC_REG_BITSET(struct INDEXBits, &pHWHead->pUSBCtrlAddr->INDEX, index, 0);
			}
	
			// Command is complete

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一本大道久久a久久综合婷婷 | 美女视频免费一区| av电影天堂一区二区在线观看| 日韩欧美一区二区在线视频| 久久久亚洲精品一区二区三区| 亚洲在线视频一区| www.欧美日韩| 国产精品久久久久久妇女6080| 国产麻豆91精品| 中文字幕成人在线观看| 成av人片一区二区| 亚洲第一电影网| 精品国产3级a| 风间由美性色一区二区三区| 欧美精品一区二区久久久| 国产精品1区二区.| 国产三级一区二区| 色老综合老女人久久久| 日本不卡一区二区| av一区二区三区黑人| 国产日韩欧美制服另类| 一本大道久久精品懂色aⅴ| 日本亚洲免费观看| 欧美激情在线看| 这里只有精品电影| 激情国产一区二区| 亚洲婷婷在线视频| 欧美成人精品福利| 99免费精品在线| 国精品**一区二区三区在线蜜桃| 国产精品免费av| 欧美一区二区精品久久911| 91视频一区二区三区| 免费在线看一区| 亚洲视频一区二区在线观看| 91精品国产aⅴ一区二区| 成人免费看视频| 亚洲高清视频在线| 国产精品福利一区二区三区| 日韩欧美国产不卡| 欧美福利视频一区| 欧洲生活片亚洲生活在线观看| 国产揄拍国内精品对白| 男男视频亚洲欧美| 亚洲国产日韩在线一区模特| 国产精品美女久久久久久久| 日韩亚洲电影在线| 日韩欧美一二三区| 狠狠色狠狠色综合系列| 亚洲成av人片一区二区梦乃| 1000部国产精品成人观看| 欧美r级在线观看| 26uuu欧美日本| 日本一区二区动态图| 国产蜜臀97一区二区三区| 久久久久国产精品麻豆| 久久久亚洲国产美女国产盗摄 | 国产精品卡一卡二卡三| 国产精品免费网站在线观看| 亚洲欧洲精品天堂一级| 亚洲三级久久久| 亚洲成人av一区二区三区| 天天色综合天天| 久久99在线观看| 国产老肥熟一区二区三区| 激情小说欧美图片| 成人国产精品免费| 911精品国产一区二区在线| 日韩精品自拍偷拍| 国产精品美女久久久久久久 | 精品国产一区二区三区久久影院| 欧美国产一区视频在线观看| 青青草成人在线观看| 欧美性猛片aaaaaaa做受| 亚洲国产精品综合小说图片区| 国内成人自拍视频| 欧美日韩三级视频| 亚洲品质自拍视频| 99久久综合精品| 国产日韩欧美精品一区| 久久99热狠狠色一区二区| 不卡的av电影在线观看| 日韩精品一区二区三区老鸭窝| 天天影视涩香欲综合网| eeuss影院一区二区三区| 欧美成人精品二区三区99精品| 亚洲成人在线网站| 色综合久久中文字幕综合网| 久久精品夜色噜噜亚洲a∨| 国产麻豆精品theporn| 久久无码av三级| 久久精品二区亚洲w码| 久久久国产精华| 国模大尺度一区二区三区| 久久久久国产精品人| 成人激情免费网站| 一区二区高清在线| 欧美午夜视频网站| 六月丁香综合在线视频| 久久久99久久精品欧美| 成人免费福利片| 亚洲视频 欧洲视频| 99精品欧美一区| 免费成人在线网站| 一区二区三区av电影| 欧美精品一区二区三区蜜桃| 欧美写真视频网站| 国产欧美精品一区二区色综合| 香蕉乱码成人久久天堂爱免费| 成人福利视频网站| 久久久亚洲午夜电影| 午夜欧美电影在线观看| 91免费国产视频网站| 久久久www成人免费无遮挡大片 | 亚洲国产视频a| a亚洲天堂av| 久久久久99精品国产片| 蜜臀av国产精品久久久久| 91福利在线播放| 国产精品天美传媒| 国产一区二区主播在线| 51精品秘密在线观看| 樱花草国产18久久久久| 成人app在线| 国产精品天干天干在线综合| 国产一区二区毛片| 精品国产一二三区| 麻豆国产精品视频| 51精品视频一区二区三区| 午夜精品福利在线| 欧美日韩久久久一区| 亚洲一区二区三区美女| 色一区在线观看| 亚洲精品少妇30p| 91黄色免费版| 亚洲一区二区三区四区五区黄| 一本高清dvd不卡在线观看| 1024国产精品| 在线观看不卡一区| 亚洲最大成人网4388xx| 欧美私人免费视频| 婷婷成人激情在线网| 日韩一级欧美一级| 精品一区二区三区视频在线观看| 欧美成人性战久久| 国产黑丝在线一区二区三区| 国产欧美一区二区三区在线看蜜臀 | 色94色欧美sute亚洲13| 亚洲精品国产成人久久av盗摄 | 欧美一区二区三区婷婷月色 | 99久久国产综合精品麻豆| 一区视频在线播放| 色美美综合视频| 一区二区三区高清| 91精品国产综合久久国产大片| 免费成人在线观看视频| 欧美极品少妇xxxxⅹ高跟鞋| 成人激情视频网站| 亚洲高清久久久| 日韩精品一区二区三区三区免费| 国产成人免费视频| 国产精品欧美久久久久无广告| aaa亚洲精品| 婷婷成人激情在线网| 欧美大片一区二区| 成人ar影院免费观看视频| 亚洲一区在线视频| 日韩欧美电影一二三| 成人动漫一区二区| 亚洲1区2区3区视频| 精品国产露脸精彩对白| 成人中文字幕电影| 亚洲h动漫在线| 国产精品午夜电影| 欧美日韩精品一区二区三区四区| 精品在线亚洲视频| 亚洲男同性恋视频| 91精品国产综合久久精品app| 国产精品中文字幕日韩精品| 亚洲精品免费一二三区| 欧美一区二区三区日韩| 成人性色生活片| 视频一区免费在线观看| 久久九九99视频| 欧美专区在线观看一区| 国产伦精品一区二区三区免费| 亚洲色图视频免费播放| 欧美一区二区三区四区五区| 99re8在线精品视频免费播放| 图片区小说区区亚洲影院| 国产欧美日韩综合精品一区二区| 欧美日韩在线播放| 成人听书哪个软件好| 日韩av电影天堂| 亚洲免费伊人电影| 国产日韩欧美一区二区三区综合| 欧美天堂一区二区三区| 成人深夜福利app| 日韩av电影天堂| 亚洲一区二区精品3399|