git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
USB: pl2303: fix device initialisation at open
[pandora-kernel.git]
/
drivers
/
usb
/
serial
/
pl2303.c
diff --git
a/drivers/usb/serial/pl2303.c
b/drivers/usb/serial/pl2303.c
index
fd86e0e
..
317e503
100644
(file)
--- a/
drivers/usb/serial/pl2303.c
+++ b/
drivers/usb/serial/pl2303.c
@@
-270,7
+270,7
@@
static void pl2303_set_termios(struct tty_struct *tty,
serial settings even to the same values as before. Thus
we actually need to filter in this specific case */
serial settings even to the same values as before. Thus
we actually need to filter in this specific case */
- if (!tty_termios_hw_change(tty->termios, old_termios))
+ if (
old_termios &&
!tty_termios_hw_change(tty->termios, old_termios))
return;
cflag = tty->termios->c_cflag;
return;
cflag = tty->termios->c_cflag;
@@
-279,7
+279,8
@@
static void pl2303_set_termios(struct tty_struct *tty,
if (!buf) {
dev_err(&port->dev, "%s - out of memory.\n", __func__);
/* Report back no change occurred */
if (!buf) {
dev_err(&port->dev, "%s - out of memory.\n", __func__);
/* Report back no change occurred */
- *tty->termios = *old_termios;
+ if (old_termios)
+ *tty->termios = *old_termios;
return;
}
return;
}
@@
-419,7
+420,7
@@
static void pl2303_set_termios(struct tty_struct *tty,
control = priv->line_control;
if ((cflag & CBAUD) == B0)
priv->line_control &= ~(CONTROL_DTR | CONTROL_RTS);
control = priv->line_control;
if ((cflag & CBAUD) == B0)
priv->line_control &= ~(CONTROL_DTR | CONTROL_RTS);
- else if ((old_termios->c_cflag & CBAUD) == B0)
+ else if (
old_termios &&
(old_termios->c_cflag & CBAUD) == B0)
priv->line_control |= (CONTROL_DTR | CONTROL_RTS);
if (control != priv->line_control) {
control = priv->line_control;
priv->line_control |= (CONTROL_DTR | CONTROL_RTS);
if (control != priv->line_control) {
control = priv->line_control;
@@
-480,7
+481,6
@@
static void pl2303_close(struct usb_serial_port *port)
static int pl2303_open(struct tty_struct *tty, struct usb_serial_port *port)
{
static int pl2303_open(struct tty_struct *tty, struct usb_serial_port *port)
{
- struct ktermios tmp_termios;
struct usb_serial *serial = port->serial;
struct pl2303_private *priv = usb_get_serial_port_data(port);
int result;
struct usb_serial *serial = port->serial;
struct pl2303_private *priv = usb_get_serial_port_data(port);
int result;
@@
-498,7
+498,7
@@
static int pl2303_open(struct tty_struct *tty, struct usb_serial_port *port)
/* Setup termios */
if (tty)
/* Setup termios */
if (tty)
- pl2303_set_termios(tty, port,
&tmp_termios
);
+ pl2303_set_termios(tty, port,
NULL
);
dbg("%s - submitting read urb", __func__);
result = usb_serial_generic_submit_read_urb(port, GFP_KERNEL);
dbg("%s - submitting read urb", __func__);
result = usb_serial_generic_submit_read_urb(port, GFP_KERNEL);