|
@@ -2407,6 +2407,21 @@ serial8250_set_termios(struct uart_port *port, struct ktermios *termios,
|
|
|
tty_termios_encode_baud_rate(termios, baud, baud);
|
|
|
}
|
|
|
|
|
|
+static void
|
|
|
+serial8250_set_ldisc(struct uart_port *port)
|
|
|
+{
|
|
|
+ int line = port->line;
|
|
|
+
|
|
|
+ if (line >= port->state->port.tty->driver->num)
|
|
|
+ return;
|
|
|
+
|
|
|
+ if (port->state->port.tty->ldisc->ops->num == N_PPS) {
|
|
|
+ port->flags |= UPF_HARDPPS_CD;
|
|
|
+ serial8250_enable_ms(port);
|
|
|
+ } else
|
|
|
+ port->flags &= ~UPF_HARDPPS_CD;
|
|
|
+}
|
|
|
+
|
|
|
static void
|
|
|
serial8250_pm(struct uart_port *port, unsigned int state,
|
|
|
unsigned int oldstate)
|
|
@@ -2628,6 +2643,7 @@ static struct uart_ops serial8250_pops = {
|
|
|
.startup = serial8250_startup,
|
|
|
.shutdown = serial8250_shutdown,
|
|
|
.set_termios = serial8250_set_termios,
|
|
|
+ .set_ldisc = serial8250_set_ldisc,
|
|
|
.pm = serial8250_pm,
|
|
|
.type = serial8250_type,
|
|
|
.release_port = serial8250_release_port,
|