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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? mmc.c

?? The latest MontaVista Linux driver about SD/MMC code
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/* *  linux/drivers/mmc/mmc.c * *  Copyright (C) 2003-2004 Russell King, All Rights Reserved. *  SD support Copyright (C) 2004 Ian Molton, All Rights Reserved. *  SD support Copyright (C) 2005 Pierre Ossman, All Rights Reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */#include <linux/config.h>#include <linux/module.h>#include <linux/init.h>#include <linux/interrupt.h>#include <linux/completion.h>#include <linux/device.h>#include <linux/delay.h>#include <linux/pagemap.h>#include <linux/err.h>#include <asm/scatterlist.h>#include <linux/scatterlist.h>#include <linux/mmc/card.h>#include <linux/mmc/host.h>#include <linux/mmc/protocol.h>#include "mmc.h"#ifdef CONFIG_MMC_DEBUG#define DBG(x...)	printk(KERN_DEBUG x)#else#define DBG(x...)	do { } while (0)#endif#define CMD_RETRIES	3/* * OCR Bit positions to 10s of Vdd mV. */static const unsigned short mmc_ocr_bit_to_vdd[] = {	150,	155,	160,	165,	170,	180,	190,	200,	210,	220,	230,	240,	250,	260,	270,	280,	290,	300,	310,	320,	330,	340,	350,	360};static const unsigned int tran_exp[] = {	10000,		100000,		1000000,	10000000,	0,		0,		0,		0};static const unsigned char tran_mant[] = {	0,	10,	12,	13,	15,	20,	25,	30,	35,	40,	45,	50,	55,	60,	70,	80,};static const unsigned int tacc_exp[] = {	1,	10,	100,	1000,	10000,	100000,	1000000, 10000000,};static const unsigned int tacc_mant[] = {	0,	10,	12,	13,	15,	20,	25,	30,	35,	40,	45,	50,	55,	60,	70,	80,};/** *	mmc_request_done - finish processing an MMC command *	@host: MMC host which completed command *	@mrq: MMC request which completed * *	MMC drivers should call this function when they have completed *	their processing of a command.  This should be called before the *	data part of the command has completed. */void mmc_request_done(struct mmc_host *host, struct mmc_request *mrq){	struct mmc_command *cmd = mrq->cmd;	int err = mrq->cmd->error;	DBG("MMC: req done (%02x): %d: %08x %08x %08x %08x\n", cmd->opcode,	    err, cmd->resp[0], cmd->resp[1], cmd->resp[2], cmd->resp[3]);	if (err && cmd->retries) {		cmd->retries--;		cmd->error = 0;		host->ops->request(host, mrq);	} else if (mrq->done) {		mrq->done(mrq);	}}EXPORT_SYMBOL(mmc_request_done);/** *	mmc_start_request - start a command on a host *	@host: MMC host to start command on *	@mrq: MMC request to start * *	Queue a command on the specified host.  We expect the *	caller to be holding the host lock with interrupts disabled. */voidmmc_start_request(struct mmc_host *host, struct mmc_request *mrq){	DBG("MMC: starting cmd %02x arg %08x flags %08x\n",	    mrq->cmd->opcode, mrq->cmd->arg, mrq->cmd->flags);	WARN_ON(host->card_busy == NULL);	mrq->cmd->error = 0;	mrq->cmd->mrq = mrq;	if (mrq->data) {		mrq->cmd->data = mrq->data;		mrq->data->error = 0;		mrq->data->mrq = mrq;		if (mrq->stop) {			mrq->data->stop = mrq->stop;			mrq->stop->error = 0;			mrq->stop->mrq = mrq;		}	}	host->ops->request(host, mrq);}EXPORT_SYMBOL(mmc_start_request);static void mmc_wait_done(struct mmc_request *mrq){	complete(mrq->done_data);}int mmc_wait_for_req(struct mmc_host *host, struct mmc_request *mrq){	DECLARE_COMPLETION(complete);	mrq->done_data = &complete;	mrq->done = mmc_wait_done;	mmc_start_request(host, mrq);	wait_for_completion(&complete);	return 0;}EXPORT_SYMBOL(mmc_wait_for_req);/** *	mmc_wait_for_cmd - start a command and wait for completion *	@host: MMC host to start command *	@cmd: MMC command to start *	@retries: maximum number of retries * *	Start a new MMC command for a host, and wait for the command *	to complete.  Return any error that occurred while the command *	was executing.  Do not attempt to parse the response. */int mmc_wait_for_cmd(struct mmc_host *host, struct mmc_command *cmd, int retries){	struct mmc_request mrq;	BUG_ON(host->card_busy == NULL);	memset(&mrq, 0, sizeof(struct mmc_request));	memset(cmd->resp, 0, sizeof(cmd->resp));	cmd->retries = retries;	mrq.cmd = cmd;	cmd->data = NULL;	mmc_wait_for_req(host, &mrq);	return cmd->error;}EXPORT_SYMBOL(mmc_wait_for_cmd);/** *	mmc_wait_for_app_cmd - start an application command and wait for 			       completion *	@host: MMC host to start command *	@rca: RCA to send MMC_APP_CMD to *	@cmd: MMC command to start *	@retries: maximum number of retries * *	Sends a MMC_APP_CMD, checks the card response, sends the command *	in the parameter and waits for it to complete. Return any error *	that occurred while the command was executing.  Do not attempt to *	parse the response. */int mmc_wait_for_app_cmd(struct mmc_host *host, unsigned int rca,	struct mmc_command *cmd, int retries){	struct mmc_request mrq;	struct mmc_command appcmd;	int i, err;	BUG_ON(host->card_busy == NULL);	BUG_ON(retries < 0);	err = MMC_ERR_INVALID;	/*	 * We have to resend MMC_APP_CMD for each attempt so	 * we cannot use the retries field in mmc_command.	 */	for (i = 0;i <= retries;i++) {		memset(&mrq, 0, sizeof(struct mmc_request));		appcmd.opcode = MMC_APP_CMD;		appcmd.arg = rca << 16;		appcmd.flags = MMC_RSP_R1;		appcmd.retries = 0;		memset(appcmd.resp, 0, sizeof(appcmd.resp));		appcmd.data = NULL;		mrq.cmd = &appcmd;		appcmd.data = NULL;		mmc_wait_for_req(host, &mrq);		if (appcmd.error) {			err = appcmd.error;			continue;		}		/* Check that card supported application commands */		if (!(appcmd.resp[0] & R1_APP_CMD))			return MMC_ERR_FAILED;		memset(&mrq, 0, sizeof(struct mmc_request));		memset(cmd->resp, 0, sizeof(cmd->resp));		cmd->retries = 0;		mrq.cmd = cmd;		cmd->data = NULL;		mmc_wait_for_req(host, &mrq);		err = cmd->error;		if (cmd->error == MMC_ERR_NONE)			break;	}	return err;}EXPORT_SYMBOL(mmc_wait_for_app_cmd);static int mmc_select_card(struct mmc_host *host, struct mmc_card *card);/** *	__mmc_claim_host - exclusively claim a host *	@host: mmc host to claim *	@card: mmc card to claim host for * *	Claim a host for a set of operations.  If a valid card *	is passed and this wasn't the last card selected, select *	the card before returning. * *	Note: you should use mmc_card_claim_host or mmc_claim_host. */int __mmc_claim_host(struct mmc_host *host, struct mmc_card *card){	DECLARE_WAITQUEUE(wait, current);	unsigned long flags;	int err = 0;	add_wait_queue(&host->wq, &wait);	spin_lock_irqsave(&host->lock, flags);	while (1) {		set_current_state(TASK_UNINTERRUPTIBLE);		if (host->card_busy == NULL)			break;		spin_unlock_irqrestore(&host->lock, flags);		schedule();		spin_lock_irqsave(&host->lock, flags);	}	set_current_state(TASK_RUNNING);	host->card_busy = card;	spin_unlock_irqrestore(&host->lock, flags);	remove_wait_queue(&host->wq, &wait);	if (card != (void *)-1) {		err = mmc_select_card(host, card);		if (err != MMC_ERR_NONE)			return err;	}	return err;}EXPORT_SYMBOL(__mmc_claim_host);/** *	mmc_release_host - release a host *	@host: mmc host to release * *	Release a MMC host, allowing others to claim the host *	for their operations. */void mmc_release_host(struct mmc_host *host){	unsigned long flags;	BUG_ON(host->card_busy == NULL);	spin_lock_irqsave(&host->lock, flags);	host->card_busy = NULL;	spin_unlock_irqrestore(&host->lock, flags);	wake_up(&host->wq);}EXPORT_SYMBOL(mmc_release_host);static int mmc_select_card(struct mmc_host *host, struct mmc_card *card){	int err;	struct mmc_command cmd;	BUG_ON(host->card_busy == NULL);	if (host->card_selected == card)		return MMC_ERR_NONE;	host->card_selected = card;	cmd.opcode = MMC_SELECT_CARD;	cmd.arg = card->rca << 16;	cmd.flags = MMC_RSP_R1;	err = mmc_wait_for_cmd(host, &cmd, CMD_RETRIES);	if (err != MMC_ERR_NONE)		return err;	/*	 * Default bus width is 1 bit.	 */	host->ios.bus_width = MMC_BUS_WIDTH_1;	/*	 * We can only change the bus width of the selected	 * card so therefore we have to put the handling	 * here.	 */	if (host->caps & MMC_CAP_4_BIT_DATA) {		/*		 * The card is in 1 bit mode by default so		 * we only need to change if it supports the		 * wider version.		 */		if (mmc_card_sd(card) &&			(card->scr.bus_widths & SD_SCR_BUS_WIDTH_4)) {			struct mmc_command cmd;			cmd.opcode = SD_APP_SET_BUS_WIDTH;			cmd.arg = SD_BUS_WIDTH_4;			cmd.flags = MMC_RSP_R1;			err = mmc_wait_for_app_cmd(host, card->rca, &cmd,				CMD_RETRIES);			if (err != MMC_ERR_NONE)				return err;			host->ios.bus_width = MMC_BUS_WIDTH_4;		}	}	host->ops->set_ios(host, &host->ios);	return MMC_ERR_NONE;}/* * Ensure that no card is selected. */static void mmc_deselect_cards(struct mmc_host *host){	struct mmc_command cmd;	if (host->card_selected) {		host->card_selected = NULL;		cmd.opcode = MMC_SELECT_CARD;		cmd.arg = 0;		cmd.flags = MMC_RSP_NONE;		mmc_wait_for_cmd(host, &cmd, 0);	}}static inline void mmc_delay(unsigned int ms){	if (ms < HZ / 1000) {		yield();		mdelay(ms);	} else {		msleep_interruptible (ms);	}}/* * Mask off any voltages we don't support and select * the lowest voltage */static u32 mmc_select_voltage(struct mmc_host *host, u32 ocr){	int bit;	ocr &= host->ocr_avail;	bit = ffs(ocr);	if (bit) {		bit -= 1;		ocr = 3 << bit;		host->ios.vdd = bit;		host->ops->set_ios(host, &host->ios);	} else {		ocr = 0;	}	return ocr;}#define UNSTUFF_BITS(resp,start,size)					\	({								\		const u32 __mask = (1 << (size)) - 1;			\		const int __off = 3 - ((start) / 32);			\		const int __shft = (start) & 31;			\		u32 __res;						\									\		__res = resp[__off] >> __shft;				\		if ((size) + __shft >= 32)				\			__res |= resp[__off-1] << (32 - __shft);	\		__res & __mask;						\	})/* * Given the decoded CSD structure, decode the raw CID to our CID structure. */static void mmc_decode_cid(struct mmc_card *card){	u32 *resp = card->raw_cid;	memset(&card->cid, 0, sizeof(struct mmc_cid));	if (mmc_card_sd(card)) {		/*		 * SD doesn't currently have a version field so we will		 * have to assume we can parse this.		 */		card->cid.manfid		= UNSTUFF_BITS(resp, 120, 8);		card->cid.oemid			= UNSTUFF_BITS(resp, 104, 16);		card->cid.prod_name[0]		= UNSTUFF_BITS(resp, 96, 8);		card->cid.prod_name[1]		= UNSTUFF_BITS(resp, 88, 8);		card->cid.prod_name[2]		= UNSTUFF_BITS(resp, 80, 8);		card->cid.prod_name[3]		= UNSTUFF_BITS(resp, 72, 8);		card->cid.prod_name[4]		= UNSTUFF_BITS(resp, 64, 8);		card->cid.hwrev			= UNSTUFF_BITS(resp, 60, 4);		card->cid.fwrev			= UNSTUFF_BITS(resp, 56, 4);		card->cid.serial		= UNSTUFF_BITS(resp, 24, 32);		card->cid.year			= UNSTUFF_BITS(resp, 12, 8);		card->cid.month			= UNSTUFF_BITS(resp, 8, 4);		card->cid.year += 2000; /* SD cards year offset */	} else {		/*		 * The selection of the format here is based upon published		 * specs from sandisk and from what people have reported.		 */		switch (card->csd.mmca_vsn) {		case 0: /* MMC v1.0 - v1.2 */		case 1: /* MMC v1.4 */			card->cid.manfid	= UNSTUFF_BITS(resp, 104, 24);			card->cid.prod_name[0]	= UNSTUFF_BITS(resp, 96, 8);			card->cid.prod_name[1]	= UNSTUFF_BITS(resp, 88, 8);			card->cid.prod_name[2]	= UNSTUFF_BITS(resp, 80, 8);			card->cid.prod_name[3]	= UNSTUFF_BITS(resp, 72, 8);			card->cid.prod_name[4]	= UNSTUFF_BITS(resp, 64, 8);			card->cid.prod_name[5]	= UNSTUFF_BITS(resp, 56, 8);			card->cid.prod_name[6]	= UNSTUFF_BITS(resp, 48, 8);			card->cid.hwrev		= UNSTUFF_BITS(resp, 44, 4);			card->cid.fwrev		= UNSTUFF_BITS(resp, 40, 4);			card->cid.serial	= UNSTUFF_BITS(resp, 16, 24);			card->cid.month		= UNSTUFF_BITS(resp, 12, 4);			card->cid.year		= UNSTUFF_BITS(resp, 8, 4) + 1997;			break;		case 2: /* MMC v2.0 - v2.2 */		case 3: /* MMC v3.1 - v3.3 */		case 4: /* MMC v4.x ? */			card->cid.manfid	= UNSTUFF_BITS(resp, 120, 8);			card->cid.oemid		= UNSTUFF_BITS(resp, 104, 16);			card->cid.prod_name[0]	= UNSTUFF_BITS(resp, 96, 8);			card->cid.prod_name[1]	= UNSTUFF_BITS(resp, 88, 8);			card->cid.prod_name[2]	= UNSTUFF_BITS(resp, 80, 8);			card->cid.prod_name[3]	= UNSTUFF_BITS(resp, 72, 8);			card->cid.prod_name[4]	= UNSTUFF_BITS(resp, 64, 8);			card->cid.prod_name[5]	= UNSTUFF_BITS(resp, 56, 8);			card->cid.serial	= UNSTUFF_BITS(resp, 16, 32);			card->cid.month		= UNSTUFF_BITS(resp, 12, 4);			card->cid.year		= UNSTUFF_BITS(resp, 8, 4) + 1997;			break;		default:			printk("%s: card has unknown MMCA version %d\n",				mmc_hostname(card->host), card->csd.mmca_vsn);			mmc_card_set_bad(card);			break;		}	}}/* * Given a 128-bit response, decode to our card CSD structure. */static void mmc_decode_csd(struct mmc_card *card){	struct mmc_csd *csd = &card->csd;	unsigned int e, m, csd_struct;	u32 *resp = card->raw_csd;	if (mmc_card_sd(card)) {		csd_struct = UNSTUFF_BITS(resp, 126, 2);		if (csd_struct != 0) {			printk("%s: unrecognised CSD structure version %d\n",				mmc_hostname(card->host), csd_struct);			mmc_card_set_bad(card);			return;		}		m = UNSTUFF_BITS(resp, 115, 4);		e = UNSTUFF_BITS(resp, 112, 3);		csd->tacc_ns	 = (tacc_exp[e] * tacc_mant[m] + 9) / 10;		csd->tacc_clks	 = UNSTUFF_BITS(resp, 104, 8) * 100;		m = UNSTUFF_BITS(resp, 99, 4);		e = UNSTUFF_BITS(resp, 96, 3);		csd->max_dtr	  = tran_exp[e] * tran_mant[m];		csd->cmdclass	  = UNSTUFF_BITS(resp, 84, 12);		e = UNSTUFF_BITS(resp, 47, 3);		m = UNSTUFF_BITS(resp, 62, 12);		csd->capacity	  = (1 + m) << (e + 2);		csd->read_blkbits = UNSTUFF_BITS(resp, 80, 4);	} else {		/*		 * We only understand CSD structure v1.1 and v1.2.		 * v1.2 has extra information in bits 15, 11 and 10.		 */		csd_struct = UNSTUFF_BITS(resp, 126, 2);		if (csd_struct != 1 && csd_struct != 2) {			printk("%s: unrecognised CSD structure version %d\n",				mmc_hostname(card->host), csd_struct);			mmc_card_set_bad(card);			return;		}		csd->mmca_vsn	 = UNSTUFF_BITS(resp, 122, 4);		m = UNSTUFF_BITS(resp, 115, 4);		e = UNSTUFF_BITS(resp, 112, 3);		csd->tacc_ns	 = (tacc_exp[e] * tacc_mant[m] + 9) / 10;		csd->tacc_clks	 = UNSTUFF_BITS(resp, 104, 8) * 100;		m = UNSTUFF_BITS(resp, 99, 4);		e = UNSTUFF_BITS(resp, 96, 3);		csd->max_dtr	  = tran_exp[e] * tran_mant[m];		csd->cmdclass	  = UNSTUFF_BITS(resp, 84, 12);		e = UNSTUFF_BITS(resp, 47, 3);		m = UNSTUFF_BITS(resp, 62, 12);		csd->capacity	  = (1 + m) << (e + 2);		csd->read_blkbits = UNSTUFF_BITS(resp, 80, 4);	}}/* * Given a 64-bit response, decode to our card SCR structure. */static void mmc_decode_scr(struct mmc_card *card){	struct sd_scr *scr = &card->scr;	unsigned int scr_struct;	u32 resp[4];	BUG_ON(!mmc_card_sd(card));	resp[3] = card->raw_scr[1];	resp[2] = card->raw_scr[0];	scr_struct = UNSTUFF_BITS(resp, 60, 4);	if (scr_struct != 0) {		printk("%s: unrecognised SCR structure version %d\n",			mmc_hostname(card->host), scr_struct);		mmc_card_set_bad(card);		return;	}	scr->sda_vsn = UNSTUFF_BITS(resp, 56, 4);	scr->bus_widths = UNSTUFF_BITS(resp, 48, 4);}/* * Locate a MMC card on this MMC host given a raw CID. */static struct mmc_card *mmc_find_card(struct mmc_host *host, u32 *raw_cid){	struct mmc_card *card;	list_for_each_entry(card, &host->cards, node) {		if (memcmp(card->raw_cid, raw_cid, sizeof(card->raw_cid)) == 0)			return card;	}	return NULL;}/* * Allocate a new MMC card, and assign a unique RCA. */static struct mmc_card *mmc_alloc_card(struct mmc_host *host, u32 *raw_cid, unsigned int *frca){	struct mmc_card *card, *c;	unsigned int rca = *frca;	card = kmalloc(sizeof(struct mmc_card), GFP_KERNEL);	if (!card)		return ERR_PTR(-ENOMEM);	mmc_init_card(card, host);

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美视频日韩视频在线观看| 石原莉奈在线亚洲二区| 蜜臀国产一区二区三区在线播放| 成人av资源在线| 国产欧美一区二区三区鸳鸯浴| 美腿丝袜在线亚洲一区| 日韩一区二区三区精品视频 | 欧美性感一类影片在线播放| 中文字幕一区二区三区在线不卡 | 亚洲综合无码一区二区| 色婷婷综合中文久久一本| 亚洲女人****多毛耸耸8| 972aa.com艺术欧美| 亚洲一区二区三区视频在线| 色欧美88888久久久久久影院| 一区二区三区欧美激情| 欧洲av一区二区嗯嗯嗯啊| 亚洲成va人在线观看| 欧美一区二区三区四区久久| 婷婷国产在线综合| 精品免费视频.| 韩国一区二区视频| 国产精品免费久久| 欧美日韩国产综合一区二区| 裸体健美xxxx欧美裸体表演| 国产欧美精品一区二区色综合 | 国产精品996| 亚洲制服丝袜在线| 精品国精品国产| 91丨porny丨最新| 欧美羞羞免费网站| 国产成人丝袜美腿| 亚洲大片在线观看| www久久精品| 在线亚洲+欧美+日本专区| 久久99精品久久久久久久久久久久 | 麻豆免费看一区二区三区| 国产精品美女久久久久av爽李琼 | 亚洲你懂的在线视频| 日韩一区二区三区在线观看| 成人永久免费视频| 青青青爽久久午夜综合久久午夜| 成人欧美一区二区三区1314| 亚洲成a人片在线不卡一二三区 | 日韩欧美国产成人一区二区| 99精品热视频| 国产91富婆露脸刺激对白| 日韩高清不卡在线| 亚洲欧美日韩一区| 亚洲欧洲av另类| 国产亚洲一区字幕| 精品国产一区二区三区av性色 | 国产成人午夜精品5599| 蜜桃av噜噜一区| 天天影视涩香欲综合网| 一区二区三区美女| 伊人色综合久久天天| 国产精品久久久久天堂| 久久精品亚洲精品国产欧美kt∨ | 亚洲免费毛片网站| 亚洲日本va午夜在线电影| 国产欧美日韩一区二区三区在线观看| 日韩精品一区二区三区在线播放| 7777精品久久久大香线蕉| 在线观看日韩精品| 欧美天堂一区二区三区| 在线精品视频小说1| 日本高清成人免费播放| 91久久国产综合久久| 色av成人天堂桃色av| 欧美在线视频不卡| 91精品国产综合久久福利软件| 69堂成人精品免费视频| 日韩色在线观看| 久久久久亚洲蜜桃| 中文字幕一区二区三区av| 亚洲精品国产高清久久伦理二区| 亚洲精品国产成人久久av盗摄| 一区二区三区国产| 日本一不卡视频| 国产精品91xxx| 日本精品视频一区二区三区| 7777精品伊人久久久大香线蕉经典版下载 | 成人三级在线视频| 色av综合在线| 精品国产露脸精彩对白| 国产精品久久久久久久蜜臀| 午夜精品一区在线观看| 久久不见久久见免费视频7| 国产成人在线免费观看| 91成人看片片| 久久久久久麻豆| 亚洲第一电影网| 高清av一区二区| 欧美日韩精品二区第二页| 国产日韩欧美一区二区三区乱码| 亚洲日本护士毛茸茸| 美国十次综合导航| 欧美中文字幕久久| 中文字幕中文字幕在线一区| 日韩中文字幕麻豆| 色狠狠一区二区三区香蕉| 久久免费电影网| 另类小说视频一区二区| 欧美日韩国产bt| 亚洲人成影院在线观看| 国产乱理伦片在线观看夜一区| 欧美日韩国产综合一区二区三区| 亚洲欧美在线高清| 国产99精品国产| 国产清纯在线一区二区www| 青青草一区二区三区| 精品视频一区三区九区| 中文字幕欧美一区| 懂色av一区二区夜夜嗨| 国产亚洲美州欧州综合国| 老司机免费视频一区二区| 91精品国产综合久久福利| 午夜视频在线观看一区| 精品视频资源站| 午夜精品福利一区二区三区av| 在线观看免费视频综合| 亚洲另类在线视频| 91黄色在线观看| 偷拍日韩校园综合在线| 欧美巨大另类极品videosbest| 亚洲黄色免费网站| 欧美性淫爽ww久久久久无| 亚洲国产毛片aaaaa无费看| 欧美视频中文字幕| 日韩国产高清影视| 亚洲精品在线三区| 成人精品视频一区二区三区 | 免费在线视频一区| 精品女同一区二区| 国产91丝袜在线播放0| 亚洲人成在线播放网站岛国| 91久久精品午夜一区二区| 亚洲二区视频在线| 欧美精品一区二区三区在线播放| 国产精品1区2区| 亚洲色图色小说| 欧美日韩视频第一区| 久热成人在线视频| 国产欧美一区在线| 在线观看91精品国产入口| 精品一区二区三区在线视频| 精品嫩草影院久久| 日本韩国一区二区三区| 久久国内精品自在自线400部| 久久精品一区四区| 欧洲一区在线电影| 国产一区二区美女| 亚洲一区免费在线观看| 国产三级精品三级| 欧美色图在线观看| 国产一区二区不卡老阿姨| 一区二区三区在线播| 久久久久久亚洲综合| 欧美揉bbbbb揉bbbbb| 懂色一区二区三区免费观看| 免费成人深夜小野草| 91黄色免费网站| 99久久国产综合色|国产精品| 丁香天五香天堂综合| 成人午夜视频福利| 激情五月婷婷综合| 男女男精品视频| 综合激情成人伊人| 欧美韩国日本不卡| 久久久久久影视| 日韩欧美国产成人一区二区| 欧美精三区欧美精三区 | 亚洲国产精品二十页| 久久午夜国产精品| 精品黑人一区二区三区久久 | 欧美色倩网站大全免费| 欧美日产国产精品| 欧美大胆一级视频| 久久精品欧美日韩| 国产精品理论在线观看| 中文字幕一区在线| 一区二区三区中文字幕在线观看| 亚洲激情成人在线| 婷婷久久综合九色综合伊人色| 午夜精品爽啪视频| 极品少妇一区二区三区精品视频| 国产很黄免费观看久久| 波多野结衣中文一区| 另类中文字幕网| 美美哒免费高清在线观看视频一区二区 | 国产福利精品一区| 91丨九色porny丨蝌蚪| 91精品国产一区二区三区| 久久久精品国产免大香伊| 最新久久zyz资源站| 亚洲永久免费视频| 国产福利一区二区三区视频 | 亚洲成av人综合在线观看| 日本欧美一区二区在线观看|