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

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

?? mmc_protocol.c

?? 三星公司ARM芯片S3C2410 SD/MMC LINUX 驅(qū)動程序源碼。
?? C
字號:
/* * MMC State machine functions * * Copyright 2002 Hewlett-Packard Company * * Use consistent with the GNU GPL is permitted, * provided that this copyright notice is * preserved in its entirety in all copies and derived works. * * HEWLETT-PACKARD COMPANY MAKES NO WARRANTIES, EXPRESSED OR IMPLIED, * AS TO THE USEFULNESS OR CORRECTNESS OF THIS CODE OR ITS * FITNESS FOR ANY PARTICULAR PURPOSE. * * Many thanks to Alessandro Rubini and Jonathan Corbet! * * This part of the code is separated from mmc_core.o so we can * plug in different state machines (e.g., SPI, SD) * * This code assumes that you have exactly one card slot, no more. * * Author:  Andrew Christian *          6 May 2002 */#include <linux/config.h>#include <linux/module.h>#include <linux/version.h>#include <linux/proc_fs.h>#include "mmc_core.h"static void * mmc_cim_default_state( struct mmc_dev *dev, int first );/****************************************************************** * * Useful utility functions * ******************************************************************/static int mmc_has_valid_request( struct mmc_dev *dev ){	struct mmc_io_request *request = dev->io_request;	struct mmc_slot *slot;	MMC_DEBUG(2,"(%p)", request);	if ( !request ) return 0;	slot = dev->slot + request->id;	if ( !slot->media_driver ) {		MMC_DEBUG(0,"card doesn't have media driver");		return 0;	}	return 1;}static void mmc_configure_card( struct mmc_dev *dev, int slot ){	u32 rate;	MMC_DEBUG(2,"slot=%d", slot);	/* Fix the clock rate */	rate = mmc_tran_speed(dev->slot[slot].csd.tran_speed);	MMC_DEBUG(2,"==> mmc_configure_card (rate= %d) ",rate);	if ( rate < MMC_CLOCK_SLOW )		rate = MMC_CLOCK_SLOW;	if ( rate > MMC_CLOCK_FAST )		rate = MMC_CLOCK_FAST;	dev->sdrive->set_clock(rate);		/* Match the drive media */	mmc_match_media_driver(&dev->slot[slot]);	run_sbin_mmc_hotplug(dev, slot, 1);}/* The blocks requested by the kernel may or may not   match what we can do.  Unfortunately, filesystems play   fast and loose with block sizes, so we're stuck with this */static void mmc_fix_request_block_size( struct mmc_dev *dev ){	struct mmc_io_request *t = dev->io_request;	struct mmc_slot *slot = dev->slot + t->id;	u16 block_len;	MMC_DEBUG(1, "io_request id=%d cmd=%d sector=%ld nr_sectors=%ld block_len=%ld buf=%p",	      t->id, t->cmd, t->sector, t->nr_sectors, t->block_len, t->buffer);	switch( t->cmd ) {	case READ:		block_len = 1 << slot->csd.read_bl_len;		break;	case WRITE:		block_len = 1 << slot->csd.write_bl_len;		break;	default:		MMC_DEBUG(0,"unrecognized command %d", t->cmd);		return;	}	if ( block_len < t->block_len ) {		int scale = t->block_len / block_len;		MMC_DEBUG(1,"scaling by %d from block_len=%d to %ld", 		      scale, block_len, t->block_len);		t->block_len   = block_len;		t->sector     *= scale;		t->nr_sectors *= scale;	}}/****************************************************************** * State machine routines to read and write data * *  SET_BLOCKLEN only needs to be done once for each card. *  SET_BLOCK_COUNT is only valid in MMC 3.1; most cards don't support this, *  so we don't use it. *  *  In the 2.x cards we have a choice between STREAMING mode and *  SINGLE mode.  There's an obvious performance possibility in  *  using streaming mode, but at this time we're just using the SINGLE *  mode. ******************************************************************/static void * mmc_cim_read_write_block( struct mmc_dev *dev, int first ){	struct mmc_io_request *t = dev->io_request;	struct mmc_response_r1 r1;	struct mmc_slot *slot = dev->slot + t->id;	int    retval = 0;	int    i;	MMC_DEBUG(2,"first=%d",first);	if ( first ) {		mmc_fix_request_block_size( dev );		switch ( slot->state ) {		case CARD_STATE_STBY:			mmc_simple_cmd(dev, MMC_SELECT_CARD, slot->addr, RESPONSE_R1B );			break;		case CARD_STATE_TRAN:			mmc_simple_cmd(dev, MMC_SET_BLOCKLEN, t->block_len, RESPONSE_R1 );			break;		default:			MMC_DEBUG(0,"invalid card state %d", slot->state);			goto read_block_error;			break;		}		return NULL;	}	switch (dev->request.cmd) {	case MMC_SELECT_CARD:		if ( (retval = mmc_unpack_r1( &dev->request, &r1, slot->state )) )			goto read_block_error;		for ( i = 0 ; i < dev->num_slots ; i++ )			dev->slot[i].state = ( i == t->id ? CARD_STATE_TRAN : CARD_STATE_STBY );		if ((slot->flags & MMC_SLOT_FLAG_SDCARD) && (dev->sdrive->flags & MMC_SDFLAG_4BIT_BUS))			mmc_simple_cmd(dev, MMC_APP_CMD, slot->addr, RESPONSE_R1);		else			mmc_simple_cmd(dev, MMC_SET_BLOCKLEN, t->block_len, RESPONSE_R1 );		break;	case MMC_APP_CMD:		if ( (retval = mmc_unpack_r1( &dev->request, &r1, slot->state )) )			goto read_block_error;				mmc_simple_cmd(dev, SD_APP_SET_BUS_WIDTH, 2, RESPONSE_R1 );		break;	case SD_APP_SET_BUS_WIDTH:		if ( (retval = mmc_unpack_r1( &dev->request, &r1, slot->state )) ) {	    		MMC_DEBUG(0,"SD_APP_SET_BUS_WIDTH - Error: 4 bit data bus not supported");		} else	    		MMC_DEBUG(0,"SD_APP_SET_BUS_WIDTH - 4 bit data bus supported");		mmc_simple_cmd(dev, MMC_SET_BLOCKLEN, t->block_len, RESPONSE_R1 );		break;	case MMC_SET_BLOCKLEN:		if ( (retval = mmc_unpack_r1( &dev->request, &r1, slot->state )) )			goto read_block_error;		mmc_send_cmd(dev, (t->cmd == READ ? MMC_READ_SINGLE_BLOCK : MMC_WRITE_BLOCK), 			     t->sector * t->block_len, 1, t->block_len, RESPONSE_R1 );		break;	case MMC_READ_SINGLE_BLOCK:	case MMC_WRITE_BLOCK:		if ( (retval = mmc_unpack_r1( &dev->request, &r1, slot->state )) )			goto read_block_error;		t->nr_sectors--;		t->sector++;		t->buffer += t->block_len;		if ( t->nr_sectors ) {			mmc_send_cmd(dev, (t->cmd == READ ? MMC_READ_SINGLE_BLOCK : MMC_WRITE_BLOCK), 				     t->sector * t->block_len, 1, t->block_len, RESPONSE_R1 );		}		else {			mmc_finish_io_request( dev, 1 );			if ( mmc_has_valid_request(dev) )				return mmc_cim_read_write_block;			return mmc_cim_default_state;		}		break;	default:		goto read_block_error;		break;	}	return NULL;read_block_error:	MMC_DEBUG(0,"failure during cmd %d, error %d (%s)", 	      dev->request.cmd, retval, mmc_result_to_string(retval));	mmc_finish_io_request( dev, 0 );   // Failure	return mmc_cim_default_state;}/* Update the card's status information in preparation to running a read/write cycle */static void * mmc_cim_get_status( struct mmc_dev *dev, int first ){	struct mmc_slot *slot = dev->slot + dev->io_request->id;	struct mmc_response_r1 r1;	int retval = MMC_NO_ERROR;	MMC_DEBUG(2,"first=%d",first);	if ( first ) {		mmc_simple_cmd(dev, MMC_SEND_STATUS, slot->addr, RESPONSE_R1 );		return NULL;	}	switch (dev->request.cmd) {	case MMC_SEND_STATUS:		retval = mmc_unpack_r1(&dev->request,&r1,slot->state);		if ( !retval || retval == MMC_ERROR_STATE_MISMATCH ) {			slot->state = R1_CURRENT_STATE(r1.status);			return mmc_cim_read_write_block;		}		break;	default:		break;	}	MMC_DEBUG(0, "failure during cmd %d, error=%d (%s)", dev->request.cmd,	      retval, mmc_result_to_string(retval));	mmc_finish_io_request(dev,0);	return mmc_cim_default_state;}static void * mmc_cim_handle_request( struct mmc_dev *dev, int first ){	MMC_DEBUG(2,"first=%d",first);	if ( !first && !mmc_has_valid_request(dev)) {		MMC_DEBUG(0, "invalid request");		mmc_finish_io_request(dev,0);		return mmc_cim_default_state;	}	if ( first )		return mmc_cim_get_status;	return mmc_cim_read_write_block;}/****************************************************************** * * State machine routines to initialize card(s) * ******************************************************************//*  CIM_SINGLE_CARD_ACQ  (frequency at 400 kHz)  --- Must enter from GO_IDLE_STATE ---  1. SEND_OP_COND (Full Range) [CMD1]   {optional}  2. SEND_OP_COND (Set Range ) [CMD1]     If busy, delay and repeat step 2  3. ALL_SEND_CID              [CMD2]     If timeout, set an error (no cards found)  4. SET_RELATIVE_ADDR         [CMD3]  5. SEND_CSD                  [CMD9]  6. SET_DSR                   [CMD4]    Only call this if (csd.dsr_imp).  7. Set clock frequency (check available in csd.tran_speed) */static void * mmc_cim_single_card_acq( struct mmc_dev *dev, int first ){	struct mmc_response_r3 r3;	struct mmc_response_r1 r1;	struct mmc_slot *slot = dev->slot;     /* Must be slot 0 */	int retval;	MMC_DEBUG(2,"");	if ( first ) {		mmc_simple_cmd(dev, MMC_GO_IDLE_STATE, 0, RESPONSE_NONE);		dev->sdrive->ocr = 0x20000;		return NULL;	}	switch (dev->request.cmd) {	case MMC_GO_IDLE_STATE: /* No response to parse */	        MMC_DEBUG(0,"==> MMC_GO_IDLE_STATE");		if ( (dev->sdrive->flags & MMC_SDFLAG_VOLTAGE )) {			MMC_DEBUG(0,"error - current driver doesn't do OCR");		}		MMC_DEBUG(0,"==> before sending MMC_APP_CMD ");		mmc_simple_cmd(dev, MMC_APP_CMD, 0, RESPONSE_R1);		MMC_DEBUG(0,"==> after sending MMC_APP_CMD ");	        MMC_DEBUG(0,"<== MMC_GO_IDLE_STATE");		break;	case MMC_APP_CMD:	        MMC_DEBUG(0,"==> MMC_APP_CMD ");		retval = mmc_unpack_r1(&dev->request,&r1,slot->state);		if ( retval ) {			MMC_DEBUG(0,"failed MMC_APP_CMD error=%d (%s)", 			      retval, mmc_result_to_string(retval));			MMC_DEBUG(0,"could be an MMC card - trying MMC_SEND_OP_COND");			mmc_simple_cmd(dev, MMC_SEND_OP_COND, 0x00ffc000, RESPONSE_R3);			break;		}		mmc_simple_cmd(dev, SD_APP_OP_COND, dev->sdrive->ocr, RESPONSE_R3);	        MMC_DEBUG(0,"<== MMC_APP_CMD ");		break;	case SD_APP_OP_COND:		MMC_DEBUG(0,"==> SD_APP_OP_COND ");		retval = mmc_unpack_r3(&dev->request, &r3);		if ( retval ) {		   MMC_DEBUG(0,"failed SD_APP_OP_COND error=%d (%s) - could be MMC card", 		       retval, mmc_result_to_string(retval));		   MMC_DEBUG(2,"dev->sdrive->ocr = %x",dev->sdrive->ocr)		     mmc_simple_cmd(dev, MMC_SEND_OP_COND, 0x00ffc000, RESPONSE_R3);		}	       	else {		   MMC_DEBUG(0,"==> SD_APP_OP_COND 1");		   MMC_DEBUG(2,"read ocr value = 0x%08x", r3.ocr);		   if (!(r3.ocr & MMC_CARD_BUSY)) {		      MMC_DEBUG(0,"==> SD_APP_OP_COND / card is busy wait until retry => resend ");		      /* Need to add an time (or loop limit) */		      dev->sdrive->ocr = r3.ocr;		      mmc_simple_cmd(dev, MMC_APP_CMD, 0, RESPONSE_R1);		   }		   else {		      MMC_DEBUG(0,"==> SD_APP_OP_COND / CARD_STATE_READY ");		      /* This seems to be a sd card */		      slot->flags |= MMC_SLOT_FLAG_SDCARD;		      slot->state = CARD_STATE_READY;		      mmc_simple_cmd(dev, MMC_ALL_SEND_CID, 0, RESPONSE_R2_CID);		      MMC_DEBUG(0,"==> MMC_ALL_SEND_CID ");		   }		}	        MMC_DEBUG(0,"<== SD_APP_OP_COND ");		break;	case MMC_SEND_OP_COND:	        MMC_DEBUG(0,"==> MMC_SEND_OP_COND ");		retval = mmc_unpack_r3(&dev->request, &r3);		if ( retval ) {			MMC_DEBUG(0,"failed MMC_SEND_OP_COND error=%d (%s) - could be SD card but sdcard init failed. Aborting!", 			      retval, mmc_result_to_string(retval));			return mmc_cim_default_state;		}		MMC_DEBUG(2,"read ocr value = 0x%08x", r3.ocr);		if (!(r3.ocr & MMC_CARD_BUSY)) {		   MMC_DEBUG(0,"    MMC_SEND_OP_COND Busy retrying ...");			mmc_simple_cmd(dev, MMC_SEND_OP_COND, dev->sdrive->ocr, RESPONSE_R3);		}		else {			slot->state = CARD_STATE_READY;			mmc_simple_cmd(dev, MMC_ALL_SEND_CID, 0, RESPONSE_R2_CID);		}	        MMC_DEBUG(0,"<== MMC_SEND_OP_COND ");		break;			case MMC_ALL_SEND_CID: 	        MMC_DEBUG(0,"==> MMC_ALL_SEND_CID ()");		if (slot->flags & MMC_SLOT_FLAG_SDCARD)		  retval = mmc_unpack_cid_sd( &dev->request, &slot->cid );		else		  retval = mmc_unpack_cid_mmc( &dev->request, &slot->cid );		if ( retval ) {			MMC_DEBUG(0,"unable to ALL_SEND_CID error=%d (%s)", 			      retval, mmc_result_to_string(retval));			return mmc_cim_default_state;		}		slot->state = CARD_STATE_IDENT;		mmc_simple_cmd(dev, MMC_SET_RELATIVE_ADDR, ID_TO_RCA(slot->id) << 16, RESPONSE_R1);	        MMC_DEBUG(0,"<== MMC_ALL_SEND_CID ()");		break;        case MMC_SET_RELATIVE_ADDR:	        MMC_DEBUG(0,"==> MMC_SET_RELATIVE_ADDR ");		retval = mmc_unpack_r1(&dev->request,&r1,slot->state);		if ( retval ) {			MMC_DEBUG(0, "unable to SET_RELATIVE_ADDR error=%d (%s)", 			      retval, mmc_result_to_string(retval));			return mmc_cim_default_state;		}		if (slot->flags & MMC_SLOT_FLAG_SDCARD)		  slot->addr = r1.status&0xFFFF0000;	/* sd addr is in the upper part */		else		  slot->addr = ID_TO_RCA(slot->id) << 16; /* for MMC, this is slot +1  */		slot->state = CARD_STATE_STBY;		mmc_simple_cmd(dev, MMC_SEND_CSD, slot->addr, RESPONSE_R2_CSD);	        MMC_DEBUG(0,"<== MMC_SET_RELATIVE_ADDR ");		break;	case MMC_SEND_CSD:	        MMC_DEBUG(0,"<== MMC_SEND_CSD () ");		retval = mmc_unpack_csd(&dev->request, &slot->csd);		if ( retval ) {			MMC_DEBUG(0, "unable to SEND_CSD error=%d (%s)", 			      retval, mmc_result_to_string(retval));			return mmc_cim_default_state;		}		if ( slot->csd.dsr_imp ) {			MMC_DEBUG(0, "driver doesn't support setting DSR");			// mmc_simple_cmd(dev, MMC_SET_DSR, 0, RESPONSE_NONE);		}		mmc_configure_card( dev, 0 );	        MMC_DEBUG(0,"==> MMC_SEND_CSD () ");		return mmc_cim_default_state;	default:		MMC_DEBUG(0, "error!  Illegal last cmd %d", dev->request.cmd);		return mmc_cim_default_state;	}	return NULL;}/*  CIM_INIT_STACK       (frequency at 400 kHz)  1. GO_IDLE_STATE (CMD0)  2. Do CIM_SINGLE_CARD_ACQ*/static void * mmc_cim_init_stack( struct mmc_dev *dev, int first ){	MMC_DEBUG(2,"");	if ( first ) {		mmc_simple_cmd(dev, MMC_CIM_RESET, 0, RESPONSE_NONE);		return NULL;	}	switch (dev->request.cmd) {	case MMC_CIM_RESET:		if ( dev->slot[0].state == CARD_STATE_EMPTY )			return mmc_cim_default_state;		dev->slot[0].state = CARD_STATE_IDLE;		return mmc_cim_single_card_acq;	default:		MMC_DEBUG(0,"invalid state %d", dev->request.cmd);		break;	}	return NULL;}/****************************************************************** *  Default state - start here ******************************************************************/static void * mmc_cim_default_state( struct mmc_dev *dev, int first ){	MMC_DEBUG(2,"");	mmc_check_eject(dev);	if (mmc_check_insert(dev))		return mmc_cim_init_stack;	else if (mmc_has_valid_request(dev))		return mmc_cim_handle_request;	return NULL;}/****************************************************************** *  State function handler ******************************************************************/typedef void *(*state_func_t)(struct mmc_dev *, int);static state_func_t g_single_card = &mmc_cim_default_state;void mmc_protocol_single_card( struct mmc_dev *dev, int state_flags ){	state_func_t    sf;	sf = g_single_card(dev,0);	while ( sf ) {		g_single_card = sf;		sf = g_single_card(dev,1);	}}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久亚洲精精品中文字幕早川悠里 | 成人h动漫精品| 亚洲欧美国产77777| 91精品国产综合久久久久久久| 欧美国产丝袜视频| 视频一区在线播放| 久久久午夜精品| 在线观看国产日韩| 成人深夜视频在线观看| 日韩黄色免费电影| 亚洲精品乱码久久久久久日本蜜臀| 日韩视频一区二区在线观看| 在线观看日韩国产| 不卡一区二区在线| 国产精品伊人色| 韩国中文字幕2020精品| 亚洲女人的天堂| 欧美激情综合五月色丁香小说| 717成人午夜免费福利电影| 91一区二区在线观看| 国产一区亚洲一区| 老司机精品视频线观看86| 一级精品视频在线观看宜春院| 日本一区二区三区四区| 欧美精品日韩精品| www.亚洲精品| 国产麻豆精品一区二区| 美国毛片一区二区三区| 日韩av在线免费观看不卡| 亚洲一区影音先锋| 亚洲精品老司机| 一区在线观看视频| 中文字幕视频一区| 国产精品久久久久久久久果冻传媒| 久久综合久久综合久久| 精品国产免费一区二区三区香蕉| 欧美一区二区三区啪啪| 欧美高清激情brazzers| 欧美精品久久天天躁| 欧美美女黄视频| 制服丝袜中文字幕一区| 欧美一区二区三区公司| 欧美一区二区福利在线| 欧美成人伊人久久综合网| 日韩视频在线一区二区| 欧美一区二区三区四区高清| 欧美成人激情免费网| 精品88久久久久88久久久| 久久先锋影音av| 中文字幕av一区二区三区免费看| 国产精品免费av| 日韩一区在线播放| 一二三区精品福利视频| 亚洲成人动漫一区| 免费精品视频在线| 国产在线播精品第三| 国产精品77777竹菊影视小说| 国产精品91一区二区| 99国产精品久| 欧美日韩一区二区在线观看视频 | 一本大道av伊人久久综合| 色欧美片视频在线观看| 欧美日高清视频| 精品av综合导航| 中文字幕佐山爱一区二区免费| 一区二区三区欧美日韩| 日本va欧美va欧美va精品| 欧美r级在线观看| 91免费观看国产| 日本韩国精品在线| 欧美日韩三级一区| 精品国产一区二区三区久久影院 | 欧美男人的天堂一二区| 日韩欧美国产精品| 国产精品三级视频| 亚洲第一福利一区| 国产精品综合一区二区三区| 91毛片在线观看| 日韩欧美一区二区三区在线| 国产精品免费免费| 日韩精品久久久久久| 成人一区二区在线观看| 欧美精品丝袜久久久中文字幕| 国产三级一区二区| 午夜影院久久久| 国产成人精品免费在线| 欧美老年两性高潮| 国产精品三级av| 日韩成人精品在线观看| heyzo一本久久综合| 日韩色在线观看| 日韩1区2区日韩1区2区| 日韩主播视频在线| 成人免费av网站| 欧美日本在线视频| 亚洲欧洲av另类| 久久精品999| 欧美亚洲国产一区二区三区| 国产亚洲精品超碰| 日韩av中文字幕一区二区| 91免费看`日韩一区二区| 久久色在线观看| 无吗不卡中文字幕| 91色视频在线| 国产日韩精品一区二区浪潮av| 日韩中文字幕麻豆| 在线观看日韩高清av| 国产精品久久久久国产精品日日| 麻豆成人免费电影| 在线成人免费观看| 一区二区三区国产精品| 成人蜜臀av电影| 精品sm在线观看| 毛片av一区二区三区| 欧美日韩五月天| 亚洲综合网站在线观看| 99免费精品在线观看| 国产欧美视频在线观看| 精品在线亚洲视频| 国产清纯美女被跳蛋高潮一区二区久久w| 亚洲成人自拍网| 在线观看视频一区二区 | 亚洲自拍另类综合| 成人午夜大片免费观看| 欧美变态口味重另类| 婷婷亚洲久悠悠色悠在线播放| 色综合激情五月| 亚洲视频一二三区| 波多野结衣的一区二区三区| 久久久www成人免费无遮挡大片| 久久99精品国产.久久久久久| 日韩午夜av电影| 免播放器亚洲一区| 欧美大度的电影原声| 麻豆精品视频在线观看视频| 日韩欧美电影一区| 激情综合网天天干| 精品91自产拍在线观看一区| 国产一区二区精品久久91| 欧美va天堂va视频va在线| 久草精品在线观看| 久久综合久久综合亚洲| 国产激情视频一区二区在线观看| 国产色综合久久| 成人短视频下载| 亚洲人精品一区| 欧美性淫爽ww久久久久无| 亚洲夂夂婷婷色拍ww47| 777亚洲妇女| 久久成人久久爱| 日韩欧美色综合| 久久综合九色综合欧美98| 美女在线视频一区| 精品国产精品一区二区夜夜嗨| 久久99精品久久久久久国产越南 | 国产一区二区精品久久91| 久久久综合激的五月天| 成人中文字幕电影| 亚洲蜜臀av乱码久久精品蜜桃| 欧美亚州韩日在线看免费版国语版| 午夜a成v人精品| 精品国产1区2区3区| a美女胸又www黄视频久久| 亚洲福利一区二区三区| 日韩片之四级片| 成人精品视频一区二区三区 | **性色生活片久久毛片| 欧美三级午夜理伦三级中视频| 奇米精品一区二区三区四区| 久久久亚洲高清| 91国产视频在线观看| 麻豆精品一二三| 1区2区3区精品视频| 日本亚洲天堂网| 欧美一级电影网站| 国产99久久久国产精品| 一区二区三区国产精品| 精品少妇一区二区三区日产乱码 | 麻豆精品新av中文字幕| 中文字幕一区二区三区乱码在线| 欧美性生活大片视频| 国产呦精品一区二区三区网站| 亚洲欧美日韩人成在线播放| 日韩精品中文字幕在线一区| 91在线观看高清| 久久se精品一区精品二区| 日韩美女视频一区二区| 日韩一区二区电影在线| 99re这里都是精品| 另类小说一区二区三区| 伊人婷婷欧美激情| 久久精品亚洲精品国产欧美kt∨| 欧美三级电影网站| 成人性生交大片免费看视频在线| 午夜不卡av免费| 亚洲男女毛片无遮挡| 久久这里只有精品6| 欧美日韩在线播放| 99久久99久久精品国产片果冻| 精品一区二区免费看|