Commit | Line | Data |
---|---|---|
a09e091a JB |
1 | #!/bin/sh |
2 | # | |
3 | # This is a shell archive. Save it in a file, remove anything before | |
4 | # this line, and then unpack it by entering "sh file". Note, it may | |
5 | # create directories; files and directories will be owned by you and | |
6 | # have default permissions. | |
7 | # Made on Sun Jun 25 20:24:59 CEST 2006 by Martin Bochnig at martux.org | |
8 | # | |
9 | # This archive contains: | |
10 | # | |
11 | # ./aperture | |
12 | # | |
13 | # ./aperture/Makefile | |
14 | # ./aperture/Makefile.amd64 | |
15 | # ./aperture/Makefile.sparcv9 | |
16 | # ./aperture/README | |
17 | # ./aperture/aperture.c | |
18 | # ./aperture/aperture.conf | |
19 | # ./aperture/devlink.tab | |
20 | # | |
21 | echo c - ./aperture | |
22 | mkdir -p ./aperture > /dev/null 2>&1 | |
23 | # | |
24 | echo x - ./aperture/Makefile | |
25 | sed 's/^X//' >./aperture/Makefile << 'END-of-./aperture/Makefile' | |
26 | X# | |
27 | X# File: makefile for aperture Framebuffer Driver | |
28 | X# Author: Doug Anson (danson@lgc.com) | |
29 | X# Date: 2/15/94 | |
30 | X# Modified: David Holland (davidh@use.com) | |
31 | X# Date: 2/23/94 | |
32 | X# - Changed name, and debugging structure | |
33 | X# Modified: Marc Aurele La France (tsi@xfree86.org) | |
34 | X# Date: 2001.06.08 | |
35 | X# - SPARC support, cleanup and turf aptest. | |
36 | X# | |
37 | X# >>NOTE<< Have a look at Makefile.sparcv9 for specifics. | |
38 | X# | |
39 | X# Modified: Martin Bochnig (martin@martux.org) | |
40 | X# Date: 2006.06.24 | |
41 | X# - Slightly modified to also build on Solaris 10 and 11. | |
42 | X# - amd64 64 bit kernel support | |
43 | X# - cosmetical changes to also support sun4v, not only sun4u | |
44 | X# | |
45 | X# >>NOTE<< Have a look at Makefile.amd64 for amd64 specifics. | |
46 | X# | |
47 | X# GNU gcc compiler | |
48 | XCC=gcc | |
49 | XCFLGS=-fno-builtin -Wall -O3 | |
50 | X | |
51 | X# | |
52 | X# SUNWspro compiler | |
53 | X#CC=/opt/SUNWspro/bin/cc | |
54 | X#CFLGS=-Xa -xnolib -xO3 | |
55 | X | |
56 | X# | |
57 | X# Debug error reporting | |
58 | X#DEBUG_FLG= | |
59 | X#DEBUG_FLG=-DAPERTURE_DEBUG | |
60 | X | |
61 | X# | |
62 | X# Files and object declarations | |
63 | XKERNEL_FLGS=-D_KERNEL -DSUNDDI | |
64 | XCFLAGS= $(CFLGS) $(KERNEL_FLGS) $(DEBUG_FLG) | |
65 | XCFILES= aperture.c | |
66 | XOBJS= aperture.o | |
67 | XDRIVER= aperture | |
68 | X | |
69 | X# | |
70 | X# Make rules | |
71 | Xall: $(DRIVER) | |
72 | X | |
73 | X$(DRIVER): $(OBJS) | |
74 | X @if [ -f "Makefile.`isainfo -k`" ]; then \ | |
75 | X make -f Makefile.`isainfo -k` $(DRIVER); \ | |
76 | X else \ | |
77 | X rm -f $(DRIVER); \ | |
78 | X ld -r -o $(DRIVER) $(OBJS); \ | |
79 | X fi | |
80 | X | |
81 | Xinstall: $(DRIVER) | |
82 | X @if [ -f "Makefile.`isainfo -k`" ]; then \ | |
83 | X make -f Makefile.`isainfo -k` install; \ | |
84 | X else \ | |
85 | X cp aperture.conf /kernel/drv; \ | |
86 | X cp $(DRIVER) /kernel/drv; \ | |
87 | X fi | |
88 | X | |
89 | Xadd_drv: | |
90 | X @if [ -f "Makefile.`isainfo -k`" ]; then \ | |
91 | X make -f Makefile.`isainfo -k` add_drv; \ | |
92 | X else \ | |
93 | X add_drv aperture; \ | |
94 | X fi | |
95 | X | |
96 | Xclean: | |
97 | X rm -f *% *.BAK $(OBJS) $(DRIVER) core | |
98 | X | |
99 | X.SUFFIXES: .i | |
100 | X | |
101 | X.c.i: | |
102 | X $(CC) -E $(CFLAGS) $*.c > $@ | |
103 | X | |
104 | X.c.o: | |
105 | X @if [ -f "Makefile.`isainfo -k`" ]; then \ | |
106 | X make -f Makefile.`isainfo -k` $@; \ | |
107 | X else \ | |
108 | X rm -f $@; \ | |
109 | X $(CC) -c $(CFLAGS) $*.c -o $@; \ | |
110 | X fi | |
111 | END-of-./aperture/Makefile | |
112 | echo x - ./aperture/Makefile.amd64 | |
113 | sed 's/^X//' >./aperture/Makefile.amd64 << 'END-of-./aperture/Makefile.amd64' | |
114 | X# | |
115 | X# File: Makefile for aperture Framebuffer Driver | |
116 | X# Author: Doug Anson (danson@lgc.com) | |
117 | X# Date: 2/15/94 | |
118 | X# Modified: David Holland (davidh@use.com) | |
119 | X# Date: 2/23/94 | |
120 | X# - Changed name, and debugging structure | |
121 | X# Modified: Marc Aurele La France (tsi@xfree86.org) | |
122 | X# Date: 2001.06.08 | |
123 | X# - SPARC support, cleanup and turf aptest. | |
124 | X# Modified: Martin Bochnig (martin@martux.org) | |
125 | X# - amd64 64 bit kernel support, cosmetics and also | |
126 | X# supporting sun4v (and arbitrary sparcv9) platforms | |
127 | X# as well as SunOS 5.10 or higher now | |
128 | X# - Changed name | |
129 | X# | |
130 | X | |
131 | X# | |
132 | X# GNU gcc compiler, version 3.2 or later | |
133 | X# | |
134 | XCC=gcc | |
135 | XCFLGS=-fno-builtin -Wall -O3 -m64 -mcmodel=kernel | |
136 | X | |
137 | X# | |
138 | X# SUNWspro compiler (untested, might not properly work for amd64 here) | |
139 | X#CC=/opt/SUNWspro/bin/cc | |
140 | X#CFLGS=-Xa -xarch=v9 -xnolib -xO3 | |
141 | X | |
142 | X# | |
143 | X# Debug error reporting | |
144 | X#DEBUG_FLG= | |
145 | X#DEBUG_FLG=-DAPERTURE_DEBUG | |
146 | X | |
147 | X# | |
148 | X# Files and object declarations | |
149 | XKERNEL_FLGS=-D_KERNEL -DSUNDDI | |
150 | XCFLAGS= $(CFLGS) $(KERNEL_FLGS) $(DEBUG_FLG) | |
151 | XCFILES= aperture.c | |
152 | XOBJS= aperture.o | |
153 | XDRIVER= aperture | |
154 | X | |
155 | X# | |
156 | X# Make rules | |
157 | Xall: $(DRIVER) | |
158 | X | |
159 | X$(DRIVER): $(OBJS) | |
160 | X rm -f $(DRIVER) | |
161 | X ld -r -o $(DRIVER) $(OBJS) | |
162 | X | |
163 | Xinstall: $(DRIVER) | |
164 | X cp aperture.conf /kernel/drv | |
165 | X cp $(DRIVER) /kernel/drv/amd64 | |
166 | X | |
167 | Xadd_drv: | |
168 | X add_drv aperture | |
169 | X | |
170 | Xclean: | |
171 | X rm -f *% *.BAK $(OBJS) $(DRIVER) core | |
172 | X | |
173 | X.SUFFIXES: .i | |
174 | X | |
175 | X.c.i: | |
176 | X $(CC) -E $(CFLAGS) $*.c > $@ | |
177 | END-of-./aperture/Makefile.amd64 | |
178 | echo x - ./aperture/Makefile.sparcv9 | |
179 | sed 's/^X//' >./aperture/Makefile.sparcv9 << 'END-of-./aperture/Makefile.sparcv9' | |
180 | X# | |
181 | X# File: makefile for aperture Framebuffer Driver | |
182 | X# Author: Doug Anson (danson@lgc.com) | |
183 | X# Date: 2/15/94 | |
184 | X# Modified: David Holland (davidh@use.com) | |
185 | X# Date: 2/23/94 | |
186 | X# - Changed name, and debugging structure | |
187 | X# Modified: Marc Aurele La France (tsi@xfree86.org) | |
188 | X# Date: 2001.06.08 | |
189 | X# - SPARC support, cleanup and turf aptest. | |
190 | X# Modified: Martin Bochnig (martin@martux.org) | |
191 | X# Date: 2006.06.24 | |
192 | X# - Changed name for generic sparcv9 support | |
193 | X# - updated to better work with Solaris 10 and 11 | |
194 | X# | |
195 | X | |
196 | X# | |
197 | X# GNU gcc compiler, version 3.2 or later | |
198 | X# | |
199 | XCC=gcc | |
200 | XCFLGS=-fno-builtin -Wall -O3 -m64 | |
201 | X | |
202 | X# | |
203 | X# SUNWspro compiler | |
204 | X#CC=/opt/SUNWspro/bin/cc | |
205 | X#CFLGS=-Xa -xarch=v9 -xnolib -xO3 | |
206 | X | |
207 | X# | |
208 | X# Debug error reporting | |
209 | X#DEBUG_FLG= | |
210 | X#DEBUG_FLG=-DAPERTURE_DEBUG | |
211 | X | |
212 | X# | |
213 | X# Files and object declarations | |
214 | XKERNEL_FLGS=-D_KERNEL -DSUNDDI | |
215 | XCFLAGS= $(CFLGS) $(KERNEL_FLGS) $(DEBUG_FLG) | |
216 | XCFILES= aperture.c | |
217 | XOBJS= aperture.o | |
218 | XDRIVER= aperture | |
219 | X | |
220 | X# | |
221 | X# Make rules | |
222 | Xall: $(DRIVER) | |
223 | X | |
224 | X$(DRIVER): $(OBJS) | |
225 | X rm -f $(DRIVER) | |
226 | X ld -r -o $(DRIVER) $(OBJS) | |
227 | X | |
228 | Xinstall: $(DRIVER) | |
229 | X cp aperture.conf /kernel/drv | |
230 | X cp $(DRIVER) /kernel/drv/sparcv9 | |
231 | X | |
232 | Xadd_drv: | |
233 | X add_drv aperture | |
234 | X | |
235 | Xclean: | |
236 | X rm -f *% *.BAK $(OBJS) $(DRIVER) core | |
237 | X | |
238 | X.SUFFIXES: .i | |
239 | X | |
240 | X.c.i: | |
241 | X $(CC) -E $(CFLAGS) $*.c > $@ | |
242 | END-of-./aperture/Makefile.sparcv9 | |
243 | echo x - ./aperture/README | |
244 | sed 's/^X//' >./aperture/README << 'END-of-./aperture/README' | |
245 | XFramebuffer aperture driver. | |
246 | X | |
247 | XThis driver was written to provide a device that, unlike /dev/mem, allows | |
248 | Xmmap()'ing of ranges beyond installed memory. | |
249 | X | |
250 | XThe original x86-based version of this driver was the collaborative work of | |
251 | XDoug Anson (danson@lgc.com), and David Holland (davidh@use.com). It has since | |
252 | Xbeen rewritten to also work on sparc machines and - later on - also on sparcv9 | |
253 | Xand recently amd64 64 bit kernels. | |
254 | XIt flawlessly compiles and installs on Solaris 10 and 11 now. | |
255 | X | |
256 | X | |
257 | XInstallation instructions: | |
258 | X | |
259 | X1) Check the Makefile, for appropriate CC, and CFLAGS definitions. Compiling | |
260 | X with APERTURE_DEBUG defined means the driver will generate reams of | |
261 | X debugging output. You'll probably want to leave this off... | |
262 | X | |
263 | X2) Type 'make' (or 'gmake'). Both the driver and test program should compile | |
264 | X without any problems. No warning messages should be generated. | |
265 | X | |
266 | X3) Become 'root'. | |
267 | X | |
268 | X4) Type 'make install' and 'make add_drv'. The screen should look something | |
269 | X like this: | |
270 | X | |
271 | X # make install | |
272 | X cp aperture aperture.conf /kernel/drv | |
273 | X # make add_drv | |
274 | X add_drv aperture | |
275 | X | |
276 | X On a sparcv9 machine this will mention the /kernel/drv/sparcv9 directory | |
277 | X instead of /kernel/drv. Similarily /kernel/drv/amd64 should be used on amd64. | |
278 | X | |
279 | X This installs the driver to the system. | |
280 | X | |
281 | X5) While as root modify the file /etc/devlink.tab, adding these lines: | |
282 | X | |
283 | X# The following entry is for the framebuffer driver | |
284 | Xtype=ddi_pseudo;name=aperture fbs/\M0 | |
285 | X | |
286 | X Add that line exactly as shown. You may also simply add the | |
287 | X contents of the devlink.tab file supplied to /etc/devlink.tab. | |
288 | X It contains the lines as well. (Yes, that is a tab between | |
289 | X aperture and fbs, not spaces - very important) | |
290 | X | |
291 | X6) Perform a reconfiguration boot of the system. | |
292 | X | |
293 | X # touch /reconfigure | |
294 | X # init 6 | |
295 | X | |
296 | XBug reports, questions, suggestions, etc can be sent to xfree86@xfree86.org. | |
297 | END-of-./aperture/README | |
298 | echo x - ./aperture/aperture.c | |
299 | sed 's/^X//' >./aperture/aperture.c << 'END-of-./aperture/aperture.c' | |
300 | X/* | |
301 | X * Copyright (C) 2001 The XFree86 Project, Inc. All Rights Reserved. | |
302 | X * | |
303 | X * Permission is hereby granted, free of charge, to any person obtaining a copy | |
304 | X * of this software and associated documentation files (the "Software"), to | |
305 | X * deal in the Software without restriction, including without limitation the | |
306 | X * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or | |
307 | X * sell copies of the Software, and to permit persons to whom the Software is | |
308 | X * furnished to do so, subject to the following conditions: | |
309 | X * | |
310 | X * The above copyright notice and this permission notice shall be included in | |
311 | X * all copies or substantial portions of the Software. | |
312 | X * | |
313 | X * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
314 | X * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
315 | X * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
316 | X * XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER | |
317 | X * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN | |
318 | X * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | |
319 | X * | |
320 | X * Except as contained in this notice, the name of the XFree86 Project shall | |
321 | X * not be used in advertising or otherwise to promote the sale, use or other | |
322 | X * dealings in this Software without prior written authorization from the | |
323 | X * XFree86 Project. | |
324 | X */ | |
325 | X | |
326 | X/* | |
327 | X * Aperture driver for Solaris. | |
328 | X */ | |
329 | X | |
330 | X/* | |
331 | X * Modified: Martin Bochnig (martin@martux.org) | |
332 | X * Log: Commented out obsolete kernel interfaces DDI_IDENTIFIED and DDI_NOT_IDENTIFIED | |
333 | X * not supported by SunOS 5.10 or higher anymore, | |
334 | X * see http://docs.sun.com/app/docs/doc/819-2255/6n4ibnffr?a=view | |
335 | X */ | |
336 | X | |
337 | X#include <sys/conf.h> | |
338 | X#include <sys/ddi.h> | |
339 | X#include <sys/modctl.h> | |
340 | X#include <sys/open.h> | |
341 | X#include <sys/stat.h> | |
342 | X#include <sys/sunddi.h> | |
343 | X | |
344 | X#define DEV_IDENT "aperture" | |
345 | X#define DEV_BANNER "XFree86 aperture driver" | |
346 | X | |
347 | X#ifndef D_64BIT | |
348 | X#define D_64BIT 0 | |
349 | X#endif | |
350 | X | |
351 | X#ifndef NULL | |
352 | X#define NULL ((void *)0) | |
353 | X#endif | |
354 | X | |
355 | X/* | |
356 | X * open(9E) | |
357 | X */ | |
358 | X/*ARGSUSED*/ | |
359 | Xstatic int | |
360 | Xaperture_open | |
361 | X( | |
362 | X#ifdef __STDC__ | |
363 | X dev_t *devp, | |
364 | X int flag, | |
365 | X int typ, | |
366 | X struct cred *cred | |
367 | X#endif | |
368 | X) | |
369 | X#ifndef __STDC__ | |
370 | X dev_t *devp; | |
371 | X int flag; | |
372 | X int typ; | |
373 | X struct cred *cred; | |
374 | X#endif | |
375 | X{ | |
376 | X int error; | |
377 | X | |
378 | X#ifdef APERTURE_DEBUG | |
379 | X | |
380 | X cmn_err(CE_CONT, DEV_IDENT ": entering open()\n"); | |
381 | X | |
382 | X#endif | |
383 | X | |
384 | X if ((typ != OTYP_CHR) || (getminor(*devp))) | |
385 | X error = EINVAL; | |
386 | X else | |
387 | X error = 0; | |
388 | X | |
389 | X#ifdef APERTURE_DEBUG | |
390 | X | |
391 | X cmn_err(CE_CONT, DEV_IDENT ": leaving open() = %d\n", error); | |
392 | X | |
393 | X#endif | |
394 | X | |
395 | X return error; | |
396 | X} | |
397 | X | |
398 | X/* | |
399 | X * mmap(9E) | |
400 | X */ | |
401 | X/*ARGSUSED*/ | |
402 | Xstatic int | |
403 | Xaperture_mmap | |
404 | X( | |
405 | X#ifdef __STDC__ | |
406 | X dev_t dev, | |
407 | X off_t off, | |
408 | X int prot | |
409 | X#endif | |
410 | X) | |
411 | X#ifndef __STDC__ | |
412 | X dev_t dev; | |
413 | X off_t off; | |
414 | X int prot; | |
415 | X#endif | |
416 | X{ | |
417 | X pfn_t pf; | |
418 | X int error; | |
419 | X | |
420 | X#ifdef APERTURE_DEBUG | |
421 | X | |
422 | X cmn_err(CE_CONT, DEV_IDENT ": entering mmap(0x%016lx)\n", off); | |
423 | X | |
424 | X#endif | |
425 | X | |
426 | X pf = btop((unsigned long)off); | |
427 | X | |
428 | X /* Deal with mmap(9E) interface limits */ | |
429 | X error = (int)pf; | |
430 | X if ((error < 0) || (pf != (pfn_t)error)) | |
431 | X error = -1; | |
432 | X | |
433 | X#ifdef APERTURE_DEBUG | |
434 | X | |
435 | X cmn_err(CE_CONT, DEV_IDENT ": leaving mmap() = 0x%08lx", error); | |
436 | X | |
437 | X#endif | |
438 | X | |
439 | X return error; | |
440 | X} | |
441 | X | |
442 | Xstatic struct cb_ops aperture_cb_ops = | |
443 | X{ | |
444 | X aperture_open, /* open */ | |
445 | X nulldev, /* close */ | |
446 | X nodev, /* strategy */ | |
447 | X nodev, /* print */ | |
448 | X nodev, /* dump */ | |
449 | X nodev, /* read */ | |
450 | X nodev, /* write */ | |
451 | X nodev, /* ioctl */ | |
452 | X nodev, /* devmap */ | |
453 | X aperture_mmap, /* mmap */ | |
454 | X ddi_segmap, /* segmap */ | |
455 | X nochpoll, /* poll */ | |
456 | X ddi_prop_op, /* cb_prop_op */ | |
457 | X 0, /* streamtab */ | |
458 | X D_NEW | D_MP | D_64BIT /* Driver compatibility flag */ | |
459 | X}; | |
460 | X | |
461 | X | |
462 | Xstatic dev_info_t *aperture_dip; /* private copy of devinfo pointer */ | |
463 | X | |
464 | X/* | |
465 | X * getinfo(9E) | |
466 | X */ | |
467 | X/*ARGSUSED*/ | |
468 | Xstatic int | |
469 | Xaperture_getinfo | |
470 | X( | |
471 | X#ifdef __STDC__ | |
472 | X dev_info_t *dip, | |
473 | X ddi_info_cmd_t infocmd, | |
474 | X void *arg, | |
475 | X void **result | |
476 | X#endif | |
477 | X) | |
478 | X#ifndef __STDC__ | |
479 | X dev_info_t *dip; | |
480 | X ddi_info_cmd_t infocmd; | |
481 | X void *arg; | |
482 | X void **result; | |
483 | X#endif | |
484 | X{ | |
485 | X int error; | |
486 | X | |
487 | X#ifdef APERTURE_DEBUG | |
488 | X | |
489 | X cmn_err(CE_CONT, DEV_IDENT ": entering getinfo()\n"); | |
490 | X | |
491 | X#endif | |
492 | X | |
493 | X switch (infocmd) { | |
494 | X case DDI_INFO_DEVT2DEVINFO: | |
495 | X *result = aperture_dip; | |
496 | X error = DDI_SUCCESS; | |
497 | X break; | |
498 | X case DDI_INFO_DEVT2INSTANCE: | |
499 | X *result = NULL; | |
500 | X error = DDI_SUCCESS; | |
501 | X break; | |
502 | X default: | |
503 | X error = DDI_FAILURE; | |
504 | X } | |
505 | X | |
506 | X#ifdef APERTURE_DEBUG | |
507 | X | |
508 | X cmn_err(CE_CONT, DEV_IDENT ": leaving getinfo() = %d\n", error); | |
509 | X | |
510 | X#endif | |
511 | X | |
512 | X return error; | |
513 | X} | |
514 | X | |
515 | X/* | |
516 | X * identify(9E) | |
517 | X */ | |
518 | X/*ARGSUSED*/ | |
519 | Xstatic int | |
520 | Xaperture_identify | |
521 | X( | |
522 | X#ifdef __STDC__ | |
523 | X dev_info_t *dip | |
524 | X#endif | |
525 | X) | |
526 | X#ifndef __STDC__ | |
527 | X dev_info_t *dip; | |
528 | X#endif | |
529 | X{ | |
530 | X int error; | |
531 | X | |
532 | X#ifdef APERTURE_DEBUG | |
533 | X | |
534 | X cmn_err(CE_CONT, DEV_IDENT ": entering identify()\n"); | |
535 | X | |
536 | X#endif | |
537 | X | |
538 | X if (strcmp(ddi_get_name(dip), DEV_IDENT)) | |
539 | X error = 1 /* DDI_NOT_IDENTIFIED obsolete since SunOS 5.10 */ ; | |
540 | X else | |
541 | X error = 2 /* DDI_IDENTIFIED obsolete since SunOS 5.10 */ ; | |
542 | X | |
543 | X#ifdef APERTURE_DEBUG | |
544 | X | |
545 | X cmn_err(CE_CONT, DEV_IDENT ": leaving identify() = %d\n", error); | |
546 | X | |
547 | X#endif | |
548 | X | |
549 | X return error; | |
550 | X} | |
551 | X | |
552 | X/* | |
553 | X * attach(9E) | |
554 | X */ | |
555 | X/*ARGSUSED*/ | |
556 | Xstatic int | |
557 | Xaperture_attach | |
558 | X( | |
559 | X#ifdef __STDC__ | |
560 | X dev_info_t *dip, | |
561 | X ddi_attach_cmd_t cmd | |
562 | X#endif | |
563 | X) | |
564 | X#ifndef __STDC__ | |
565 | X dev_info_t *dip; | |
566 | X ddi_attach_cmd_t cmd; | |
567 | X#endif | |
568 | X{ | |
569 | X int error; | |
570 | X | |
571 | X#ifdef APERTURE_DEBUG | |
572 | X | |
573 | X cmn_err(CE_CONT, DEV_IDENT ": entering attach()\n"); | |
574 | X | |
575 | X#endif | |
576 | X | |
577 | X if (cmd != DDI_ATTACH) | |
578 | X { | |
579 | X | |
580 | X#ifdef APERTURE_DEBUG | |
581 | X | |
582 | X cmn_err(CE_CONT, DEV_IDENT ": not attach(, DDI_ATTACH)\n"); | |
583 | X | |
584 | X#endif | |
585 | X | |
586 | X error = DDI_FAILURE; | |
587 | X } | |
588 | X else | |
589 | X { | |
590 | X error = ddi_create_minor_node(dip, ddi_get_name(dip), S_IFCHR, | |
591 | X (minor_t)ddi_get_instance(dip), | |
592 | X NULL, 0 /* NODESPECIFIC_DEV obsolete since SunOS 5.10 */ ); | |
593 | X | |
594 | X if (error == DDI_SUCCESS) | |
595 | X { | |
596 | X aperture_dip = dip; | |
597 | X ddi_report_dev(dip); | |
598 | X } | |
599 | X } | |
600 | X | |
601 | X#ifdef APERTURE_DEBUG | |
602 | X | |
603 | X cmn_err(CE_CONT, DEV_IDENT ": leaving attach() = %d\n", error); | |
604 | X | |
605 | X#endif | |
606 | X | |
607 | X return error; | |
608 | X} | |
609 | X | |
610 | X/* | |
611 | X * detach(9E) | |
612 | X */ | |
613 | Xstatic int | |
614 | Xaperture_detach | |
615 | X( | |
616 | X#ifdef __STDC__ | |
617 | X dev_info_t *dip, | |
618 | X ddi_detach_cmd_t cmd | |
619 | X#endif | |
620 | X) | |
621 | X#ifndef __STDC__ | |
622 | X dev_info_t *dip; | |
623 | X ddi_detach_cmd_t cmd; | |
624 | X#endif | |
625 | X{ | |
626 | X int error; | |
627 | X | |
628 | X#ifdef APERTURE_DEBUG | |
629 | X | |
630 | X cmn_err(CE_CONT, DEV_IDENT ": entering detach()\n"); | |
631 | X | |
632 | X#endif | |
633 | X | |
634 | X if (cmd != DDI_DETACH) | |
635 | X { | |
636 | X error = DDI_FAILURE; | |
637 | X } | |
638 | X else | |
639 | X { | |
640 | X ddi_remove_minor_node(dip, NULL); | |
641 | X aperture_dip = NULL; | |
642 | X error = DDI_SUCCESS; | |
643 | X } | |
644 | X | |
645 | X#if APERTURE_DEBUG | |
646 | X | |
647 | X cmn_err(CE_CONT, DEV_IDENT ": leaving detach() = %d\n", error); | |
648 | X | |
649 | X#endif | |
650 | X | |
651 | X return error; | |
652 | X} | |
653 | X | |
654 | X | |
655 | Xstatic struct dev_ops aperture_ops = | |
656 | X{ | |
657 | X DEVO_REV, /* revision */ | |
658 | X 0, /* refcnt */ | |
659 | X aperture_getinfo, /* getinfo */ | |
660 | X aperture_identify, /* identify */ | |
661 | X nulldev, /* probe */ | |
662 | X aperture_attach, /* attach */ | |
663 | X aperture_detach, /* detach */ | |
664 | X nodev, /* reset */ | |
665 | X &aperture_cb_ops, /* driver operations */ | |
666 | X NULL /* bus operations */ | |
667 | X}; | |
668 | X | |
669 | X | |
670 | Xstatic struct modldrv modldrv = | |
671 | X{ | |
672 | X &mod_driverops, /* mod_ops structure pointer */ | |
673 | X DEV_BANNER, /* driver banner string */ | |
674 | X &aperture_ops, /* dev_ops structure pointer */ | |
675 | X}; | |
676 | X | |
677 | X | |
678 | Xstatic struct modlinkage modlinkage = | |
679 | X{ | |
680 | X MODREV_1, /* module API revision */ | |
681 | X { | |
682 | X &modldrv, /* module driver structure pointer */ | |
683 | X NULL /* list termination */ | |
684 | X } | |
685 | X}; | |
686 | X | |
687 | X | |
688 | X/* | |
689 | X * _init(9E) | |
690 | X */ | |
691 | Xint | |
692 | X_init | |
693 | X( | |
694 | X#ifdef __STDC__ | |
695 | X void | |
696 | X#endif | |
697 | X) | |
698 | X{ | |
699 | X int error; | |
700 | X | |
701 | X#ifdef APERTURE_DEBUG | |
702 | X | |
703 | X cmn_err(CE_CONT, DEV_IDENT ": entering _init()\n"); | |
704 | X | |
705 | X#endif | |
706 | X | |
707 | X error = mod_install(&modlinkage); | |
708 | X | |
709 | X#ifdef APERTURE_DEBUG | |
710 | X | |
711 | X cmn_err(CE_CONT, DEV_IDENT ": leaving _init() = %d\n", error); | |
712 | X | |
713 | X#endif | |
714 | X | |
715 | X return error; | |
716 | X} | |
717 | X | |
718 | X/* | |
719 | X * _info(9E) | |
720 | X */ | |
721 | Xint | |
722 | X_info | |
723 | X( | |
724 | X#ifdef __STDC__ | |
725 | X struct modinfo *modinfop | |
726 | X#endif | |
727 | X) | |
728 | X#ifndef __STDC__ | |
729 | X struct modinfo *modinfop; | |
730 | X#endif | |
731 | X{ | |
732 | X int error; | |
733 | X | |
734 | X#ifdef APERTURE_DEBUG | |
735 | X | |
736 | X cmn_err(CE_CONT, DEV_IDENT ": entering _info()\n"); | |
737 | X | |
738 | X#endif | |
739 | X | |
740 | X error = mod_info(&modlinkage, modinfop); | |
741 | X | |
742 | X#ifdef APERTURE_DEBUG | |
743 | X | |
744 | X cmn_err(CE_CONT, DEV_IDENT ": leaving _info() = %d\n", error); | |
745 | X | |
746 | X#endif | |
747 | X | |
748 | X return error; | |
749 | X} | |
750 | X | |
751 | X/* | |
752 | X * _fini(9E) | |
753 | X */ | |
754 | Xint | |
755 | X_fini | |
756 | X( | |
757 | X#ifdef __STDC__ | |
758 | X void | |
759 | X#endif | |
760 | X) | |
761 | X{ | |
762 | X int error; | |
763 | X | |
764 | X#ifdef APERTURE_DEBUG | |
765 | X | |
766 | X cmn_err(CE_CONT, DEV_IDENT ": entering _fini()\n"); | |
767 | X | |
768 | X#endif | |
769 | X | |
770 | X error = mod_remove(&modlinkage); | |
771 | X | |
772 | X#ifdef APERTURE_DEBUG | |
773 | X | |
774 | X cmn_err(CE_CONT, DEV_IDENT ": leaving _fini() = %d\n", error); | |
775 | X | |
776 | X#endif | |
777 | X | |
778 | X return error; | |
779 | X} | |
780 | END-of-./aperture/aperture.c | |
781 | echo x - ./aperture/aperture.conf | |
782 | sed 's/^X//' >./aperture/aperture.conf << 'END-of-./aperture/aperture.conf' | |
783 | X# | |
784 | X# Copyright 1994 Doug Anson, danson@lgc.com & David Holland, davidh@use.com | |
785 | X# | |
786 | X# File: aperture.conf | |
787 | X# Author: Doug Anson (danson@lgc.com) | |
788 | X# | |
789 | X# Modified: David Holland (davidh@use.com) | |
790 | X# Log: Change comments 02/23/94 | |
791 | X# Change defaults/comments 09/25/94 | |
792 | X# | |
793 | X# Modified: Marc Aurele La France (tsi@xfree86.org) | |
794 | X# Log: SPARC changes 2001.09 | |
795 | X# | |
796 | X# Purpose: This conf file is used by the aperture driver. | |
797 | X# | |
798 | Xname="aperture" parent="pseudo"; | |
799 | END-of-./aperture/aperture.conf | |
800 | echo x - ./aperture/devlink.tab | |
801 | sed 's/^X//' >./aperture/devlink.tab << 'END-of-./aperture/devlink.tab' | |
802 | X# The following entry is for the aperture driver | |
803 | Xtype=ddi_pseudo;name=aperture fbs/\M0 | |
804 | END-of-./aperture/devlink.tab | |
805 | exit | |
806 |