aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/serial/oti6858.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/serial/oti6858.c')
-rw-r--r--drivers/usb/serial/oti6858.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/drivers/usb/serial/oti6858.c b/drivers/usb/serial/oti6858.c
index d92bb6501c84..a9625c180dc3 100644
--- a/drivers/usb/serial/oti6858.c
+++ b/drivers/usb/serial/oti6858.c
@@ -98,7 +98,7 @@ struct oti6858_buf {
98 98
99/* format of the control packet */ 99/* format of the control packet */
100struct oti6858_control_pkt { 100struct oti6858_control_pkt {
101 u16 divisor; /* baud rate = 96000000 / (16 * divisor), LE */ 101 __le16 divisor; /* baud rate = 96000000 / (16 * divisor), LE */
102#define OTI6858_MAX_BAUD_RATE 3000000 102#define OTI6858_MAX_BAUD_RATE 3000000
103 u8 frame_fmt; 103 u8 frame_fmt;
104#define FMT_STOP_BITS_MASK 0xc0 104#define FMT_STOP_BITS_MASK 0xc0
@@ -211,7 +211,7 @@ struct oti6858_private {
211 struct delayed_work delayed_write_work; 211 struct delayed_work delayed_write_work;
212 212
213 struct { 213 struct {
214 u16 divisor; 214 __le16 divisor;
215 u8 frame_fmt; 215 u8 frame_fmt;
216 u8 control; 216 u8 control;
217 } pending_setup; 217 } pending_setup;
@@ -450,7 +450,7 @@ static void oti6858_set_termios(struct usb_serial_port *port,
450 unsigned long flags; 450 unsigned long flags;
451 unsigned int cflag; 451 unsigned int cflag;
452 u8 frame_fmt, control; 452 u8 frame_fmt, control;
453 u16 divisor; 453 __le16 divisor;
454 int br; 454 int br;
455 455
456 dbg("%s(port = %d)", __func__, port->number); 456 dbg("%s(port = %d)", __func__, port->number);
@@ -505,11 +505,12 @@ static void oti6858_set_termios(struct usb_serial_port *port,
505 divisor = 0; 505 divisor = 0;
506 } else { 506 } else {
507 int real_br; 507 int real_br;
508 int new_divisor;
508 br = min(br, OTI6858_MAX_BAUD_RATE); 509 br = min(br, OTI6858_MAX_BAUD_RATE);
509 510
510 divisor = (96000000 + 8 * br) / (16 * br); 511 new_divisor = (96000000 + 8 * br) / (16 * br);
511 real_br = 96000000 / (16 * divisor); 512 real_br = 96000000 / (16 * new_divisor);
512 divisor = cpu_to_le16(divisor); 513 divisor = cpu_to_le16(new_divisor);
513 tty_encode_baud_rate(port->tty, real_br, real_br); 514 tty_encode_baud_rate(port->tty, real_br, real_br);
514 } 515 }
515 516