mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-06 05:06:29 +00:00
tty: serial: uartps: Relocate cdns_uart_tx_empty to facilitate rs485
Relocate cdns_uart_tx_empty function to avoid prototype statement in rs485 changes. Update return check with uart_tx_stopped() in cdns_uart_handle_tx(). Signed-off-by: Manikanta Guntupalli <manikanta.guntupalli@amd.com> Link: https://lore.kernel.org/r/20240123061655.2150946-3-manikanta.guntupalli@amd.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
32152467ff
commit
74231ab6cc
@ -306,7 +306,22 @@ static void cdns_uart_handle_rx(void *dev_id, unsigned int isrstatus)
|
||||
}
|
||||
|
||||
/**
|
||||
* cdns_uart_handle_tx - Handle the bytes to be Txed.
|
||||
* cdns_uart_tx_empty - Check whether TX is empty
|
||||
* @port: Handle to the uart port structure
|
||||
*
|
||||
* Return: TIOCSER_TEMT on success, 0 otherwise
|
||||
*/
|
||||
static unsigned int cdns_uart_tx_empty(struct uart_port *port)
|
||||
{
|
||||
unsigned int status;
|
||||
|
||||
status = readl(port->membase + CDNS_UART_SR);
|
||||
status &= (CDNS_UART_SR_TXEMPTY | CDNS_UART_SR_TACTIVE);
|
||||
return (status == CDNS_UART_SR_TXEMPTY) ? TIOCSER_TEMT : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* cdns_uart_handle_tx - Handle the bytes to be transmitted.
|
||||
* @dev_id: Id of the UART port
|
||||
* Return: None
|
||||
*/
|
||||
@ -316,7 +331,8 @@ static void cdns_uart_handle_tx(void *dev_id)
|
||||
struct circ_buf *xmit = &port->state->xmit;
|
||||
unsigned int numbytes;
|
||||
|
||||
if (uart_circ_empty(xmit)) {
|
||||
if (uart_circ_empty(xmit) || uart_tx_stopped(port)) {
|
||||
/* Disable the TX Empty interrupt */
|
||||
writel(CDNS_UART_IXR_TXEMPTY, port->membase + CDNS_UART_IDR);
|
||||
return;
|
||||
}
|
||||
@ -587,6 +603,7 @@ static void cdns_uart_start_tx(struct uart_port *port)
|
||||
if (uart_circ_empty(&port->state->xmit))
|
||||
return;
|
||||
|
||||
/* Clear the TX Empty interrupt */
|
||||
writel(CDNS_UART_IXR_TXEMPTY, port->membase + CDNS_UART_ISR);
|
||||
|
||||
cdns_uart_handle_tx(port);
|
||||
@ -626,21 +643,6 @@ static void cdns_uart_stop_rx(struct uart_port *port)
|
||||
writel(regval, port->membase + CDNS_UART_CR);
|
||||
}
|
||||
|
||||
/**
|
||||
* cdns_uart_tx_empty - Check whether TX is empty
|
||||
* @port: Handle to the uart port structure
|
||||
*
|
||||
* Return: TIOCSER_TEMT on success, 0 otherwise
|
||||
*/
|
||||
static unsigned int cdns_uart_tx_empty(struct uart_port *port)
|
||||
{
|
||||
unsigned int status;
|
||||
|
||||
status = readl(port->membase + CDNS_UART_SR) &
|
||||
(CDNS_UART_SR_TXEMPTY | CDNS_UART_SR_TACTIVE);
|
||||
return (status == CDNS_UART_SR_TXEMPTY) ? TIOCSER_TEMT : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* cdns_uart_break_ctl - Based on the input ctl we have to start or stop
|
||||
* transmitting char breaks
|
||||
|
Loading…
Reference in New Issue
Block a user