Subject: Re: [PATCH] mpc52xx: fix early text output

From: Sylvain Munaut <[email-masked]>
Date: Wed, 15 Sep 2004 21:41:28 +0200

Hi Roger,

roger blofeld wrote:

>This patch fixes early serial text output
>-rb
>  
>
Thanks for pointing that out. The output is nicer ;)

However, I would leave the test to add a \r in front of a \n.
Even if it doesn't happen in current code, someone may use it (I know I 
did at somepoint in the debug ... )

Applied to my public tree. I'll post it as [PATCH 10/9] in the group of 
updates I'm trying to push upstream.

    Sylvain

# This is a BitKeeper generated diff -Nru style patch.
#
# ChangeSet
#   2004/09/15 21:23:46+02:00 [email-masked]
#   ppc: Fix output of low-level serial debug on Freescale MPC52xx
#  
#   Thanks to Roger Blofeld for pointing that out.
#  
#   Signed-off-by: Sylvain Munaut <[email-masked]>
#
# arch/ppc/syslib/mpc52xx_setup.c
#   2004/09/15 21:23:06+02:00 [email-masked] +14 -10
#   ppc: Fix output of low-level serial debug on Freescale MPC52xx
#
diff -Nru a/arch/ppc/syslib/mpc52xx_setup.c 
b/arch/ppc/syslib/mpc52xx_setup.c
--- a/arch/ppc/syslib/mpc52xx_setup.c   2004-09-15 21:24:24 +02:00
+++ b/arch/ppc/syslib/mpc52xx_setup.c   2004-09-15 21:24:24 +02:00
@@ -100,24 +100,28 @@
 #error "mpc52xx PSC for console not selected"
 #endif
 
+static void
+mpc52xx_psc_putc(struct mpc52xx_psc * psc, unsigned char c)
+{
+       while (!(in_be16(&psc->mpc52xx_psc_status) &
+                MPC52xx_PSC_SR_TXRDY));
+       out_8(&psc->mpc52xx_psc_buffer_8, c);
+}
+
 void
 mpc52xx_progress(char *s, unsigned short hex)
 {
        struct mpc52xx_psc *psc = (struct mpc52xx_psc *)MPC52xx_CONSOLE;
        char c;
 
-               /* Don't we need to disable serial interrupts ? */
-      
        while ((c = *s++) != 0) {
-               if (c == '\n') {
-                       while (!(in_be16(&psc->mpc52xx_psc_status) &
-                                MPC52xx_PSC_SR_TXRDY)) ;
-                       out_8(&psc->mpc52xx_psc_buffer_8, '\r');
-               }
-               while (!(in_be16(&psc->mpc52xx_psc_status) &
-                        MPC52xx_PSC_SR_TXRDY)) ;
-               out_8(&psc->mpc52xx_psc_buffer_8, c);
+               if (c == '\n')
+                       mpc52xx_psc_putc(psc, '\r');
+               mpc52xx_psc_putc(psc, c);
        }
+      
+       mpc52xx_psc_putc(psc, '\r');
+       mpc52xx_psc_putc(psc, '\n');
 }
 
 #endif  /* CONFIG_SERIAL_TEXT_DEBUG */