summaryrefslogtreecommitdiff
path: root/drivers/usb/gadget/function
diff options
context:
space:
mode:
authorMayank Rana <mrana@codeaurora.org>2015-10-06 14:41:03 -0700
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 19:58:21 -0700
commitea1cd34463715f0776b9b992016000277f550841 (patch)
tree469f90514c377c1120e6b16ebe6c1312cbd14d96 /drivers/usb/gadget/function
parent4687a02e767fc1cc2f9275d6b7e3cb681a0d9945 (diff)
usb: u_data_bridge: Lower DTR on USB cable disconnect to modem
When DUN call is operational and USB cable is being disconnected, DTR is not being lowered with modem. This results into no DUN call functionality on next USB cable connect case. Fix this issue by lowering DTR to modem on USB cable disconnect. This change also returns zero instead of -EAGAIN when there is no write USB request available. Also it moves port open interrupted message loglevel from pr_err() to pr_debug to reduce logging on serial console. Change-Id: I3259417aceee2713d7765c9de34ace4ea2d3ed96 Signed-off-by: Mayank Rana <mrana@codeaurora.org>
Diffstat (limited to 'drivers/usb/gadget/function')
-rw-r--r--drivers/usb/gadget/function/u_data_bridge.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/usb/gadget/function/u_data_bridge.c b/drivers/usb/gadget/function/u_data_bridge.c
index 8a0ac837d66b..1da24304bcd8 100644
--- a/drivers/usb/gadget/function/u_data_bridge.c
+++ b/drivers/usb/gadget/function/u_data_bridge.c
@@ -362,7 +362,7 @@ int gbridge_port_open(struct inode *inode, struct file *file)
ret = wait_event_interruptible(port->open_wq,
port->is_connected);
if (ret) {
- pr_err("open interrupted.\n");
+ pr_debug("open interrupted.\n");
return ret;
}
@@ -521,7 +521,7 @@ ssize_t gbridge_port_write(struct file *file,
if (list_empty(&port->write_pool)) {
spin_unlock_irqrestore(&port->port_lock, flags);
pr_debug("%s: Request list is empty.\n", __func__);
- return -EAGAIN;
+ return 0;
}
pool = &port->write_pool;
req = list_first_entry(pool, struct usb_request, list);
@@ -912,6 +912,10 @@ void gbridge_disconnect(void *gptr, u8 portno)
gser = gptr;
gbridge_stop_io(port);
+
+ /* lower DTR to modem */
+ gbridge_notify_modem(gser, portno, 0);
+
spin_lock_irqsave(&port->port_lock, flags);
port->is_connected = false;
port->port_usb = NULL;