aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/serial/oti6858.c
diff options
context:
space:
mode:
authorAlan Cox <alan@redhat.com>2008-07-22 06:15:36 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2008-07-22 16:03:26 -0400
commit2a77c8144992e21367cc15956b0ff295f1112c85 (patch)
tree85af4158877ab5a2187839408502611acd51eace /drivers/usb/serial/oti6858.c
parent43c8f435b2ca39f12ad89d91d9ee2be04a196f93 (diff)
tty-usb-oti6858: Coding style
Signed-off-by: Alan Cox <alan@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/usb/serial/oti6858.c')
-rw-r--r--drivers/usb/serial/oti6858.c136
1 files changed, 70 insertions, 66 deletions
diff --git a/drivers/usb/serial/oti6858.c b/drivers/usb/serial/oti6858.c
index 069d276a5276..81db5715ee25 100644
--- a/drivers/usb/serial/oti6858.c
+++ b/drivers/usb/serial/oti6858.c
@@ -25,7 +25,8 @@
25 * it under the terms of the GNU General Public License as published by 25 * it under the terms of the GNU General Public License as published by
26 * the Free Software Foundation; either version 2 of the License. 26 * the Free Software Foundation; either version 2 of the License.
27 * 27 *
28 * See Documentation/usb/usb-serial.txt for more information on using this driver 28 * See Documentation/usb/usb-serial.txt for more information on using this
29 * driver
29 * 30 *
30 * TODO: 31 * TODO:
31 * - implement correct flushing for ioctls and oti6858_close() 32 * - implement correct flushing for ioctls and oti6858_close()
@@ -49,7 +50,7 @@
49#include <linux/spinlock.h> 50#include <linux/spinlock.h>
50#include <linux/usb.h> 51#include <linux/usb.h>
51#include <linux/usb/serial.h> 52#include <linux/usb/serial.h>
52#include <asm/uaccess.h> 53#include <linux/uaccess.h>
53#include "oti6858.h" 54#include "oti6858.h"
54 55
55#define OTI6858_DESCRIPTION \ 56#define OTI6858_DESCRIPTION \
@@ -135,9 +136,9 @@ struct oti6858_control_pkt {
135 136
136#define OTI6858_CTRL_PKT_SIZE sizeof(struct oti6858_control_pkt) 137#define OTI6858_CTRL_PKT_SIZE sizeof(struct oti6858_control_pkt)
137#define OTI6858_CTRL_EQUALS_PENDING(a, priv) \ 138#define OTI6858_CTRL_EQUALS_PENDING(a, priv) \
138 ( ((a)->divisor == (priv)->pending_setup.divisor) \ 139 (((a)->divisor == (priv)->pending_setup.divisor) \
139 && ((a)->control == (priv)->pending_setup.control) \ 140 && ((a)->control == (priv)->pending_setup.control) \
140 && ((a)->frame_fmt == (priv)->pending_setup.frame_fmt) ) 141 && ((a)->frame_fmt == (priv)->pending_setup.frame_fmt))
141 142
142/* function prototypes */ 143/* function prototypes */
143static int oti6858_open(struct tty_struct *tty, 144static int oti6858_open(struct tty_struct *tty,
@@ -220,7 +221,7 @@ struct oti6858_private {
220 struct delayed_work delayed_setup_work; 221 struct delayed_work delayed_setup_work;
221 222
222 wait_queue_head_t intr_wait; 223 wait_queue_head_t intr_wait;
223 struct usb_serial_port *port; /* USB port with which associated */ 224 struct usb_serial_port *port; /* USB port with which associated */
224}; 225};
225 226
226#undef dbg 227#undef dbg
@@ -229,7 +230,8 @@ struct oti6858_private {
229 230
230static void setup_line(struct work_struct *work) 231static void setup_line(struct work_struct *work)
231{ 232{
232 struct oti6858_private *priv = container_of(work, struct oti6858_private, delayed_setup_work.work); 233 struct oti6858_private *priv = container_of(work,
234 struct oti6858_private, delayed_setup_work.work);
233 struct usb_serial_port *port = priv->port; 235 struct usb_serial_port *port = priv->port;
234 struct oti6858_control_pkt *new_setup; 236 struct oti6858_control_pkt *new_setup;
235 unsigned long flags; 237 unsigned long flags;
@@ -237,10 +239,12 @@ static void setup_line(struct work_struct *work)
237 239
238 dbg("%s(port = %d)", __func__, port->number); 240 dbg("%s(port = %d)", __func__, port->number);
239 241
240 if ((new_setup = kmalloc(OTI6858_CTRL_PKT_SIZE, GFP_KERNEL)) == NULL) { 242 new_setup = kmalloc(OTI6858_CTRL_PKT_SIZE, GFP_KERNEL);
243 if (new_setup == NULL) {
241 dev_err(&port->dev, "%s(): out of memory!\n", __func__); 244 dev_err(&port->dev, "%s(): out of memory!\n", __func__);
242 /* we will try again */ 245 /* we will try again */
243 schedule_delayed_work(&priv->delayed_setup_work, msecs_to_jiffies(2)); 246 schedule_delayed_work(&priv->delayed_setup_work,
247 msecs_to_jiffies(2));
244 return; 248 return;
245 } 249 }
246 250
@@ -256,7 +260,8 @@ static void setup_line(struct work_struct *work)
256 dev_err(&port->dev, "%s(): error reading status\n", __func__); 260 dev_err(&port->dev, "%s(): error reading status\n", __func__);
257 kfree(new_setup); 261 kfree(new_setup);
258 /* we will try again */ 262 /* we will try again */
259 schedule_delayed_work(&priv->delayed_setup_work, msecs_to_jiffies(2)); 263 schedule_delayed_work(&priv->delayed_setup_work,
264 msecs_to_jiffies(2));
260 return; 265 return;
261 } 266 }
262 267
@@ -297,7 +302,8 @@ static void setup_line(struct work_struct *work)
297 302
298void send_data(struct work_struct *work) 303void send_data(struct work_struct *work)
299{ 304{
300 struct oti6858_private *priv = container_of(work, struct oti6858_private, delayed_write_work.work); 305 struct oti6858_private *priv = container_of(work,
306 struct oti6858_private, delayed_write_work.work);
301 struct usb_serial_port *port = priv->port; 307 struct usb_serial_port *port = priv->port;
302 int count = 0, result; 308 int count = 0, result;
303 unsigned long flags; 309 unsigned long flags;
@@ -308,7 +314,8 @@ void send_data(struct work_struct *work)
308 spin_lock_irqsave(&priv->lock, flags); 314 spin_lock_irqsave(&priv->lock, flags);
309 if (priv->flags.write_urb_in_use) { 315 if (priv->flags.write_urb_in_use) {
310 spin_unlock_irqrestore(&priv->lock, flags); 316 spin_unlock_irqrestore(&priv->lock, flags);
311 schedule_delayed_work(&priv->delayed_write_work, msecs_to_jiffies(2)); 317 schedule_delayed_work(&priv->delayed_write_work,
318 msecs_to_jiffies(2));
312 return; 319 return;
313 } 320 }
314 priv->flags.write_urb_in_use = 1; 321 priv->flags.write_urb_in_use = 1;
@@ -359,8 +366,8 @@ void send_data(struct work_struct *work)
359 366
360static int oti6858_startup(struct usb_serial *serial) 367static int oti6858_startup(struct usb_serial *serial)
361{ 368{
362 struct usb_serial_port *port = serial->port[0]; 369 struct usb_serial_port *port = serial->port[0];
363 struct oti6858_private *priv; 370 struct oti6858_private *priv;
364 int i; 371 int i;
365 372
366 for (i = 0; i < serial->num_ports; ++i) { 373 for (i = 0; i < serial->num_ports; ++i) {
@@ -375,8 +382,8 @@ static int oti6858_startup(struct usb_serial *serial)
375 382
376 spin_lock_init(&priv->lock); 383 spin_lock_init(&priv->lock);
377 init_waitqueue_head(&priv->intr_wait); 384 init_waitqueue_head(&priv->intr_wait);
378// INIT_WORK(&priv->setup_work, setup_line, serial->port[i]); 385/* INIT_WORK(&priv->setup_work, setup_line, serial->port[i]); */
379// INIT_WORK(&priv->write_work, send_data, serial->port[i]); 386/* INIT_WORK(&priv->write_work, send_data, serial->port[i]); */
380 priv->port = port; 387 priv->port = port;
381 INIT_DELAYED_WORK(&priv->delayed_setup_work, setup_line); 388 INIT_DELAYED_WORK(&priv->delayed_setup_work, setup_line);
382 INIT_DELAYED_WORK(&priv->delayed_write_work, send_data); 389 INIT_DELAYED_WORK(&priv->delayed_write_work, send_data);
@@ -482,19 +489,19 @@ static void oti6858_set_termios(struct tty_struct *tty,
482 489
483 frame_fmt &= ~FMT_DATA_BITS_MASK; 490 frame_fmt &= ~FMT_DATA_BITS_MASK;
484 switch (cflag & CSIZE) { 491 switch (cflag & CSIZE) {
485 case CS5: 492 case CS5:
486 frame_fmt |= FMT_DATA_BITS_5; 493 frame_fmt |= FMT_DATA_BITS_5;
487 break; 494 break;
488 case CS6: 495 case CS6:
489 frame_fmt |= FMT_DATA_BITS_6; 496 frame_fmt |= FMT_DATA_BITS_6;
490 break; 497 break;
491 case CS7: 498 case CS7:
492 frame_fmt |= FMT_DATA_BITS_7; 499 frame_fmt |= FMT_DATA_BITS_7;
493 break; 500 break;
494 default: 501 default:
495 case CS8: 502 case CS8:
496 frame_fmt |= FMT_DATA_BITS_8; 503 frame_fmt |= FMT_DATA_BITS_8;
497 break; 504 break;
498 } 505 }
499 506
500 /* manufacturer claims that this device can work with baud rates 507 /* manufacturer claims that this device can work with baud rates
@@ -517,19 +524,17 @@ static void oti6858_set_termios(struct tty_struct *tty,
517 } 524 }
518 525
519 frame_fmt &= ~FMT_STOP_BITS_MASK; 526 frame_fmt &= ~FMT_STOP_BITS_MASK;
520 if ((cflag & CSTOPB) != 0) { 527 if ((cflag & CSTOPB) != 0)
521 frame_fmt |= FMT_STOP_BITS_2; 528 frame_fmt |= FMT_STOP_BITS_2;
522 } else { 529 else
523 frame_fmt |= FMT_STOP_BITS_1; 530 frame_fmt |= FMT_STOP_BITS_1;
524 }
525 531
526 frame_fmt &= ~FMT_PARITY_MASK; 532 frame_fmt &= ~FMT_PARITY_MASK;
527 if ((cflag & PARENB) != 0) { 533 if ((cflag & PARENB) != 0) {
528 if ((cflag & PARODD) != 0) { 534 if ((cflag & PARODD) != 0)
529 frame_fmt |= FMT_PARITY_ODD; 535 frame_fmt |= FMT_PARITY_ODD;
530 } else { 536 else
531 frame_fmt |= FMT_PARITY_EVEN; 537 frame_fmt |= FMT_PARITY_EVEN;
532 }
533 } else { 538 } else {
534 frame_fmt |= FMT_PARITY_NONE; 539 frame_fmt |= FMT_PARITY_NONE;
535 } 540 }
@@ -584,7 +589,8 @@ static int oti6858_open(struct tty_struct *tty,
584 if (port->port.count != 1) 589 if (port->port.count != 1)
585 return 0; 590 return 0;
586 591
587 if ((buf = kmalloc(OTI6858_CTRL_PKT_SIZE, GFP_KERNEL)) == NULL) { 592 buf = kmalloc(OTI6858_CTRL_PKT_SIZE, GFP_KERNEL);
593 if (buf == NULL) {
588 dev_err(&port->dev, "%s(): out of memory!\n", __func__); 594 dev_err(&port->dev, "%s(): out of memory!\n", __func__);
589 return -ENOMEM; 595 return -ENOMEM;
590 } 596 }
@@ -729,11 +735,10 @@ static int oti6858_tiocmset(struct tty_struct *tty, struct file *file,
729 if ((clear & TIOCM_DTR) != 0) 735 if ((clear & TIOCM_DTR) != 0)
730 control &= ~CONTROL_DTR_HIGH; 736 control &= ~CONTROL_DTR_HIGH;
731 737
732 if (control != priv->pending_setup.control) { 738 if (control != priv->pending_setup.control)
733 priv->pending_setup.control = control; 739 priv->pending_setup.control = control;
734 }
735 spin_unlock_irqrestore(&priv->lock, flags);
736 740
741 spin_unlock_irqrestore(&priv->lock, flags);
737 return 0; 742 return 0;
738} 743}
739 744
@@ -785,7 +790,8 @@ static int wait_modem_info(struct usb_serial_port *port, unsigned int arg)
785 spin_unlock_irqrestore(&priv->lock, flags); 790 spin_unlock_irqrestore(&priv->lock, flags);
786 791
787 while (1) { 792 while (1) {
788 wait_event_interruptible(priv->intr_wait, priv->status.pin_state != prev); 793 wait_event_interruptible(priv->intr_wait,
794 priv->status.pin_state != prev);
789 if (signal_pending(current)) 795 if (signal_pending(current))
790 return -ERESTARTSYS; 796 return -ERESTARTSYS;
791 797
@@ -795,12 +801,11 @@ static int wait_modem_info(struct usb_serial_port *port, unsigned int arg)
795 801
796 changed = prev ^ status; 802 changed = prev ^ status;
797 /* FIXME: check if this is correct (active high/low) */ 803 /* FIXME: check if this is correct (active high/low) */
798 if ( ((arg & TIOCM_RNG) && (changed & PIN_RI)) || 804 if (((arg & TIOCM_RNG) && (changed & PIN_RI)) ||
799 ((arg & TIOCM_DSR) && (changed & PIN_DSR)) || 805 ((arg & TIOCM_DSR) && (changed & PIN_DSR)) ||
800 ((arg & TIOCM_CD) && (changed & PIN_DCD)) || 806 ((arg & TIOCM_CD) && (changed & PIN_DCD)) ||
801 ((arg & TIOCM_CTS) && (changed & PIN_CTS))) { 807 ((arg & TIOCM_CTS) && (changed & PIN_CTS)))
802 return 0; 808 return 0;
803 }
804 prev = status; 809 prev = status;
805 } 810 }
806 811
@@ -817,15 +822,13 @@ static int oti6858_ioctl(struct tty_struct *tty, struct file *file,
817 __func__, port->number, cmd, arg); 822 __func__, port->number, cmd, arg);
818 823
819 switch (cmd) { 824 switch (cmd) {
820 case TIOCMIWAIT: 825 case TIOCMIWAIT:
821 dbg("%s(): TIOCMIWAIT", __func__); 826 dbg("%s(): TIOCMIWAIT", __func__);
822 return wait_modem_info(port, arg); 827 return wait_modem_info(port, arg);
823 828 default:
824 default: 829 dbg("%s(): 0x%04x not supported", __func__, cmd);
825 dbg("%s(): 0x%04x not supported", __func__, cmd); 830 break;
826 break;
827 } 831 }
828
829 return -ENOIOCTLCMD; 832 return -ENOIOCTLCMD;
830} 833}
831 834
@@ -941,7 +944,7 @@ static void oti6858_read_int_callback(struct urb *urb)
941 spin_lock_irqsave(&priv->lock, flags); 944 spin_lock_irqsave(&priv->lock, flags);
942 if (priv->flags.write_urb_in_use == 0 945 if (priv->flags.write_urb_in_use == 0
943 && oti6858_buf_data_avail(priv->buf) != 0) { 946 && oti6858_buf_data_avail(priv->buf) != 0) {
944 schedule_delayed_work(&priv->delayed_write_work,0); 947 schedule_delayed_work(&priv->delayed_write_work, 0);
945 resubmit = 0; 948 resubmit = 0;
946 } 949 }
947 spin_unlock_irqrestore(&priv->lock, flags); 950 spin_unlock_irqrestore(&priv->lock, flags);
@@ -950,7 +953,7 @@ static void oti6858_read_int_callback(struct urb *urb)
950 if (resubmit) { 953 if (resubmit) {
951 int result; 954 int result;
952 955
953// dbg("%s(): submitting interrupt urb", __func__); 956/* dbg("%s(): submitting interrupt urb", __func__); */
954 urb->dev = port->serial->dev; 957 urb->dev = port->serial->dev;
955 result = usb_submit_urb(urb, GFP_ATOMIC); 958 result = usb_submit_urb(urb, GFP_ATOMIC);
956 if (result != 0) { 959 if (result != 0) {
@@ -985,8 +988,10 @@ static void oti6858_read_bulk_callback(struct urb *urb)
985 } 988 }
986 /* 989 /*
987 if (status == -EPROTO) { 990 if (status == -EPROTO) {
988 // PL2303 mysteriously fails with -EPROTO reschedule the read 991 * PL2303 mysteriously fails with -EPROTO reschedule
989 dbg("%s - caught -EPROTO, resubmitting the urb", __func__); 992 the read *
993 dbg("%s - caught -EPROTO, resubmitting the urb",
994 __func__);
990 result = usb_submit_urb(urb, GFP_ATOMIC); 995 result = usb_submit_urb(urb, GFP_ATOMIC);
991 if (result) 996 if (result)
992 dev_err(&urb->dev->dev, "%s - failed resubmitting read urb, error %d\n", __func__, result); 997 dev_err(&urb->dev->dev, "%s - failed resubmitting read urb, error %d\n", __func__, result);
@@ -1003,7 +1008,7 @@ static void oti6858_read_bulk_callback(struct urb *urb)
1003 tty_flip_buffer_push(tty); 1008 tty_flip_buffer_push(tty);
1004 } 1009 }
1005 1010
1006 // schedule the interrupt urb if we are still open */ 1011 /* schedule the interrupt urb if we are still open */
1007 if (port->port.count != 0) { 1012 if (port->port.count != 0) {
1008 port->interrupt_in_urb->dev = port->serial->dev; 1013 port->interrupt_in_urb->dev = port->serial->dev;
1009 result = usb_submit_urb(port->interrupt_in_urb, GFP_ATOMIC); 1014 result = usb_submit_urb(port->interrupt_in_urb, GFP_ATOMIC);
@@ -1055,7 +1060,7 @@ static void oti6858_write_bulk_callback(struct urb *urb)
1055 1060
1056 priv->flags.write_urb_in_use = 0; 1061 priv->flags.write_urb_in_use = 0;
1057 1062
1058 // schedule the interrupt urb if we are still open */ 1063 /* schedule the interrupt urb if we are still open */
1059 port->interrupt_in_urb->dev = port->serial->dev; 1064 port->interrupt_in_urb->dev = port->serial->dev;
1060 dbg("%s(): submitting interrupt urb", __func__); 1065 dbg("%s(): submitting interrupt urb", __func__);
1061 result = usb_submit_urb(port->interrupt_in_urb, GFP_ATOMIC); 1066 result = usb_submit_urb(port->interrupt_in_urb, GFP_ATOMIC);
@@ -1130,7 +1135,7 @@ static unsigned int oti6858_buf_data_avail(struct oti6858_buf *pb)
1130{ 1135{
1131 if (pb == NULL) 1136 if (pb == NULL)
1132 return 0; 1137 return 0;
1133 return ((pb->buf_size + pb->buf_put - pb->buf_get) % pb->buf_size); 1138 return (pb->buf_size + pb->buf_put - pb->buf_get) % pb->buf_size;
1134} 1139}
1135 1140
1136/* 1141/*
@@ -1143,7 +1148,7 @@ static unsigned int oti6858_buf_space_avail(struct oti6858_buf *pb)
1143{ 1148{
1144 if (pb == NULL) 1149 if (pb == NULL)
1145 return 0; 1150 return 0;
1146 return ((pb->buf_size + pb->buf_get - pb->buf_put - 1) % pb->buf_size); 1151 return (pb->buf_size + pb->buf_get - pb->buf_put - 1) % pb->buf_size;
1147} 1152}
1148 1153
1149/* 1154/*
@@ -1230,13 +1235,12 @@ static int __init oti6858_init(void)
1230{ 1235{
1231 int retval; 1236 int retval;
1232 1237
1233 if ((retval = usb_serial_register(&oti6858_device)) == 0) { 1238 retval = usb_serial_register(&oti6858_device);
1234 if ((retval = usb_register(&oti6858_driver)) != 0) 1239 if (retval == 0) {
1240 retval = usb_register(&oti6858_driver);
1241 if (retval)
1235 usb_serial_deregister(&oti6858_device); 1242 usb_serial_deregister(&oti6858_device);
1236 else
1237 return 0;
1238 } 1243 }
1239
1240 return retval; 1244 return retval;
1241} 1245}
1242 1246