}
 
 static void
-serial8250_set_ldisc(struct uart_port *port, int new)
+serial8250_set_ldisc(struct uart_port *port, struct ktermios *termios)
 {
-       if (new == N_PPS) {
+       if (termios->c_line == N_PPS) {
                port->flags |= UPF_HARDPPS_CD;
                serial8250_enable_ms(port);
        } else
 
        spin_unlock_irqrestore(&uap->port.lock, flags);
 }
 
-static void pl010_set_ldisc(struct uart_port *port, int new)
+static void pl010_set_ldisc(struct uart_port *port, struct ktermios *termios)
 {
-       if (new == N_PPS) {
+       if (termios->c_line == N_PPS) {
                port->flags |= UPF_HARDPPS_CD;
                pl010_enable_ms(port);
        } else
 
        spin_unlock_irqrestore(&port->lock, flags);
 }
 
-static void atmel_set_ldisc(struct uart_port *port, int new)
+static void atmel_set_ldisc(struct uart_port *port, struct ktermios *termios)
 {
-       if (new == N_PPS) {
+       if (termios->c_line == N_PPS) {
                port->flags |= UPF_HARDPPS_CD;
                atmel_enable_ms(port);
        } else {
 
  * Enable the IrDA function if tty->ldisc.num is N_IRDA.
  * In other cases, disable IrDA function.
  */
-static void bfin_serial_set_ldisc(struct uart_port *port, int ld)
+static void bfin_serial_set_ldisc(struct uart_port *port,
+                                 struct ktermios *termios)
 {
        struct bfin_serial_port *uart = (struct bfin_serial_port *)port;
        unsigned int val;
 
-       switch (ld) {
+       switch (termios->c_line) {
        case N_IRDA:
                val = UART_GET_GCTL(uart);
                val |= (UMOD_IRDA | RPOLC);
 
        writel(ubrlcr, port->membase + UBRLCR_OFFSET);
 }
 
-static void uart_clps711x_set_ldisc(struct uart_port *port, int ld)
+static void uart_clps711x_set_ldisc(struct uart_port *port,
+                                   struct ktermios *termios)
 {
        if (!port->line) {
                struct clps711x_port *s = dev_get_drvdata(port->dev);
 
                regmap_update_bits(s->syscon, SYSCON_OFFSET, SYSCON1_SIREN,
-                                  (ld == N_IRDA) ? SYSCON1_SIREN : 0);
+                                  (termios->c_line == N_IRDA) ? SYSCON1_SIREN : 0);
        }
 }
 
 
 
        if (uport->ops->set_ldisc) {
                mutex_lock(&state->port.mutex);
-               uport->ops->set_ldisc(uport, tty->termios.c_line);
+               uport->ops->set_ldisc(uport, &tty->termios);
                mutex_unlock(&state->port.mutex);
        }
 }
 
        void            (*flush_buffer)(struct uart_port *);
        void            (*set_termios)(struct uart_port *, struct ktermios *new,
                                       struct ktermios *old);
-       void            (*set_ldisc)(struct uart_port *, int new);
+       void            (*set_ldisc)(struct uart_port *, struct ktermios *);
        void            (*pm)(struct uart_port *, unsigned int state,
                              unsigned int oldstate);