diff options
Diffstat (limited to 'drivers/usb/serial')
-rw-r--r-- | drivers/usb/serial/belkin_sa.c | 3 | ||||
-rw-r--r-- | drivers/usb/serial/cypress_m8.c | 5 | ||||
-rw-r--r-- | drivers/usb/serial/digi_acceleport.c | 10 | ||||
-rw-r--r-- | drivers/usb/serial/empeg.c | 6 | ||||
-rw-r--r-- | drivers/usb/serial/ftdi_sio.c | 10 | ||||
-rw-r--r-- | drivers/usb/serial/io_edgeport.c | 24 | ||||
-rw-r--r-- | drivers/usb/serial/io_ti.c | 5 | ||||
-rw-r--r-- | drivers/usb/serial/kl5kusb105.c | 3 | ||||
-rw-r--r-- | drivers/usb/serial/omninet.c | 5 | ||||
-rw-r--r-- | drivers/usb/serial/pl2303.c | 55 | ||||
-rw-r--r-- | drivers/usb/serial/pl2303.h | 3 | ||||
-rw-r--r-- | drivers/usb/serial/ti_usb_3410_5052.c | 3 | ||||
-rw-r--r-- | drivers/usb/serial/visor.c | 6 | ||||
-rw-r--r-- | drivers/usb/serial/visor.h | 4 |
14 files changed, 78 insertions, 64 deletions
diff --git a/drivers/usb/serial/belkin_sa.c b/drivers/usb/serial/belkin_sa.c index 86994d117c44..abb1b2c543bb 100644 --- a/drivers/usb/serial/belkin_sa.c +++ b/drivers/usb/serial/belkin_sa.c | |||
@@ -202,8 +202,7 @@ static void belkin_sa_shutdown (struct usb_serial *serial) | |||
202 | for (i=0; i < serial->num_ports; ++i) { | 202 | for (i=0; i < serial->num_ports; ++i) { |
203 | /* My special items, the standard routines free my urbs */ | 203 | /* My special items, the standard routines free my urbs */ |
204 | priv = usb_get_serial_port_data(serial->port[i]); | 204 | priv = usb_get_serial_port_data(serial->port[i]); |
205 | if (priv) | 205 | kfree(priv); |
206 | kfree(priv); | ||
207 | } | 206 | } |
208 | } | 207 | } |
209 | 208 | ||
diff --git a/drivers/usb/serial/cypress_m8.c b/drivers/usb/serial/cypress_m8.c index db8f472d9e3f..d165f42d560d 100644 --- a/drivers/usb/serial/cypress_m8.c +++ b/drivers/usb/serial/cypress_m8.c | |||
@@ -1340,9 +1340,8 @@ static struct cypress_buf *cypress_buf_alloc(unsigned int size) | |||
1340 | 1340 | ||
1341 | static void cypress_buf_free(struct cypress_buf *cb) | 1341 | static void cypress_buf_free(struct cypress_buf *cb) |
1342 | { | 1342 | { |
1343 | if (cb != NULL) { | 1343 | if (cb) { |
1344 | if (cb->buf_buf != NULL) | 1344 | kfree(cb->buf_buf); |
1345 | kfree(cb->buf_buf); | ||
1346 | kfree(cb); | 1345 | kfree(cb); |
1347 | } | 1346 | } |
1348 | } | 1347 | } |
diff --git a/drivers/usb/serial/digi_acceleport.c b/drivers/usb/serial/digi_acceleport.c index 25f92788a6d4..a19a47f6cf12 100644 --- a/drivers/usb/serial/digi_acceleport.c +++ b/drivers/usb/serial/digi_acceleport.c | |||
@@ -568,6 +568,9 @@ static struct usb_serial_device_type digi_acceleport_4_device = { | |||
568 | * and the sleep. In other words, spin_unlock_irqrestore and | 568 | * and the sleep. In other words, spin_unlock_irqrestore and |
569 | * interruptible_sleep_on_timeout are "atomic" with respect to | 569 | * interruptible_sleep_on_timeout are "atomic" with respect to |
570 | * wake ups. This is used to implement condition variables. | 570 | * wake ups. This is used to implement condition variables. |
571 | * | ||
572 | * interruptible_sleep_on_timeout is deprecated and has been replaced | ||
573 | * with the equivalent code. | ||
571 | */ | 574 | */ |
572 | 575 | ||
573 | static inline long cond_wait_interruptible_timeout_irqrestore( | 576 | static inline long cond_wait_interruptible_timeout_irqrestore( |
@@ -576,13 +579,12 @@ static inline long cond_wait_interruptible_timeout_irqrestore( | |||
576 | { | 579 | { |
577 | DEFINE_WAIT(wait); | 580 | DEFINE_WAIT(wait); |
578 | 581 | ||
579 | prepare_to_wait(q, &wait, TASK_UNINTERRUPTIBLE); | 582 | prepare_to_wait(q, &wait, TASK_INTERRUPTIBLE); |
580 | spin_unlock_irqrestore(lock, flags); | 583 | spin_unlock_irqrestore(lock, flags); |
581 | timeout = schedule_timeout(timeout); | 584 | timeout = schedule_timeout(timeout); |
582 | finish_wait(q, &wait); | 585 | finish_wait(q, &wait); |
583 | 586 | ||
584 | return timeout; | 587 | return timeout; |
585 | |||
586 | } | 588 | } |
587 | 589 | ||
588 | 590 | ||
@@ -1596,7 +1598,7 @@ dbg( "digi_close: TOP: port=%d, open_count=%d", priv->dp_port_num, port->open_co | |||
1596 | dbg( "digi_close: write oob failed, ret=%d", ret ); | 1598 | dbg( "digi_close: write oob failed, ret=%d", ret ); |
1597 | 1599 | ||
1598 | /* wait for final commands on oob port to complete */ | 1600 | /* wait for final commands on oob port to complete */ |
1599 | prepare_to_wait(&priv->dp_flush_wait, &wait, TASK_UNINTERRUPTIBLE); | 1601 | prepare_to_wait(&priv->dp_flush_wait, &wait, TASK_INTERRUPTIBLE); |
1600 | schedule_timeout(DIGI_CLOSE_TIMEOUT); | 1602 | schedule_timeout(DIGI_CLOSE_TIMEOUT); |
1601 | finish_wait(&priv->dp_flush_wait, &wait); | 1603 | finish_wait(&priv->dp_flush_wait, &wait); |
1602 | 1604 | ||
@@ -1995,7 +1997,7 @@ opcode, line, status, val ); | |||
1995 | 1997 | ||
1996 | } else if( opcode == DIGI_CMD_IFLUSH_FIFO ) { | 1998 | } else if( opcode == DIGI_CMD_IFLUSH_FIFO ) { |
1997 | 1999 | ||
1998 | wake_up( &priv->dp_flush_wait ); | 2000 | wake_up_interruptible( &priv->dp_flush_wait ); |
1999 | 2001 | ||
2000 | } | 2002 | } |
2001 | 2003 | ||
diff --git a/drivers/usb/serial/empeg.c b/drivers/usb/serial/empeg.c index 4d46394f351b..8d562ab454a8 100644 --- a/drivers/usb/serial/empeg.c +++ b/drivers/usb/serial/empeg.c | |||
@@ -550,8 +550,7 @@ failed_usb_register: | |||
550 | failed_usb_serial_register: | 550 | failed_usb_serial_register: |
551 | for (i = 0; i < NUM_URBS; ++i) { | 551 | for (i = 0; i < NUM_URBS; ++i) { |
552 | if (write_urb_pool[i]) { | 552 | if (write_urb_pool[i]) { |
553 | if (write_urb_pool[i]->transfer_buffer) | 553 | kfree(write_urb_pool[i]->transfer_buffer); |
554 | kfree(write_urb_pool[i]->transfer_buffer); | ||
555 | usb_free_urb(write_urb_pool[i]); | 554 | usb_free_urb(write_urb_pool[i]); |
556 | } | 555 | } |
557 | } | 556 | } |
@@ -575,8 +574,7 @@ static void __exit empeg_exit (void) | |||
575 | * the host controllers get fixed to set urb->dev = NULL after | 574 | * the host controllers get fixed to set urb->dev = NULL after |
576 | * the urb is finished. Otherwise this call oopses. */ | 575 | * the urb is finished. Otherwise this call oopses. */ |
577 | /* usb_kill_urb(write_urb_pool[i]); */ | 576 | /* usb_kill_urb(write_urb_pool[i]); */ |
578 | if (write_urb_pool[i]->transfer_buffer) | 577 | kfree(write_urb_pool[i]->transfer_buffer); |
579 | kfree(write_urb_pool[i]->transfer_buffer); | ||
580 | usb_free_urb (write_urb_pool[i]); | 578 | usb_free_urb (write_urb_pool[i]); |
581 | } | 579 | } |
582 | } | 580 | } |
diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c index 4afd905fe2fe..4c788c767a97 100644 --- a/drivers/usb/serial/ftdi_sio.c +++ b/drivers/usb/serial/ftdi_sio.c | |||
@@ -1347,9 +1347,7 @@ static int ftdi_common_startup (struct usb_serial *serial) | |||
1347 | priv->flags = ASYNC_LOW_LATENCY; | 1347 | priv->flags = ASYNC_LOW_LATENCY; |
1348 | 1348 | ||
1349 | /* Increase the size of read buffers */ | 1349 | /* Increase the size of read buffers */ |
1350 | if (port->bulk_in_buffer) { | 1350 | kfree(port->bulk_in_buffer); |
1351 | kfree (port->bulk_in_buffer); | ||
1352 | } | ||
1353 | port->bulk_in_buffer = kmalloc (BUFSZ, GFP_KERNEL); | 1351 | port->bulk_in_buffer = kmalloc (BUFSZ, GFP_KERNEL); |
1354 | if (!port->bulk_in_buffer) { | 1352 | if (!port->bulk_in_buffer) { |
1355 | kfree (priv); | 1353 | kfree (priv); |
@@ -1365,10 +1363,8 @@ static int ftdi_common_startup (struct usb_serial *serial) | |||
1365 | usb_free_urb (port->write_urb); | 1363 | usb_free_urb (port->write_urb); |
1366 | port->write_urb = NULL; | 1364 | port->write_urb = NULL; |
1367 | } | 1365 | } |
1368 | if (port->bulk_out_buffer) { | 1366 | kfree(port->bulk_out_buffer); |
1369 | kfree (port->bulk_out_buffer); | 1367 | port->bulk_out_buffer = NULL; |
1370 | port->bulk_out_buffer = NULL; | ||
1371 | } | ||
1372 | 1368 | ||
1373 | usb_set_serial_port_data(serial->port[0], priv); | 1369 | usb_set_serial_port_data(serial->port[0], priv); |
1374 | 1370 | ||
diff --git a/drivers/usb/serial/io_edgeport.c b/drivers/usb/serial/io_edgeport.c index e35b5adcd5fe..04bfe279d763 100644 --- a/drivers/usb/serial/io_edgeport.c +++ b/drivers/usb/serial/io_edgeport.c | |||
@@ -951,9 +951,7 @@ static void edge_bulk_out_cmd_callback (struct urb *urb, struct pt_regs *regs) | |||
951 | 951 | ||
952 | 952 | ||
953 | /* clean up the transfer buffer */ | 953 | /* clean up the transfer buffer */ |
954 | if (urb->transfer_buffer != NULL) { | 954 | kfree(urb->transfer_buffer); |
955 | kfree(urb->transfer_buffer); | ||
956 | } | ||
957 | 955 | ||
958 | /* Free the command urb */ | 956 | /* Free the command urb */ |
959 | usb_free_urb (urb); | 957 | usb_free_urb (urb); |
@@ -1266,16 +1264,12 @@ static void edge_close (struct usb_serial_port *port, struct file * filp) | |||
1266 | 1264 | ||
1267 | if (edge_port->write_urb) { | 1265 | if (edge_port->write_urb) { |
1268 | /* if this urb had a transfer buffer already (old transfer) free it */ | 1266 | /* if this urb had a transfer buffer already (old transfer) free it */ |
1269 | if (edge_port->write_urb->transfer_buffer != NULL) { | 1267 | kfree(edge_port->write_urb->transfer_buffer); |
1270 | kfree(edge_port->write_urb->transfer_buffer); | 1268 | usb_free_urb(edge_port->write_urb); |
1271 | } | ||
1272 | usb_free_urb (edge_port->write_urb); | ||
1273 | edge_port->write_urb = NULL; | 1269 | edge_port->write_urb = NULL; |
1274 | } | 1270 | } |
1275 | if (edge_port->txfifo.fifo) { | 1271 | kfree(edge_port->txfifo.fifo); |
1276 | kfree(edge_port->txfifo.fifo); | 1272 | edge_port->txfifo.fifo = NULL; |
1277 | edge_port->txfifo.fifo = NULL; | ||
1278 | } | ||
1279 | 1273 | ||
1280 | dbg("%s exited", __FUNCTION__); | 1274 | dbg("%s exited", __FUNCTION__); |
1281 | } | 1275 | } |
@@ -1419,11 +1413,9 @@ static void send_more_port_data(struct edgeport_serial *edge_serial, struct edge | |||
1419 | // get a pointer to the write_urb | 1413 | // get a pointer to the write_urb |
1420 | urb = edge_port->write_urb; | 1414 | urb = edge_port->write_urb; |
1421 | 1415 | ||
1422 | /* if this urb had a transfer buffer already (old transfer) free it */ | 1416 | /* make sure transfer buffer is freed */ |
1423 | if (urb->transfer_buffer != NULL) { | 1417 | kfree(urb->transfer_buffer); |
1424 | kfree(urb->transfer_buffer); | 1418 | urb->transfer_buffer = NULL; |
1425 | urb->transfer_buffer = NULL; | ||
1426 | } | ||
1427 | 1419 | ||
1428 | /* build the data header for the buffer and port that we are about to send out */ | 1420 | /* build the data header for the buffer and port that we are about to send out */ |
1429 | count = fifo->count; | 1421 | count = fifo->count; |
diff --git a/drivers/usb/serial/io_ti.c b/drivers/usb/serial/io_ti.c index 6c96fdaec36e..ebf9967f7c86 100644 --- a/drivers/usb/serial/io_ti.c +++ b/drivers/usb/serial/io_ti.c | |||
@@ -2845,9 +2845,8 @@ static struct edge_buf *edge_buf_alloc(unsigned int size) | |||
2845 | 2845 | ||
2846 | void edge_buf_free(struct edge_buf *eb) | 2846 | void edge_buf_free(struct edge_buf *eb) |
2847 | { | 2847 | { |
2848 | if (eb != NULL) { | 2848 | if (eb) { |
2849 | if (eb->buf_buf != NULL) | 2849 | kfree(eb->buf_buf); |
2850 | kfree(eb->buf_buf); | ||
2851 | kfree(eb); | 2850 | kfree(eb); |
2852 | } | 2851 | } |
2853 | } | 2852 | } |
diff --git a/drivers/usb/serial/kl5kusb105.c b/drivers/usb/serial/kl5kusb105.c index 49c602a0b4df..a11e829e38c8 100644 --- a/drivers/usb/serial/kl5kusb105.c +++ b/drivers/usb/serial/kl5kusb105.c | |||
@@ -341,8 +341,7 @@ static void klsi_105_shutdown (struct usb_serial *serial) | |||
341 | * finished. Otherwise this call | 341 | * finished. Otherwise this call |
342 | * oopses. */ | 342 | * oopses. */ |
343 | /* usb_kill_urb(write_urbs[j]); */ | 343 | /* usb_kill_urb(write_urbs[j]); */ |
344 | if (write_urbs[j]->transfer_buffer) | 344 | kfree(write_urbs[j]->transfer_buffer); |
345 | kfree(write_urbs[j]->transfer_buffer); | ||
346 | usb_free_urb (write_urbs[j]); | 345 | usb_free_urb (write_urbs[j]); |
347 | } | 346 | } |
348 | } | 347 | } |
diff --git a/drivers/usb/serial/omninet.c b/drivers/usb/serial/omninet.c index a1cba4b5fa23..b5f2c06d4f3e 100644 --- a/drivers/usb/serial/omninet.c +++ b/drivers/usb/serial/omninet.c | |||
@@ -178,7 +178,6 @@ static void omninet_close (struct usb_serial_port *port, struct file * filp) | |||
178 | { | 178 | { |
179 | struct usb_serial *serial = port->serial; | 179 | struct usb_serial *serial = port->serial; |
180 | struct usb_serial_port *wport; | 180 | struct usb_serial_port *wport; |
181 | struct omninet_data *od; | ||
182 | 181 | ||
183 | dbg("%s - port %d", __FUNCTION__, port->number); | 182 | dbg("%s - port %d", __FUNCTION__, port->number); |
184 | 183 | ||
@@ -186,9 +185,7 @@ static void omninet_close (struct usb_serial_port *port, struct file * filp) | |||
186 | usb_kill_urb(wport->write_urb); | 185 | usb_kill_urb(wport->write_urb); |
187 | usb_kill_urb(port->read_urb); | 186 | usb_kill_urb(port->read_urb); |
188 | 187 | ||
189 | od = usb_get_serial_port_data(port); | 188 | kfree(usb_get_serial_port_data(port)); |
190 | if (od) | ||
191 | kfree(od); | ||
192 | } | 189 | } |
193 | 190 | ||
194 | 191 | ||
diff --git a/drivers/usb/serial/pl2303.c b/drivers/usb/serial/pl2303.c index 3368d2b0412d..7eab5d4cf3a8 100644 --- a/drivers/usb/serial/pl2303.c +++ b/drivers/usb/serial/pl2303.c | |||
@@ -94,6 +94,7 @@ static struct usb_device_id id_table [] = { | |||
94 | { USB_DEVICE(ALCATEL_VENDOR_ID, ALCATEL_PRODUCT_ID) }, | 94 | { USB_DEVICE(ALCATEL_VENDOR_ID, ALCATEL_PRODUCT_ID) }, |
95 | { USB_DEVICE(SAMSUNG_VENDOR_ID, SAMSUNG_PRODUCT_ID) }, | 95 | { USB_DEVICE(SAMSUNG_VENDOR_ID, SAMSUNG_PRODUCT_ID) }, |
96 | { USB_DEVICE(SIEMENS_VENDOR_ID, SIEMENS_PRODUCT_ID_X65) }, | 96 | { USB_DEVICE(SIEMENS_VENDOR_ID, SIEMENS_PRODUCT_ID_X65) }, |
97 | { USB_DEVICE(SYNTECH_VENDOR_ID, SYNTECH_PRODUCT_ID) }, | ||
97 | { } /* Terminating entry */ | 98 | { } /* Terminating entry */ |
98 | }; | 99 | }; |
99 | 100 | ||
@@ -677,6 +678,9 @@ static int pl2303_tiocmset (struct usb_serial_port *port, struct file *file, | |||
677 | unsigned long flags; | 678 | unsigned long flags; |
678 | u8 control; | 679 | u8 control; |
679 | 680 | ||
681 | if (!usb_get_intfdata(port->serial->interface)) | ||
682 | return -ENODEV; | ||
683 | |||
680 | spin_lock_irqsave (&priv->lock, flags); | 684 | spin_lock_irqsave (&priv->lock, flags); |
681 | if (set & TIOCM_RTS) | 685 | if (set & TIOCM_RTS) |
682 | priv->line_control |= CONTROL_RTS; | 686 | priv->line_control |= CONTROL_RTS; |
@@ -702,6 +706,9 @@ static int pl2303_tiocmget (struct usb_serial_port *port, struct file *file) | |||
702 | 706 | ||
703 | dbg("%s (%d)", __FUNCTION__, port->number); | 707 | dbg("%s (%d)", __FUNCTION__, port->number); |
704 | 708 | ||
709 | if (!usb_get_intfdata(port->serial->interface)) | ||
710 | return -ENODEV; | ||
711 | |||
705 | spin_lock_irqsave (&priv->lock, flags); | 712 | spin_lock_irqsave (&priv->lock, flags); |
706 | mcr = priv->line_control; | 713 | mcr = priv->line_control; |
707 | status = priv->line_status; | 714 | status = priv->line_status; |
@@ -811,15 +818,40 @@ static void pl2303_shutdown (struct usb_serial *serial) | |||
811 | } | 818 | } |
812 | } | 819 | } |
813 | 820 | ||
821 | static void pl2303_update_line_status(struct usb_serial_port *port, | ||
822 | unsigned char *data, | ||
823 | unsigned int actual_length) | ||
824 | { | ||
825 | |||
826 | struct pl2303_private *priv = usb_get_serial_port_data(port); | ||
827 | unsigned long flags; | ||
828 | u8 status_idx = UART_STATE; | ||
829 | u8 length = UART_STATE; | ||
830 | |||
831 | if ((le16_to_cpu(port->serial->dev->descriptor.idVendor) == SIEMENS_VENDOR_ID) && | ||
832 | (le16_to_cpu(port->serial->dev->descriptor.idProduct) == SIEMENS_PRODUCT_ID_X65)) { | ||
833 | length = 1; | ||
834 | status_idx = 0; | ||
835 | } | ||
836 | |||
837 | if (actual_length < length) | ||
838 | goto exit; | ||
839 | |||
840 | /* Save off the uart status for others to look at */ | ||
841 | spin_lock_irqsave(&priv->lock, flags); | ||
842 | priv->line_status = data[status_idx]; | ||
843 | spin_unlock_irqrestore(&priv->lock, flags); | ||
844 | |||
845 | exit: | ||
846 | return; | ||
847 | } | ||
814 | 848 | ||
815 | static void pl2303_read_int_callback (struct urb *urb, struct pt_regs *regs) | 849 | static void pl2303_read_int_callback (struct urb *urb, struct pt_regs *regs) |
816 | { | 850 | { |
817 | struct usb_serial_port *port = (struct usb_serial_port *) urb->context; | 851 | struct usb_serial_port *port = (struct usb_serial_port *) urb->context; |
818 | struct pl2303_private *priv = usb_get_serial_port_data(port); | ||
819 | unsigned char *data = urb->transfer_buffer; | 852 | unsigned char *data = urb->transfer_buffer; |
820 | unsigned long flags; | 853 | unsigned int actual_length = urb->actual_length; |
821 | int status; | 854 | int status; |
822 | u8 uart_state; | ||
823 | 855 | ||
824 | dbg("%s (%d)", __FUNCTION__, port->number); | 856 | dbg("%s (%d)", __FUNCTION__, port->number); |
825 | 857 | ||
@@ -838,19 +870,9 @@ static void pl2303_read_int_callback (struct urb *urb, struct pt_regs *regs) | |||
838 | goto exit; | 870 | goto exit; |
839 | } | 871 | } |
840 | 872 | ||
841 | |||
842 | usb_serial_debug_data(debug, &port->dev, __FUNCTION__, urb->actual_length, urb->transfer_buffer); | 873 | usb_serial_debug_data(debug, &port->dev, __FUNCTION__, urb->actual_length, urb->transfer_buffer); |
874 | pl2303_update_line_status(port, data, actual_length); | ||
843 | 875 | ||
844 | if (urb->actual_length < UART_STATE) | ||
845 | goto exit; | ||
846 | |||
847 | /* Save off the uart status for others to look at */ | ||
848 | uart_state = data[UART_STATE]; | ||
849 | spin_lock_irqsave(&priv->lock, flags); | ||
850 | uart_state |= (priv->line_status & UART_STATE_TRANSIENT_MASK); | ||
851 | priv->line_status = uart_state; | ||
852 | spin_unlock_irqrestore(&priv->lock, flags); | ||
853 | |||
854 | exit: | 876 | exit: |
855 | status = usb_submit_urb (urb, GFP_ATOMIC); | 877 | status = usb_submit_urb (urb, GFP_ATOMIC); |
856 | if (status) | 878 | if (status) |
@@ -1022,9 +1044,8 @@ static struct pl2303_buf *pl2303_buf_alloc(unsigned int size) | |||
1022 | 1044 | ||
1023 | static void pl2303_buf_free(struct pl2303_buf *pb) | 1045 | static void pl2303_buf_free(struct pl2303_buf *pb) |
1024 | { | 1046 | { |
1025 | if (pb != NULL) { | 1047 | if (pb) { |
1026 | if (pb->buf_buf != NULL) | 1048 | kfree(pb->buf_buf); |
1027 | kfree(pb->buf_buf); | ||
1028 | kfree(pb); | 1049 | kfree(pb); |
1029 | } | 1050 | } |
1030 | } | 1051 | } |
diff --git a/drivers/usb/serial/pl2303.h b/drivers/usb/serial/pl2303.h index 6c1b4712dc2f..b734c4003c5a 100644 --- a/drivers/usb/serial/pl2303.h +++ b/drivers/usb/serial/pl2303.h | |||
@@ -55,3 +55,6 @@ | |||
55 | 55 | ||
56 | #define SIEMENS_VENDOR_ID 0x11f5 | 56 | #define SIEMENS_VENDOR_ID 0x11f5 |
57 | #define SIEMENS_PRODUCT_ID_X65 0x0003 | 57 | #define SIEMENS_PRODUCT_ID_X65 0x0003 |
58 | |||
59 | #define SYNTECH_VENDOR_ID 0x0745 | ||
60 | #define SYNTECH_PRODUCT_ID 0x0001 | ||
diff --git a/drivers/usb/serial/ti_usb_3410_5052.c b/drivers/usb/serial/ti_usb_3410_5052.c index 98054876cca2..59c88de3e7ae 100644 --- a/drivers/usb/serial/ti_usb_3410_5052.c +++ b/drivers/usb/serial/ti_usb_3410_5052.c | |||
@@ -517,8 +517,7 @@ static void ti_shutdown(struct usb_serial *serial) | |||
517 | } | 517 | } |
518 | } | 518 | } |
519 | 519 | ||
520 | if (tdev) | 520 | kfree(tdev); |
521 | kfree(tdev); | ||
522 | usb_set_serial_data(serial, NULL); | 521 | usb_set_serial_data(serial, NULL); |
523 | } | 522 | } |
524 | 523 | ||
diff --git a/drivers/usb/serial/visor.c b/drivers/usb/serial/visor.c index 69d313e98fad..31c57adcb623 100644 --- a/drivers/usb/serial/visor.c +++ b/drivers/usb/serial/visor.c | |||
@@ -215,6 +215,8 @@ static struct usb_device_id id_table [] = { | |||
215 | .driver_info = (kernel_ulong_t)&palm_os_4_probe }, | 215 | .driver_info = (kernel_ulong_t)&palm_os_4_probe }, |
216 | { USB_DEVICE(PALM_VENDOR_ID, PALM_TUNGSTEN_T_ID), | 216 | { USB_DEVICE(PALM_VENDOR_ID, PALM_TUNGSTEN_T_ID), |
217 | .driver_info = (kernel_ulong_t)&palm_os_4_probe }, | 217 | .driver_info = (kernel_ulong_t)&palm_os_4_probe }, |
218 | { USB_DEVICE(PALM_VENDOR_ID, PALM_TREO_650), | ||
219 | .driver_info = (kernel_ulong_t)&palm_os_4_probe }, | ||
218 | { USB_DEVICE(PALM_VENDOR_ID, PALM_TUNGSTEN_Z_ID), | 220 | { USB_DEVICE(PALM_VENDOR_ID, PALM_TUNGSTEN_Z_ID), |
219 | .driver_info = (kernel_ulong_t)&palm_os_4_probe }, | 221 | .driver_info = (kernel_ulong_t)&palm_os_4_probe }, |
220 | { USB_DEVICE(PALM_VENDOR_ID, PALM_ZIRE31_ID), | 222 | { USB_DEVICE(PALM_VENDOR_ID, PALM_ZIRE31_ID), |
@@ -237,6 +239,8 @@ static struct usb_device_id id_table [] = { | |||
237 | .driver_info = (kernel_ulong_t)&palm_os_4_probe }, | 239 | .driver_info = (kernel_ulong_t)&palm_os_4_probe }, |
238 | { USB_DEVICE(SAMSUNG_VENDOR_ID, SAMSUNG_SPH_I500_ID), | 240 | { USB_DEVICE(SAMSUNG_VENDOR_ID, SAMSUNG_SPH_I500_ID), |
239 | .driver_info = (kernel_ulong_t)&palm_os_4_probe }, | 241 | .driver_info = (kernel_ulong_t)&palm_os_4_probe }, |
242 | { USB_DEVICE(TAPWAVE_VENDOR_ID, TAPWAVE_ZODIAC_ID), | ||
243 | .driver_info = (kernel_ulong_t)&palm_os_4_probe }, | ||
240 | { USB_DEVICE(GARMIN_VENDOR_ID, GARMIN_IQUE_3600_ID), | 244 | { USB_DEVICE(GARMIN_VENDOR_ID, GARMIN_IQUE_3600_ID), |
241 | .driver_info = (kernel_ulong_t)&palm_os_4_probe }, | 245 | .driver_info = (kernel_ulong_t)&palm_os_4_probe }, |
242 | { USB_DEVICE(ACEECA_VENDOR_ID, ACEECA_MEZ1000_ID), | 246 | { USB_DEVICE(ACEECA_VENDOR_ID, ACEECA_MEZ1000_ID), |
@@ -273,6 +277,7 @@ static struct usb_device_id id_table_combined [] = { | |||
273 | { USB_DEVICE(PALM_VENDOR_ID, PALM_M125_ID) }, | 277 | { USB_DEVICE(PALM_VENDOR_ID, PALM_M125_ID) }, |
274 | { USB_DEVICE(PALM_VENDOR_ID, PALM_M130_ID) }, | 278 | { USB_DEVICE(PALM_VENDOR_ID, PALM_M130_ID) }, |
275 | { USB_DEVICE(PALM_VENDOR_ID, PALM_TUNGSTEN_T_ID) }, | 279 | { USB_DEVICE(PALM_VENDOR_ID, PALM_TUNGSTEN_T_ID) }, |
280 | { USB_DEVICE(PALM_VENDOR_ID, PALM_TREO_650) }, | ||
276 | { USB_DEVICE(PALM_VENDOR_ID, PALM_TUNGSTEN_Z_ID) }, | 281 | { USB_DEVICE(PALM_VENDOR_ID, PALM_TUNGSTEN_Z_ID) }, |
277 | { USB_DEVICE(PALM_VENDOR_ID, PALM_ZIRE31_ID) }, | 282 | { USB_DEVICE(PALM_VENDOR_ID, PALM_ZIRE31_ID) }, |
278 | { USB_DEVICE(PALM_VENDOR_ID, PALM_ZIRE_ID) }, | 283 | { USB_DEVICE(PALM_VENDOR_ID, PALM_ZIRE_ID) }, |
@@ -286,6 +291,7 @@ static struct usb_device_id id_table_combined [] = { | |||
286 | { USB_DEVICE(SONY_VENDOR_ID, SONY_CLIE_TJ25_ID) }, | 291 | { USB_DEVICE(SONY_VENDOR_ID, SONY_CLIE_TJ25_ID) }, |
287 | { USB_DEVICE(SAMSUNG_VENDOR_ID, SAMSUNG_SCH_I330_ID) }, | 292 | { USB_DEVICE(SAMSUNG_VENDOR_ID, SAMSUNG_SCH_I330_ID) }, |
288 | { USB_DEVICE(SAMSUNG_VENDOR_ID, SAMSUNG_SPH_I500_ID) }, | 293 | { USB_DEVICE(SAMSUNG_VENDOR_ID, SAMSUNG_SPH_I500_ID) }, |
294 | { USB_DEVICE(TAPWAVE_VENDOR_ID, TAPWAVE_ZODIAC_ID) }, | ||
289 | { USB_DEVICE(GARMIN_VENDOR_ID, GARMIN_IQUE_3600_ID) }, | 295 | { USB_DEVICE(GARMIN_VENDOR_ID, GARMIN_IQUE_3600_ID) }, |
290 | { USB_DEVICE(ACEECA_VENDOR_ID, ACEECA_MEZ1000_ID) }, | 296 | { USB_DEVICE(ACEECA_VENDOR_ID, ACEECA_MEZ1000_ID) }, |
291 | { USB_DEVICE(KYOCERA_VENDOR_ID, KYOCERA_7135_ID) }, | 297 | { USB_DEVICE(KYOCERA_VENDOR_ID, KYOCERA_7135_ID) }, |
diff --git a/drivers/usb/serial/visor.h b/drivers/usb/serial/visor.h index a2fa2c61a009..b84d1cb4c693 100644 --- a/drivers/usb/serial/visor.h +++ b/drivers/usb/serial/visor.h | |||
@@ -30,6 +30,7 @@ | |||
30 | #define PALM_M125_ID 0x0040 | 30 | #define PALM_M125_ID 0x0040 |
31 | #define PALM_M130_ID 0x0050 | 31 | #define PALM_M130_ID 0x0050 |
32 | #define PALM_TUNGSTEN_T_ID 0x0060 | 32 | #define PALM_TUNGSTEN_T_ID 0x0060 |
33 | #define PALM_TREO_650 0x0061 | ||
33 | #define PALM_TUNGSTEN_Z_ID 0x0031 | 34 | #define PALM_TUNGSTEN_Z_ID 0x0031 |
34 | #define PALM_ZIRE31_ID 0x0061 | 35 | #define PALM_ZIRE31_ID 0x0061 |
35 | #define PALM_ZIRE_ID 0x0070 | 36 | #define PALM_ZIRE_ID 0x0070 |
@@ -49,6 +50,9 @@ | |||
49 | #define SAMSUNG_SCH_I330_ID 0x8001 | 50 | #define SAMSUNG_SCH_I330_ID 0x8001 |
50 | #define SAMSUNG_SPH_I500_ID 0x6601 | 51 | #define SAMSUNG_SPH_I500_ID 0x6601 |
51 | 52 | ||
53 | #define TAPWAVE_VENDOR_ID 0x12EF | ||
54 | #define TAPWAVE_ZODIAC_ID 0x0100 | ||
55 | |||
52 | #define GARMIN_VENDOR_ID 0x091E | 56 | #define GARMIN_VENDOR_ID 0x091E |
53 | #define GARMIN_IQUE_3600_ID 0x0004 | 57 | #define GARMIN_IQUE_3600_ID 0x0004 |
54 | 58 | ||