Loading drivers/usb/gadget/function/u_data_bridge.c +19 −0 Original line number Diff line number Diff line Loading @@ -633,6 +633,9 @@ static int gbridge_port_tiocmget(struct gbridge_port *port) if (gser->serial_state & TIOCM_RI) result |= TIOCM_RI; if (gser->serial_state & TIOCM_DSR) result |= TIOCM_DSR; fail: spin_unlock_irqrestore(&port->port_lock, flags); return result; Loading Loading @@ -682,6 +685,10 @@ static int gbridge_port_tiocmset(struct gbridge_port *port, status = gser->send_carrier_detect(gser, 0); } } if (set & TIOCM_DSR) gser->serial_state |= TIOCM_DSR; if (clear & TIOCM_DSR) gser->serial_state &= ~TIOCM_DSR; fail: spin_unlock_irqrestore(&port->port_lock, flags); return status; Loading Loading @@ -755,6 +762,18 @@ static void gbridge_notify_modem(void *gptr, u8 portno, int ctrl_bits) port->cbits_to_modem = temp; port->cbits_updated = true; spin_unlock_irqrestore(&port->port_lock, flags); /* if DTR is high, update latest modem info to laptop */ if (port->cbits_to_modem & TIOCM_DTR) { unsigned int result; unsigned cbits_to_laptop; result = gbridge_port_tiocmget(port); cbits_to_laptop = convert_uart_sigs_to_acm(result); if (gser->send_modem_ctrl_bits) gser->send_modem_ctrl_bits( port->port_usb, cbits_to_laptop); } wake_up(&port->read_wq); } Loading Loading
drivers/usb/gadget/function/u_data_bridge.c +19 −0 Original line number Diff line number Diff line Loading @@ -633,6 +633,9 @@ static int gbridge_port_tiocmget(struct gbridge_port *port) if (gser->serial_state & TIOCM_RI) result |= TIOCM_RI; if (gser->serial_state & TIOCM_DSR) result |= TIOCM_DSR; fail: spin_unlock_irqrestore(&port->port_lock, flags); return result; Loading Loading @@ -682,6 +685,10 @@ static int gbridge_port_tiocmset(struct gbridge_port *port, status = gser->send_carrier_detect(gser, 0); } } if (set & TIOCM_DSR) gser->serial_state |= TIOCM_DSR; if (clear & TIOCM_DSR) gser->serial_state &= ~TIOCM_DSR; fail: spin_unlock_irqrestore(&port->port_lock, flags); return status; Loading Loading @@ -755,6 +762,18 @@ static void gbridge_notify_modem(void *gptr, u8 portno, int ctrl_bits) port->cbits_to_modem = temp; port->cbits_updated = true; spin_unlock_irqrestore(&port->port_lock, flags); /* if DTR is high, update latest modem info to laptop */ if (port->cbits_to_modem & TIOCM_DTR) { unsigned int result; unsigned cbits_to_laptop; result = gbridge_port_tiocmget(port); cbits_to_laptop = convert_uart_sigs_to_acm(result); if (gser->send_modem_ctrl_bits) gser->send_modem_ctrl_bits( port->port_usb, cbits_to_laptop); } wake_up(&port->read_wq); } Loading