]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
MIPS qemu at_keyboard support.
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Tue, 5 Jul 2011 19:00:01 +0000 (21:00 +0200)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Tue, 5 Jul 2011 19:00:01 +0000 (21:00 +0200)
* gentpl.py (videoinkernel): Add qemu-mips.
* grub-core/Makefile.am (KERNEL_HEADER_FILES): Add necessary headers.
* grub-core/Makefile.core.def (kernel): Add at_keyboard and layout.
* grub-core/kern/mips/qemu_mips/init.c (grub_machine_init): Init new
modules.
* grub-core/term/at_keyboard.c (grub_keyboard_controller_init)
[GRUB_MACHINE_MIPS_QEMU_MIPS]: Don't consider original set.
* grub-core/term/serial.c (grub_serial_register)
[GRUB_MACHINE_MIPS_QEMU_MIPS]: Make com0 explicitly active.

ChangeLog
gentpl.py
grub-core/Makefile.am
grub-core/Makefile.core.def
grub-core/kern/mips/qemu_mips/init.c
grub-core/term/at_keyboard.c
grub-core/term/serial.c
include/grub/mips/qemu_mips/at_keyboard.h [new file with mode: 0644]

index 694a9797266664589d4aff055041c65abc1116ed..644a7cf6a1fb06884ac94cbe671c82c4a2bb7b2c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2011-07-05  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       MIPS qemu at_keyboard support.
+
+       * gentpl.py (videoinkernel): Add qemu-mips.
+       * grub-core/Makefile.am (KERNEL_HEADER_FILES): Add necessary headers.
+       * grub-core/Makefile.core.def (kernel): Add at_keyboard and layout.
+       * grub-core/kern/mips/qemu_mips/init.c (grub_machine_init): Init new
+       modules.
+       * grub-core/term/at_keyboard.c (grub_keyboard_controller_init)
+       [GRUB_MACHINE_MIPS_QEMU_MIPS]: Don't consider original set.
+       * grub-core/term/serial.c (grub_serial_register)
+       [GRUB_MACHINE_MIPS_QEMU_MIPS]: Make com0 explicitly active.
+
 2011-07-05  Vladimir Serbinenko  <phcoder@gmail.com>
 
        CMOS support on sparc.
index 31cde1e819c560c751af92384a7e22dd14be67d9..e431293eb69a5dd4fadd75087d18b4e2b59e952d 100644 (file)
--- a/gentpl.py
+++ b/gentpl.py
@@ -37,7 +37,7 @@ GROUPS["pci"]      = GROUPS["x86"] + ["mips_loongson"]
 GROUPS["usb"]      = GROUPS["pci"]
 
 # If gfxterm is main output console integrate it into kernel
-GROUPS["videoinkernel"] = ["mips_loongson"]
+GROUPS["videoinkernel"] = ["mips_loongson", "mips_qemu_mips"]
 GROUPS["videomodules"]   = GRUB_PLATFORMS[:];
 for i in GROUPS["videoinkernel"]: GROUPS["videomodules"].remove(i)
 
index c3ecba9cf90eeb34c6ffef370449dcdd0e25da0c..28a143413bfb16c60cf375b017e1e4e0725025cd 100644 (file)
@@ -145,7 +145,20 @@ KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/arc/arc.h
 endif
 
 if COND_mips_qemu_mips
+KERNEL_HEADER_FILES += $(top_builddir)/include/grub/keyboard_layouts.h
+KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/kernel.h
+KERNEL_HEADER_FILES += $(top_builddir)/include/grub/cpu/cache.h
+KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/bitmap.h
+KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/video.h
+KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/gfxterm.h
+KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/font.h
+KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/bitmap_scale.h
+KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/bufio.h
+KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/serial.h
+KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/loader.h
+KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/terminfo.h
 KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/extcmd.h
+KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/lib/arg.h
 endif
 
 if COND_mips_loongson
