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

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

?? hid-core.c

?? 優龍2410linux2.6.8內核源代碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
#define USB_DEVICE_ID_ATEN_4PORTKVMC   0x2208#define USB_VENDOR_ID_TOPMAX           0x0663#define USB_DEVICE_ID_TOPMAX_COBRAPAD  0x0103#define USB_VENDOR_ID_HAPP             0x078b#define USB_DEVICE_ID_UGCI_DRIVING     0x0010#define USB_DEVICE_ID_UGCI_FLYING      0x0020#define USB_DEVICE_ID_UGCI_FIGHTING    0x0030#define USB_VENDOR_ID_MGE              0x0463#define USB_DEVICE_ID_MGE_UPS          0xffff#define USB_DEVICE_ID_MGE_UPS1         0x0001#define USB_VENDOR_ID_ONTRAK		0x0a07#define USB_DEVICE_ID_ONTRAK_ADU100	0x0064#define USB_VENDOR_ID_TANGTOP          0x0d3d#define USB_DEVICE_ID_TANGTOP_USBPS2   0x0001#define USB_VENDOR_ID_ESSENTIAL_REALITY	0x0d7f#define USB_DEVICE_ID_ESSENTIAL_REALITY_P5	0x0100#define USB_VENDOR_ID_A4TECH		0x09DA#define USB_DEVICE_ID_A4TECH_WCP32PU	0x0006#define USB_VENDOR_ID_CYPRESS		0x04b4#define USB_DEVICE_ID_CYPRESS_MOUSE	0x0001#define USB_VENDOR_ID_BERKSHIRE		0x0c98#define USB_DEVICE_ID_BERKSHIRE_PCWD	0x1140#define USB_VENDOR_ID_ALPS		0x0433#define USB_DEVICE_ID_IBM_GAMEPAD	0x1101#define USB_VENDOR_ID_SAITEK		0x06a3#define USB_DEVICE_ID_SAITEK_RUMBLEPAD	0xff17#define USB_VENDOR_ID_NEC		0x073e#define USB_DEVICE_ID_NEC_USB_GAME_PAD	0x0301#define USB_VENDOR_ID_CHIC		0x05fe#define USB_DEVICE_ID_CHIC_GAMEPAD	0x0014#define USB_VENDOR_ID_GLAB		0x06c2#define USB_DEVICE_ID_4_PHIDGETSERVO_30	0x0038#define USB_DEVICE_ID_1_PHIDGETSERVO_30	0x0039#define USB_DEVICE_ID_8_8_8_IF_KIT	0x0045#define USB_DEVICE_ID_0_0_4_IF_KIT	0x0040#define USB_DEVICE_ID_0_8_8_IF_KIT	0x0053#define USB_VENDOR_ID_WISEGROUP		0x0925#define USB_DEVICE_ID_1_PHIDGETSERVO_20	0x8101#define USB_DEVICE_ID_4_PHIDGETSERVO_20	0x8104static struct hid_blacklist {	__u16 idVendor;	__u16 idProduct;	unsigned quirks;} hid_blacklist[] = {	{ USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_01, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_10, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_20, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_21, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_22, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_23, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_24, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_BERKSHIRE, USB_DEVICE_ID_BERKSHIRE_PCWD, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_ESSENTIAL_REALITY, USB_DEVICE_ID_ESSENTIAL_REALITY_P5, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_KBGEAR, USB_DEVICE_ID_KBGEAR_JAMSTUDIO, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_GRIFFIN, USB_DEVICE_ID_POWERMATE, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_GRIFFIN, USB_DEVICE_ID_SOUNDKNOB, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_MGE, USB_DEVICE_ID_MGE_UPS, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_MGE, USB_DEVICE_ID_MGE_UPS1, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_ONTRAK, USB_DEVICE_ID_ONTRAK_ADU100, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_ONTRAK, USB_DEVICE_ID_ONTRAK_ADU100 + 100, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_ONTRAK, USB_DEVICE_ID_ONTRAK_ADU100 + 200, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_ONTRAK, USB_DEVICE_ID_ONTRAK_ADU100 + 300, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_ONTRAK, USB_DEVICE_ID_ONTRAK_ADU100 + 400, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_ONTRAK, USB_DEVICE_ID_ONTRAK_ADU100 + 500, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_PENPARTNER, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_GRAPHIRE, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_GRAPHIRE + 1, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_GRAPHIRE + 2, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_GRAPHIRE + 3, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_GRAPHIRE + 4, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS + 1, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS + 2, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS + 3, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS + 4, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_PL, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_PL + 1, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_PL + 2, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_PL + 3, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_PL + 4, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_PL + 5, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS2 + 1, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS2 + 2, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS2 + 3, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS2 + 4, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS2 + 5, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_INTUOS2 + 7, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_VOLITO, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_PTU, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_GLAB, USB_DEVICE_ID_4_PHIDGETSERVO_30, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_GLAB, USB_DEVICE_ID_1_PHIDGETSERVO_30, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_GLAB, USB_DEVICE_ID_8_8_8_IF_KIT, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_GLAB, USB_DEVICE_ID_0_0_4_IF_KIT, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_GLAB, USB_DEVICE_ID_0_8_8_IF_KIT, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_4_PHIDGETSERVO_20, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_1_PHIDGETSERVO_20, HID_QUIRK_IGNORE },	{ USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_UC100KM, HID_QUIRK_NOGET },	{ USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_CS124U, HID_QUIRK_NOGET },	{ USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_2PORTKVM, HID_QUIRK_NOGET },	{ USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_4PORTKVM, HID_QUIRK_NOGET },	{ USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_4PORTKVMC, HID_QUIRK_NOGET },	{ USB_VENDOR_ID_TANGTOP, USB_DEVICE_ID_TANGTOP_USBPS2, HID_QUIRK_NOGET },	{ USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_WCP32PU, HID_QUIRK_2WHEEL_MOUSE_HACK_BACK },	{ USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_MOUSE, HID_QUIRK_2WHEEL_MOUSE_HACK_EXTRA },	{ USB_VENDOR_ID_ALPS, USB_DEVICE_ID_IBM_GAMEPAD, HID_QUIRK_BADPAD },	{ USB_VENDOR_ID_CHIC, USB_DEVICE_ID_CHIC_GAMEPAD, HID_QUIRK_BADPAD },	{ USB_VENDOR_ID_HAPP, USB_DEVICE_ID_UGCI_DRIVING, HID_QUIRK_BADPAD | HID_QUIRK_MULTI_INPUT },	{ USB_VENDOR_ID_HAPP, USB_DEVICE_ID_UGCI_FLYING, HID_QUIRK_BADPAD | HID_QUIRK_MULTI_INPUT },	{ USB_VENDOR_ID_HAPP, USB_DEVICE_ID_UGCI_FIGHTING, HID_QUIRK_BADPAD | HID_QUIRK_MULTI_INPUT },	{ USB_VENDOR_ID_NEC, USB_DEVICE_ID_NEC_USB_GAME_PAD, HID_QUIRK_BADPAD },	{ USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_RUMBLEPAD, HID_QUIRK_BADPAD },	{ USB_VENDOR_ID_TOPMAX, USB_DEVICE_ID_TOPMAX_COBRAPAD, HID_QUIRK_BADPAD },	{ 0, 0 }};static int hid_alloc_buffers(struct usb_device *dev, struct hid_device *hid){	if (!(hid->inbuf = usb_buffer_alloc(dev, HID_BUFFER_SIZE, SLAB_ATOMIC, &hid->inbuf_dma)))		return -1;	if (!(hid->outbuf = usb_buffer_alloc(dev, HID_BUFFER_SIZE, SLAB_ATOMIC, &hid->outbuf_dma)))		return -1;	if (!(hid->cr = usb_buffer_alloc(dev, sizeof(*(hid->cr)), SLAB_ATOMIC, &hid->cr_dma)))		return -1;	if (!(hid->ctrlbuf = usb_buffer_alloc(dev, HID_BUFFER_SIZE, SLAB_ATOMIC, &hid->ctrlbuf_dma)))		return -1;	return 0;}static void hid_free_buffers(struct usb_device *dev, struct hid_device *hid){	if (hid->inbuf)		usb_buffer_free(dev, HID_BUFFER_SIZE, hid->inbuf, hid->inbuf_dma);	if (hid->outbuf)		usb_buffer_free(dev, HID_BUFFER_SIZE, hid->outbuf, hid->outbuf_dma);	if (hid->cr)		usb_buffer_free(dev, sizeof(*(hid->cr)), hid->cr, hid->cr_dma);	if (hid->ctrlbuf)		usb_buffer_free(dev, HID_BUFFER_SIZE, hid->ctrlbuf, hid->ctrlbuf_dma);}static struct hid_device *usb_hid_configure(struct usb_interface *intf){	struct usb_host_interface *interface = intf->cur_altsetting;	struct usb_device *dev = interface_to_usbdev (intf);	struct hid_descriptor *hdesc;	struct hid_device *hid;	unsigned quirks = 0, rsize = 0;	char *buf, *rdesc;	int n;	for (n = 0; hid_blacklist[n].idVendor; n++)		if ((hid_blacklist[n].idVendor == dev->descriptor.idVendor) &&			(hid_blacklist[n].idProduct == dev->descriptor.idProduct))				quirks = hid_blacklist[n].quirks;	if (quirks & HID_QUIRK_IGNORE)		return NULL;	if (usb_get_extra_descriptor(interface, HID_DT_HID, &hdesc) && ((!interface->desc.bNumEndpoints) ||		usb_get_extra_descriptor(&interface->endpoint[0], HID_DT_HID, &hdesc))) {			dbg("class descriptor not present\n");			return NULL;	}	for (n = 0; n < hdesc->bNumDescriptors; n++)		if (hdesc->desc[n].bDescriptorType == HID_DT_REPORT)			rsize = le16_to_cpu(hdesc->desc[n].wDescriptorLength);	if (!rsize || rsize > HID_MAX_DESCRIPTOR_SIZE) {		dbg("weird size of report descriptor (%u)", rsize);		return NULL;	}	if (!(rdesc = kmalloc(rsize, GFP_KERNEL))) {		dbg("couldn't allocate rdesc memory");		return NULL;	}	if ((n = hid_get_class_descriptor(dev, interface->desc.bInterfaceNumber, HID_DT_REPORT, rdesc, rsize)) < 0) {		dbg("reading report descriptor failed");		kfree(rdesc);		return NULL;	}#ifdef DEBUG_DATA	printk(KERN_DEBUG __FILE__ ": report descriptor (size %u, read %d) = ", rsize, n);	for (n = 0; n < rsize; n++)		printk(" %02x", (unsigned char) rdesc[n]);	printk("\n");#endif	if (!(hid = hid_parse_report(rdesc, rsize))) {		dbg("parsing report descriptor failed");		kfree(rdesc);		return NULL;	}	kfree(rdesc);	hid->quirks = quirks;	if (hid_alloc_buffers(dev, hid)) {		hid_free_buffers(dev, hid);		goto fail;	}	for (n = 0; n < interface->desc.bNumEndpoints; n++) {		struct usb_endpoint_descriptor *endpoint;		int pipe;		endpoint = &interface->endpoint[n].desc;		if ((endpoint->bmAttributes & 3) != 3)		/* Not an interrupt endpoint */			continue;		if (endpoint->bEndpointAddress & USB_DIR_IN) {			int len;			if (hid->urbin)				continue;			if (!(hid->urbin = usb_alloc_urb(0, GFP_KERNEL)))				goto fail;			pipe = usb_rcvintpipe(dev, endpoint->bEndpointAddress);			len = usb_maxpacket(dev, pipe, 0);			if (len > HID_BUFFER_SIZE)				len = HID_BUFFER_SIZE;			usb_fill_int_urb(hid->urbin, dev, pipe, hid->inbuf, len,					 hid_irq_in, hid, endpoint->bInterval);			hid->urbin->transfer_dma = hid->inbuf_dma;			hid->urbin->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;		} else {			if (hid->urbout)				continue;			if (!(hid->urbout = usb_alloc_urb(0, GFP_KERNEL)))				goto fail;			pipe = usb_sndintpipe(dev, endpoint->bEndpointAddress);			usb_fill_int_urb(hid->urbout, dev, pipe, hid->outbuf, 0,					  hid_irq_out, hid, 1);			hid->urbout->transfer_dma = hid->outbuf_dma;			hid->urbout->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;		}	}	if (!hid->urbin) {		err("couldn't find an input interrupt endpoint");		goto fail;	}	init_waitqueue_head(&hid->wait);		hid->outlock = SPIN_LOCK_UNLOCKED;	hid->ctrllock = SPIN_LOCK_UNLOCKED;	hid->version = le16_to_cpu(hdesc->bcdHID);	hid->country = hdesc->bCountryCode;	hid->dev = dev;	hid->intf = intf;	hid->ifnum = interface->desc.bInterfaceNumber;	hid->name[0] = 0;	if (!(buf = kmalloc(64, GFP_KERNEL)))		goto fail;	if (usb_string(dev, dev->descriptor.iManufacturer, buf, 64) > 0) {		strcat(hid->name, buf);		if (usb_string(dev, dev->descriptor.iProduct, buf, 64) > 0)			snprintf(hid->name, 64, "%s %s", hid->name, buf);	} else if (usb_string(dev, dev->descriptor.iProduct, buf, 128) > 0) {			snprintf(hid->name, 128, "%s", buf);	} else		snprintf(hid->name, 128, "%04x:%04x", dev->descriptor.idVendor, dev->descriptor.idProduct);	usb_make_path(dev, buf, 64);	snprintf(hid->phys, 64, "%s/input%d", buf,			intf->altsetting[0].desc.bInterfaceNumber);	if (usb_string(dev, dev->descriptor.iSerialNumber, hid->uniq, 64) <= 0)		hid->uniq[0] = 0;	kfree(buf);	hid->urbctrl = usb_alloc_urb(0, GFP_KERNEL);	if (!hid->urbctrl)		goto fail;	usb_fill_control_urb(hid->urbctrl, dev, 0, (void *) hid->cr,			     hid->ctrlbuf, 1, hid_ctrl, hid);	hid->urbctrl->setup_dma = hid->cr_dma;	hid->urbctrl->transfer_dma = hid->ctrlbuf_dma;	hid->urbctrl->transfer_flags |= (URB_NO_TRANSFER_DMA_MAP				| URB_NO_SETUP_DMA_MAP);	return hid;fail:	if (hid->urbin)		usb_free_urb(hid->urbin);	if (hid->urbout)		usb_free_urb(hid->urbout);	if (hid->urbctrl)		usb_free_urb(hid->urbctrl);	hid_free_buffers(dev, hid);	hid_free_device(hid);	return NULL;}static void hid_disconnect(struct usb_interface *intf){	struct hid_device *hid = usb_get_intfdata (intf);	if (!hid)		return;	usb_set_intfdata(intf, NULL);	usb_unlink_urb(hid->urbin);	usb_unlink_urb(hid->urbout);	usb_unlink_urb(hid->urbctrl);	if (hid->claimed & HID_CLAIMED_INPUT)		hidinput_disconnect(hid);	if (hid->claimed & HID_CLAIMED_HIDDEV)		hiddev_disconnect(hid);	usb_free_urb(hid->urbin);	usb_free_urb(hid->urbctrl);	if (hid->urbout)		usb_free_urb(hid->urbout);	hid_free_buffers(hid->dev, hid);	hid_free_device(hid);}static int hid_probe (struct usb_interface *intf, const struct usb_device_id *id){	struct hid_device *hid;	char path[64];	int i;	char *c;	dbg("HID probe called for ifnum %d",			intf->altsetting->desc.bInterfaceNumber);	if (!(hid = usb_hid_configure(intf)))		return -EIO;	hid_init_reports(hid);	hid_dump_device(hid);	if (!hidinput_connect(hid))		hid->claimed |= HID_CLAIMED_INPUT;	if (!hiddev_connect(hid))		hid->claimed |= HID_CLAIMED_HIDDEV;	usb_set_intfdata(intf, hid);	if (!hid->claimed) {		printk ("HID device not claimed by input or hiddev\n");		hid_disconnect(intf);		return -EIO;	}	printk(KERN_INFO);	if (hid->claimed & HID_CLAIMED_INPUT)		printk("input");	if (hid->claimed == (HID_CLAIMED_INPUT | HID_CLAIMED_HIDDEV))		printk(",");	if (hid->claimed & HID_CLAIMED_HIDDEV)		printk("hiddev%d", hid->minor);	c = "Device";	for (i = 0; i < hid->maxcollection; i++) {		if (hid->collection[i].type == HID_COLLECTION_APPLICATION &&		    (hid->collection[i].usage & HID_USAGE_PAGE) == HID_UP_GENDESK &&		    (hid->collection[i].usage & 0xffff) < ARRAY_SIZE(hid_types)) {			c = hid_types[hid->collection[i].usage & 0xffff];			break;		}	}	usb_make_path(interface_to_usbdev(intf), path, 63);	printk(": USB HID v%x.%02x %s [%s] on %s\n",		hid->version >> 8, hid->version & 0xff, c, hid->name, path);	return 0;}static struct usb_device_id hid_usb_ids [] = {	{ .match_flags = USB_DEVICE_ID_MATCH_INT_CLASS,	    .bInterfaceClass = USB_INTERFACE_CLASS_HID },	{ }						/* Terminating entry */};MODULE_DEVICE_TABLE (usb, hid_usb_ids);static struct usb_driver hid_driver = {	.owner =	THIS_MODULE,	.name =		"usbhid",	.probe =	hid_probe,	.disconnect =	hid_disconnect,	.id_table =	hid_usb_ids,};static int __init hid_init(void){	int retval;	retval = hiddev_init();	if (retval)		goto hiddev_init_fail;	retval = usb_register(&hid_driver);	if (retval)		goto usb_register_fail;	info(DRIVER_VERSION ":" DRIVER_DESC);	return 0;usb_register_fail:	hiddev_exit();hiddev_init_fail:	return retval;}static void __exit hid_exit(void){	hiddev_exit();	usb_deregister(&hid_driver);}module_init(hid_init);module_exit(hid_exit);MODULE_AUTHOR(DRIVER_AUTHOR);MODULE_DESCRIPTION(DRIVER_DESC);MODULE_LICENSE(DRIVER_LICENSE);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品丝袜久久久中文字幕| 亚洲一区二区av电影| 狠狠色丁香婷婷综合久久片| 欧美一区二区在线免费播放| 奇米色一区二区三区四区| 欧美一级免费大片| 国精产品一区一区三区mba桃花| 久久亚洲免费视频| av网站一区二区三区| 亚洲老司机在线| 在线不卡中文字幕| 国产精品一二三四五| 国产精品欧美一区喷水| 91色综合久久久久婷婷| 亚洲成人tv网| 久久久久97国产精华液好用吗| 成人黄色a**站在线观看| 亚洲一区二区中文在线| 亚洲乱码精品一二三四区日韩在线| 91在线免费播放| 日本午夜精品一区二区三区电影| 久久美女高清视频| 色视频一区二区| 麻豆一区二区三| 亚洲欧美综合网| 9191久久久久久久久久久| 国产综合色视频| 亚洲欧美电影一区二区| 日韩一区二区麻豆国产| 成年人国产精品| 青青草97国产精品免费观看| 国产精品麻豆视频| 日韩欧美黄色影院| 色欧美片视频在线观看| 国模娜娜一区二区三区| 亚洲成av人影院在线观看网| 中文一区二区完整视频在线观看| 欧美亚洲精品一区| 国产福利一区在线| 麻豆高清免费国产一区| 亚洲美女淫视频| 久久九九全国免费| 日韩三级视频在线观看| 欧美三级欧美一级| 色综合久久九月婷婷色综合| 狠狠色丁香婷婷综合久久片| 午夜精品福利在线| 亚洲女子a中天字幕| 欧美激情在线一区二区| 欧美本精品男人aⅴ天堂| 欧洲激情一区二区| 99久久精品免费看国产免费软件| 美女高潮久久久| 亚洲成人免费在线| 亚洲日本在线观看| 国产精品天干天干在观线| 精品国产91洋老外米糕| 在线电影院国产精品| 色哟哟精品一区| 91蜜桃婷婷狠狠久久综合9色| 国产在线精品视频| 裸体在线国模精品偷拍| 丝袜a∨在线一区二区三区不卡 | 福利一区二区在线| 狠狠色综合播放一区二区| 日韩黄色片在线观看| 亚洲国产精品一区二区久久| 亚洲欧美区自拍先锋| 国产欧美一区二区三区在线看蜜臀| 日韩三级伦理片妻子的秘密按摩| 欧美三级视频在线观看| 欧美网站大全在线观看| 欧亚一区二区三区| 在线观看91视频| 国产精品久久久久一区| 久久综合国产精品| 久久奇米777| 国产日韩欧美精品电影三级在线| 精品sm捆绑视频| 久久久久97国产精华液好用吗| 精品91自产拍在线观看一区| 精品久久久久久久久久久久包黑料| 在线成人av网站| 欧美成人r级一区二区三区| 日韩欧美高清在线| 久久伊人蜜桃av一区二区| 久久精品亚洲麻豆av一区二区 | 国产精品一区二区三区四区| 国产高清精品在线| av电影天堂一区二区在线观看| 不卡的电影网站| 欧美亚洲一区三区| 欧美一区二区三区免费视频| 精品三级在线观看| 中文av字幕一区| 亚洲精品国产精品乱码不99| 亚洲成人激情av| 国内成人精品2018免费看| 成人动漫av在线| 欧美图区在线视频| 精品国产91九色蝌蚪| 国产精品午夜在线观看| 亚洲精品第1页| 蜜臀av亚洲一区中文字幕| 国产成人综合在线| 91国产免费看| 日韩三级伦理片妻子的秘密按摩| 国产日韩欧美麻豆| 亚洲香蕉伊在人在线观| 免费在线观看成人| 成人av在线看| 69成人精品免费视频| 日本一区二区免费在线| 成人午夜免费视频| 色系网站成人免费| 欧美成人精品二区三区99精品| 国产精品婷婷午夜在线观看| 香蕉成人啪国产精品视频综合网| 久久爱www久久做| 91免费国产在线| 久久亚洲综合av| 亚洲成人激情综合网| 国产suv一区二区三区88区| 欧美午夜视频网站| 日本一区二区综合亚洲| 丝袜美腿亚洲色图| 色一区在线观看| 久久精品一区二区三区不卡 | 一区二区三区精品在线观看| 久久av老司机精品网站导航| 色先锋久久av资源部| 国产日韩精品一区二区三区在线| 亚洲国产精品自拍| 成人动漫一区二区在线| 精品日产卡一卡二卡麻豆| 一区二区三区中文字幕电影 | 午夜激情久久久| 波多野结衣的一区二区三区| 91精品国产福利在线观看| 国产精品成人网| 国产乱人伦偷精品视频不卡 | 精品理论电影在线| 偷窥国产亚洲免费视频| 91免费国产在线| 国产精品短视频| 国产精品一区二区果冻传媒| 欧美一区二区三区日韩| 亚洲成av人片在线观看无码| 一本大道av伊人久久综合| 国产女人18水真多18精品一级做| 美国精品在线观看| 欧美一区二区三区精品| 亚洲午夜久久久久久久久电影网 | 国产麻豆精品在线| 日韩视频免费直播| 日韩精品欧美成人高清一区二区| 一本大道综合伊人精品热热| 中文字幕一区免费在线观看| 丁香另类激情小说| 欧美国产一区在线| 国产福利视频一区二区三区| 久久伊人中文字幕| 国产成人午夜视频| 日本一区二区三区在线观看| 国产精品香蕉一区二区三区| 久久综合九色综合97婷婷女人| 美女诱惑一区二区| 欧美刺激脚交jootjob| 久久综合综合久久综合| 日韩免费一区二区三区在线播放| 日本亚洲最大的色成网站www| 欧美一区二区三区免费视频| 美女精品自拍一二三四| 欧美成人a视频| 国产电影精品久久禁18| 国产精品网站在线观看| 欧美一级精品大片| 激情成人午夜视频| 国产亚洲成aⅴ人片在线观看 | 亚洲乱码中文字幕综合| 在线国产电影不卡| 午夜私人影院久久久久| 91精品国产入口| 国产在线一区二区综合免费视频| 久久这里只有精品6| 成人中文字幕在线| 一区二区在线观看免费| 欧美日韩高清一区二区| 蜜桃91丨九色丨蝌蚪91桃色| 国产欧美一区二区精品性色| 99久久精品免费| 午夜视频一区二区三区| 欧美成人精品高清在线播放 | 国产在线不卡一区| 中文字幕一区二区三区四区| 欧美性大战久久久久久久| 免费的成人av| 国产精品久久久久久久久免费相片 | 精品视频全国免费看| 日韩成人一级片|