patch "USB: serial: whiteheat: fix line-speed endianness" added to usb-linus
Subsystems (3)
This is a note to let you know that I've just added the patch titled
USB: serial: whiteheat: fix line-speed endianness
to my usb git tree which can be found at
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git
in the usb-linus branch.
The patch will show up in the next release of the linux-next tree (usually sometime within the next 24 hours during the week.)
The patch will hopefully also be merged in Linus's tree for the next -rc kernel release.
If you have any questions about this process, please let me know.
From 84968291d7924261c6a0624b9a72f952398e258b Mon Sep 17 00:00:00 2001
From: Johan Hovold <[email protected]>
Date: Tue, 29 Oct 2019 11:23:54 +0100
Subject: USB: serial: whiteheat: fix line-speed endianness
Add missing endianness conversion when setting the line speed so that this driver might work also on big-endian machines.
Also use an unsigned format specifier in the corresponding debug message.
--- drivers/usb/serial/whiteheat.c | 9 ++++++--- drivers/usb/serial/whiteheat.h | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-)
drivers/usb/serial/whiteheat.c +6 -3
@@ -636,6 +636,7 @@ static void firm_setup_port(struct tty_struct *tty)struct device *dev = &port->dev;struct whiteheat_port_settings port_settings;unsigned int cflag = tty->termios.c_cflag; +speed_t baud; port_settings.port = port->port_number +1 ;
@@ -696,11 +697,13 @@ static void firm_setup_port(struct tty_struct *tty)dev_dbg (dev,"%s - XON = %2x, XOFF = %2x\n" , __func__, port_settings.xon, port_settings.xoff);/* get the baud rate wanted */ - port_settings.baud =tty_get_baud_rate (tty); -dev_dbg (dev,"%s - baud rate = %d\n" , __func__, port_settings.baud); + baud =tty_get_baud_rate (tty); + port_settings.baud =cpu_to_le32 (baud); +dev_dbg (dev,"%s - baud rate = %u\n" , __func__, baud);/* fixme: should set validated settings */ -tty_encode_baud_rate (tty, port_settings.baud, port_settings.baud); +tty_encode_baud_rate (tty, baud, baud); +/* handle any settings that aren't specified in the tty structure */ port_settings.lloop =0 ;
drivers/usb/serial/whiteheat.h +1 -1
@@ -87,7 +87,7 @@ struct whiteheat_simple {struct whiteheat_port_settings {__u8 port;/* port number (1 to N) */ -__u32 baud;/* any value 7 - 460800, firmware calculates +__le32 baud;/* any value 7 - 460800, firmware calculates best fit; arrives little endian */ __u8 bits;/* 5, 6, 7, or 8 */ __u8 stop;/* 1 or 2, default 1 (2 = 1.5 if bits = 5) */
Signature · 1 line
2.23.0