index 16c940c613253c8aa26b38309cb367038b45b840..328f7186fa36dc60ccb6cff3e044fc199f0e2560 100644 (file)
@@ -162,6 +162,8 @@ kernel = {
   mips_qemu_mips = kern/mips/qemu_mips/init.c;
   mips_qemu_mips = term/ns8250.c;
   mips_qemu_mips = term/serial.c;
+  mips_qemu_mips = term/at_keyboard.c;
+  mips_qemu_mips = commands/keylayouts.c;
 
   mips_arc = kern/mips/arc/init.c;
   mips_arc = term/arc/console.c;
index 2180b347aa5a3d69080de2bd8113b40eeff20413..2016aeb3d31a9ccda4c580282cbb1589288ce7bc 100644 (file)
 
 extern void grub_serial_init (void);
 extern void grub_terminfo_init (void);
+extern void grub_at_keyboard_init (void);
+extern void grub_video_init (void);
+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);
+extern void grub_keylayouts_init (void);
+extern void grub_boot_init (void);
 
 void
 grub_machine_init (void)
@@ -27,8 +37,18 @@ grub_machine_init (void)
 
   grub_install_get_time_ms (grub_rtc_get_time_ms);
 
+  grub_video_init ();
+  grub_bitmap_init ();
+  grub_font_init ();
+  grub_gfxterm_init ();
+
+  grub_keylayouts_init ();
+  grub_at_keyboard_init ();
+
   grub_terminfo_init ();
   grub_serial_init ();
+
+  grub_boot_init ();
 }
 
 void
index e86df6f35371595c97559115580ffec22649b3c7..b81e76230b58d032a820225dbb7d1b8b59210e2d 100644 (file)
@@ -259,7 +259,7 @@ grub_keyboard_controller_write (grub_uint8_t c)
   grub_outb (c, KEYBOARD_REG_DATA);
 }
 
-#if !defined (GRUB_MACHINE_MIPS_LOONGSON) && !defined (GRUB_MACHINE_QEMU)
+#if !defined (GRUB_MACHINE_MIPS_LOONGSON) && !defined (GRUB_MACHINE_QEMU) && !defined (GRUB_MACHINE_MIPS_QEMU_MIPS)
 
 static grub_uint8_t
 grub_keyboard_controller_read (void)
@@ -569,7 +569,7 @@ grub_keyboard_controller_init (struct grub_term_input *term __attribute__ ((unus
       keyboard_controller_wait_until_ready ();
       grub_inb (KEYBOARD_REG_DATA);
     }
-#if defined (GRUB_MACHINE_MIPS_LOONGSON) || defined (GRUB_MACHINE_QEMU)
+#if defined (GRUB_MACHINE_MIPS_LOONGSON) || defined (GRUB_MACHINE_QEMU) || defined (GRUB_MACHINE_MIPS_QEMU_MIPS)
   grub_keyboard_controller_orig = 0;
   grub_keyboard_orig_set = 2;
 #else
index add112f4ad245dfdf302f235d790e2fa97dc822e..0381349a4aa78b90d252e9fc849648136f5fa438 100644 (file)
@@ -313,6 +313,17 @@ grub_serial_register (struct grub_serial_port *port)
       grub_term_register_input_inactive ("serial_*", in);
       grub_term_register_output_inactive ("serial_*", out);
     }
+#elif defined (GRUB_MACHINE_MIPS_QEMU_MIPS)
+  if (grub_strcmp (port->name, "com0") == 0)
+    {
+      grub_term_register_input_active ("serial_*", in);
+      grub_term_register_output_active ("serial_*", out);
+    }
+  else
+    {
+      grub_term_register_input_inactive ("serial_*", in);
+      grub_term_register_output_inactive ("serial_*", out);
+    }
 #else
   grub_term_register_input ("serial_*", in);
   grub_term_register_output ("serial_*", out);
diff --git a/include/grub/mips/qemu_mips/at_keyboard.h b/include/grub/mips/qemu_mips/at_keyboard.h
new file mode 100644 (file)
index 0000000..37cc625
--- /dev/null
@@ -0,0 +1,25 @@
+/*
+ *  GRUB  --  GRand Unified Bootloader
+ *  Copyright (C) 2007,2008,2009  Free Software Foundation, Inc.
+ *
+ *  GRUB is free software: you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation, either version 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  GRUB is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef GRUB_MACHINE_AT_KEYBOARD_HEADER
+#define GRUB_MACHINE_AT_KEYBOARD_HEADER        1
+
+#define KEYBOARD_REG_DATA      0xb4000060
+#define KEYBOARD_REG_STATUS    0xb4000064
+
+#endif