patch-2.4.22 linux-2.4.22/arch/mips/sgi-ip27/ip27-console.c
Next file: linux-2.4.22/arch/mips/sgi-ip27/ip27-init.c
Previous file: linux-2.4.22/arch/mips/sgi-ip27/ip27-berr.c
Back to the patch index
Back to the overall index
- Lines: 83
- Date:
2003-08-25 04:44:40.000000000 -0700
- Orig file:
linux-2.4.21/arch/mips/sgi-ip27/ip27-console.c
- Orig date:
2002-11-28 15:53:10.000000000 -0800
diff -urN linux-2.4.21/arch/mips/sgi-ip27/ip27-console.c linux-2.4.22/arch/mips/sgi-ip27/ip27-console.c
@@ -3,25 +3,35 @@
* License. See the file "COPYING" in the main directory of this archive
* for more details.
*
- * Copyright (C) 2001 Ralf Baechle
+ * Copyright (C) 2001, 2002 Ralf Baechle
*/
#include <linux/init.h>
#include <linux/console.h>
#include <linux/kdev_t.h>
#include <linux/major.h>
+#include <linux/serial.h>
+#include <asm/page.h>
#include <asm/sn/addrs.h>
#include <asm/sn/sn0/hub.h>
#include <asm/sn/klconfig.h>
#include <asm/sn/ioc3.h>
#include <asm/sn/sn_private.h>
-void prom_putchar(char c)
+#define IOC3_BAUD (22000000 / (3*16))
+#define IOC3_COM_FLAGS (ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST)
+
+static inline struct ioc3_uartregs *console_uart(void)
{
struct ioc3 *ioc3;
- struct ioc3_uartregs *uart;
- ioc3 = (struct ioc3 *)KL_CONFIG_CH_CONS_INFO(master_nasid)->memory_base;
- uart = &ioc3->sregs.uarta;
+ ioc3 = (struct ioc3 *)KL_CONFIG_CH_CONS_INFO(get_nasid())->memory_base;
+
+ return &ioc3->sregs.uarta;
+}
+
+void prom_putchar(char c)
+{
+ struct ioc3_uartregs *uart = console_uart();
while ((uart->iu_lsr & 0x20) == 0);
uart->iu_thr = c;
@@ -32,27 +42,24 @@
return 0;
}
-static void
-ip27prom_console_write(struct console *con, const char *s, unsigned n)
+static void inline ioc3_console_probe(void)
{
- prom_printf("%s", s);
-}
+ struct serial_struct req;
-static kdev_t
-ip27prom_console_dev(struct console *c)
-{
- return MKDEV(TTY_MAJOR, 64 + c->index);
-}
+ /* Register to interrupt zero because we share the interrupt with
+ the serial driver which we don't properly support yet. */
+ memset(&req, 0, sizeof(req));
+ req.irq = 0;
+ req.flags = IOC3_COM_FLAGS;
+ req.io_type = SERIAL_IO_MEM;
+ req.iomem_reg_shift = 0;
+ req.baud_base = IOC3_BAUD;
-static struct console ip27_prom_console = {
- name: "prom",
- write: ip27prom_console_write,
- device: ip27prom_console_dev,
- flags: CON_PRINTBUFFER,
- index: -1,
-};
+ req.iomem_base = (unsigned char *) console_uart();
+ register_serial(&req);
+}
__init void ip27_setup_console(void)
{
- register_console(&ip27_prom_console);
+ ioc3_console_probe();
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)