cdns_uart
struct cdns_uart *cdns_uart = port->private_data;
if (cdns_uart->port->rs485.flags & SER_RS485_ENABLED)
hrtimer_cancel(&cdns_uart->tx_timer);
struct cdns_uart *cdns_uart_data = port->private_data;
struct cdns_uart *cdns_uart_data = port->private_data;
struct cdns_uart *cdns_uart = port->private_data;
ret = clk_enable(cdns_uart->pclk);
ret = clk_enable(cdns_uart->uartclk);
clk_disable(cdns_uart->pclk);
clk_disable(cdns_uart->uartclk);
clk_disable(cdns_uart->pclk);
struct cdns_uart *cdns_uart = port->private_data;
clk_disable(cdns_uart->uartclk);
clk_disable(cdns_uart->pclk);
struct cdns_uart *cdns_uart = port->private_data;
ret = clk_enable(cdns_uart->pclk);
ret = clk_enable(cdns_uart->uartclk);
clk_disable(cdns_uart->pclk);
struct cdns_uart *cdns_uart = port->private_data;
hrtimer_setup(&cdns_uart->tx_timer, &cdns_rs485_tx_callback, CLOCK_MONOTONIC,
hrtimer_cancel(&cdns_uart->tx_timer);
struct cdns_uart *cdns_uart_data;
struct cdns_uart *cdns_uart_data = port->private_data;
#define to_cdns_uart(_nb) container_of(_nb, struct cdns_uart, \
struct cdns_uart *cdns_uart = port->private_data;
is_rxbs_support = cdns_uart->quirks & CDNS_UART_RXBS_SUPPORT;
static void cdns_rts_gpio_enable(struct cdns_uart *cdns_uart, bool enable)
if (cdns_uart->gpiod_rts) {
gpiod_set_value(cdns_uart->gpiod_rts, enable);
val = readl(cdns_uart->port->membase + CDNS_UART_MODEMCR);
writel(val, cdns_uart->port->membase + CDNS_UART_MODEMCR);
static void cdns_rs485_tx_setup(struct cdns_uart *cdns_uart)
enable = cdns_uart->port->rs485.flags & SER_RS485_RTS_ON_SEND;
cdns_rts_gpio_enable(cdns_uart, enable);
cdns_uart->rs485_tx_started = true;
static void cdns_rs485_rx_setup(struct cdns_uart *cdns_uart)
enable = cdns_uart->port->rs485.flags & SER_RS485_RTS_AFTER_SEND;
cdns_rts_gpio_enable(cdns_uart, enable);
cdns_uart->rs485_tx_started = false;
struct cdns_uart *cdns_uart = container_of(t, struct cdns_uart, tx_timer);
cdns_rs485_rx_setup(cdns_uart);
static u64 cdns_calc_after_tx_delay(struct cdns_uart *cdns_uart)
return cdns_uart->port->frame_time
+ DIV_ROUND_UP(cdns_uart->port->frame_time, 7)
+ (u64)cdns_uart->port->rs485.delay_rts_after_send * NSEC_PER_MSEC;
struct cdns_uart *cdns_uart = port->private_data;
if (cdns_uart->port->rs485.flags & SER_RS485_ENABLED) {
cdns_uart->tx_timer.function = &cdns_rs485_rx_callback;
rts_delay = ns_to_ktime(cdns_calc_after_tx_delay(cdns_uart));
hrtimer_start(&cdns_uart->tx_timer, rts_delay, HRTIMER_MODE_REL);
writel(CDNS_UART_IXR_TXEMPTY, cdns_uart->port->membase + CDNS_UART_IER);
struct cdns_uart *cdns_uart = port->private_data;
cdns_uart->baud = baud;
struct cdns_uart *cdns_uart = to_cdns_uart(nb);
port = cdns_uart->port;
if (!cdns_uart_calc_baud_divs(ndata->new_rate, cdns_uart->baud,
uart_port_lock_irqsave(cdns_uart->port, &flags);
uart_port_unlock_irqrestore(cdns_uart->port, flags);
uart_port_lock_irqsave(cdns_uart->port, &flags);
cdns_uart->baud = cdns_uart_set_baud_rate(cdns_uart->port,
cdns_uart->baud);
uart_port_lock_irqsave(cdns_uart->port, &flags);
uart_port_unlock_irqrestore(cdns_uart->port, flags);
struct cdns_uart *cdns_uart = container_of(t, struct cdns_uart, tx_timer);
uart_port_lock(cdns_uart->port);
cdns_uart_handle_tx(cdns_uart->port);
uart_port_unlock(cdns_uart->port);
struct cdns_uart *cdns_uart = port->private_data;
if (cdns_uart->port->rs485.flags & SER_RS485_ENABLED) {
if (!cdns_uart->rs485_tx_started) {
hrtimer_update_function(&cdns_uart->tx_timer, cdns_rs485_tx_callback);
cdns_rs485_tx_setup(cdns_uart);
return hrtimer_start(&cdns_uart->tx_timer,
struct cdns_uart *cdns_uart = port->private_data;
if (cdns_uart->port->rs485.flags & SER_RS485_ENABLED)
cdns_rs485_rx_setup(cdns_uart);
struct cdns_uart *cdns_uart = port->private_data;
is_brk_support = cdns_uart->quirks & CDNS_UART_RXBS_SUPPORT;
ret = reset_control_deassert(cdns_uart->rstc);
if (cdns_uart->port->rs485.flags & SER_RS485_ENABLED)
cdns_rs485_rx_setup(cdns_uart);