[PATCH][Xenial SRU] UBUNTU: SAUCE: xr-usb-serial: re-initialise baudrate after resume from S3/S4
Shrirang Bagul
shrirang.bagul at canonical.com
Fri May 12 12:30:52 UTC 2017
BugLink: https://bugs.launchpad.net/bugs/1690362
The XR21V1412 ports were using the hardware power-on default of 9600bps
after resume from S3/S4. This patch re-initialises the baud rate and
fixes the re-connection issues after S3/S4.
Changelog:
Version 1B, 11/6/2015
Fixed Bug: The conditional logic to support kernel 3.9 was incorrect(line 396 in xr_usb_serial_common.c).
Version 1A, 1/9/2015
This driver will work with any USB UART function in these Exar devices:
XR21V1410/1412/1414
XR21B1411
XR21B1420/1422/1424
XR22801/802/804
The source code has been tested on various Linux kernels from 3.6.x to 3.17.x.
This may also work with newer kernels as well.
Signed-off-by: Shrirang Bagul <shrirang.bagul at canonical.com>
---
ubuntu/xr-usb-serial/Makefile | 3 ++-
ubuntu/xr-usb-serial/xr_usb_serial_common.c | 14 ++++++++++++--
2 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/ubuntu/xr-usb-serial/Makefile b/ubuntu/xr-usb-serial/Makefile
index 1a323a62b348..533988cede12 100644
--- a/ubuntu/xr-usb-serial/Makefile
+++ b/ubuntu/xr-usb-serial/Makefile
@@ -1,6 +1,7 @@
obj-m := xr_usb_serial_common.o
-KERNELDIR ?= /lib/modules/$(shell uname -r)/build
+#KERNELDIR ?= /lib/modules/$(shell uname -r)/build
+KERNELDIR ?=$(shell pwd)/../parts/kernel/build
PWD := $(shell pwd)
EXTRA_CFLAGS := -DDEBUG=0
diff --git a/ubuntu/xr-usb-serial/xr_usb_serial_common.c b/ubuntu/xr-usb-serial/xr_usb_serial_common.c
index 5d049855fb1a..09d21e63606e 100644
--- a/ubuntu/xr-usb-serial/xr_usb_serial_common.c
+++ b/ubuntu/xr-usb-serial/xr_usb_serial_common.c
@@ -1146,7 +1146,7 @@ static void xr_usb_serial_tty_set_termios(struct tty_struct *tty,
}
- if (memcmp(&xr_usb_serial->line, &newline, sizeof newline))
+ //if (memcmp(&xr_usb_serial->line, &newline, sizeof newline))
{
memcpy(&xr_usb_serial->line, &newline, sizeof newline);
/*
@@ -1819,11 +1819,21 @@ static int xr_usb_serial_resume(struct usb_interface *intf)
{
struct xr_usb_serial *xr_usb_serial = usb_get_intfdata(intf);
struct xr_usb_serial_wb *wb;
+#if 0
+ struct tty_struct *tty = xr_usb_serial->port.tty;
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 7, 0)
+ struct ktermios *termios = tty->termios;
+#else
+ struct ktermios *termios = &tty->termios;
+#endif
+#endif
int rv = 0;
int cnt;
xr_usb_serial_pre_setup(xr_usb_serial);
-
+ xr_usb_serial_disable(xr_usb_serial);
+ xr_usb_serial_set_line(xr_usb_serial, &xr_usb_serial->line);
+ xr_usb_serial_enable(xr_usb_serial);
spin_lock_irq(&xr_usb_serial->read_lock);
xr_usb_serial->susp_count -= 1;
cnt = xr_usb_serial->susp_count;
--
2.11.0
More information about the kernel-team
mailing list