[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1463042948-12205-30-git-send-email-m.othacehe@gmail.com>
Date: Thu, 12 May 2016 10:49:01 +0200
From: Mathieu OTHACEHE <m.othacehe@...il.com>
To: johan@...nel.org
Cc: gregkh@...uxfoundation.org, linux-usb@...r.kernel.org,
linux-kernel@...r.kernel.org,
Mathieu OTHACEHE <m.othacehe@...il.com>
Subject: [PATCH 29/36] usb: serial: ti_usb_3410_5052: Set shadow msr before waking up waiters
Save msr before testing the delta and waking up any waiters.
Also use port directly instead of tport->tp_port.
Signed-off-by: Mathieu OTHACEHE <m.othacehe@...il.com>
---
drivers/usb/serial/ti_usb_3410_5052.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/drivers/usb/serial/ti_usb_3410_5052.c b/drivers/usb/serial/ti_usb_3410_5052.c
index 72cb675..1d8d8ef 100644
--- a/drivers/usb/serial/ti_usb_3410_5052.c
+++ b/drivers/usb/serial/ti_usb_3410_5052.c
@@ -1240,9 +1240,12 @@ static void ti_handle_new_msr(struct usb_serial_port *port, u8 msr)
dev_dbg(&port->dev, "%s - msr 0x%02X\n", __func__, msr);
+ spin_lock_irqsave(&tport->tp_lock, flags);
+ tport->tp_msr = msr & TI_MSR_MASK;
+ spin_unlock_irqrestore(&tport->tp_lock, flags);
+
if (msr & TI_MSR_DELTA_MASK) {
- spin_lock_irqsave(&tport->tp_lock, flags);
- icount = &tport->tp_port->icount;
+ icount = &port->icount;
if (msr & TI_MSR_DELTA_CTS)
icount->cts++;
if (msr & TI_MSR_DELTA_DSR)
@@ -1251,11 +1254,9 @@ static void ti_handle_new_msr(struct usb_serial_port *port, u8 msr)
icount->dcd++;
if (msr & TI_MSR_DELTA_RI)
icount->rng++;
+
wake_up_interruptible(&port->port.delta_msr_wait);
- spin_unlock_irqrestore(&tport->tp_lock, flags);
}
-
- tport->tp_msr = msr & TI_MSR_MASK;
}
static int ti_do_download(struct usb_serial *serial,
--
2.8.2
Powered by blists - more mailing lists