|
@@ -136,6 +136,7 @@ static void serial_omap_enable_ms(struct uart_port *port)
|
|
|
static void serial_omap_stop_tx(struct uart_port *port)
|
|
|
{
|
|
|
struct uart_omap_port *up = (struct uart_omap_port *)port;
|
|
|
+ struct omap_uart_port_info *pdata = up->pdev->dev.platform_data;
|
|
|
|
|
|
if (up->use_dma &&
|
|
|
up->uart_dma.tx_dma_channel != OMAP_UART_DMA_CH_FREE) {
|
|
@@ -158,6 +159,9 @@ static void serial_omap_stop_tx(struct uart_port *port)
|
|
|
serial_out(up, UART_IER, up->ier);
|
|
|
}
|
|
|
|
|
|
+ if (!up->use_dma && pdata->set_forceidle)
|
|
|
+ pdata->set_forceidle(up->pdev);
|
|
|
+
|
|
|
pm_runtime_mark_last_busy(&up->pdev->dev);
|
|
|
pm_runtime_put_autosuspend(&up->pdev->dev);
|
|
|
}
|
|
@@ -286,6 +290,7 @@ static inline void serial_omap_enable_ier_thri(struct uart_omap_port *up)
|
|
|
static void serial_omap_start_tx(struct uart_port *port)
|
|
|
{
|
|
|
struct uart_omap_port *up = (struct uart_omap_port *)port;
|
|
|
+ struct omap_uart_port_info *pdata = up->pdev->dev.platform_data;
|
|
|
struct circ_buf *xmit;
|
|
|
unsigned int start;
|
|
|
int ret = 0;
|
|
@@ -293,6 +298,8 @@ static void serial_omap_start_tx(struct uart_port *port)
|
|
|
if (!up->use_dma) {
|
|
|
pm_runtime_get_sync(&up->pdev->dev);
|
|
|
serial_omap_enable_ier_thri(up);
|
|
|
+ if (pdata->set_noidle)
|
|
|
+ pdata->set_noidle(up->pdev);
|
|
|
pm_runtime_mark_last_busy(&up->pdev->dev);
|
|
|
pm_runtime_put_autosuspend(&up->pdev->dev);
|
|
|
return;
|