Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4ad6de0b authored by Jason Wessel's avatar Jason Wessel Committed by Linus Torvalds
Browse files

usb: fix pl2303 initialization



This patch removes the private check for the termios_initialized for
the pl2303 usb driver.  It forced the baud to 9600 on the first call
to pl2303_set_termios()

Based on the tty changes in the 2.6.27 kernel, the termios passed to
the *_set_termios functions is always populated the first time.

This means there is no need to privately initialize the settings the
first time, and doing so will not allow the use of the kernel
parameter "console=ttyUSB0,115200" as an example.

Signed-off-by: default avatarJason Wessel <jason.wessel@windriver.com>
Signed-off-by: default avatarAlan Cox <alan@redhat.com>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 9bde10a4
Loading
Loading
Loading
Loading
+0 −11
Original line number Original line Diff line number Diff line
@@ -154,7 +154,6 @@ struct pl2303_private {
	wait_queue_head_t delta_msr_wait;
	wait_queue_head_t delta_msr_wait;
	u8 line_control;
	u8 line_control;
	u8 line_status;
	u8 line_status;
	u8 termios_initialized;
	enum pl2303_type type;
	enum pl2303_type type;
};
};


@@ -526,16 +525,6 @@ static void pl2303_set_termios(struct tty_struct *tty,


	dbg("%s -  port %d", __func__, port->number);
	dbg("%s -  port %d", __func__, port->number);


	spin_lock_irqsave(&priv->lock, flags);
	if (!priv->termios_initialized) {
		*(tty->termios) = tty_std_termios;
		tty->termios->c_cflag = B9600 | CS8 | CREAD | HUPCL | CLOCAL;
		tty->termios->c_ispeed = 9600;
		tty->termios->c_ospeed = 9600;
		priv->termios_initialized = 1;
	}
	spin_unlock_irqrestore(&priv->lock, flags);

	/* The PL2303 is reported to lose bytes if you change
	/* The PL2303 is reported to lose bytes if you change
	   serial settings even to the same values as before. Thus
	   serial settings even to the same values as before. Thus
	   we actually need to filter in this specific case */
	   we actually need to filter in this specific case */