diff options
author | Miguel de Icaza <miguel@nuclecu.unam.mx> | 1997-07-16 02:50:37 +0000 |
---|---|---|
committer | Miguel de Icaza <miguel@nuclecu.unam.mx> | 1997-07-16 02:50:37 +0000 |
commit | fee03799b95240471d9007e4ccd2d6aad73c6450 (patch) | |
tree | 74e9a5f99b510f99950ecdfc0713ffec8ebf321c /drivers/sgi/char/cons_newport.c | |
parent | e17d5d293c793bf9ba97c6fde9f07debba4dda38 (diff) |
o Implement /dev/graphics virtualizable access to
registers. The actual context switch code is not
yet there. But the rest of the magic (mapping/unmapping
the registers on demand is already in).
o Interface for allowing binary-only console modules added.
o My RRM bits, nothing really interesting now.
For now, I am assuming in the code that there will be a minor per
real graphics device, and that the X server will go and open
/dev/graphicsN instead of opening /dev/graphics and using the
gfx_attach_board->board variable.
The interface the X server uses is not clear.
I believe it will be pretty easy to provide the stripped down
shmiq interface. Not only that, but we can even provide the
same ABI (yes, ABI) for SGI shmiq input modules (yep, looks
pretty easy once you have an strace that shows this information).
Now, the only thing missing is figuring what is wrong my current
conception of the use of shmiq. I just can't get it.
Diffstat (limited to 'drivers/sgi/char/cons_newport.c')
-rw-r--r-- | drivers/sgi/char/cons_newport.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/drivers/sgi/char/cons_newport.c b/drivers/sgi/char/cons_newport.c index 94c61ec91..154ffdb57 100644 --- a/drivers/sgi/char/cons_newport.c +++ b/drivers/sgi/char/cons_newport.c @@ -1,4 +1,4 @@ -/* $Id: newport.c,v 1.2 1997/06/17 11:15:12 ralf Exp $ +/* $Id: cons_newport.c,v 1.1 1997/07/02 06:20:17 miguel Exp $ * cons_newport.c: Newport graphics console code for the SGI. * * Copyright (C) 1996 David S. Miller (dm@engr.sgi.com) @@ -541,14 +541,15 @@ struct ng1_info newport_board_info = { /* right now the newport does not do anything at all */ struct graphics_ops newport_graphic_ops = { 0, /* owner */ - + 0, /* current user */ (void *) &newport_board_info, /* board info */ sizeof (struct ng1_info), /* size of our data structure */ + 0, 0, /* g_regs, g_regs_size */ 0, 0 /* save_context, restore_context */ }; struct graphics_ops * -newport_probe (int slot, struct console_ops *cops, char **name) +newport_probe (int slot, const char **name) { struct newport_regs *p; @@ -567,9 +568,8 @@ newport_probe (int slot, struct console_ops *cops, char **name) return 0; } - /* It may be null if we are not the first graphics card on the system */ - if (cops != NULL){ - *cops = newport_console; + if (slot == 0){ + register_gconsole (&newport_console); video_type = VIDEO_TYPE_SGI; can_do_color = 1; *name = "NEWPORT"; @@ -594,5 +594,7 @@ newport_probe (int slot, struct console_ops *cops, char **name) #if 0 newport_render_logo(); #endif + newport_graphic_ops.g_regs = 0x1f0f0000; + newport_graphic_ops.g_regs_size = sizeof (struct newport_regs); return &newport_graphic_ops; } |