diff --git a/drivers/usb/gadget/function/f_cdev.c b/drivers/usb/gadget/function/f_cdev.c index 0e300b12979e..767b107216a0 100644 --- a/drivers/usb/gadget/function/f_cdev.c +++ b/drivers/usb/gadget/function/f_cdev.c @@ -1382,6 +1382,9 @@ static int f_cdev_tiocmget(struct f_cdev *port) if (cser->serial_state & TIOCM_DSR) result |= TIOCM_DSR; + + if (cser->serial_state & TIOCM_CTS) + result |= TIOCM_CTS; return result; } @@ -1428,6 +1431,18 @@ static int f_cdev_tiocmset(struct f_cdev *port, if (clear & TIOCM_DSR) cser->serial_state &= ~TIOCM_DSR; + if (set & TIOCM_CTS) { + if (cser->send_break) { + cser->serial_state |= TIOCM_CTS; + status = cser->send_break(cser, 0); + } + } + if (clear & TIOCM_CTS) { + if (cser->send_break) { + cser->serial_state &= ~TIOCM_CTS; + status = cser->send_break(cser, 1); + } + } return status; }