summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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;