[POWERPC] Get default baud rate in udbg_scc
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>
Tue, 3 Oct 2006 04:47:58 +0000 (14:47 +1000)
committerPaul Mackerras <paulus@samba.org>
Wed, 4 Oct 2006 04:52:31 +0000 (14:52 +1000)
On powermac, when open firmware is set to use the SCC for console, this
causes the low level udbg early console to read back the speed and
re-use it instead of hard coding 57600 bps. This doesn't (yet) pass the
detected speed all the way to pmac_zilog though.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
arch/powerpc/platforms/powermac/udbg_scc.c

index ce1a235855f7557e0f15ed061429254d9fff41d4..379db05b0082418ee7232389e1d05b44cad4bc60 100644 (file)
@@ -111,8 +111,6 @@ void udbg_scc_init(int force_scc)
        pmac_call_feature(PMAC_FTR_SCC_ENABLE, ch,
                          PMAC_SCC_ASYNC | PMAC_SCC_FLAG_XMON, 1);
 
-
-       /* Setup for 57600 8N1 */
        if (ch == ch_a)
                addr += 0x20;
        sccc = ioremap(addr & PAGE_MASK, PAGE_SIZE) ;
@@ -125,9 +123,21 @@ void udbg_scc_init(int force_scc)
                x = in_8(sccc);
        out_8(sccc, 0x09);              /* reset A or B side */
        out_8(sccc, 0xc0);
+
+       /* If SCC was the OF output port, read the BRG value, else
+        * Setup for 57600 8N1
+        */
+       if (ch_def != NULL) {
+               out_8(sccc, 13);
+               scc_inittab[1] = in_8(sccc);
+               out_8(sccc, 12);
+               scc_inittab[3] = in_8(sccc);
+       }
+
        for (i = 0; i < sizeof(scc_inittab); ++i)
                out_8(sccc, scc_inittab[i]);
 
+
        udbg_putc = udbg_scc_putc;
        udbg_getc = udbg_scc_getc;
        udbg_getc_poll = udbg_scc_getc_poll;