summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/tty/serial/exynos_tty.c16
1 files changed, 4 insertions, 12 deletions
diff --git a/drivers/tty/serial/exynos_tty.c b/drivers/tty/serial/exynos_tty.c
index c086ad2e5..92cfcba8f 100644
--- a/drivers/tty/serial/exynos_tty.c
+++ b/drivers/tty/serial/exynos_tty.c
@@ -2462,17 +2462,13 @@ static void exynos_serial_rx_fifo_wait(struct exynos_uart_port *ourport)
exynos_clear_bit(port, S3C64XX_UINTM_RXD, S3C64XX_UINTM);
ourport->rx_enabled = 1;
- wait_time = loops_per_jiffy * HZ;
+ wait_time = jiffies + HZ;
do {
port = &ourport->port;
fifo_stat = rd_regl(port, S3C2410_UFSTAT);
cpu_relax();
} while (exynos_serial_rx_fifocnt(ourport, fifo_stat) &&
- --wait_time);
- if (wait_time == 0) {
- dev_warn(port->dev, "Timed out flushing RX FIFO\n");
- uart_sfr_dump(ourport);
- }
+ time_before(jiffies, wait_time));
}
if (ourport->rx_enabled)
@@ -2487,17 +2483,13 @@ void exynos_serial_fifo_wait(void)
unsigned long wait_time;
list_for_each_entry(ourport, &drvdata_list, node) {
- wait_time = loops_per_jiffy / 4 * HZ;
+ wait_time = jiffies + HZ / 4;
do {
port = &ourport->port;
fifo_stat = rd_regl(port, S3C2410_UFSTAT);
cpu_relax();
} while (exynos_serial_tx_fifocnt(ourport, fifo_stat) &&
- --wait_time);
- if (wait_time == 0) {
- dev_warn(port->dev, "Timed out flushing FIFO\n");
- uart_sfr_dump(ourport);
- }
+ time_before(jiffies, wait_time));
}
}
EXPORT_SYMBOL_GPL(exynos_serial_fifo_wait);