From: Kumar Gala <galak@freescale.com>

use schedule_timeout instead of direct call to schedule

Signed-off-by: Marcelo Tosatti <marcelo.tosatti@cyclades.com>
Signed-off-by: Kumar Gala <kumar.gala@freescale.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 drivers/serial/cpm_uart/cpm_uart_core.c |   13 +++++++------
 1 files changed, 7 insertions(+), 6 deletions(-)

diff -puN drivers/serial/cpm_uart/cpm_uart_core.c~cpm_uart-use-schedule_timeout-instead-of-direct-call-to drivers/serial/cpm_uart/cpm_uart_core.c
--- devel/drivers/serial/cpm_uart/cpm_uart_core.c~cpm_uart-use-schedule_timeout-instead-of-direct-call-to	2005-08-30 00:15:01.000000000 -0700
+++ devel-akpm/drivers/serial/cpm_uart/cpm_uart_core.c	2005-08-30 00:15:01.000000000 -0700
@@ -403,10 +403,8 @@ static int cpm_uart_startup(struct uart_
 
 inline void cpm_uart_wait_until_send(struct uart_cpm_port *pinfo)
 {
-	unsigned long target_jiffies = jiffies + pinfo->wait_closing;
-
-	while (!time_after(jiffies, target_jiffies))
-   		schedule();
+	set_current_state(TASK_UNINTERRUPTIBLE);
+	schedule_timeout(pinfo->wait_closing);
 }
 
 /*
@@ -425,9 +423,12 @@ static void cpm_uart_shutdown(struct uar
 	/* If the port is not the console, disable Rx and Tx. */
 	if (!(pinfo->flags & FLAG_CONSOLE)) {
 		/* Wait for all the BDs marked sent */
-		while(!cpm_uart_tx_empty(port))
+		while(!cpm_uart_tx_empty(port)) {
+			set_current_state(TASK_UNINTERRUPTIBLE);
 			schedule_timeout(2);
-		if(pinfo->wait_closing)
+		}
+
+		if (pinfo->wait_closing)
 			cpm_uart_wait_until_send(pinfo);
 
 		/* Stop uarts */
_