|
|
1.1 root 1: /*
2: * Mach Operating System
3: * Copyright (c) 1991,1990,1989 Carnegie Mellon University
4: * All Rights Reserved.
5: *
6: * Permission to use, copy, modify and distribute this software and its
7: * documentation is hereby granted, provided that both the copyright
8: * notice and this permission notice appear in all copies of the
9: * software, derivative works or modified versions, and any portions
10: * thereof, and that both notices appear in supporting documentation.
11: *
12: * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
13: * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
14: * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
15: *
16: * Carnegie Mellon requests users of this software to return to
17: *
18: * Software Distribution Coordinator or [email protected]
19: * School of Computer Science
20: * Carnegie Mellon University
21: * Pittsburgh PA 15213-3890
22: *
23: * any improvements or extensions that they make and grant Carnegie Mellon
24: * the rights to redistribute these changes.
25: */
26: /*
27: * File: screen_switch.c
28: * Author: Alessandro Forin, Carnegie Mellon University
29: * Date: 9/90
30: *
31: * Autoconfiguration code for the Generic Screen Driver.
32: */
33:
34: #include <platforms.h>
35:
36: #if defined(DECSTATION) || defined(FLAMINGO)
37: #include <fb.h>
38: #include <gx.h>
39: #include <cfb.h>
40: #include <mfb.h>
41: #include <xcfb.h>
42: #include <sfb.h>
43: #endif
44:
45: #ifdef VAXSTATION
46: #define NGX 0
47: #define NCFB 0
48: #define NXCFB 0
49: #endif
50:
51: #include <chips/screen_switch.h>
52:
53: /* When nothing needed */
54: int screen_noop()
55: {}
56:
57: /*
58: * Vector of graphic interface drivers to probe.
59: * Zero terminate this list.
60: */
61:
62:
63: #if NGX > 0
64: extern int gq_probe(), gq_cold_init();
65: extern unsigned int gq_mem_need();
66:
67: extern int ga_probe(), ga_cold_init();
68: extern unsigned int ga_mem_need();
69: #endif /* NGX > 0 */
70:
71: #if NCFB > 0
72: extern int cfb_probe(), cfb_cold_init();
73: extern unsigned int pm_mem_need();
74: #endif /* NCFB > 0 */
75:
76: #if NMFB > 0
77: extern int fb_probe(), fb_cold_init();
78: extern unsigned int pm_mem_need();
79: #endif /* NMFB > 0 */
80:
81: #if NXCFB > 0
82: extern int xcfb_probe(), xcfb_cold_init();
83: extern unsigned int pm_mem_need();
84: #endif /* NXCFB > 0 */
85:
86: #if NSFB > 0
87: extern int sfb_probe(), sfb_cold_init();
88: extern unsigned int pm_mem_need();
89: #endif /* NSFB > 0 */
90:
91: #if NFB > 0
92: extern int pm_probe(), pm_cold_init();
93: extern unsigned int pm_mem_need();
94: #endif /* NFB > 0 */
95:
96: struct screen_probe_vector screen_probe_vector[] = {
97:
98: #if NGX > 0
99: gq_probe, gq_mem_need, gq_cold_init, /* 3max 3D color option */
100: ga_probe, ga_mem_need, ga_cold_init, /* 3max 2D color option */
101: #endif /* NGX > 0 */
102:
103: #if NSFB > 0
104: sfb_probe, pm_mem_need, sfb_cold_init, /* Smart frame buffer */
105: #endif /* NSFB > 0 */
106:
107: #if NMFB > 0
108: fb_probe, pm_mem_need, fb_cold_init, /* 3max/3min 1D(?) mono option */
109: #endif /* NMFB > 0 */
110:
111: #if NCFB > 0
112: cfb_probe, pm_mem_need, cfb_cold_init, /* 3max 1D(?) color option */
113: #endif /* NCFB > 0 */
114:
115: #if NXCFB > 0
116: xcfb_probe, pm_mem_need, xcfb_cold_init,/* MAXine frame buffer */
117: #endif /* NXCFB > 0 */
118:
119: #if NFB > 0
120: pm_probe, pm_mem_need, pm_cold_init, /* "pm" mono/color (pmax) */
121: #endif
122: 0,
123: };
124:
125: char *screen_data; /* opaque */
126:
127: int screen_find()
128: {
129: struct screen_probe_vector *p = screen_probe_vector;
130: for (;p->probe; p++)
131: if ((*p->probe)()) {
132: (*p->setup)(0/*XXX*/, screen_data);
133: return 1;
134: }
135: return 0;
136: }
137:
138: unsigned int
139: screen_memory_alloc(avail)
140: char *avail;
141: {
142: struct screen_probe_vector *p = screen_probe_vector;
143: int size;
144: for (; p->probe; p++)
145: if ((*p->probe) ()) {
146: screen_data = avail;
147: size = (*p->alloc) ();
148: bzero(screen_data, size);
149: return size;
150: }
151: return 0;
152:
153: }
154:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.