MIPS: Octeon: Export prom_putchar().
[sfrench/cifs-2.6.git] / arch / mips / cavium-octeon / setup.c
index 9a06fa9f9f0cdc890a8c2f9f8ad05b5384feb510..041326e34f4d325c62475ea4964eebced8d3118d 100644 (file)
@@ -403,7 +403,6 @@ void __init prom_init(void)
        const int coreid = cvmx_get_core_num();
        int i;
        int argc;
-       struct uart_port octeon_port;
 #ifdef CONFIG_CAVIUM_RESERVE32
        int64_t addr = -1;
 #endif
@@ -579,9 +578,6 @@ void __init prom_init(void)
        }
 
        if (strstr(arcs_cmdline, "console=") == NULL) {
-#ifdef CONFIG_GDB_CONSOLE
-               strcat(arcs_cmdline, " console=gdb");
-#else
 #ifdef CONFIG_CAVIUM_OCTEON_2ND_KERNEL
                strcat(arcs_cmdline, " console=ttyS0,115200");
 #else
@@ -589,7 +585,6 @@ void __init prom_init(void)
                        strcat(arcs_cmdline, " console=ttyS1,115200");
                else
                        strcat(arcs_cmdline, " console=ttyS0,115200");
-#endif
 #endif
        }
 
@@ -599,41 +594,17 @@ void __init prom_init(void)
                 * the filesystem. Also specify the calibration delay
                 * to avoid calculating it every time.
                 */
-               strcat(arcs_cmdline, " rw root=1f00"
-                      " lpj=60176 slram=root,0x40000000,+1073741824");
+               strcat(arcs_cmdline, " rw root=1f00 slram=root,0x40000000,+1073741824");
        }
 
        mips_hpt_frequency = octeon_get_clock_rate();
 
        octeon_init_cvmcount();
+       octeon_setup_delays();
 
        _machine_restart = octeon_restart;
        _machine_halt = octeon_halt;
 
-       memset(&octeon_port, 0, sizeof(octeon_port));
-       /*
-        * For early_serial_setup we don't set the port type or
-        * UPF_FIXED_TYPE.
-        */
-       octeon_port.flags = ASYNC_SKIP_TEST | UPF_SHARE_IRQ;
-       octeon_port.iotype = UPIO_MEM;
-       /* I/O addresses are every 8 bytes */
-       octeon_port.regshift = 3;
-       /* Clock rate of the chip */
-       octeon_port.uartclk = mips_hpt_frequency;
-       octeon_port.fifosize = 64;
-       octeon_port.mapbase = 0x0001180000000800ull + (1024 * octeon_uart);
-       octeon_port.membase = cvmx_phys_to_ptr(octeon_port.mapbase);
-       octeon_port.serial_in = octeon_serial_in;
-       octeon_port.serial_out = octeon_serial_out;
-#ifdef CONFIG_CAVIUM_OCTEON_2ND_KERNEL
-       octeon_port.line = 0;
-#else
-       octeon_port.line = octeon_uart;
-#endif
-       octeon_port.irq = 42 + octeon_uart;
-       early_serial_setup(&octeon_port);
-
        octeon_user_io_init();
        register_smp_ops(&octeon_smp_ops);
 }
@@ -716,7 +687,10 @@ void __init plat_mem_setup(void)
                      "cvmx_bootmem_phy_alloc\n");
 }
 
-
+/*
+ * Emit one character to the boot UART.  Exported for use by the
+ * watchdog timer.
+ */
 int prom_putchar(char c)
 {
        uint64_t lsrval;
@@ -727,9 +701,10 @@ int prom_putchar(char c)
        } while ((lsrval & 0x20) == 0);
 
        /* Write the byte */
-       cvmx_write_csr(CVMX_MIO_UARTX_THR(octeon_uart), c);
+       cvmx_write_csr(CVMX_MIO_UARTX_THR(octeon_uart), c & 0xffull);
        return 1;
 }
+EXPORT_SYMBOL(prom_putchar);
 
 void prom_free_prom_memory(void)
 {