tty: serial: 8250_core: allow to set ->throttle / ->unthrottle callbacks
The OMAP UART provides support for HW assisted flow control. What is missing is the support to throttle / unthrottle callbacks which are used by the omap-serial driver at the moment. This patch adds the callbacks. It should be safe to add them since they are only invoked from the serial_core (uart_throttle()) if the feature flags are set. Reviewed-by: Tony Lindgren <tony@atomide.com> Tested-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
cc952e7017
commit
234abab143
|
@ -1319,6 +1319,16 @@ static void serial8250_start_tx(struct uart_port *port)
|
|||
}
|
||||
}
|
||||
|
||||
static void serial8250_throttle(struct uart_port *port)
|
||||
{
|
||||
port->throttle(port);
|
||||
}
|
||||
|
||||
static void serial8250_unthrottle(struct uart_port *port)
|
||||
{
|
||||
port->unthrottle(port);
|
||||
}
|
||||
|
||||
static void serial8250_stop_rx(struct uart_port *port)
|
||||
{
|
||||
struct uart_8250_port *up = up_to_u8250p(port);
|
||||
|
@ -2912,6 +2922,8 @@ static struct uart_ops serial8250_pops = {
|
|||
.get_mctrl = serial8250_get_mctrl,
|
||||
.stop_tx = serial8250_stop_tx,
|
||||
.start_tx = serial8250_start_tx,
|
||||
.throttle = serial8250_throttle,
|
||||
.unthrottle = serial8250_unthrottle,
|
||||
.stop_rx = serial8250_stop_rx,
|
||||
.enable_ms = serial8250_enable_ms,
|
||||
.break_ctl = serial8250_break_ctl,
|
||||
|
@ -3462,6 +3474,8 @@ int serial8250_register_8250_port(struct uart_8250_port *up)
|
|||
uart->capabilities = up->capabilities;
|
||||
uart->rs485_config = up->rs485_config;
|
||||
uart->rs485 = up->rs485;
|
||||
uart->port.throttle = up->port.throttle;
|
||||
uart->port.unthrottle = up->port.unthrottle;
|
||||
|
||||
/* Take tx_loadsz from fifosize if it wasn't set separately */
|
||||
if (uart->port.fifosize && !uart->tx_loadsz)
|
||||
|
|
|
@ -125,6 +125,8 @@ struct uart_port {
|
|||
struct ktermios *old);
|
||||
int (*startup)(struct uart_port *port);
|
||||
void (*shutdown)(struct uart_port *port);
|
||||
void (*throttle)(struct uart_port *port);
|
||||
void (*unthrottle)(struct uart_port *port);
|
||||
int (*handle_irq)(struct uart_port *);
|
||||
void (*pm)(struct uart_port *, unsigned int state,
|
||||
unsigned int old);
|
||||
|
|
Loading…
Reference in a new issue