Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4d0fa5b4 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "usb: gadget: Send DSR linestate on DTR high from host"

parents 2db94097 71bc67af
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -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;
@@ -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;
@@ -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);
}