On Mon, 2016-04-04 at 18:01 +0800, wan.ahmad.zainie.wan.mohamad@xxxxxxxxx wrote: > From: Wan Ahmad Zainie <wan.ahmad.zainie.wan.mohamad@xxxxxxxxx> > > Exposes get_mctrl() function so that it can be overriden with > platform > specific implementation. > > Signed-off-by: Wan Ahmad Zainie > <wan.ahmad.zainie.wan.mohamad@xxxxxxxxx> FWIW: Reviewed-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> > --- > drivers/tty/serial/8250/8250_core.c | 3 +++ > drivers/tty/serial/8250/8250_port.c | 10 +++++++++- > include/linux/serial_8250.h | 2 ++ > include/linux/serial_core.h | 1 + > 4 files changed, 15 insertions(+), 1 deletion(-) > > diff --git a/drivers/tty/serial/8250/8250_core.c > b/drivers/tty/serial/8250/8250_core.c > index 2f4f5ee..0fbd7c0 100644 > --- a/drivers/tty/serial/8250/8250_core.c > +++ b/drivers/tty/serial/8250/8250_core.c > @@ -830,6 +830,7 @@ static int serial8250_probe(struct > platform_device *dev) > uart.port.handle_irq = p->handle_irq; > uart.port.handle_break = p->handle_break; > uart.port.set_termios = p->set_termios; > + uart.port.get_mctrl = p->get_mctrl; > uart.port.pm = p->pm; > uart.port.dev = &dev->dev; > uart.port.irqflags |= irqflag; > @@ -1022,6 +1023,8 @@ int serial8250_register_8250_port(struct > uart_8250_port *up) > /* Possibly override set_termios call */ > if (up->port.set_termios) > uart->port.set_termios = up- > >port.set_termios; > + if (up->port.get_mctrl) > + uart->port.get_mctrl = up->port.get_mctrl; > if (up->port.set_mctrl) > uart->port.set_mctrl = up->port.set_mctrl; > if (up->port.startup) > diff --git a/drivers/tty/serial/8250/8250_port.c > b/drivers/tty/serial/8250/8250_port.c > index e213da0..cbb4789 100644 > --- a/drivers/tty/serial/8250/8250_port.c > +++ b/drivers/tty/serial/8250/8250_port.c > @@ -1873,7 +1873,7 @@ static unsigned int serial8250_tx_empty(struct > uart_port *port) > return (lsr & BOTH_EMPTY) == BOTH_EMPTY ? TIOCSER_TEMT : 0; > } > > -static unsigned int serial8250_get_mctrl(struct uart_port *port) > +unsigned int serial8250_do_get_mctrl(struct uart_port *port) > { > struct uart_8250_port *up = up_to_u8250p(port); > unsigned int status; > @@ -1894,6 +1894,14 @@ static unsigned int > serial8250_get_mctrl(struct uart_port *port) > ret |= TIOCM_CTS; > return ret; > } > +EXPORT_SYMBOL_GPL(serial8250_do_get_mctrl); > + > +static unsigned int serial8250_get_mctrl(struct uart_port *port) > +{ > + if (port->get_mctrl) > + return port->get_mctrl(port); > + return serial8250_do_get_mctrl(port); > +} > > void serial8250_do_set_mctrl(struct uart_port *port, unsigned int > mctrl) > { > diff --git a/include/linux/serial_8250.h > b/include/linux/serial_8250.h > index 4348797..48ec765 100644 > --- a/include/linux/serial_8250.h > +++ b/include/linux/serial_8250.h > @@ -36,6 +36,7 @@ struct plat_serial8250_port { > void (*set_termios)(struct uart_port *, > struct ktermios *new, > struct ktermios *old); > + unsigned int (*get_mctrl)(struct uart_port *); > int (*handle_irq)(struct uart_port *); > void (*pm)(struct uart_port *, unsigned int > state, > unsigned old); > @@ -148,6 +149,7 @@ extern int early_serial8250_setup(struct > earlycon_device *device, > const char *options); > extern void serial8250_do_set_termios(struct uart_port *port, > struct ktermios *termios, struct ktermios *old); > +extern unsigned int serial8250_do_get_mctrl(struct uart_port *port); > extern int serial8250_do_startup(struct uart_port *port); > extern void serial8250_do_shutdown(struct uart_port *port); > extern void serial8250_do_pm(struct uart_port *port, unsigned int > state, > diff --git a/include/linux/serial_core.h > b/include/linux/serial_core.h > index cbfcf38..aa9af84 100644 > --- a/include/linux/serial_core.h > +++ b/include/linux/serial_core.h > @@ -123,6 +123,7 @@ struct uart_port { > void (*set_termios)(struct uart_port > *, > struct ktermios *new, > struct ktermios > *old); > + unsigned int (*get_mctrl)(struct uart_port > *); > void (*set_mctrl)(struct uart_port *, > unsigned int); > int (*startup)(struct uart_port > *port); > void (*shutdown)(struct uart_port > *port); -- Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> Intel Finland Oy -- To unsubscribe from this list: send the line "unsubscribe linux-serial" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html