diff options
Diffstat (limited to 'drivers/usb/serial/keyspan_pda.c')
-rw-r--r-- | drivers/usb/serial/keyspan_pda.c | 42 |
1 files changed, 19 insertions, 23 deletions
diff --git a/drivers/usb/serial/keyspan_pda.c b/drivers/usb/serial/keyspan_pda.c index b1fa5a376e96..ff54203944ca 100644 --- a/drivers/usb/serial/keyspan_pda.c +++ b/drivers/usb/serial/keyspan_pda.c | |||
@@ -208,13 +208,13 @@ static void keyspan_pda_request_unthrottle(struct work_struct *work) | |||
208 | 2000); | 208 | 2000); |
209 | if (result < 0) | 209 | if (result < 0) |
210 | dbg("%s - error %d from usb_control_msg", | 210 | dbg("%s - error %d from usb_control_msg", |
211 | __FUNCTION__, result); | 211 | __func__, result); |
212 | } | 212 | } |
213 | 213 | ||
214 | 214 | ||
215 | static void keyspan_pda_rx_interrupt (struct urb *urb) | 215 | static void keyspan_pda_rx_interrupt (struct urb *urb) |
216 | { | 216 | { |
217 | struct usb_serial_port *port = (struct usb_serial_port *)urb->context; | 217 | struct usb_serial_port *port = urb->context; |
218 | struct tty_struct *tty = port->tty; | 218 | struct tty_struct *tty = port->tty; |
219 | unsigned char *data = urb->transfer_buffer; | 219 | unsigned char *data = urb->transfer_buffer; |
220 | int i; | 220 | int i; |
@@ -232,11 +232,11 @@ static void keyspan_pda_rx_interrupt (struct urb *urb) | |||
232 | case -ESHUTDOWN: | 232 | case -ESHUTDOWN: |
233 | /* this urb is terminated, clean up */ | 233 | /* this urb is terminated, clean up */ |
234 | dbg("%s - urb shutting down with status: %d", | 234 | dbg("%s - urb shutting down with status: %d", |
235 | __FUNCTION__, status); | 235 | __func__, status); |
236 | return; | 236 | return; |
237 | default: | 237 | default: |
238 | dbg("%s - nonzero urb status received: %d", | 238 | dbg("%s - nonzero urb status received: %d", |
239 | __FUNCTION__, status); | 239 | __func__, status); |
240 | goto exit; | 240 | goto exit; |
241 | } | 241 | } |
242 | 242 | ||
@@ -274,7 +274,7 @@ exit: | |||
274 | retval = usb_submit_urb (urb, GFP_ATOMIC); | 274 | retval = usb_submit_urb (urb, GFP_ATOMIC); |
275 | if (retval) | 275 | if (retval) |
276 | err ("%s - usb_submit_urb failed with result %d", | 276 | err ("%s - usb_submit_urb failed with result %d", |
277 | __FUNCTION__, retval); | 277 | __func__, retval); |
278 | } | 278 | } |
279 | 279 | ||
280 | 280 | ||
@@ -358,7 +358,7 @@ static void keyspan_pda_break_ctl (struct usb_serial_port *port, int break_state | |||
358 | value, 0, NULL, 0, 2000); | 358 | value, 0, NULL, 0, 2000); |
359 | if (result < 0) | 359 | if (result < 0) |
360 | dbg("%s - error %d from usb_control_msg", | 360 | dbg("%s - error %d from usb_control_msg", |
361 | __FUNCTION__, result); | 361 | __func__, result); |
362 | /* there is something funky about this.. the TCSBRK that 'cu' performs | 362 | /* there is something funky about this.. the TCSBRK that 'cu' performs |
363 | ought to translate into a break_ctl(-1),break_ctl(0) pair HZ/4 | 363 | ought to translate into a break_ctl(-1),break_ctl(0) pair HZ/4 |
364 | seconds apart, but it feels like the break sent isn't as long as it | 364 | seconds apart, but it feels like the break sent isn't as long as it |
@@ -608,7 +608,7 @@ exit: | |||
608 | 608 | ||
609 | static void keyspan_pda_write_bulk_callback (struct urb *urb) | 609 | static void keyspan_pda_write_bulk_callback (struct urb *urb) |
610 | { | 610 | { |
611 | struct usb_serial_port *port = (struct usb_serial_port *)urb->context; | 611 | struct usb_serial_port *port = urb->context; |
612 | struct keyspan_pda_private *priv; | 612 | struct keyspan_pda_private *priv; |
613 | 613 | ||
614 | port->write_urb_busy = 0; | 614 | port->write_urb_busy = 0; |
@@ -636,14 +636,19 @@ static int keyspan_pda_write_room (struct usb_serial_port *port) | |||
636 | static int keyspan_pda_chars_in_buffer (struct usb_serial_port *port) | 636 | static int keyspan_pda_chars_in_buffer (struct usb_serial_port *port) |
637 | { | 637 | { |
638 | struct keyspan_pda_private *priv; | 638 | struct keyspan_pda_private *priv; |
639 | unsigned long flags; | ||
640 | int ret = 0; | ||
639 | 641 | ||
640 | priv = usb_get_serial_port_data(port); | 642 | priv = usb_get_serial_port_data(port); |
641 | 643 | ||
642 | /* when throttled, return at least WAKEUP_CHARS to tell select() (via | 644 | /* when throttled, return at least WAKEUP_CHARS to tell select() (via |
643 | n_tty.c:normal_poll() ) that we're not writeable. */ | 645 | n_tty.c:normal_poll() ) that we're not writeable. */ |
646 | |||
647 | spin_lock_irqsave(&port->lock, flags); | ||
644 | if (port->write_urb_busy || priv->tx_throttled) | 648 | if (port->write_urb_busy || priv->tx_throttled) |
645 | return 256; | 649 | ret = 256; |
646 | return 0; | 650 | spin_unlock_irqrestore(&port->lock, flags); |
651 | return ret; | ||
647 | } | 652 | } |
648 | 653 | ||
649 | 654 | ||
@@ -665,11 +670,11 @@ static int keyspan_pda_open (struct usb_serial_port *port, struct file *filp) | |||
665 | 1, | 670 | 1, |
666 | 2000); | 671 | 2000); |
667 | if (rc < 0) { | 672 | if (rc < 0) { |
668 | dbg("%s - roomquery failed", __FUNCTION__); | 673 | dbg("%s - roomquery failed", __func__); |
669 | goto error; | 674 | goto error; |
670 | } | 675 | } |
671 | if (rc == 0) { | 676 | if (rc == 0) { |
672 | dbg("%s - roomquery returned 0 bytes", __FUNCTION__); | 677 | dbg("%s - roomquery returned 0 bytes", __func__); |
673 | rc = -EIO; | 678 | rc = -EIO; |
674 | goto error; | 679 | goto error; |
675 | } | 680 | } |
@@ -688,7 +693,7 @@ static int keyspan_pda_open (struct usb_serial_port *port, struct file *filp) | |||
688 | port->interrupt_in_urb->dev = serial->dev; | 693 | port->interrupt_in_urb->dev = serial->dev; |
689 | rc = usb_submit_urb(port->interrupt_in_urb, GFP_KERNEL); | 694 | rc = usb_submit_urb(port->interrupt_in_urb, GFP_KERNEL); |
690 | if (rc) { | 695 | if (rc) { |
691 | dbg("%s - usb_submit_urb(read int) failed", __FUNCTION__); | 696 | dbg("%s - usb_submit_urb(read int) failed", __func__); |
692 | goto error; | 697 | goto error; |
693 | } | 698 | } |
694 | 699 | ||
@@ -732,7 +737,7 @@ static int keyspan_pda_fake_startup (struct usb_serial *serial) | |||
732 | record = &xircom_pgs_firmware[0]; | 737 | record = &xircom_pgs_firmware[0]; |
733 | #endif | 738 | #endif |
734 | if (record == NULL) { | 739 | if (record == NULL) { |
735 | err("%s: unknown vendor, aborting.", __FUNCTION__); | 740 | err("%s: unknown vendor, aborting.", __func__); |
736 | return -ENODEV; | 741 | return -ENODEV; |
737 | } | 742 | } |
738 | 743 | ||
@@ -779,7 +784,7 @@ static int keyspan_pda_startup (struct usb_serial *serial) | |||
779 | 784 | ||
780 | static void keyspan_pda_shutdown (struct usb_serial *serial) | 785 | static void keyspan_pda_shutdown (struct usb_serial *serial) |
781 | { | 786 | { |
782 | dbg("%s", __FUNCTION__); | 787 | dbg("%s", __func__); |
783 | 788 | ||
784 | kfree(usb_get_serial_port_data(serial->port[0])); | 789 | kfree(usb_get_serial_port_data(serial->port[0])); |
785 | } | 790 | } |
@@ -793,9 +798,6 @@ static struct usb_serial_driver keyspan_pda_fake_device = { | |||
793 | .description = "Keyspan PDA - (prerenumeration)", | 798 | .description = "Keyspan PDA - (prerenumeration)", |
794 | .usb_driver = &keyspan_pda_driver, | 799 | .usb_driver = &keyspan_pda_driver, |
795 | .id_table = id_table_fake, | 800 | .id_table = id_table_fake, |
796 | .num_interrupt_in = NUM_DONT_CARE, | ||
797 | .num_bulk_in = NUM_DONT_CARE, | ||
798 | .num_bulk_out = NUM_DONT_CARE, | ||
799 | .num_ports = 1, | 801 | .num_ports = 1, |
800 | .attach = keyspan_pda_fake_startup, | 802 | .attach = keyspan_pda_fake_startup, |
801 | }; | 803 | }; |
@@ -810,9 +812,6 @@ static struct usb_serial_driver xircom_pgs_fake_device = { | |||
810 | .description = "Xircom / Entregra PGS - (prerenumeration)", | 812 | .description = "Xircom / Entregra PGS - (prerenumeration)", |
811 | .usb_driver = &keyspan_pda_driver, | 813 | .usb_driver = &keyspan_pda_driver, |
812 | .id_table = id_table_fake_xircom, | 814 | .id_table = id_table_fake_xircom, |
813 | .num_interrupt_in = NUM_DONT_CARE, | ||
814 | .num_bulk_in = NUM_DONT_CARE, | ||
815 | .num_bulk_out = NUM_DONT_CARE, | ||
816 | .num_ports = 1, | 815 | .num_ports = 1, |
817 | .attach = keyspan_pda_fake_startup, | 816 | .attach = keyspan_pda_fake_startup, |
818 | }; | 817 | }; |
@@ -826,9 +825,6 @@ static struct usb_serial_driver keyspan_pda_device = { | |||
826 | .description = "Keyspan PDA", | 825 | .description = "Keyspan PDA", |
827 | .usb_driver = &keyspan_pda_driver, | 826 | .usb_driver = &keyspan_pda_driver, |
828 | .id_table = id_table_std, | 827 | .id_table = id_table_std, |
829 | .num_interrupt_in = 1, | ||
830 | .num_bulk_in = 0, | ||
831 | .num_bulk_out = 1, | ||
832 | .num_ports = 1, | 828 | .num_ports = 1, |
833 | .open = keyspan_pda_open, | 829 | .open = keyspan_pda_open, |
834 | .close = keyspan_pda_close, | 830 | .close = keyspan_pda_close, |