ipaq.c

来自「底层驱动开发」· C语言 代码 · 共 969 行 · 第 1/3 页

C
969
字号
	{ 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(0x0409, 0x00D5) }, /* NEC USB Sync */	{ USB_DEVICE(0x0409, 0x00D6) }, /* NEC USB Sync */	{ USB_DEVICE(0x0409, 0x00D7) }, /* NEC USB Sync */	{ USB_DEVICE(0x0409, 0x8024) }, /* NEC USB Sync */	{ USB_DEVICE(0x0409, 0x8025) }, /* NEC USB Sync */	{ USB_DEVICE(0x04A4, 0x0014) }, /* Hitachi USB Sync */	{ USB_DEVICE(0x0BF8, 0x1001) }, /* Fujitsu Siemens Computers USB Sync */	{ USB_DEVICE(0x0F98, 0x0201) }, /* Cyberbank USB Sync */	{ USB_DEVICE(0x0502, 0x16E1) }, /* Acer n10 Handheld USB Sync */	{ USB_DEVICE(0x0502, 0x16E3) }, /* Acer n30 Handheld USB Sync */	{ USB_DEVICE(0x0502, 0x16E2) }, /* Acer n20 Handheld USB Sync */	{ USB_DEVICE(0x0502, 0x1631) }, /* c10 Series */	{ USB_DEVICE(0x0502, 0x1632) }, /* c20 Series */	{ USB_DEVICE(0x0B05, 0x9202) }, /* ASUS USB Sync */	{ USB_DEVICE(0x0B05, 0x420F) }, /* ASUS USB Sync */	{ USB_DEVICE(0x0B05, 0x4200) }, /* ASUS USB Sync */	{ USB_DEVICE(0x0B05, 0x4201) }, /* ASUS USB Sync */	{ USB_DEVICE(0x0B05, 0x4202) }, /* ASUS USB Sync */	{ USB_DEVICE(0x0B05, 0x9200) }, /* ASUS USB Sync */	{ USB_DEVICE(0x0C8E, 0x6000) }, /* Cesscom Luxian Series */	{ USB_DEVICE(0x04AD, 0x0301) }, /* USB Sync 0301 */	{ USB_DEVICE(0x04AD, 0x0302) }, /* USB Sync 0302 */	{ USB_DEVICE(0x04AD, 0x0303) }, /* USB Sync 0303 */	{ 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(0x1066, 0x00CE) }, /* E-TEN USB Sync */	{ USB_DEVICE(0x0F4E, 0x0200) }, /* Freedom Scientific USB Sync */	{ USB_DEVICE(0x04C5, 0x1058) }, /* FUJITSU USB Sync */	{ USB_DEVICE(0x04C5, 0x1079) }, /* FUJITSU USB Sync */	{ USB_DEVICE(0x067E, 0x1001) }, /* Intermec Mobile Computer */	{ USB_DEVICE(0x04f1, 0x3011) }, /* JVC USB Sync */	{ USB_DEVICE(0x04F1, 0x3012) }, /* JVC USB Sync */	{ USB_DEVICE(0x3708, 0x20CE) }, /* Legend USB Sync */	{ USB_DEVICE(0x3708, 0x21CE) }, /* Lenovo USB Sync */	{ USB_DEVICE(0x043E, 0x9C01) }, /* LGE USB Sync */	{ USB_DEVICE(0x04DA, 0x2500) }, /* Panasonic USB Sync */	{ USB_DEVICE(0x3340, 0x0B1C) }, /* Generic PPC StrongARM */	{ USB_DEVICE(0x3340, 0x0E3A) }, /* Generic PPC USB Sync */	{ USB_DEVICE(0x3340, 0x0F3A) }, /* Generic SmartPhone USB Sync */	{ USB_DEVICE(0x3340, 0x0F1C) }, /* Itautec USB Sync */	{ USB_DEVICE(0x3340, 0x1326) }, /* Itautec USB Sync */	{ USB_DEVICE(0x3340, 0x3326) }, /* MEDION Winodws Moble USB Sync */	{ USB_DEVICE(0x3340, 0x0326) }, /* Mio DigiWalker 338 */	{ USB_DEVICE(0x3340, 0x0426) }, /* Mio DigiWalker 338 */	{ USB_DEVICE(0x3340, 0x011C) }, /* Mio DigiWalker PPC StrongARM */	{ USB_DEVICE(0x3340, 0x053A) }, /* Mio DigiWalker SmartPhone USB Sync */	{ USB_DEVICE(0x3340, 0x043A) }, /* Mio DigiWalker USB Sync */	{ USB_DEVICE(0x3340, 0x071C) }, /* MiTAC USB Sync */	{ USB_DEVICE(0x3340, 0x051C) }, /* MiTAC USB Sync 528 */	{ USB_DEVICE(0x3340, 0x2326) }, /* Vobis USB Sync */	{ USB_DEVICE(0x3340, 0x191C) }, /* YAKUMO 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(0x0CAD, 0x9001) }, /* Motorola PowerPad Pocket PC燚evice */	{ USB_DEVICE(0x0C44, 0x03A2) }, /* Motorola iDEN Smartphone */	{ USB_DEVICE(0x04E8, 0x6611) }, /* Samsung MITs USB Sync */	{ USB_DEVICE(0x04E8, 0x6613) }, /* Samsung MITs USB Sync */	{ USB_DEVICE(0x04E8, 0x6615) }, /* Samsung MITs USB Sync */	{ USB_DEVICE(0x04E8, 0x6617) }, /* Samsung MITs USB Sync */	{ USB_DEVICE(0x04E8, 0x6619) }, /* Samsung MITs USB Sync */	{ USB_DEVICE(0x04E8, 0x661B) }, /* Samsung MITs USB Sync */	{ USB_DEVICE(0x04E8, 0x5F00) }, /* Samsung NEXiO USB Sync */	{ USB_DEVICE(0x04E8, 0x5F01) }, /* Samsung NEXiO USB Sync */	{ USB_DEVICE(0x04E8, 0x5F02) }, /* Samsung NEXiO USB Sync */	{ USB_DEVICE(0x04E8, 0x5F03) }, /* Samsung NEXiO USB Sync */	{ USB_DEVICE(0x04E8, 0x5F04) }, /* Samsung NEXiO USB Sync */	{ USB_DEVICE(0x04E8, 0x662E) }, /* Samsung MITs USB Sync */	{ USB_DEVICE(0x04E8, 0x6630) }, /* Samsung MITs USB Sync */	{ USB_DEVICE(0x04E8, 0x6632) }, /* Samsung MITs USB Sync */	{ USB_DEVICE(0x4505, 0x0010) }, /* Smartphone */	{ USB_DEVICE(0x05E0, 0x2000) }, /* Symbol USB Sync */	{ USB_DEVICE(0x05E0, 0x2001) }, /* Symbol USB Sync 0x2001 */	{ USB_DEVICE(0x05E0, 0x2002) }, /* Symbol USB Sync 0x2002 */	{ USB_DEVICE(0x05E0, 0x2003) }, /* Symbol USB Sync 0x2003 */	{ USB_DEVICE(0x05E0, 0x2004) }, /* Symbol USB Sync 0x2004 */	{ USB_DEVICE(0x05E0, 0x2005) }, /* Symbol USB Sync 0x2005 */	{ USB_DEVICE(0x05E0, 0x2006) }, /* Symbol USB Sync 0x2006 */	{ USB_DEVICE(0x05E0, 0x2007) }, /* Symbol USB Sync 0x2007 */	{ USB_DEVICE(0x05E0, 0x2008) }, /* Symbol USB Sync 0x2008 */	{ USB_DEVICE(0x05E0, 0x2009) }, /* Symbol USB Sync 0x2009 */	{ USB_DEVICE(0x05E0, 0x200A) }, /* Symbol USB Sync 0x200A */	{ USB_DEVICE(0x1182, 0x1388) }, /* VES USB Sync */	{ USB_DEVICE(0x0543, 0x0ED9) }, /* ViewSonic Color Pocket PC V35 */	{ USB_DEVICE(0x0543, 0x1527) }, /* ViewSonic Color Pocket PC V36 */	{ USB_DEVICE(0x0543, 0x1529) }, /* ViewSonic Color Pocket PC V37 */	{ USB_DEVICE(0x0543, 0x152B) }, /* ViewSonic Color Pocket PC V38 */	{ USB_DEVICE(0x0543, 0x152E) }, /* ViewSonic Pocket PC */	{ USB_DEVICE(0x0543, 0x1921) }, /* ViewSonic Communicator Pocket PC */	{ USB_DEVICE(0x0543, 0x1922) }, /* ViewSonic Smartphone */	{ USB_DEVICE(0x0543, 0x1923) }, /* ViewSonic Pocket PC V30 */	{ USB_DEVICE(0x0536, 0x01A0) }, /* HHP PDT */	{ USB_DEVICE(0x099E, 0x0052) }, /* Trimble GeoExplorer */	{ USB_DEVICE(0x099E, 0x4000) }, /* TDS Data Collector */	{ 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(0x11D9, 0x1003) }, /* Rugged Pocket PC 2003 */	{ USB_DEVICE(0x11D9, 0x1002) }, /* Rugged Pocket PC 2003 */	{ 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(0x1231, 0xCE01) }, /* USB Sync 03 */	{ USB_DEVICE(0x1231, 0xCE02) }, /* USB Sync 03 */	{ }                             /* 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_device_type ipaq_device = {	.owner =		THIS_MODULE,	.name =			"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),		      port->read_urb->transfer_buffer, port->read_urb->transfer_buffer_length,

⌨️ 快捷键说明

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