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

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

?? atkbd.c

?? QQ2440板子
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * AT and PS/2 keyboard driver * * Copyright (c) 1999-2002 Vojtech Pavlik *//* * 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. *//* * This driver can handle standard AT keyboards and PS/2 keyboards in * Translated and Raw Set 2 and Set 3, as well as AT keyboards on dumb * input-only controllers and AT keyboards connected over a one way RS232 * converter. */#include <linux/delay.h>#include <linux/module.h>#include <linux/moduleparam.h>#include <linux/slab.h>#include <linux/interrupt.h>#include <linux/init.h>#include <linux/input.h>#include <linux/serio.h>#include <linux/workqueue.h>#include <linux/libps2.h>#define DRIVER_DESC	"AT and PS/2 keyboard driver"MODULE_AUTHOR("Vojtech Pavlik <vojtech@suse.cz>");MODULE_DESCRIPTION(DRIVER_DESC);MODULE_LICENSE("GPL");static int atkbd_set = 2;module_param_named(set, atkbd_set, int, 0);MODULE_PARM_DESC(set, "Select keyboard code set (2 = default, 3 = PS/2 native)");#if defined(__i386__) || defined(__x86_64__) || defined(__hppa__)static int atkbd_reset;#elsestatic int atkbd_reset = 1;#endifmodule_param_named(reset, atkbd_reset, bool, 0);MODULE_PARM_DESC(reset, "Reset keyboard during initialization");static int atkbd_softrepeat;module_param_named(softrepeat, atkbd_softrepeat, bool, 0);MODULE_PARM_DESC(softrepeat, "Use software keyboard repeat");static int atkbd_softraw = 1;module_param_named(softraw, atkbd_softraw, bool, 0);MODULE_PARM_DESC(softraw, "Use software generated rawmode");static int atkbd_scroll = 0;module_param_named(scroll, atkbd_scroll, bool, 0);MODULE_PARM_DESC(scroll, "Enable scroll-wheel on MS Office and similar keyboards");static int atkbd_extra;module_param_named(extra, atkbd_extra, bool, 0);MODULE_PARM_DESC(extra, "Enable extra LEDs and keys on IBM RapidAcces, EzKey and similar keyboards");__obsolete_setup("atkbd_set=");__obsolete_setup("atkbd_reset");__obsolete_setup("atkbd_softrepeat=");/* * Scancode to keycode tables. These are just the default setting, and * are loadable via an userland utility. */static unsigned char atkbd_set2_keycode[512] = {#ifdef CONFIG_KEYBOARD_ATKBD_HP_KEYCODES/* XXX: need a more general approach */#include "hpps2atkbd.h"	/* include the keyboard scancodes */#else	  0, 67, 65, 63, 61, 59, 60, 88,  0, 68, 66, 64, 62, 15, 41,117,	  0, 56, 42, 93, 29, 16,  2,  0,  0,  0, 44, 31, 30, 17,  3,  0,	  0, 46, 45, 32, 18,  5,  4, 95,  0, 57, 47, 33, 20, 19,  6,183,	  0, 49, 48, 35, 34, 21,  7,184,  0,  0, 50, 36, 22,  8,  9,185,	  0, 51, 37, 23, 24, 11, 10,  0,  0, 52, 53, 38, 39, 25, 12,  0,	  0, 89, 40,  0, 26, 13,  0,  0, 58, 54, 28, 27,  0, 43,  0, 85,	  0, 86, 91, 90, 92,  0, 14, 94,  0, 79,124, 75, 71,121,  0,  0,	 82, 83, 80, 76, 77, 72,  1, 69, 87, 78, 81, 74, 55, 73, 70, 99,	  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,	217,100,255,  0, 97,165,  0,  0,156,  0,  0,  0,  0,  0,  0,125,	173,114,  0,113,  0,  0,  0,126,128,  0,  0,140,  0,  0,  0,127,	159,  0,115,  0,164,  0,  0,116,158,  0,150,166,  0,  0,  0,142,	157,  0,  0,  0,  0,  0,  0,  0,155,  0, 98,  0,  0,163,  0,  0,	226,  0,  0,  0,  0,  0,  0,  0,  0,255, 96,  0,  0,  0,143,  0,	  0,  0,  0,  0,  0,  0,  0,  0,  0,107,  0,105,102,  0,  0,112,	110,111,108,112,106,103,  0,119,  0,118,109,  0, 99,104,119,  0,	  0,  0,  0, 65, 99,#endif};static unsigned char atkbd_set3_keycode[512] = {	  0,  0,  0,  0,  0,  0,  0, 59,  1,138,128,129,130, 15, 41, 60,	131, 29, 42, 86, 58, 16,  2, 61,133, 56, 44, 31, 30, 17,  3, 62,	134, 46, 45, 32, 18,  5,  4, 63,135, 57, 47, 33, 20, 19,  6, 64,	136, 49, 48, 35, 34, 21,  7, 65,137,100, 50, 36, 22,  8,  9, 66,	125, 51, 37, 23, 24, 11, 10, 67,126, 52, 53, 38, 39, 25, 12, 68,	113,114, 40, 43, 26, 13, 87, 99, 97, 54, 28, 27, 43, 43, 88, 70,	108,105,119,103,111,107, 14,110,  0, 79,106, 75, 71,109,102,104,	 82, 83, 80, 76, 77, 72, 69, 98,  0, 96, 81,  0, 78, 73, 55,183,	184,185,186,187, 74, 94, 92, 93,  0,  0,  0,125,126,127,112,  0,	  0,139,150,163,165,115,152,150,166,140,160,154,113,114,167,168,	148,149,147,140};static unsigned char atkbd_unxlate_table[128] = {          0,118, 22, 30, 38, 37, 46, 54, 61, 62, 70, 69, 78, 85,102, 13,         21, 29, 36, 45, 44, 53, 60, 67, 68, 77, 84, 91, 90, 20, 28, 27,         35, 43, 52, 51, 59, 66, 75, 76, 82, 14, 18, 93, 26, 34, 33, 42,         50, 49, 58, 65, 73, 74, 89,124, 17, 41, 88,  5,  6,  4, 12,  3,         11,  2, 10,  1,  9,119,126,108,117,125,123,107,115,116,121,105,        114,122,112,113,127, 96, 97,120,  7, 15, 23, 31, 39, 47, 55, 63,         71, 79, 86, 94,  8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 87,111,         19, 25, 57, 81, 83, 92, 95, 98, 99,100,101,103,104,106,109,110};#define ATKBD_CMD_SETLEDS	0x10ed#define ATKBD_CMD_GSCANSET	0x11f0#define ATKBD_CMD_SSCANSET	0x10f0#define ATKBD_CMD_GETID		0x02f2#define ATKBD_CMD_SETREP	0x10f3#define ATKBD_CMD_ENABLE	0x00f4#define ATKBD_CMD_RESET_DIS	0x00f5#define ATKBD_CMD_SETALL_MBR	0x00fa#define ATKBD_CMD_RESET_BAT	0x02ff#define ATKBD_CMD_RESEND	0x00fe#define ATKBD_CMD_EX_ENABLE	0x10ea#define ATKBD_CMD_EX_SETLEDS	0x20eb#define ATKBD_CMD_OK_GETID	0x02e8#define ATKBD_RET_ACK		0xfa#define ATKBD_RET_NAK		0xfe#define ATKBD_RET_BAT		0xaa#define ATKBD_RET_EMUL0		0xe0#define ATKBD_RET_EMUL1		0xe1#define ATKBD_RET_RELEASE	0xf0#define ATKBD_RET_HANGUEL	0xf1#define ATKBD_RET_HANJA		0xf2#define ATKBD_RET_ERR		0xff#define ATKBD_KEY_UNKNOWN	  0#define ATKBD_KEY_NULL		255#define ATKBD_SCR_1		254#define ATKBD_SCR_2		253#define ATKBD_SCR_4		252#define ATKBD_SCR_8		251#define ATKBD_SCR_CLICK		250#define ATKBD_SCR_LEFT		249#define ATKBD_SCR_RIGHT		248#define ATKBD_SPECIAL		248static struct {	unsigned char keycode;	unsigned char set2;} atkbd_scroll_keys[] = {	{ ATKBD_SCR_1,     0xc5 },	{ ATKBD_SCR_2,     0x9d },	{ ATKBD_SCR_4,     0xa4 },	{ ATKBD_SCR_8,     0x9b },	{ ATKBD_SCR_CLICK, 0xe0 },	{ ATKBD_SCR_LEFT,  0xcb },	{ ATKBD_SCR_RIGHT, 0xd2 },};/* * The atkbd control structure */struct atkbd {	struct ps2dev	ps2dev;	/* Written only during init */	char name[64];	char phys[32];	struct input_dev dev;	unsigned short id;	unsigned char keycode[512];	unsigned char set;	unsigned char translated;	unsigned char extra;	unsigned char write;	unsigned char softrepeat;	unsigned char softraw;	unsigned char scroll;	unsigned char enabled;	/* Accessed only from interrupt */	unsigned char emul;	unsigned char resend;	unsigned char release;	unsigned char bat_xl;	unsigned int last;	unsigned long time;};static ssize_t atkbd_attr_show_helper(struct device *dev, char *buf,				ssize_t (*handler)(struct atkbd *, char *));static ssize_t atkbd_attr_set_helper(struct device *dev, const char *buf, size_t count,				ssize_t (*handler)(struct atkbd *, const char *, size_t));#define ATKBD_DEFINE_ATTR(_name)						\static ssize_t atkbd_show_##_name(struct atkbd *, char *);			\static ssize_t atkbd_set_##_name(struct atkbd *, const char *, size_t);		\static ssize_t atkbd_do_show_##_name(struct device *d, struct device_attribute *attr, char *b)			\{										\	return atkbd_attr_show_helper(d, b, atkbd_show_##_name);		\}										\static ssize_t atkbd_do_set_##_name(struct device *d, struct device_attribute *attr, const char *b, size_t s)	\{										\	return atkbd_attr_set_helper(d, b, s, atkbd_set_##_name);		\}										\static struct device_attribute atkbd_attr_##_name =				\	__ATTR(_name, S_IWUSR | S_IRUGO, atkbd_do_show_##_name, atkbd_do_set_##_name);ATKBD_DEFINE_ATTR(extra);ATKBD_DEFINE_ATTR(scroll);ATKBD_DEFINE_ATTR(set);ATKBD_DEFINE_ATTR(softrepeat);ATKBD_DEFINE_ATTR(softraw);static void atkbd_report_key(struct input_dev *dev, struct pt_regs *regs, int code, int value){	input_regs(dev, regs);	if (value == 3) {		input_report_key(dev, code, 1);		input_sync(dev);		input_report_key(dev, code, 0);	} else		input_event(dev, EV_KEY, code, value);	input_sync(dev);}/* * atkbd_interrupt(). Here takes place processing of data received from * the keyboard into events. */static irqreturn_t atkbd_interrupt(struct serio *serio, unsigned char data,			unsigned int flags, struct pt_regs *regs){	struct atkbd *atkbd = serio_get_drvdata(serio);	unsigned int code = data;	int scroll = 0, hscroll = 0, click = -1;	int value;#ifdef ATKBD_DEBUG	printk(KERN_DEBUG "atkbd.c: Received %02x flags %02x\n", data, flags);#endif#if !defined(__i386__) && !defined (__x86_64__)	if ((flags & (SERIO_FRAME | SERIO_PARITY)) && (~flags & SERIO_TIMEOUT) && !atkbd->resend && atkbd->write) {		printk(KERN_WARNING "atkbd.c: frame/parity error: %02x\n", flags);		serio_write(serio, ATKBD_CMD_RESEND);		atkbd->resend = 1;		goto out;	}	if (!flags && data == ATKBD_RET_ACK)		atkbd->resend = 0;#endif	if (unlikely(atkbd->ps2dev.flags & PS2_FLAG_ACK))		if  (ps2_handle_ack(&atkbd->ps2dev, data))			goto out;	if (unlikely(atkbd->ps2dev.flags & PS2_FLAG_CMD))		if  (ps2_handle_response(&atkbd->ps2dev, data))			goto out;	if (!atkbd->enabled)		goto out;	input_event(&atkbd->dev, EV_MSC, MSC_RAW, code);	if (atkbd->translated) {		if (atkbd->emul ||		    !(code == ATKBD_RET_EMUL0 || code == ATKBD_RET_EMUL1 ||		      code == ATKBD_RET_HANGUEL || code == ATKBD_RET_HANJA ||		      code == ATKBD_RET_ERR ||	             (code == ATKBD_RET_BAT && !atkbd->bat_xl))) {			atkbd->release = code >> 7;			code &= 0x7f;		}		if (!atkbd->emul &&		     (code & 0x7f) == (ATKBD_RET_BAT & 0x7f))			atkbd->bat_xl = !atkbd->release;	}	switch (code) {		case ATKBD_RET_BAT:			atkbd->enabled = 0;			serio_rescan(atkbd->ps2dev.serio);			goto out;		case ATKBD_RET_EMUL0:			atkbd->emul = 1;			goto out;		case ATKBD_RET_EMUL1:			atkbd->emul = 2;			goto out;		case ATKBD_RET_RELEASE:			atkbd->release = 1;			goto out;		case ATKBD_RET_HANGUEL:			atkbd_report_key(&atkbd->dev, regs, KEY_HANGUEL, 3);			goto out;		case ATKBD_RET_HANJA:			atkbd_report_key(&atkbd->dev, regs, KEY_HANJA, 3);			goto out;		case ATKBD_RET_ERR:			printk(KERN_DEBUG "atkbd.c: Keyboard on %s reports too many keys pressed.\n", serio->phys);			goto out;	}	if (atkbd->set != 3)		code = (code & 0x7f) | ((code & 0x80) << 1);	if (atkbd->emul) {		if (--atkbd->emul)			goto out;		code |= (atkbd->set != 3) ? 0x80 : 0x100;	}	if (atkbd->keycode[code] != ATKBD_KEY_NULL)		input_event(&atkbd->dev, EV_MSC, MSC_SCAN, code);	switch (atkbd->keycode[code]) {		case ATKBD_KEY_NULL:			break;		case ATKBD_KEY_UNKNOWN:			if (data == ATKBD_RET_ACK || data == ATKBD_RET_NAK) {				printk(KERN_WARNING "atkbd.c: Spurious %s on %s. Some program, "				       "like XFree86, might be trying access hardware directly.\n",				       data == ATKBD_RET_ACK ? "ACK" : "NAK", serio->phys);			} else {				printk(KERN_WARNING "atkbd.c: Unknown key %s "				       "(%s set %d, code %#x on %s).\n",				       atkbd->release ? "released" : "pressed",				       atkbd->translated ? "translated" : "raw",				       atkbd->set, code, serio->phys);				printk(KERN_WARNING "atkbd.c: Use 'setkeycodes %s%02x <keycode>' "				       "to make it known.\n",				       code & 0x80 ? "e0" : "", code & 0x7f);			}			input_sync(&atkbd->dev);			break;		case ATKBD_SCR_1:			scroll = 1 - atkbd->release * 2;			break;		case ATKBD_SCR_2:			scroll = 2 - atkbd->release * 4;			break;		case ATKBD_SCR_4:			scroll = 4 - atkbd->release * 8;			break;		case ATKBD_SCR_8:			scroll = 8 - atkbd->release * 16;			break;		case ATKBD_SCR_CLICK:			click = !atkbd->release;			break;		case ATKBD_SCR_LEFT:			hscroll = -1;			break;		case ATKBD_SCR_RIGHT:			hscroll = 1;			break;		default:			value = atkbd->release ? 0 :				(1 + (!atkbd->softrepeat && test_bit(atkbd->keycode[code], atkbd->dev.key)));			switch (value) {	/* Workaround Toshiba laptop multiple keypress */				case 0:					atkbd->last = 0;					break;				case 1:					atkbd->last = code;					atkbd->time = jiffies + msecs_to_jiffies(atkbd->dev.rep[REP_DELAY]) / 2;					break;				case 2:					if (!time_after(jiffies, atkbd->time) && atkbd->last == code)						value = 1;					break;			}			atkbd_report_key(&atkbd->dev, regs, atkbd->keycode[code], value);	}	if (atkbd->scroll) {		input_regs(&atkbd->dev, regs);		if (click != -1)			input_report_key(&atkbd->dev, BTN_MIDDLE, click);		input_report_rel(&atkbd->dev, REL_WHEEL, scroll);		input_report_rel(&atkbd->dev, REL_HWHEEL, hscroll);		input_sync(&atkbd->dev);	}	atkbd->release = 0;out:	return IRQ_HANDLED;}/* * Event callback from the input module. Events that change the state of * the hardware are processed here. */static int atkbd_event(struct input_dev *dev, unsigned int type, unsigned int code, int value){	struct atkbd *atkbd = dev->private;	const short period[32] =		{ 33,  37,  42,  46,  50,  54,  58,  63,  67,  75,  83,  92, 100, 109, 116, 125,		 133, 149, 167, 182, 200, 217, 232, 250, 270, 303, 333, 370, 400, 435, 470, 500 };	const short delay[4] =		{ 250, 500, 750, 1000 };	unsigned char param[2];	int i, j;	if (!atkbd->write)		return -1;	switch (type) {		case EV_LED:			param[0] = (test_bit(LED_SCROLLL, dev->led) ? 1 : 0)			         | (test_bit(LED_NUML,    dev->led) ? 2 : 0)			         | (test_bit(LED_CAPSL,   dev->led) ? 4 : 0);		        ps2_schedule_command(&atkbd->ps2dev, param, ATKBD_CMD_SETLEDS);			if (atkbd->extra) {				param[0] = 0;				param[1] = (test_bit(LED_COMPOSE, dev->led) ? 0x01 : 0)					 | (test_bit(LED_SLEEP,   dev->led) ? 0x02 : 0)					 | (test_bit(LED_SUSPEND, dev->led) ? 0x04 : 0)				         | (test_bit(LED_MISC,    dev->led) ? 0x10 : 0)				         | (test_bit(LED_MUTE,    dev->led) ? 0x20 : 0);				ps2_schedule_command(&atkbd->ps2dev, param, ATKBD_CMD_EX_SETLEDS);			}			return 0;		case EV_REP:			if (atkbd->softrepeat) return 0;			i = j = 0;			while (i < 31 && period[i] < dev->rep[REP_PERIOD])				i++;			while (j < 3 && delay[j] < dev->rep[REP_DELAY])				j++;			dev->rep[REP_PERIOD] = period[i];			dev->rep[REP_DELAY] = delay[j];			param[0] = i | (j << 5);			ps2_schedule_command(&atkbd->ps2dev, param, ATKBD_CMD_SETREP);			return 0;	}	return -1;}/* * atkbd_enable() signals that interrupt handler is allowed to * generate input events. */static inline void atkbd_enable(struct atkbd *atkbd){	serio_pause_rx(atkbd->ps2dev.serio);	atkbd->enabled = 1;	serio_continue_rx(atkbd->ps2dev.serio);}/* * atkbd_disable() tells input handler that all incoming data except * for ACKs and command response should be dropped. */static inline void atkbd_disable(struct atkbd *atkbd){	serio_pause_rx(atkbd->ps2dev.serio);	atkbd->enabled = 0;	serio_continue_rx(atkbd->ps2dev.serio);}/* * atkbd_probe() probes for an AT keyboard on a serio port. */static int atkbd_probe(struct atkbd *atkbd){	struct ps2dev *ps2dev = &atkbd->ps2dev;	unsigned char param[2];/* * Some systems, where the bit-twiddling when testing the io-lines of the * controller may confuse the keyboard need a full reset of the keyboard. On * these systems the BIOS also usually doesn't do it for us. */	if (atkbd_reset)		if (ps2_command(ps2dev, NULL, ATKBD_CMD_RESET_BAT))			printk(KERN_WARNING "atkbd.c: keyboard reset failed on %s\n", ps2dev->serio->phys);/* * Then we check the keyboard ID. We should get 0xab83 under normal conditions. * Some keyboards report different values, but the first byte is always 0xab or * 0xac. Some old AT keyboards don't report anything. If a mouse is connected, this * should make sure we don't try to set the LEDs on it. */	param[0] = param[1] = 0xa5;	/* initialize with invalid values */	if (ps2_command(ps2dev, param, ATKBD_CMD_GETID)) {/* * If the get ID command failed, we check if we can at least set the LEDs on * the keyboard. This should work on every keyboard out there. It also turns * the LEDs off, which we want anyway. */		param[0] = 0;		if (ps2_command(ps2dev, param, ATKBD_CMD_SETLEDS))			return -1;		atkbd->id = 0xabba;		return 0;	}	if (param[0] != 0xab && param[0] != 0xac &&	/* Regular and NCD Sun keyboards */	    param[0] != 0x2b && param[0] != 0x5d &&	/* Trust keyboard, raw and translated */	    param[0] != 0x60 && param[0] != 0x47)	/* NMB SGI keyboard, raw and translated */		return -1;	atkbd->id = (param[0] << 8) | param[1];	if (atkbd->id == 0xaca1 && atkbd->translated) {		printk(KERN_ERR "atkbd.c: NCD terminal keyboards are only supported on non-translating\n");		printk(KERN_ERR "atkbd.c: controllers. Use i8042.direct=1 to disable translation.\n");		return -1;	}	return 0;}/* * atkbd_select_set checks if a keyboard has a working Set 3 support, and * sets it into that. Unfortunately there are keyboards that can be switched * to Set 3, but don't work well in that (BTC Multimedia ...) */static int atkbd_select_set(struct atkbd *atkbd, int target_set, int allow_extra){	struct ps2dev *ps2dev = &atkbd->ps2dev;	unsigned char param[2];	atkbd->extra = 0;/*

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人精品免费网站| 欧美久久久一区| 欧美激情综合网| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 欧美日韩国产高清一区二区| 夜夜嗨av一区二区三区网页 | 午夜久久久久久| 51精品国自产在线| 天堂一区二区在线| 日韩精品专区在线影院观看| 国产毛片一区二区| 亚洲欧美一区二区久久| 欧美在线观看视频在线| 午夜精品一区在线观看| 2020国产精品久久精品美国| 国产成人av福利| 亚洲欧美日本韩国| 91精品久久久久久久99蜜桃| 国产乱码精品一区二区三区忘忧草 | 日韩中文字幕1| 久久夜色精品国产欧美乱极品| 成人黄色片在线观看| 亚洲综合激情另类小说区| 在线播放/欧美激情| 国产成人日日夜夜| 亚洲国产视频一区| 久久久99精品免费观看不卡| 99精品视频在线播放观看| 日日噜噜夜夜狠狠视频欧美人| 欧美精品一区二区三区蜜桃 | 色视频一区二区| 日韩精品一级中文字幕精品视频免费观看| 日韩精品一区二区三区蜜臀 | 欧美xfplay| 99久久久无码国产精品| 免费的成人av| 亚洲美女免费在线| 日韩天堂在线观看| 一本大道久久a久久精品综合| 乱中年女人伦av一区二区| 亚洲色图色小说| 2021中文字幕一区亚洲| 欧美日韩视频第一区| 成人夜色视频网站在线观看| 天天操天天干天天综合网| 国产精品毛片大码女人| 国产精品白丝在线| 亚洲欧洲精品一区二区三区 | 91视频xxxx| 国内欧美视频一区二区| 亚洲一二三区在线观看| 中文字幕一区在线观看| 亚洲精品一区二区三区精华液| 欧美日韩一区国产| 91视频国产资源| 成人免费毛片片v| 国产一区二区视频在线播放| 免费成人美女在线观看| 亚洲地区一二三色| 亚洲精品久久嫩草网站秘色| 中文字幕的久久| 国产日韩欧美精品一区| 精品国产百合女同互慰| 日韩午夜小视频| 日韩欧美精品在线| 日韩一二三区不卡| 欧美一区二区视频免费观看| 欧美精选在线播放| 欧美精品v国产精品v日韩精品| 欧美色倩网站大全免费| 国产精品综合在线视频| 亚洲视频在线观看一区| 国产精品嫩草影院av蜜臀| 久久久久久9999| 欧美精品一区二区久久婷婷| 日韩一区二区精品在线观看| 欧美乱熟臀69xxxxxx| 欧美日韩一级二级三级| 精品视频全国免费看| 欧美亚日韩国产aⅴ精品中极品| 91免费国产在线| 欧洲生活片亚洲生活在线观看| 在线免费观看日本欧美| 91麻豆免费看| 在线视频欧美精品| 欧美色视频一区| 欧美一个色资源| 精品国产乱码久久久久久免费| 欧美成人午夜电影| 久久理论电影网| 国产精品久久久久aaaa樱花| 中文字幕一区三区| 亚洲精品国产精华液| 性欧美疯狂xxxxbbbb| 日本人妖一区二区| 国产在线播精品第三| 成人三级伦理片| 色天使久久综合网天天| 在线电影一区二区三区| 欧美精品一区二区在线播放| 国产精品免费视频网站| 亚洲理论在线观看| 午夜精品久久久久久久99水蜜桃| 日本亚洲欧美天堂免费| 国产激情精品久久久第一区二区| av电影在线观看不卡| 欧美吞精做爰啪啪高潮| 日韩欧美黄色影院| 最新欧美精品一区二区三区| 日韩激情中文字幕| 国产成人精品在线看| 欧美三级资源在线| 久久蜜臀精品av| 亚洲综合色丁香婷婷六月图片| 免费人成黄页网站在线一区二区 | 丝袜美腿亚洲综合| 国产一二三精品| 在线视频综合导航| 国产偷v国产偷v亚洲高清| 亚洲一区二区精品3399| 国产美女久久久久| 欧美在线综合视频| 久久久久久久久久看片| 亚洲成人福利片| 成人a区在线观看| 日韩亚洲欧美一区二区三区| 亚洲天堂av老司机| 麻豆中文一区二区| 色美美综合视频| 国产欧美综合在线观看第十页| 亚洲动漫第一页| 本田岬高潮一区二区三区| 日韩亚洲欧美成人一区| 一区二区三区在线视频免费| 久久99精品国产.久久久久久| 日韩三级视频中文字幕| 国产精品美女www爽爽爽| 免费高清在线视频一区·| 欧美亚洲自拍偷拍| 日韩美女视频一区| 国产很黄免费观看久久| 日韩欧美成人一区| 亚洲电影在线播放| 成人黄色a**站在线观看| 2024国产精品| 男女性色大片免费观看一区二区| 日本高清无吗v一区| 国产精品久久久久天堂| 国产乱妇无码大片在线观看| 日韩亚洲欧美中文三级| 日本成人在线网站| 欧美私人免费视频| 亚洲欧美日韩在线播放| 成人性视频免费网站| 国产亚洲欧美激情| 精品午夜久久福利影院| 日韩欧美三级在线| 精品系列免费在线观看| 欧美精品免费视频| 午夜久久久久久电影| 欧美精品在线观看播放| 久久久久久久久久电影| 日韩午夜电影av| 欧美一区二区视频网站| 在线综合亚洲欧美在线视频| 欧美午夜免费电影| 99精品视频在线观看免费| 久色婷婷小香蕉久久| 国产精品视频一区二区三区不卡| 久久久国际精品| 国产三级精品视频| 日韩欧美中文字幕精品| 日韩欧美一级精品久久| 日韩免费观看高清完整版在线观看| 777a∨成人精品桃花网| 欧美成人福利视频| 91精品福利在线一区二区三区| 337p日本欧洲亚洲大胆色噜噜| 中文字幕精品一区二区精品绿巨人 | 国产精品护士白丝一区av| 99re在线精品| 国产黄色精品视频| 久草这里只有精品视频| 亚洲中国最大av网站| 国产精品视频免费看| 日韩一区二区三区四区 | 久久久久久一二三区| 免费观看久久久4p| 色噜噜狠狠色综合中国| 国产亚洲精品7777| 成人av电影观看| 亚洲国产美女搞黄色| 日韩欧美在线观看一区二区三区| 久久69国产一区二区蜜臀| 国产日本一区二区| 色国产精品一区在线观看| 日本中文在线一区| 日本一区二区三级电影在线观看| 色婷婷精品大在线视频| 蜜桃视频在线一区|