Re: [PATCH 1/2] serial: 8250: export get_mctrl function

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux PPP]     [Linux FS]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Linmodem]     [Device Mapper]     [Linux Kernel for ARM]

  Powered by Linux