patch-2.1.73 linux/drivers/sgi/char/sgicons.c
Next file: linux/drivers/sgi/char/sgiserial.c
Previous file: linux/drivers/sgi/char/rrm.c
Back to the patch index
Back to the overall index
- Lines: 184
- Date:
Wed Dec 10 10:31:11 1997
- Orig file:
v2.1.72/linux/drivers/sgi/char/sgicons.c
- Orig date:
Wed Dec 31 16:00:00 1969
diff -u --recursive --new-file v2.1.72/linux/drivers/sgi/char/sgicons.c linux/drivers/sgi/char/sgicons.c
@@ -0,0 +1,183 @@
+/*
+ * sgicons.c: Setting up and registering console I/O on the SGI.
+ *
+ * Copyright (C) 1996 David S. Miller (dm@engr.sgi.com)
+ * Copyright (C) 1997 Miguel de Icaza (miguel@nuclecu.unam.mx)
+ *
+ * This implement a virtual console interface.
+ *
+ * This should be replaced with Gert's all-singing all-dancing
+ * graphics console code in the future
+ *
+ */
+#include <linux/init.h>
+#include <linux/kernel.h>
+#include <linux/errno.h>
+#include <asm/uaccess.h>
+#include "gconsole.h"
+
+/* To make psaux code cleaner */
+int aux_device_present = 0xaa;
+
+/* This is the system graphics console (the first adapter found) */
+struct console_ops *gconsole = 0;
+struct console_ops *real_gconsole = 0;
+
+void
+enable_gconsole (void)
+{
+ if (!gconsole)
+ gconsole = real_gconsole;
+}
+
+void
+disable_gconsole (void)
+{
+ if (gconsole){
+ real_gconsole = gconsole;
+ gconsole = 0;
+ }
+}
+
+void
+register_gconsole (struct console_ops *gc)
+{
+ if (gconsole)
+ return;
+ gconsole = gc;
+}
+
+void
+__set_origin (unsigned short offset)
+{
+ if (gconsole)
+ (*gconsole->set_origin)(offset);
+}
+
+void
+hide_cursor (void)
+{
+
+ if (gconsole)
+ (*gconsole->hide_cursor)();
+}
+
+void
+set_cursor (int currcons)
+{
+ if (gconsole)
+ (*gconsole->set_cursor)(currcons);
+}
+
+void
+get_scrmem (int currcons)
+{
+ if (gconsole)
+ (*gconsole->get_scrmem)(currcons);
+}
+
+void
+set_scrmem (int currcons, long offset)
+{
+ if (gconsole)
+ (*gconsole->set_scrmem)(currcons, offset);
+}
+
+int
+set_get_cmap (unsigned char *arg, int set)
+{
+ if (gconsole)
+ return (*gconsole->set_get_cmap)(arg, set);
+ return 0;
+}
+
+void
+blitc (unsigned short charattr, unsigned long addr)
+{
+ if (gconsole)
+ (*gconsole->blitc)(charattr, addr);
+}
+
+void
+memsetw (void *s, unsigned short c, unsigned int count)
+{
+ if (gconsole)
+ (*gconsole->memsetw)(s, c, count);
+}
+
+void
+memcpyw (unsigned short *to, unsigned short *from, unsigned int count)
+{
+ if (gconsole)
+ (*gconsole->memcpyw)(to, from, count);
+}
+
+int
+con_adjust_height (unsigned long fontheight)
+{
+ return -EINVAL;
+}
+
+int
+set_get_font (char *arg, int set, int ch512)
+{
+ int error, i, line;
+
+ if (!arg)
+ return -EINVAL;
+ error = verify_area (set ? VERIFY_READ : VERIFY_WRITE, (void *) arg,
+ ch512 ? 2* cmapsz : cmapsz);
+ if (error)
+ return error;
+
+ /* download the current font */
+ if (!set) {
+ memset (arg, 0, cmapsz);
+ for (i = 0; i < 256; i++) {
+ for (line = 0; line < CHAR_HEIGHT; line++)
+ __put_user (vga_font [i], arg+(i*32+line));
+ }
+ return 0;
+ }
+
+ /* set the font */
+ for (i = 0; i < 256; i++) {
+ for (line = 0; line < CHAR_HEIGHT; line++) {
+ __get_user(vga_font [i*CHAR_HEIGHT + line],
+ arg + (i * 32 + line));
+ }
+ }
+ return 0;
+}
+
+/*
+ * dummy routines for the VESA blanking code, which is VGA only,
+ * so we don't have to carry that stuff around for the Sparc... */
+void vesa_blank(void) { }
+void vesa_unblank(void) { }
+void set_vesa_blanking(const unsigned long arg) { }
+void vesa_powerdown(void) { }
+void set_palette (void) { }
+
+extern unsigned long video_mem_base, video_screen_size, video_mem_term;
+
+__initfunc(unsigned long con_type_init(unsigned long start_mem, const char **name))
+{
+ extern int serial_console;
+
+ if (serial_console)
+ *name = "NONE";
+ else {
+ gfx_init (name);
+ printk("Video screen size is %08lx at %08lx\n",
+ video_screen_size, start_mem);
+ video_mem_base = start_mem;
+ start_mem += (video_screen_size * 2);
+ video_mem_term = start_mem;
+ }
+ return start_mem;
+}
+
+__initfunc(void con_type_init_finish(void))
+{
+}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov