static void aspeed_vuart_shutdown(struct uart_port *uart_port) { struct uart_8250_port *uart_8250_port = up_to_u8250p(uart_port); struct aspeed_vuart *vuart = uart_8250_port->port.private_data; aspeed_vuart_set_host_tx_discard(vuart, true); serial8250_do_shutdown(uart_port); }
static void mtk8250_shutdown(struct uart_port *port) { #ifdef CONFIG_SERIAL_8250_DMA struct uart_8250_port *up = up_to_u8250p(port); struct mtk8250_data *data = port->private_data; if (up->dma) data->rx_status = DMA_RX_SHUTDOWN; #endif return serial8250_do_shutdown(port); }
static void omap_8250_shutdown(struct uart_port *port) { struct uart_8250_port *up = container_of(port, struct uart_8250_port, port); struct omap8250_priv *priv = port->private_data; flush_work(&priv->qos_work); if (up->dma) up->dma->rx_dma(up, UART_IIR_RX_TIMEOUT); pm_runtime_get_sync(port->dev); serial_out(up, UART_OMAP_WER, 0); serial8250_do_shutdown(port); pm_runtime_mark_last_busy(port->dev); pm_runtime_put_autosuspend(port->dev); if (priv->wakeirq) free_irq(priv->wakeirq, port); }