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

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

?? isp1301_omap.c

?? 2440下的I2C驅(qū)動源代碼 看了才知道一個驅(qū)動可以寫的這么結(jié)構(gòu)化!
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* * isp1301_omap - ISP 1301 USB transceiver, talking to OMAP OTG controller * * Copyright (C) 2004 Texas Instruments * Copyright (C) 2004 David Brownell * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */#undef	DEBUG#undef	VERBOSE#include <linux/config.h>#include <linux/kernel.h>#include <linux/module.h>#include <linux/init.h>#include <linux/slab.h>#include <linux/interrupt.h>#include <linux/device.h>#include <linux/usb_ch9.h>#include <linux/usb_gadget.h>#include <linux/usb.h>#include <linux/usb_otg.h>#include <linux/i2c.h>#include <linux/workqueue.h>#include <asm/irq.h>#include <asm/arch/usb.h>#ifndef	DEBUG#undef	VERBOSE#endif#define	DRIVER_VERSION	"24 August 2004"#define	DRIVER_NAME	(isp1301_driver.name)MODULE_DESCRIPTION("ISP1301 USB OTG Transceiver Driver");MODULE_LICENSE("GPL");struct isp1301 {	struct otg_transceiver	otg;	struct i2c_client	client;	void			(*i2c_release)(struct device *dev);	int			irq;	u32			last_otg_ctrl;	unsigned		working:1;	struct timer_list	timer;	/* use keventd context to change the state for us */	struct work_struct	work;		unsigned long		todo;#		define WORK_UPDATE_ISP	0	/* update ISP from OTG */#		define WORK_UPDATE_OTG	1	/* update OTG from ISP */#		define WORK_HOST_RESUME	4	/* resume host */#		define WORK_TIMER	6	/* timer fired */#		define WORK_STOP	7	/* don't resubmit */};/* bits in OTG_CTRL_REG */#define	OTG_XCEIV_OUTPUTS \	(OTG_ASESSVLD|OTG_BSESSEND|OTG_BSESSVLD|OTG_VBUSVLD|OTG_ID)#define	OTG_XCEIV_INPUTS \	(OTG_PULLDOWN|OTG_PULLUP|OTG_DRV_VBUS|OTG_PD_VBUS|OTG_PU_VBUS|OTG_PU_ID)#define	OTG_CTRL_BITS \	(OTG_A_BUSREQ|OTG_A_SETB_HNPEN|OTG_B_BUSREQ|OTG_B_HNPEN|OTG_BUSDROP)	/* and OTG_PULLUP is sometimes written */#define	OTG_CTRL_MASK	(OTG_DRIVER_SEL| \	OTG_XCEIV_OUTPUTS|OTG_XCEIV_INPUTS| \	OTG_CTRL_BITS)/*-------------------------------------------------------------------------*/#ifdef	CONFIG_MACH_OMAP_H2/* board-specific PM hooks */#include <asm/arch/gpio.h>#include <asm/arch/mux.h>#include <asm/mach-types.h>#if	defined(CONFIG_TPS65010) || defined(CONFIG_TPS65010_MODULE)#include <asm/arch/tps65010.h>#elsestatic inline int tps65010_set_vbus_draw(unsigned mA){	pr_debug("tps65010: draw %d mA (STUB)\n", mA);	return 0;}#endifstatic void enable_vbus_draw(struct isp1301 *isp, unsigned mA){	int status = tps65010_set_vbus_draw(mA);	if (status < 0)		pr_debug("  VBUS %d mA error %d\n", mA, status);}static void enable_vbus_source(struct isp1301 *isp){	/* this board won't supply more than 8mA vbus power.	 * some boards can switch a 100ma "unit load" (or more).	 */}/* products will deliver OTG messages with LEDs, GUI, etc */static inline void notresponding(struct isp1301 *isp){	printk(KERN_NOTICE "OTG device not responding.\n");}#endif/*-------------------------------------------------------------------------*//* only two addresses possible */#define	ISP_BASE		0x2cstatic unsigned short normal_i2c[] = {	ISP_BASE, ISP_BASE + 1,	I2C_CLIENT_END };static unsigned short normal_i2c_range[] = { I2C_CLIENT_END };I2C_CLIENT_INSMOD;static struct i2c_driver isp1301_driver;/* smbus apis are used for portability */static inline u8isp1301_get_u8(struct isp1301 *isp, u8 reg){	return i2c_smbus_read_byte_data(&isp->client, reg + 0);}static inline intisp1301_get_u16(struct isp1301 *isp, u8 reg){	return i2c_smbus_read_word_data(&isp->client, reg);}static inline intisp1301_set_bits(struct isp1301 *isp, u8 reg, u8 bits){	return i2c_smbus_write_byte_data(&isp->client, reg + 0, bits);}static inline intisp1301_clear_bits(struct isp1301 *isp, u8 reg, u8 bits){	return i2c_smbus_write_byte_data(&isp->client, reg + 1, bits);}/*-------------------------------------------------------------------------*//* identification */#define	ISP1301_VENDOR_ID		0x00	/* u16 read */#define	ISP1301_PRODUCT_ID		0x02	/* u16 read */#define	ISP1301_BCD_DEVICE		0x14	/* u16 read */#define	I2C_VENDOR_ID_PHILIPS		0x04cc#define	I2C_PRODUCT_ID_PHILIPS_1301	0x1301/* operational registers */#define	ISP1301_MODE_CONTROL_1		0x04	/* u8 read, set, +1 clear */#	define	MC1_SPEED_REG		(1 << 0)#	define	MC1_SUSPEND_REG		(1 << 1)#	define	MC1_DAT_SE0		(1 << 2)#	define	MC1_TRANSPARENT		(1 << 3)#	define	MC1_BDIS_ACON_EN	(1 << 4)#	define	MC1_OE_INT_EN		(1 << 5)#	define	MC1_UART_EN		(1 << 6)#	define	MC1_MASK		0x7f#define	ISP1301_MODE_CONTROL_2		0x12	/* u8 read, set, +1 clear */#	define	MC2_GLOBAL_PWR_DN	(1 << 0)#	define	MC2_SPD_SUSP_CTRL	(1 << 1)#	define	MC2_BI_DI		(1 << 2)#	define	MC2_TRANSP_BDIR0	(1 << 3)#	define	MC2_TRANSP_BDIR1	(1 << 4)#	define	MC2_AUDIO_EN		(1 << 5)#	define	MC2_PSW_EN		(1 << 6)#	define	MC2_EN2V7		(1 << 7)#define	ISP1301_OTG_CONTROL_1		0x06	/* u8 read, set, +1 clear */#	define	OTG1_DP_PULLUP		(1 << 0)#	define	OTG1_DM_PULLUP		(1 << 1)#	define	OTG1_DP_PULLDOWN	(1 << 2)#	define	OTG1_DM_PULLDOWN	(1 << 3)#	define	OTG1_ID_PULLDOWN	(1 << 4)#	define	OTG1_VBUS_DRV		(1 << 5)#	define	OTG1_VBUS_DISCHRG	(1 << 6)#	define	OTG1_VBUS_CHRG		(1 << 7)#define	ISP1301_OTG_STATUS		0x10	/* u8 readonly */#	define	OTG_B_SESS_END		(1 << 6)#	define	OTG_B_SESS_VLD		(1 << 7)#define	ISP1301_INTERRUPT_SOURCE	0x08	/* u8 read */#define	ISP1301_INTERRUPT_LATCH		0x0A	/* u8 read, set, +1 clear */#define	ISP1301_INTERRUPT_FALLING	0x0C	/* u8 read, set, +1 clear */#define	ISP1301_INTERRUPT_RISING	0x0E	/* u8 read, set, +1 clear *//* same bitfields in all interrupt registers */#	define	INTR_VBUS_VLD		(1 << 0)#	define	INTR_SESS_VLD		(1 << 1)#	define	INTR_DP_HI		(1 << 2)#	define	INTR_ID_GND		(1 << 3)#	define	INTR_DM_HI		(1 << 4)#	define	INTR_ID_FLOAT		(1 << 5)#	define	INTR_BDIS_ACON		(1 << 6)#	define	INTR_CR_INT		(1 << 7)/*-------------------------------------------------------------------------*/static const char *state_string(enum usb_otg_state state){	switch (state) {	case OTG_STATE_A_IDLE:		return "a_idle";	case OTG_STATE_A_WAIT_VRISE:	return "a_wait_vrise";	case OTG_STATE_A_WAIT_BCON:	return "a_wait_bcon";	case OTG_STATE_A_HOST:		return "a_host";	case OTG_STATE_A_SUSPEND:	return "a_suspend";	case OTG_STATE_A_PERIPHERAL:	return "a_peripheral";	case OTG_STATE_A_WAIT_VFALL:	return "a_wait_vfall";	case OTG_STATE_A_VBUS_ERR:	return "a_vbus_err";	case OTG_STATE_B_IDLE:		return "b_idle";	case OTG_STATE_B_SRP_INIT:	return "b_srp_init";	case OTG_STATE_B_PERIPHERAL:	return "b_peripheral";	case OTG_STATE_B_WAIT_ACON:	return "b_wait_acon";	case OTG_STATE_B_HOST:		return "b_host";	default:			return "UNDEFINED";	}}static inline const char *state_name(struct isp1301 *isp){	return state_string(isp->otg.state);}#ifdef	VERBOSE#define	dev_vdbg			dev_dbg#else#define	dev_vdbg(dev, fmt, arg...)	do{}while(0)#endif/*-------------------------------------------------------------------------*//* NOTE:  some of this ISP1301 setup is specific to H2 boards; * not everything is guarded by board-specific checks, or even using * omap_usb_config data to deduce MC1_DAT_SE0 and MC2_BI_DI. * * ALSO:  this currently doesn't use ISP1301 low-power modes * while OTG is running. */static void power_down(struct isp1301 *isp){	isp->otg.state = OTG_STATE_UNDEFINED;	// isp1301_set_bits(isp, ISP1301_MODE_CONTROL_2, MC2_GLOBAL_PWR_DN);	isp1301_set_bits(isp, ISP1301_MODE_CONTROL_1, MC1_SUSPEND_REG);	isp1301_clear_bits(isp, ISP1301_OTG_CONTROL_1, OTG1_ID_PULLDOWN);	isp1301_clear_bits(isp, ISP1301_MODE_CONTROL_1, MC1_DAT_SE0);}static void power_up(struct isp1301 *isp){	// isp1301_clear_bits(isp, ISP1301_MODE_CONTROL_2, MC2_GLOBAL_PWR_DN);	isp1301_clear_bits(isp, ISP1301_MODE_CONTROL_1, MC1_SUSPEND_REG);		/* do this only when cpu is driving transceiver,	 * so host won't see a low speed device...	 */	isp1301_set_bits(isp, ISP1301_MODE_CONTROL_1, MC1_DAT_SE0);}#define	NO_HOST_SUSPENDstatic int host_suspend(struct isp1301 *isp){#ifdef	NO_HOST_SUSPEND	return 0;#else	struct device	*dev;	if (!isp->otg.host)		return -ENODEV;	/* Currently ASSUMES only the OTG port matters;	 * other ports could be active...	 */	dev = isp->otg.host->controller;	return dev->driver->suspend(dev, 3, 0);#endif}static int host_resume(struct isp1301 *isp){#ifdef	NO_HOST_SUSPEND	return 0;#else	struct device	*dev;	if (!isp->otg.host)		return -ENODEV;	dev = isp->otg.host->controller;	return dev->driver->resume(dev, 0);#endif}static int gadget_suspend(struct isp1301 *isp){	isp->otg.gadget->b_hnp_enable = 0;	isp->otg.gadget->a_hnp_support = 0;	isp->otg.gadget->a_alt_hnp_support = 0;	return usb_gadget_vbus_disconnect(isp->otg.gadget);}/*-------------------------------------------------------------------------*/#define	TIMER_MINUTES	10#define	TIMER_JIFFIES	(TIMER_MINUTES * 60 * HZ)/* Almost all our I2C messaging comes from a work queue's task context. * NOTE: guaranteeing certain response times might mean we shouldn't * share keventd's work queue; a realtime task might be safest. */voidisp1301_defer_work(struct isp1301 *isp, int work){	int status;	if (isp && !test_and_set_bit(work, &isp->todo)) {		(void) get_device(&isp->client.dev);		status = schedule_work(&isp->work);		if (!status && !isp->working)			dev_vdbg(&isp->client.dev,				"work item %d may be lost\n", work);	}}/* called from irq handlers */static void a_idle(struct isp1301 *isp, const char *tag){	if (isp->otg.state == OTG_STATE_A_IDLE)		return;	isp->otg.default_a = 1;	if (isp->otg.host) {		isp->otg.host->is_b_host = 0;		host_suspend(isp);	}	if (isp->otg.gadget) {		isp->otg.gadget->is_a_peripheral = 1;		gadget_suspend(isp);	}	isp->otg.state = OTG_STATE_A_IDLE;	isp->last_otg_ctrl = OTG_CTRL_REG = OTG_CTRL_REG & OTG_XCEIV_OUTPUTS;	pr_debug("  --> %s/%s\n", state_name(isp), tag);}/* called from irq handlers */static void b_idle(struct isp1301 *isp, const char *tag){	if (isp->otg.state == OTG_STATE_B_IDLE)		return;	isp->otg.default_a = 0;	if (isp->otg.host) {		isp->otg.host->is_b_host = 1;		host_suspend(isp);	}	if (isp->otg.gadget) {		isp->otg.gadget->is_a_peripheral = 0;		gadget_suspend(isp);	}	isp->otg.state = OTG_STATE_B_IDLE;	isp->last_otg_ctrl = OTG_CTRL_REG = OTG_CTRL_REG & OTG_XCEIV_OUTPUTS;	pr_debug("  --> %s/%s\n", state_name(isp), tag);}static voiddump_regs(struct isp1301 *isp, const char *label){#ifdef	DEBUG	u8	ctrl = isp1301_get_u8(isp, ISP1301_OTG_CONTROL_1);	u8	status = isp1301_get_u8(isp, ISP1301_OTG_STATUS);	u8	src = isp1301_get_u8(isp, ISP1301_INTERRUPT_SOURCE);	pr_debug("otg: %06x, %s %s, otg/%02x stat/%02x.%02x\n",		OTG_CTRL_REG, label, state_name(isp),		ctrl, status, src);	/* mode control and irq enables don't change much */#endif}/*-------------------------------------------------------------------------*/#ifdef	CONFIG_USB_OTG/* * The OMAP OTG controller handles most of the OTG state transitions. * * We translate isp1301 outputs (mostly voltage comparator status) into * OTG inputs; OTG outputs (mostly pullup/pulldown controls) and HNP state * flags into isp1301 inputs ... and infer state transitions. */#ifdef	VERBOSEstatic void check_state(struct isp1301 *isp, const char *tag){	enum usb_otg_state	state = OTG_STATE_UNDEFINED;	u8			fsm = OTG_TEST_REG & 0x0ff;	unsigned		extra = 0;	switch (fsm) {	/* default-b */	case 0x0:		state = OTG_STATE_B_IDLE;		break;	case 0x3:	case 0x7:		extra = 1;	case 0x1:		state = OTG_STATE_B_PERIPHERAL;		break;	case 0x11:		state = OTG_STATE_B_SRP_INIT;		break;	/* extra dual-role default-b states */	case 0x12:	case 0x13:	case 0x16:		extra = 1;	case 0x17:		state = OTG_STATE_B_WAIT_ACON;		break;	case 0x34:		state = OTG_STATE_B_HOST;		break;	/* default-a */	case 0x36:		state = OTG_STATE_A_IDLE;		break;	case 0x3c:		state = OTG_STATE_A_WAIT_VFALL;		break;	case 0x7d:		state = OTG_STATE_A_VBUS_ERR;		break;	case 0x9e:	case 0x9f:		extra = 1;	case 0x89:		state = OTG_STATE_A_PERIPHERAL;		break;	case 0xb7:		state = OTG_STATE_A_WAIT_VRISE;		break;	case 0xb8:		state = OTG_STATE_A_WAIT_BCON;		break;	case 0xb9:		state = OTG_STATE_A_HOST;		break;	case 0xba:		state = OTG_STATE_A_SUSPEND;		break;	default:		break;	}	if (isp->otg.state == state && !extra)		return;	pr_debug("otg: %s FSM %s/%02x, %s, %06x\n", tag,		state_string(state), fsm, state_name(isp), OTG_CTRL_REG);}#elsestatic inline void check_state(struct isp1301 *isp, const char *tag) { }#endif/* outputs from ISP1301_INTERRUPT_SOURCE */static void update_otg1(struct isp1301 *isp, u8 int_src){	u32	otg_ctrl;	otg_ctrl = OTG_CTRL_REG			& OTG_CTRL_MASK			& ~OTG_XCEIV_INPUTS			& ~(OTG_ID|OTG_ASESSVLD|OTG_VBUSVLD);	if (int_src & INTR_SESS_VLD)		otg_ctrl |= OTG_ASESSVLD;	else if (isp->otg.state == OTG_STATE_A_WAIT_VFALL) {		a_idle(isp, "vfall");		otg_ctrl &= ~OTG_CTRL_BITS;	}	if (int_src & INTR_VBUS_VLD)		otg_ctrl |= OTG_VBUSVLD;	if (int_src & INTR_ID_GND) {		/* default-A */		if (isp->otg.state == OTG_STATE_B_IDLE				|| isp->otg.state == OTG_STATE_UNDEFINED) {			a_idle(isp, "init");			return;		}	} else {				/* default-B */		otg_ctrl |= OTG_ID;		if (isp->otg.state == OTG_STATE_A_IDLE				|| isp->otg.state == OTG_STATE_UNDEFINED) {			b_idle(isp, "init");			return;		}	}	OTG_CTRL_REG = otg_ctrl;}/* outputs from ISP1301_OTG_STATUS */static void update_otg2(struct isp1301 *isp, u8 otg_status){	u32	otg_ctrl;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲资源中文字幕| 久久久精品免费网站| 亚洲美腿欧美偷拍| 91在线精品秘密一区二区| 国产精品久久久久久久久免费桃花| 国产99久久久久久免费看农村| 国产午夜一区二区三区| jlzzjlzz亚洲女人18| 亚洲色图在线视频| 欧美无砖砖区免费| 五月激情六月综合| 欧美精品一区二区三区高清aⅴ| 久久精品999| 亚洲国产高清aⅴ视频| 色综合天天性综合| 午夜精品在线看| 欧美sm美女调教| 国产99久久久精品| 夜夜嗨av一区二区三区四季av| 欧美日韩亚洲综合| 国产做a爰片久久毛片| 亚洲视频网在线直播| 欧美色精品在线视频| 国产主播一区二区| 亚洲视频图片小说| 欧美猛男男办公室激情| 国产一区二区三区日韩| 亚洲四区在线观看| 91精品国产综合久久久久久久 | 成av人片一区二区| 亚洲综合在线第一页| 欧美成人a视频| 99v久久综合狠狠综合久久| 亚洲国产精品天堂| 国产亚洲精品福利| 欧美视频在线一区二区三区| 国产在线一区二区| 亚洲制服丝袜在线| 国产欧美一区二区精品仙草咪| 日本韩国欧美一区| 国产精品亚洲а∨天堂免在线| 一区二区三区在线免费视频| 亚洲精品在线观看网站| 日本精品一区二区三区四区的功能| 精品一区二区三区免费视频| 樱花影视一区二区| 精品欧美一区二区在线观看| 色94色欧美sute亚洲线路二 | 99国产一区二区三精品乱码| 视频在线在亚洲| 一区在线观看免费| 久久久亚洲精品一区二区三区 | 成人永久免费视频| 亚洲网友自拍偷拍| 自拍视频在线观看一区二区| 久久久国产一区二区三区四区小说| 欧美性猛片aaaaaaa做受| 国产成人激情av| 久久超级碰视频| 亚洲国产aⅴ天堂久久| 国产精品高潮呻吟| 中文字幕 久热精品 视频在线 | 久久影院视频免费| 在线电影院国产精品| 日本久久一区二区三区| 波多野结衣欧美| 国产91精品一区二区麻豆网站 | 国产精品1区2区3区| 美女精品自拍一二三四| 午夜不卡av免费| 亚洲成人资源网| 亚洲国产精品麻豆| 亚洲国产精品综合小说图片区| 亚洲欧美综合色| 国产精品网站在线观看| 欧美激情一区二区三区在线| 久久久久久久久一| 日韩精品在线一区二区| 欧美一级艳片视频免费观看| 91精选在线观看| 777奇米四色成人影色区| 欧美日韩高清一区二区不卡| 欧美色精品天天在线观看视频| 欧美日韩综合在线| 欧美影院精品一区| 欧美精品高清视频| 91 com成人网| 精品av久久707| 久久久久国产一区二区三区四区| 26uuu久久综合| 中文字幕不卡三区| 亚洲视频免费在线| 婷婷六月综合亚洲| 免费xxxx性欧美18vr| 国模套图日韩精品一区二区 | 蜜臂av日日欢夜夜爽一区| 日韩av不卡在线观看| 久久66热偷产精品| 国产高清精品网站| 91免费视频网| 欧美精品九九99久久| 精品黑人一区二区三区久久| 国产婷婷色一区二区三区| 亚洲欧美在线观看| 亚洲成人福利片| 国产一区二区三区四区在线观看| 成人免费视频网站在线观看| 欧美色区777第一页| 精品国产一区二区在线观看| 欧美国产精品一区二区三区| 一区二区欧美视频| 九九**精品视频免费播放| 国产一区二区三区在线观看免费 | 91麻豆成人久久精品二区三区| 91豆麻精品91久久久久久| 欧美变态tickle挠乳网站| 亚洲欧洲av在线| 日韩电影在线观看网站| 成人免费视频app| 欧美日韩mp4| 国产欧美精品在线观看| 日日夜夜免费精品| 国产.精品.日韩.另类.中文.在线.播放| 91免费观看在线| 日韩免费观看2025年上映的电影| 国产精品久久久久久久第一福利| 视频在线在亚洲| 91免费国产视频网站| 2023国产精品视频| 五月综合激情婷婷六月色窝| 成人一级黄色片| 日韩欧美国产综合| 一区二区免费在线| 国产黄色成人av| 在线成人免费观看| 亚洲免费视频成人| 成人综合婷婷国产精品久久免费| 欧美精品视频www在线观看| 亚洲欧美在线aaa| 精品一区二区日韩| 欧美精品久久久久久久久老牛影院| 国产精品麻豆欧美日韩ww| 久久99国产乱子伦精品免费| 欧美日韩五月天| 亚洲欧美另类在线| 成人午夜在线播放| 久久九九国产精品| 精品一区二区日韩| 日韩欧美电影在线| 亚洲午夜免费电影| 色一情一伦一子一伦一区| 国产欧美精品一区| 国产很黄免费观看久久| 日韩免费电影一区| 亚洲二区视频在线| 欧美在线观看18| 一区二区三区丝袜| 一本一道波多野结衣一区二区| 中文字幕av一区二区三区高| 国产精品亚洲午夜一区二区三区 | 精品剧情在线观看| 午夜精品aaa| 欧美日本一区二区| 亚洲一区二区高清| 欧美色图在线观看| 亚洲国产你懂的| 欧美日韩精品综合在线| 亚洲综合精品久久| 欧美日韩视频第一区| 亚洲一区二区三区精品在线| 在线一区二区三区做爰视频网站| 亚洲免费电影在线| 日本电影亚洲天堂一区| 亚洲精品免费视频| 欧美三级在线看| 五月婷婷激情综合网| 88在线观看91蜜桃国自产| 日本美女一区二区三区视频| 91精品国产综合久久久久久久久久 | 中文字幕欧美一| 91在线播放网址| 伊人性伊人情综合网| 在线观看亚洲专区| 日精品一区二区| www久久久久| 99久久精品免费| 亚洲综合激情另类小说区| 5858s免费视频成人| 精品一区二区三区久久| 国产清纯白嫩初高生在线观看91| 成人av在线影院| 亚洲国产视频直播| 日韩一区二区三区精品视频| 国产精品99久久久久久宅男| 国产精品蜜臀在线观看| 在线观看三级视频欧美| 日本午夜一本久久久综合| 久久嫩草精品久久久精品一| a亚洲天堂av| 日本视频中文字幕一区二区三区|