From 6e198650e987488632ff81c2bc538bf5ea299fcf Mon Sep 17 00:00:00 2001 From: Vladimir 'phcoder' Serbinenko Date: Sat, 22 May 2010 23:36:44 +0200 Subject: [PATCH] Enable serial in simulcast with local terminal on yeeloong --- conf/mips-qemu-mips.rmk | 6 ++++++ conf/mips.rmk | 6 ------ kern/mips/yeeloong/init.c | 5 +++++ term/serial.c | 15 +++++++++++++++ 4 files changed, 26 insertions(+), 6 deletions(-) diff --git a/conf/mips-qemu-mips.rmk b/conf/mips-qemu-mips.rmk index 2f80ab2e3..0d81bbe8b 100644 --- a/conf/mips-qemu-mips.rmk +++ b/conf/mips-qemu-mips.rmk @@ -20,3 +20,9 @@ kernel_img_CFLAGS = $(COMMON_CFLAGS) kernel_img_ASFLAGS = $(COMMON_ASFLAGS) kernel_img_LDFLAGS = $(COMMON_LDFLAGS) -Wl,-N,-S,-Ttext,$(LINK_BASE),-Bstatic kernel_img_FORMAT = binary + +# For serial.mod. +pkglib_MODULES += serial.mod +serial_mod_SOURCES = term/serial.c +serial_mod_CFLAGS = $(COMMON_CFLAGS) +serial_mod_LDFLAGS = $(COMMON_LDFLAGS) diff --git a/conf/mips.rmk b/conf/mips.rmk index 7d30f55f1..26c516fc4 100644 --- a/conf/mips.rmk +++ b/conf/mips.rmk @@ -10,12 +10,6 @@ kernel_img_HEADERS += cpu/cache.h sbin_SCRIPTS = bin_SCRIPTS = -# For serial.mod. -pkglib_MODULES += serial.mod -serial_mod_SOURCES = term/serial.c -serial_mod_CFLAGS = $(COMMON_CFLAGS) -serial_mod_LDFLAGS = $(COMMON_LDFLAGS) - # For relocator.mod. pkglib_MODULES += relocator.mod relocator_mod_SOURCES = lib/$(target_cpu)/relocator.c lib/$(target_cpu)/relocator_asm.S diff --git a/kern/mips/yeeloong/init.c b/kern/mips/yeeloong/init.c index 826659968..78586dbd4 100644 --- a/kern/mips/yeeloong/init.c +++ b/kern/mips/yeeloong/init.c @@ -37,6 +37,8 @@ extern void grub_bitmap_init (void); extern void grub_font_init (void); extern void grub_gfxterm_init (void); extern void grub_at_keyboard_init (void); +extern void grub_serial_init (void); +extern void grub_terminfo_init (void); /* FIXME: use interrupt to count high. */ grub_uint64_t @@ -183,6 +185,9 @@ grub_machine_init (void) grub_gfxterm_init (); grub_at_keyboard_init (); + + grub_terminfo_init (); + grub_serial_init (); } void diff --git a/term/serial.c b/term/serial.c index b16b608f1..ef9efac2e 100644 --- a/term/serial.c +++ b/term/serial.c @@ -636,6 +636,21 @@ GRUB_MOD_INIT(serial) serial_settings.word_len = UART_8BITS_WORD; serial_settings.parity = UART_NO_PARITY; serial_settings.stop_bits = UART_1_STOP_BIT; + +#ifdef GRUB_MACHINE_MIPS_YEELOONG + { + grub_err_t hwiniterr; + hwiniterr = serial_hw_init (); + + if (hwiniterr == GRUB_ERR_NONE) + { + grub_term_register_input_active ("serial", &grub_serial_term_input); + grub_term_register_output_active ("serial", &grub_serial_term_output); + + registered = 1; + } + } +#endif } GRUB_MOD_FINI(serial)