#!/bin/sh # $XFree86$ # This is a shell archive (produced by GNU sharutils 4.2c). # To extract the files from this archive, save it to some FILE, remove # everything before the `!/bin/sh' line above, then type `sh FILE'. # # Made on 2002-10-04 13:41 MDT by . # Source directory was `/archives'. # # Existing files will *not* be overwritten unless `-c' is specified. # This format requires very little intelligence at unshar time. # "if test", "echo", "mkdir", and "sed" may be needed. # # This shar contains: # length mode name # ------ ---------- ------------------------------------------ # 1521 -rw-r--r-- aperture/Makefile # 1659 -rw-r--r-- aperture/README # 7557 -rw-r--r-- aperture/aperture.c # 450 -rw-r--r-- aperture/aperture.conf # 87 -rw-r--r-- aperture/devlink.tab # 1062 -rw-r--r-- aperture/Makefile.sun4u # echo=echo shar_tty= shar_n= shar_c=' ' mkdir _sh09806 || ( echo 'failed to create locking directory' '_sh09806'; exit 1 ) # ============= aperture/Makefile ============== if test ! -d 'aperture'; then $echo $echo_n 'x -' 'aperture: '$echo_c if mkdir 'aperture'; then $echo 'created'; else $echo 'failed to create'; fi fi if test -f 'aperture/Makefile' && test "$first_param" != -c; then $echo 'x -' SKIPPING 'aperture/Makefile' '(file already exists)' else $echo 'x -' extracting 'aperture/Makefile' '(text)' sed 's/^X//' << 'SHAR_EOF' > 'aperture/Makefile' && X# X# File: makefile for aperture Framebuffer Driver X# Author: Doug Anson (danson@lgc.com) X# Date: 2/15/94 X# Modified: David Holland (davidh@use.com) X# Date: 2/23/94 X# - Changed name, and debugging structure X# Modified: Marc Aurele La France (tsi@xfree86.org) X# Date: 2001.06.08 X# - SPARC support, cleanup and turf aptest. X# X# >>NOTE<< Have a look at Makefile.sun4u for sun4u specifics. X# X# GNU gcc compiler XCC=gcc XCFLGS=-fno-builtin -Wall -O3 X X# X# Proworks compiler X#CC=/opt/SUNWspro/bin/cc X#CFLGS=-Xa -xnolib -xO3 X X# X# Debug error reporting X#DEBUG_FLG= X#DEBUG_FLG=-DAPERTURE_DEBUG X X# X# Files and object declarations XKERNEL_FLGS=-D_KERNEL -DSUNDDI XCFLAGS= $(CFLGS) $(KERNEL_FLGS) $(DEBUG_FLG) XCFILES= aperture.c XOBJS= aperture.o XDRIVER= aperture X X# X# Make rules Xall: $(DRIVER) X X$(DRIVER): $(OBJS) X @if [ -f "Makefile.`uname -m`" ]; then \ X make -f Makefile.`uname -m` $(DRIVER); \ X else \ X rm -f $(DRIVER); \ X ld -r -o $(DRIVER) $(OBJS); \ X fi X Xinstall: $(DRIVER) X @if [ -f "Makefile.`uname -m`" ]; then \ X make -f Makefile.`uname -m` install; \ X else \ X cp aperture.conf /kernel/drv; \ X cp $(DRIVER) /kernel/drv; \ X fi X Xadd_drv: X @if [ -f "Makefile.`uname -m`" ]; then \ X make -f Makefile.`uname -m` add_drv; \ X else \ X add_drv /kernel/drv/aperture; \ X fi X Xclean: X rm -f *% *.BAK $(OBJS) $(DRIVER) core X X.SUFFIXES: .i X X.c.i: X $(CC) -E $(CFLAGS) $*.c > $@ X X.c.o: X @if [ -f "Makefile.`uname -m`" ]; then \ X make -f Makefile.`uname -m` $@; \ X else \ X rm -f $@; \ X $(CC) -c $(CFLAGS) $*.c -o $@; \ X fi SHAR_EOF : || $echo 'restore of' 'aperture/Makefile' 'failed' fi # ============= aperture/README ============== if test -f 'aperture/README' && test "$first_param" != -c; then $echo 'x -' SKIPPING 'aperture/README' '(file already exists)' else $echo 'x -' extracting 'aperture/README' '(text)' sed 's/^X//' << 'SHAR_EOF' > 'aperture/README' && XFramebuffer apperture driver. X XThis driver was written to provide a device that, unlike /dev/mem, allows Xmmap()'ing of ranges beyond installed memory. X XThe original x86-based version of this driver was the corroborative work of XDoug Anson (danson@lgc.com), and David Holland (davidh@use.com). It has since Xbeen rewritten to also work on sun4u machines. X X XInstallation instructions: X X1) Check the Makefile, for appropriate CC, and CFLAGS definitions. Compiling X with APERTURE_DEBUG defined means the driver will generate reams of X debugging output. You'll probably want to leave this off... X X2) type 'make'. The driver and test program should compile with out any X problems. There also should not be any warning messages. X X3) Become 'root'. X X4) type 'make install' and 'make add_drv'. The screen should look something X like this: X X # make install X cp aperture aperture.conf /kernel/drv X # make add_drv X add_drv /kernel/drv/aperture X X On a sun4u machine this will mention the /kernel/drv/sparcv9 directory X instead of /kernel/drv. X X This installs the driver in the system. X X5) While as root modify the file /etc/devlink.tab, adding these lines: X X# The following entry is for the framebuffer driver Xtype=ddi_pseudo;name=aperture fbs/\M0 X X Add that line exactly as shown. You may also simply add the X contents of the devlink.tab file supplied to /etc/devlink.tab. X It contains the lines as well. (Yes, that is a tab between X aperture, and fbs, not spaces - very important) X X6) Perform a reconfiguration boot of the system. X X # touch /reconfigure X # init 6 X XBug reports, questions, suggestions, etc can be sent to xfree86@xfree86.org. SHAR_EOF : || $echo 'restore of' 'aperture/README' 'failed' fi # ============= aperture/aperture.c ============== if test -f 'aperture/aperture.c' && test "$first_param" != -c; then $echo 'x -' SKIPPING 'aperture/aperture.c' '(file already exists)' else $echo 'x -' extracting 'aperture/aperture.c' '(text)' sed 's/^X//' << 'SHAR_EOF' > 'aperture/aperture.c' && X/* X * Copyright (C) 2001 The XFree86 Project, Inc. All Rights Reserved. X * X * Permission is hereby granted, free of charge, to any person obtaining a copy X * of this software and associated documentation files (the "Software"), to X * deal in the Software without restriction, including without limitation the X * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or X * sell copies of the Software, and to permit persons to whom the Software is X * furnished to do so, subject to the following conditions: X * X * The above copyright notice and this permission notice shall be included in X * all copies or substantial portions of the Software. X * X * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR X * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, X * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE X * XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER X * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN X * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. X * X * Except as contained in this notice, the name of the XFree86 Project shall X * not be used in advertising or otherwise to promote the sale, use or other X * dealings in this Software without prior written authorization from the X * XFree86 Project. X */ X X/* X * Aperture driver for Solaris. X */ X X#include X#include X#include X#include X#include X#include X X#define DEV_IDENT "aperture" X#define DEV_BANNER "XFree86 aperture driver" X X#ifndef D_64BIT X#define D_64BIT 0 X#endif X X#ifndef NULL X#define NULL ((void *)0) X#endif X X/* X * open(9E) X */ X/*ARGSUSED*/ Xstatic int Xaperture_open X( X#ifdef __STDC__ X dev_t *devp, X int flag, X int typ, X struct cred *cred X#endif X) X#ifndef __STDC__ X dev_t *devp; X int flag; X int typ; X struct cred *cred; X#endif X{ X int error; X X#ifdef APERTURE_DEBUG X X cmn_err(CE_CONT, DEV_IDENT ": entering open()\n"); X X#endif X X if ((typ != OTYP_CHR) || (getminor(*devp))) X error = EINVAL; X else X error = 0; X X#ifdef APERTURE_DEBUG X X cmn_err(CE_CONT, DEV_IDENT ": leaving open() = %d\n", error); X X#endif X X return error; X} X X/* X * mmap(9E) X */ X/*ARGSUSED*/ Xstatic int Xaperture_mmap X( X#ifdef __STDC__ X dev_t dev, X off_t off, X int prot X#endif X) X#ifndef __STDC__ X dev_t dev; X off_t off; X int prot; X#endif X{ X pfn_t pf; X int error; X X#ifdef APERTURE_DEBUG X X cmn_err(CE_CONT, DEV_IDENT ": entering mmap(0x%016lx)\n", off); X X#endif X X pf = btop((unsigned long)off); X X /* Deal with mmap(9E) interface limits */ X error = (int)pf; X if ((error < 0) || (pf != (pfn_t)error)) X error = -1; X X#ifdef APERTURE_DEBUG X X cmn_err(CE_CONT, DEV_IDENT ": leaving mmap() = 0x%08lx", error); X X#endif X X return error; X} X Xstatic struct cb_ops aperture_cb_ops = X{ X aperture_open, /* open */ X nulldev, /* close */ X nodev, /* strategy */ X nodev, /* print */ X nodev, /* dump */ X nodev, /* read */ X nodev, /* write */ X nodev, /* ioctl */ X nodev, /* devmap */ X aperture_mmap, /* mmap */ X ddi_segmap, /* segmap */ X nochpoll, /* poll */ X ddi_prop_op, /* cb_prop_op */ X 0, /* streamtab */ X D_NEW | D_MP | D_64BIT /* Driver compatibility flag */ X}; X X Xstatic dev_info_t *aperture_dip; /* private copy of devinfo pointer */ X X/* X * getinfo(9E) X */ X/*ARGSUSED*/ Xstatic int Xaperture_getinfo X( X#ifdef __STDC__ X dev_info_t *dip, X ddi_info_cmd_t infocmd, X void *arg, X void **result X#endif X) X#ifndef __STDC__ X dev_info_t *dip; X ddi_info_cmd_t infocmd; X void *arg; X void **result; X#endif X{ X int error; X X#ifdef APERTURE_DEBUG X X cmn_err(CE_CONT, DEV_IDENT ": entering getinfo()\n"); X X#endif X X switch (infocmd) { X case DDI_INFO_DEVT2DEVINFO: X *result = aperture_dip; X error = DDI_SUCCESS; X break; X case DDI_INFO_DEVT2INSTANCE: X *result = NULL; X error = DDI_SUCCESS; X break; X default: X error = DDI_FAILURE; X } X X#ifdef APERTURE_DEBUG X X cmn_err(CE_CONT, DEV_IDENT ": leaving getinfo() = %d\n", error); X X#endif X X return error; X} X X/* X * identify(9E) X */ X/*ARGSUSED*/ Xstatic int Xaperture_identify X( X#ifdef __STDC__ X dev_info_t *dip X#endif X) X#ifndef __STDC__ X dev_info_t *dip; X#endif X{ X int error; X X#ifdef APERTURE_DEBUG X X cmn_err(CE_CONT, DEV_IDENT ": entering identify()\n"); X X#endif X X if (strcmp(ddi_get_name(dip), DEV_IDENT)) X error = DDI_NOT_IDENTIFIED; X else X error = DDI_IDENTIFIED; X X#ifdef APERTURE_DEBUG X X cmn_err(CE_CONT, DEV_IDENT ": leaving identify() = %d\n", error); X X#endif X X return error; X} X X/* X * attach(9E) X */ X/*ARGSUSED*/ Xstatic int Xaperture_attach X( X#ifdef __STDC__ X dev_info_t *dip, X ddi_attach_cmd_t cmd X#endif X) X#ifndef __STDC__ X dev_info_t *dip; X ddi_attach_cmd_t cmd; X#endif X{ X int error; X X#ifdef APERTURE_DEBUG X X cmn_err(CE_CONT, DEV_IDENT ": entering attach()\n"); X X#endif X X if (cmd != DDI_ATTACH) X { X X#ifdef APERTURE_DEBUG X X cmn_err(CE_CONT, DEV_IDENT ": not attach(, DDI_ATTACH)\n"); X X#endif X X error = DDI_FAILURE; X } X else X { X error = ddi_create_minor_node(dip, ddi_get_name(dip), S_IFCHR, X (minor_t)ddi_get_instance(dip), X NULL, NODESPECIFIC_DEV); X X if (error == DDI_SUCCESS) X { X aperture_dip = dip; X ddi_report_dev(dip); X } X } X X#ifdef APERTURE_DEBUG X X cmn_err(CE_CONT, DEV_IDENT ": leaving attach() = %d\n", error); X X#endif X X return error; X} X X/* X * detach(9E) X */ Xstatic int Xaperture_detach X( X#ifdef __STDC__ X dev_info_t *dip, X ddi_detach_cmd_t cmd X#endif X) X#ifndef __STDC__ X dev_info_t *dip; X ddi_detach_cmd_t cmd; X#endif X{ X int error; X X#ifdef APERTURE_DEBUG X X cmn_err(CE_CONT, DEV_IDENT ": entering detach()\n"); X X#endif X X if (cmd != DDI_DETACH) X { X error = DDI_FAILURE; X } X else X { X ddi_remove_minor_node(dip, NULL); X aperture_dip = NULL; X error = DDI_SUCCESS; X } X X#if APERTURE_DEBUG X X cmn_err(CE_CONT, DEV_IDENT ": leaving detach() = %d\n", error); X X#endif X X return error; X} X X Xstatic struct dev_ops aperture_ops = X{ X DEVO_REV, /* revision */ X 0, /* refcnt */ X aperture_getinfo, /* getinfo */ X aperture_identify, /* identify */ X nulldev, /* probe */ X aperture_attach, /* attach */ X aperture_detach, /* detach */ X nodev, /* reset */ X &aperture_cb_ops, /* driver operations */ X NULL /* bus operations */ X}; X X Xstatic struct modldrv modldrv = X{ X &mod_driverops, /* mod_ops structure pointer */ X DEV_BANNER, /* driver banner string */ X &aperture_ops, /* dev_ops structure pointer */ X}; X X Xstatic struct modlinkage modlinkage = X{ X MODREV_1, /* module API revision */ X { X &modldrv, /* module driver structure pointer */ X NULL /* list termination */ X } X}; X X X/* X * _init(9E) X */ Xint X_init X( X#ifdef __STDC__ X void X#endif X) X{ X int error; X X#ifdef APERTURE_DEBUG X X cmn_err(CE_CONT, DEV_IDENT ": entering _init()\n"); X X#endif X X error = mod_install(&modlinkage); X X#ifdef APERTURE_DEBUG X X cmn_err(CE_CONT, DEV_IDENT ": leaving _init() = %d\n", error); X X#endif X X return error; X} X X/* X * _info(9E) X */ Xint X_info X( X#ifdef __STDC__ X struct modinfo *modinfop X#endif X) X#ifndef __STDC__ X struct modinfo *modinfop; X#endif X{ X int error; X X#ifdef APERTURE_DEBUG X X cmn_err(CE_CONT, DEV_IDENT ": entering _info()\n"); X X#endif X X error = mod_info(&modlinkage, modinfop); X X#ifdef APERTURE_DEBUG X X cmn_err(CE_CONT, DEV_IDENT ": leaving _info() = %d\n", error); X X#endif X X return error; X} X X/* X * _fini(9E) X */ Xint X_fini X( X#ifdef __STDC__ X void X#endif X) X{ X int error; X X#ifdef APERTURE_DEBUG X X cmn_err(CE_CONT, DEV_IDENT ": entering _fini()\n"); X X#endif X X error = mod_remove(&modlinkage); X X#ifdef APERTURE_DEBUG X X cmn_err(CE_CONT, DEV_IDENT ": leaving _fini() = %d\n", error); X X#endif X X return error; X} SHAR_EOF : || $echo 'restore of' 'aperture/aperture.c' 'failed' fi # ============= aperture/aperture.conf ============== if test -f 'aperture/aperture.conf' && test "$first_param" != -c; then $echo 'x -' SKIPPING 'aperture/aperture.conf' '(file already exists)' else $echo 'x -' extracting 'aperture/aperture.conf' '(text)' sed 's/^X//' << 'SHAR_EOF' > 'aperture/aperture.conf' && X# X# Copyright 1994 Doug Anson, danson@lgc.com & David Holland, davidh@use.com X# X# File: aperture.conf X# Author: Doug Anson (danson@lgc.com) X# X# Modified: David Holland (davidh@use.com) X# Log: Change comments 02/23/94 X# Change defaults/comments 09/25/94 X# X# Modified: Marc Aurele La France (tsi@xfree86.org) X# Log: SPARC changes 2001.09 X# X# Purpose: This conf file is used by the aperture driver. X# Xname="aperture" parent="pseudo"; SHAR_EOF : || $echo 'restore of' 'aperture/aperture.conf' 'failed' fi # ============= aperture/devlink.tab ============== if test -f 'aperture/devlink.tab' && test "$first_param" != -c; then $echo 'x -' SKIPPING 'aperture/devlink.tab' '(file already exists)' else $echo 'x -' extracting 'aperture/devlink.tab' '(text)' sed 's/^X//' << 'SHAR_EOF' > 'aperture/devlink.tab' && X# The following entry is for the aperture driver Xtype=ddi_pseudo;name=aperture fbs/\M0 SHAR_EOF : || $echo 'restore of' 'aperture/devlink.tab' 'failed' fi # ============= aperture/Makefile.sun4u ============== if test -f 'aperture/Makefile.sun4u' && test "$first_param" != -c; then $echo 'x -' SKIPPING 'aperture/Makefile.sun4u' '(file already exists)' else $echo 'x -' extracting 'aperture/Makefile.sun4u' '(text)' sed 's/^X//' << 'SHAR_EOF' > 'aperture/Makefile.sun4u' && X# X# File: makefile for aperture Framebuffer Driver X# Author: Doug Anson (danson@lgc.com) X# Date: 2/15/94 X# Modified: David Holland (davidh@use.com) X# Date: 2/23/94 X# - Changed name, and debugging structure X# Modified: Marc Aurele La France (tsi@xfree86.org) X# Date: 2001.06.08 X# - SPARC support, cleanup and turf aptest. X# X X# X# GNU gcc compiler, version 3.2 or later X# XCC=gcc XCFLGS=-fno-builtin -Wall -O3 -m64 X X# X# Proworks compiler X#CC=/opt/SUNWspro/bin/cc X#CFLGS=-Xa -xarch=v9 -xnolib -xO3 X X# X# Debug error reporting X#DEBUG_FLG= X#DEBUG_FLG=-DAPERTURE_DEBUG X X# X# Files and object declarations XKERNEL_FLGS=-D_KERNEL -DSUNDDI XCFLAGS= $(CFLGS) $(KERNEL_FLGS) $(DEBUG_FLG) XCFILES= aperture.c XOBJS= aperture.o XDRIVER= aperture X X# X# Make rules Xall: $(DRIVER) X X$(DRIVER): $(OBJS) X rm -f $(DRIVER) X ld -r -o $(DRIVER) $(OBJS) X Xinstall: $(DRIVER) X cp aperture.conf /kernel/drv X cp $(DRIVER) /kernel/drv/sparcv9 X Xadd_drv: X add_drv /kernel/drv/sparcv9/aperture X Xclean: X rm -f *% *.BAK $(OBJS) $(DRIVER) core X X.SUFFIXES: .i X X.c.i: X $(CC) -E $(CFLAGS) $*.c > $@ SHAR_EOF : || $echo 'restore of' 'aperture/Makefile.sun4u' 'failed' fi $echo $shar_n 'x -' 'lock directory' "\`_sh09806': " $shar_c if rm -fr _sh09806; then $echo 'removed' else $echo 'failed to remove' fi exit 0