⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ipaq.c

📁 linux-2.6.15.6
💻 C
📖 第 1 页 / 共 3 页
字号:
	{ USB_DEVICE(0x0BB4, 0x0A09) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A0A) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A0B) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A0C) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A0D) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A0E) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A0F) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A10) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A11) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A12) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A13) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A14) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A15) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A16) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A17) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A18) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A19) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A1A) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A1B) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A1C) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A1D) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A1E) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A1F) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A20) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A21) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A22) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A23) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A24) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A25) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A26) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A27) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A28) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A29) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A2A) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A2B) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A2C) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A2D) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A2E) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A2F) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A30) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A31) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A32) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A33) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A34) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A35) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A36) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A37) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A38) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A39) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A3A) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A3B) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A3C) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A3D) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A3E) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A3F) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A40) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A41) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A42) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A43) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A44) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A45) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A46) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A47) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A48) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A49) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A4A) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A4B) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A4C) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A4D) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A4E) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A4F) }, /* PocketPC USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A50) }, /* HTC SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A51) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A52) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A53) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A54) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A55) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A56) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A57) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A58) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A59) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A5A) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A5B) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A5C) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A5D) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A5E) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A5F) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A60) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A61) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A62) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A63) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A64) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A65) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A66) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A67) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A68) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A69) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A6A) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A6B) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A6C) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A6D) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A6E) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A6F) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A70) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A71) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A72) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A73) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A74) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A75) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A76) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A77) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A78) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A79) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A7A) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A7B) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A7C) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A7D) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A7E) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A7F) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A80) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A81) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A82) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A83) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A84) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A85) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A86) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A87) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A88) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A89) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A8A) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A8B) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A8C) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A8D) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A8E) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A8F) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A90) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A91) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A92) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A93) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A94) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A95) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A96) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A97) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A98) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A99) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A9A) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A9B) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A9C) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A9D) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A9E) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BB4, 0x0A9F) }, /* SmartPhone USB Sync */	{ USB_DEVICE(0x0BF8, 0x1001) }, /* Fujitsu Siemens Computers USB Sync */	{ USB_DEVICE(0x0C44, 0x03A2) }, /* Motorola iDEN Smartphone */	{ USB_DEVICE(0x0C8E, 0x6000) }, /* Cesscom Luxian Series */	{ USB_DEVICE(0x0CAD, 0x9001) }, /* Motorola PowerPad Pocket PC燚evice */	{ USB_DEVICE(0x0F4E, 0x0200) }, /* Freedom Scientific USB Sync */	{ USB_DEVICE(0x0F98, 0x0201) }, /* Cyberbank USB Sync */	{ USB_DEVICE(0x0FB8, 0x3001) }, /* Wistron USB Sync */	{ USB_DEVICE(0x0FB8, 0x3002) }, /* Wistron USB Sync */	{ USB_DEVICE(0x0FB8, 0x3003) }, /* Wistron USB Sync */	{ USB_DEVICE(0x0FB8, 0x4001) }, /* Wistron USB Sync */	{ USB_DEVICE(0x1066, 0x00CE) }, /* E-TEN USB Sync */	{ USB_DEVICE(0x1066, 0x0300) }, /* E-TEN P3XX Pocket PC */	{ USB_DEVICE(0x1066, 0x0500) }, /* E-TEN P5XX Pocket PC */	{ USB_DEVICE(0x1066, 0x0600) }, /* E-TEN P6XX Pocket PC */	{ USB_DEVICE(0x1066, 0x0700) }, /* E-TEN P7XX Pocket PC */	{ USB_DEVICE(0x1114, 0x0001) }, /* Psion Teklogix Sync 753x */	{ USB_DEVICE(0x1114, 0x0004) }, /* Psion Teklogix Sync netBookPro */	{ USB_DEVICE(0x1114, 0x0006) }, /* Psion Teklogix Sync 7525 */	{ USB_DEVICE(0x1182, 0x1388) }, /* VES USB Sync */	{ USB_DEVICE(0x11D9, 0x1002) }, /* Rugged Pocket PC 2003 */	{ USB_DEVICE(0x11D9, 0x1003) }, /* Rugged Pocket PC 2003 */	{ USB_DEVICE(0x1231, 0xCE01) }, /* USB Sync 03 */	{ USB_DEVICE(0x1231, 0xCE02) }, /* USB Sync 03 */	{ USB_DEVICE(0x1690, 0x0601) }, /* Askey USB Sync */	{ USB_DEVICE(0x22B8, 0x4204) }, /* Motorola MPx200 Smartphone */	{ USB_DEVICE(0x22B8, 0x4214) }, /* Motorola MPc GSM */	{ USB_DEVICE(0x22B8, 0x4224) }, /* Motorola MPx220 Smartphone */	{ USB_DEVICE(0x22B8, 0x4234) }, /* Motorola MPc CDMA */	{ USB_DEVICE(0x22B8, 0x4244) }, /* Motorola MPx100 Smartphone */	{ USB_DEVICE(0x3340, 0x011C) }, /* Mio DigiWalker PPC StrongARM */	{ USB_DEVICE(0x3340, 0x0326) }, /* Mio DigiWalker 338 */	{ USB_DEVICE(0x3340, 0x0426) }, /* Mio DigiWalker 338 */	{ USB_DEVICE(0x3340, 0x043A) }, /* Mio DigiWalker USB Sync */	{ USB_DEVICE(0x3340, 0x051C) }, /* MiTAC USB Sync 528 */	{ USB_DEVICE(0x3340, 0x053A) }, /* Mio DigiWalker SmartPhone USB Sync */	{ USB_DEVICE(0x3340, 0x071C) }, /* MiTAC USB Sync */	{ USB_DEVICE(0x3340, 0x0B1C) }, /* Generic PPC StrongARM */	{ USB_DEVICE(0x3340, 0x0E3A) }, /* Generic PPC USB Sync */	{ USB_DEVICE(0x3340, 0x0F1C) }, /* Itautec USB Sync */	{ USB_DEVICE(0x3340, 0x0F3A) }, /* Generic SmartPhone USB Sync */	{ USB_DEVICE(0x3340, 0x1326) }, /* Itautec USB Sync */	{ USB_DEVICE(0x3340, 0x191C) }, /* YAKUMO USB Sync */	{ USB_DEVICE(0x3340, 0x2326) }, /* Vobis USB Sync */	{ USB_DEVICE(0x3340, 0x3326) }, /* MEDION Winodws Moble USB Sync */	{ USB_DEVICE(0x3708, 0x20CE) }, /* Legend USB Sync */	{ USB_DEVICE(0x3708, 0x21CE) }, /* Lenovo USB Sync */	{ USB_DEVICE(0x4113, 0x0210) }, /* Mobile Media Technology USB Sync */	{ USB_DEVICE(0x4113, 0x0211) }, /* Mobile Media Technology USB Sync */	{ USB_DEVICE(0x4113, 0x0400) }, /* Mobile Media Technology USB Sync */	{ USB_DEVICE(0x4113, 0x0410) }, /* Mobile Media Technology USB Sync */	{ USB_DEVICE(0x413C, 0x4001) }, /* Dell Axim USB Sync */	{ USB_DEVICE(0x413C, 0x4002) }, /* Dell Axim USB Sync */	{ USB_DEVICE(0x413C, 0x4003) }, /* Dell Axim USB Sync */	{ USB_DEVICE(0x413C, 0x4004) }, /* Dell Axim USB Sync */	{ USB_DEVICE(0x413C, 0x4005) }, /* Dell Axim USB Sync */	{ USB_DEVICE(0x413C, 0x4006) }, /* Dell Axim USB Sync */	{ USB_DEVICE(0x413C, 0x4007) }, /* Dell Axim USB Sync */	{ USB_DEVICE(0x413C, 0x4008) }, /* Dell Axim USB Sync */	{ USB_DEVICE(0x413C, 0x4009) }, /* Dell Axim USB Sync */	{ USB_DEVICE(0x4505, 0x0010) }, /* Smartphone */	{ USB_DEVICE(0x5E04, 0xCE00) }, /* SAGEM Wireless Assistant */	{ }                             /* Terminating entry */};MODULE_DEVICE_TABLE (usb, ipaq_id_table);static struct usb_driver ipaq_driver = {	.owner =	THIS_MODULE,	.name =		"ipaq",	.probe =	usb_serial_probe,	.disconnect =	usb_serial_disconnect,	.id_table =	ipaq_id_table,};/* All of the device info needed for the Compaq iPAQ */static struct usb_serial_driver ipaq_device = {	.driver = {		.owner =	THIS_MODULE,		.name =		"ipaq",	},	.description =		"PocketPC PDA",	.id_table =		ipaq_id_table,	.num_interrupt_in =	NUM_DONT_CARE,	.num_bulk_in =		1,	.num_bulk_out =		1,	.num_ports =		1,	.open =			ipaq_open,	.close =		ipaq_close,	.attach =		ipaq_startup,	.shutdown =		ipaq_shutdown,	.write =		ipaq_write,	.write_room =		ipaq_write_room,	.chars_in_buffer =	ipaq_chars_in_buffer,	.read_bulk_callback =	ipaq_read_bulk_callback,	.write_bulk_callback =	ipaq_write_bulk_callback,};static spinlock_t	write_list_lock;static int		bytes_in;static int		bytes_out;static int ipaq_open(struct usb_serial_port *port, struct file *filp){	struct usb_serial	*serial = port->serial;	struct ipaq_private	*priv;	struct ipaq_packet	*pkt;	int			i, result = 0;	int			retries = KP_RETRIES;	dbg("%s - port %d", __FUNCTION__, port->number);	bytes_in = 0;	bytes_out = 0;	priv = (struct ipaq_private *)kmalloc(sizeof(struct ipaq_private), GFP_KERNEL);	if (priv == NULL) {		err("%s - Out of memory", __FUNCTION__);		return -ENOMEM;	}	usb_set_serial_port_data(port, priv);	priv->active = 0;	priv->queue_len = 0;	priv->free_len = 0;	INIT_LIST_HEAD(&priv->queue);	INIT_LIST_HEAD(&priv->freelist);	for (i = 0; i < URBDATA_QUEUE_MAX / PACKET_SIZE; i++) {		pkt = kmalloc(sizeof(struct ipaq_packet), GFP_KERNEL);		if (pkt == NULL) {			goto enomem;		}		pkt->data = kmalloc(PACKET_SIZE, GFP_KERNEL);		if (pkt->data == NULL) {			kfree(pkt);			goto enomem;		}		pkt->len = 0;		pkt->written = 0;		INIT_LIST_HEAD(&pkt->list);		list_add(&pkt->list, &priv->freelist);		priv->free_len += PACKET_SIZE;	}	/*	 * Force low latency on. This will immediately push data to the line	 * discipline instead of queueing.	 */	port->tty->low_latency = 1;	port->tty->raw = 1;	port->tty->real_raw = 1;	/*	 * Lose the small buffers usbserial provides. Make larger ones.	 */	kfree(port->bulk_in_buffer);	kfree(port->bulk_out_buffer);	port->bulk_in_buffer = kmalloc(URBDATA_SIZE, GFP_KERNEL);	if (port->bulk_in_buffer == NULL) {		goto enomem;	}	port->bulk_out_buffer = kmalloc(URBDATA_SIZE, GFP_KERNEL);	if (port->bulk_out_buffer == NULL) {		kfree(port->bulk_in_buffer);		goto enomem;	}	port->read_urb->transfer_buffer = port->bulk_in_buffer;	port->write_urb->transfer_buffer = port->bulk_out_buffer;	port->read_urb->transfer_buffer_length = URBDATA_SIZE;	port->bulk_out_size = port->write_urb->transfer_buffer_length = URBDATA_SIZE;		/* Start reading from the device */	usb_fill_bulk_urb(port->read_urb, serial->dev, 		      usb_rcvbulkpipe(serial->dev, port->bulk_in_endpointAddress),

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -