diff options
Diffstat (limited to 'xc/programs/Xserver/hw/xfree86/etc/apSolx86.shar')
-rw-r--r-- | xc/programs/Xserver/hw/xfree86/etc/apSolx86.shar | 1339 |
1 files changed, 0 insertions, 1339 deletions
diff --git a/xc/programs/Xserver/hw/xfree86/etc/apSolx86.shar b/xc/programs/Xserver/hw/xfree86/etc/apSolx86.shar deleted file mode 100644 index a870210d4..000000000 --- a/xc/programs/Xserver/hw/xfree86/etc/apSolx86.shar +++ /dev/null @@ -1,1339 +0,0 @@ -#!/bin/sh -# $XFree86: xc/programs/Xserver/hw/xfree86/etc/apSolx86.shar,v 3.4 1996/12/23 06:47:07 dawes Exp $ -# This is a shell archive (produced by shar 3.49) -# To extract the files from this archive, save it to a file, remove -# everything above the "!/bin/sh" line above, and type "sh file_name". -# -# made 09/25/1994 14:29 UTC by davidh@barite -# Source directory /usr10/davidh/aperture -# -# $XConsortium: apSolx86.shar /main/4 1996/02/21 17:47:22 kaleb $ -# -# existing files will NOT be overwritten unless -c is specified -# -# This shar contains: -# length mode name -# ------ ---------- ------------------------------------------ -# 1342 -rw-r--r-- aperture/Makefile -# 4042 -rw-r--r-- aperture/aperture.h -# 95 -rw-r--r-- aperture/devlink.tab -# 2914 -rw-r--r-- aperture/README -# 20528 -rw-r--r-- aperture/aperture.c -# 518 -rw-r--r-- aperture/aperture.conf -# 3530 -rw-r--r-- aperture/aptest.c -# 2174 -rw-r--r-- aperture/DISCLAIMER -# -# ============= aperture/Makefile ============== -if test ! -d 'aperture'; then - echo 'x - creating directory aperture' - mkdir 'aperture' -fi -if test -f 'aperture/Makefile' -a X"$1" != X"-c"; then - echo 'x - skipping aperture/Makefile (File already exists)' -else -echo 'x - extracting aperture/Makefile (Text)' -sed 's/^X//' << 'SHAR_EOF' > 'aperture/Makefile' && -# -# File: makefile for aperture Framebuffer Driver -# Author: Doug Anson (danson@lgc.com) -# Date: 2/15/94 -# Modified: David Holland (davidh@use.com) -# Date: 2/23/94 -# - Changed name, and debugging structure -# -# $Id -# -# Debug flags may be set to the following values: -# -# APERTURE_DEBUG = 1 -- basic log reporting (mininal) -# APERTURE_DEBUG = 2 -- more log reporting (mmap results) -# APERTURE_DEBUG = 3 -- verbose log reporting (kernel entry points) -# -X -# -# GNU gcc compiler (2.4.5 or 2.5.8) -CC=gcc -CFLGS=-fno-builtin -X -# -# Proworks compiler (untested!) -#CC= /opt/SUNWspro/bin/cc -#CFLGS=-Xa -X -# -# location of lint program (untested!) -LINT= /usr/opt/SUNWspro/bin/lint -X -# -# Debug error reporting -#DEBUG_FLG= -#DEBUG_FLG=-DAPERTURE_DEBUG=1 -#DEBUG_FLG=-DAPERTURE_DEBUG=2 -DEBUG_FLG=-DAPERTURE_DEBUG=3 -X -# -# Files and object declarations -KERNEL_FLGS=-D_KERNEL -DSUNDDI -I. -CFLAGS= $(CFLGS) $(KERNEL_FLGS) $(DEBUG_FLG) -CFILES= aperture.c -HEADERS= aperture.h -OBJS= aperture.o -DRIVER= aperture -APTEST= aptest -APTESTOBJ= aptest.o -X -# -# Make rules -all: aperture aptest -X -aperture: $(OBJS) -X ld -r -o aperture aperture.o -X -install: aperture aptest -X cp aperture aperture.conf /kernel/drv -X -aptest: $(APTESTOBJ) -X $(CC) -o $(APTEST) $(APTESTOBJ) -X -clean: -X rm -f *% *.BAK $(OBJS) $(APTESTOBJ) $(APTEST) $(DRIVER) core -X -lint: -X $(LINT) -D_KERNEL -x -u $(CFILES) -SHAR_EOF -chmod 0644 aperture/Makefile || -echo 'restore of aperture/Makefile failed' -Wc_c="`wc -c < 'aperture/Makefile'`" -test 1342 -eq "$Wc_c" || - echo 'aperture/Makefile: original size 1342, current size' "$Wc_c" -fi -# ============= aperture/aperture.h ============== -if test -f 'aperture/aperture.h' -a X"$1" != X"-c"; then - echo 'x - skipping aperture/aperture.h (File already exists)' -else -echo 'x - extracting aperture/aperture.h (Text)' -sed 's/^X//' << 'SHAR_EOF' > 'aperture/aperture.h' && -/* -X * Copyright 1994 Doug Anson, danson@lgc.com & David Holland, davidh@use.com -X * -X * File: aperture.h -X * Author: Doug Anson -X * Date: 1/31/94 -X * -X * Modified: David Holland (davidh@use.com) -X * Log: Modified for new name 2/23/9 -X * -X * Purpose: This header is the master header for the Solaris 2.1 x86 -X * framebuffer mmap driver. Portions of this driver are taken -X * from mmapio.h 1.4 copyright 93/06/03 Sun Microsystems, Inc. -X * -X * Disclamer: -X * -X * This code is based largely upon the sample device drivers provided -X * by Sun Microsystems Inc. -X * -X * Original copyright notice: -X * @(#)mmapio.h 1.4 copyright 93/06/03 Sun Microsystems, Inc. -X * -X * Our copyright notice: -X * Permission to use, copy, modify, distribute, and sell this software and its -X * documentation for any purpose is hereby granted without fee, provided that -X * the above copyright notice appear in all copies and that both that -X * copyright notice and this permission notice appear in supporting -X * documentation, and that the name of Doug Anson, and David Holland be used in -X * advertising or publicity pertaining to distribution of the software -X * Doug Anson, and David Holland make no * representations about the -X * suitability of this software for any purpose. -X * It is provided "as is" without express or implied warranty. -X * -X * Original disclamer from Sun Microsystems, Inc.: -X * This is a package of sample device drivers for Solaris 2.x (SunOS -X * 5.x). You may use, modify and distribute these drivers and/or binaries -X * derived from them. However please note that: -X * -X * These examples are provided with no warranties of any kind, including -X * without limitation accuracy and usefulness, and Sun expressly disclaims -X * all implied warranties of merchantability, fitness for a particular -X * purpose and non-infringement. In no event shall Sun be liable for any -X * damages, including without limitation, direct, special, indirect, or -X * consequential damages arising out of, or relating to, use of these -X * examples by customer or any third party. Sun is under no obligation to -X * provide support to customer for this software. -X * -X * Our disclaimer: -X * DOUG ANSON, AND DAVID HOLLAND DISCLAIMS ALL WARRIENTS WITH REGARD TO THIS -X * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY, AND FITNESS, -X * IN NO EVENT SHALL DOUG ANSON, OR DAVID HOLLAND BE LIABLE FOR ANY SPECIAL, -X * INDIRECT, OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM -X * USAGE OF THIS SOFTWARE. -X */ -X -/* -X * linear framebuffer aperture driver header file -X * -X * $Id -X */ -X -#ifndef APERTURE_H -#define APERTURE_H -X -/* -X * Framebuffer identification definitions -X */ -#define APERTURE_NAME "aperture" -#define DEV_BANNER_STRING "SVGA Framebuffer Driver v0.99" -#define DEV_IDENT_STRING APERTURE_NAME -X -/* -X * driver.conf(4) "reg" property definition for aperture driver: -X * FORMAT: reg=AP_REGNUM,AP_ADDR,AP_SIZE -X */ -#define AP_REGNUM 0 /* register number is 1st number in "reg" prop */ -#define AP_ADDR 1 /* fb base address is 2nd number in "reg" prop */ -#define AP_SIZE 2 /* fb length value is 3rd number in "reg" prop */ -#define AP_MAX 3 /* number of values in "reg" property */ -X -/* -X * How big a chunk of register we map with each ddi_map_regs(9F) -X */ -#define AP_MEM_CHUNK sizeof(int) -X -/* -X * Error value for mmap(2) failure status -X */ -#define AP_MEM_FAILURE -1 -X -/* -X * Main memory map structure for the Framebuffer mmap driver -X */ -struct mmap -{ -X u_int regnum; /* registers number */ -X volatile caddr_t regbase; /* base address of device to mmap */ -X off_t regsize; /* length of region to mmap(2) */ -X off_t reglength; /* map length for ddi_map_regs(9F) */ -X volatile caddr_t kaddr; /* kernel address of mapped device */ -X off_t off; /* offset from mmap(2) call */ -X volatile off_t mapaddr; /* base address of mmap(2) region */ -X kmutex_t map_lock; /* device map mutex lock */ -X dev_info_t *dip; /* device information pointer */ -}; -typedef struct mmap Mmap; -X -#endif /* APERTURE_H */ -SHAR_EOF -chmod 0644 aperture/aperture.h || -echo 'restore of aperture/aperture.h failed' -Wc_c="`wc -c < 'aperture/aperture.h'`" -test 4042 -eq "$Wc_c" || - echo 'aperture/aperture.h: original size 4042, current size' "$Wc_c" -fi -# ============= aperture/devlink.tab ============== -if test -f 'aperture/devlink.tab' -a X"$1" != X"-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' && -# The following entry is for the SVGA framebuffer driver -type=ddi_pseudo;name=aperture fbs/\M0 -SHAR_EOF -chmod 0644 aperture/devlink.tab || -echo 'restore of aperture/devlink.tab failed' -Wc_c="`wc -c < 'aperture/devlink.tab'`" -test 95 -eq "$Wc_c" || - echo 'aperture/devlink.tab: original size 95, current size' "$Wc_c" -fi -# ============= aperture/README ============== -if test -f 'aperture/README' -a X"$1" != X"-c"; then - echo 'x - skipping aperture/README (File already exists)' -else -echo 'x - extracting aperture/README (Text)' -sed 's/^X//' << 'SHAR_EOF' > 'aperture/README' && -Framebuffer apperture driver. -X -(Note, see the DISCLAIMER file before using this driver! -X - Sorry, we've gotta cover ourselves) -X -This driver was written to help work around one particular limitation in the -x86 /dev/mem driver. -X -1) No Solaris x86 device we've found allows access to memory regions that -X exist above the amount of RAM in the machine. So one could not -X access the linear frame buffer of a Mach32 VLB board that decodes -X is memory aperture at the 124Megabyte mark. -X -This driver attempts to work around some of those problems. All it simply -does is allow a user to mmap() any physical address less than 128Megs -back into user address space. -X -It is the corroborative work of Doug Anson (danson@lgc.com), and -David Holland (davidh@use.com). -X -Many thanks to the XFree86[tm] Alpha, and Beta teams, for without -all their hard work, there wouldn't be any need for this driver. -X -Installation instructions: -X -1) Check the Makefile, for appropriate CC, and CFLAGS defintions. -X Compiling with APERTURE_DEBUG defined (via -DAPERTURE_DEBUG=?) means -X the driver will generate reams of debugging output. You'll probably -X want to leave this off, or set to zero.. -X -2) type 'make'. The driver and test program should compile with out any -X problems. There also should not be any warning messages. -X -3) Become 'root'. -X -4) type 'make install' and run 'add_drv /kernel/drv/aperture'. -X The screen should look something like this: -X -X # make install -X cp aperture aperture.conf /kernel/drv -X # add_drv /kernel/drv/aperture -X -X This installs the driver in the system. -X -5) While as root modify the file /etc/devlink.tab, adding these lines: -X -# The following entry is for the SVGA framebuffer driver -type=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 -6) Perform a reconfiguration boot of the system. -X -X # touch /reconfigure -X # init 6 -X -7) Login as root and run the aptest program. It tests that the -X mmap driver is working properly, by mmaping the main bios -X into user address space. If you happen to have AMI bios the -X output will look something like so: -X -# ./aptest -NOTICE: BIOS mapped [0xf0000 ,size=4096) to addr=0x8000b000... -0123AAAAMMMMIIII05/05/91(C)1990 American Megatrends Inc., All Rights Reserved -DONE displaying memory contents (80 bytes) -UNMAPPING [0xf0000 ,size=4096) to addr=0x8000b000... and closing...DONE. -Exiting successful... -# -X -X -8) Nope, there are not any man pages, I don't know nroff. As for programming -X suggestions, take a look at aptest.c a working example is obviously -X in there. -X -Bug reports, questions, suggestions, etc can be sent to -X -Doug Anson -danson@lgc.com -X -X or -X -David Holland -davidh@use.com -X -Flames can be sent to -/dev/null -SHAR_EOF -chmod 0644 aperture/README || -echo 'restore of aperture/README failed' -Wc_c="`wc -c < 'aperture/README'`" -test 2914 -eq "$Wc_c" || - echo 'aperture/README: original size 2914, current size' "$Wc_c" -fi -# ============= aperture/aperture.c ============== -if test -f 'aperture/aperture.c' -a X"$1" != X"-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 * Copyright 1994 Doug Anson, danson@lgc.com & David Holland, davidh@use.com -X * -X * File: aperture.c -X * Author: Doug Anson (danson@lgc.com) -X * Date: 1/31/94 -X * -X * Modified: David Holland (davidh@use.com) -X * Date: 2/23/94 -X * Changes: Changed general name of driver -X * Debugging flags -X * Removed a few extraneous erorr messages. -X * -X * -X * Purpose: This file is the master device file for the Solaris 2.1 x86 -X * framebuffer aperture driver. Portions of this driver are taken -X * from mmap.c 1.4 copyright 93/06/03 Sun Microsystems, Inc. -X * (Sample memory mapped driver for Solaris 2.0/Sun OS 5.0) -X * -X * This driver allows accelerated SVGA graphics cards that are -X * attached vi 32-bit paths (VESA/EISA/MC) and that have -X * linear framebuffer capabilities to have their framebuffer -X * memory mapped into the user process space. -X * -X * Disclamer: -X * -X * This code is based largely upon the sample device drivers provided -X * by Sun Microsystems Inc. -X * -X * Original copyright notice: -X * @(#)mmap.c 1.3 copyright 93/06/03 Sun Microsystems, Inc. -X * -X * Our copyright notice: -X * Permission to use, copy, modify, distribute, and sell this software and its -X * documentation for any purpose is hereby granted without fee, provided that -X * the above copyright notice appear in all copies and that both that -X * copyright notice and this permission notice appear in supporting -X * documentation, and that the name of Doug Anson, and David Holland be used in -X * advertising or publicity pertaining to distribution of the software -X * Doug Anson, and David Holland make no * representations about the -X * suitability of this software for any purpose. -X * It is provided "as is" without express or implied warranty. -X * -X * Original disclamer from Sun Microsystems, Inc.: -X * This is a package of sample device drivers for Solaris 2.x (SunOS -X * 5.x). You may use, modify and distribute these drivers and/or binaries -X * derived from them. However please note that: -X * -X * These examples are provided with no warranties of any kind, including -X * without limitation accuracy and usefulness, and Sun expressly disclaims -X * all implied warranties of merchantability, fitness for a particular -X * purpose and non-infringement. In no event shall Sun be liable for any -X * damages, including without limitation, direct, special, indirect, or -X * consequential damages arising out of, or relating to, use of these -X * examples by customer or any third party. Sun is under no obligation to -X * provide support to customer for this software. -X * -X * Our disclaimer: -X * DOUG ANSON, AND DAVID HOLLAND DISCLAIMS ALL WARRIENTS WITH REGARD TO THIS -X * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY, AND FITNESS, -X * IN NO EVENT SHALL DOUG ANSON, OR DAVID HOLLAND BE LIABLE FOR ANY SPECIAL, -X * INDIRECT, OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM -X * USAGE OF THIS SOFTWARE. -X */ -X -/* -X * linear framebuffer aperture driver -X * -X * $Id -X */ -X -#include <sys/types.h> -#include <sys/param.h> -#include <sys/errno.h> -#include <sys/file.h> -#include <sys/conf.h> -#include <sys/uio.h> -#include <sys/map.h> -#include <sys/debug.h> -#include <sys/modctl.h> -#include <sys/kmem.h> -#include <sys/cmn_err.h> -#include <sys/open.h> -#include <sys/stat.h> -#include <sys/ddi.h> -#include <sys/sunddi.h> -X -#include "aperture.h" -X -/* opaque handle top of state structs */ -static void *state_head = NULL; -X -/* -X * Solaris DDI/DKI driver entry points -X */ -#if defined(__STDC__) -static int aperture_getinfo(dev_info_t *, ddi_info_cmd_t, void *,void **); -static int aperture_identify(dev_info_t *dip); -static int aperture_probe(dev_info_t *dip); -static int aperture_attach(dev_info_t *, ddi_attach_cmd_t); -static int aperture_open(dev_t *, int, int, cred_t *); -static int aperture_close(dev_t, int, int, cred_t *); -static int aperture_detach(dev_info_t *, ddi_detach_cmd_t); -static int aperture_mmap(dev_t, off_t, int); -#else -static int aperture_getinfo(); -static int aperture_identify(); -static int aperture_probe(); -static int aperture_attach(); -static int aperture_open(); -static int aperture_close(); -static int aperture_detach(); -static int aperture_mmap(); -#endif /* __STDC__ */ -X -/* -X * Solaris DDI/DKI module linkeage structure declarations -X */ -static struct cb_ops aperture_cb_ops = -{ -X aperture_open, /* XXopen routine */ -X aperture_close, /* XXclose routine */ -X nodev, /* XXstrategy routine */ -X nodev, /* XXprint routine */ -X nodev, /* XXdump routine */ -X nodev, /* XXread routine */ -X nodev, /* XXwrite routine */ -X nodev, /* XXioctl routine */ -X nodev, /* XXdevmap routine */ -X aperture_mmap, /* XXmmap routine */ -X ddi_segmap, /* XXsegmap routine */ -X nochpoll, /* XXchpoll routine */ -X ddi_prop_op, /* XXprop_op routine */ -X (struct streamtab *)0, /* not a STREAMS driver */ -X D_NEW | D_MP, /* safe for multi-thread/multi-processor*/ -}; -X -static struct dev_ops aperture_ops = -{ -X DEVO_REV, /* DEVO_REV indicated by manual */ -X 0, /* device reference count */ -X aperture_getinfo, /* devo_getinfo routine */ -X aperture_identify, /* devo_identiry routine */ -X aperture_probe, /* device probe for non-self-id */ -X aperture_attach, /* devo_attach routine */ -X aperture_detach, /* devo_detach routine */ -X nodev, /* device reset routine */ -X &aperture_cb_ops, /* cb_ops structure pointer */ -X (struct bus_ops *)0, /* bus operations */ -}; -X -extern struct mod_ops mod_driverops; -static struct modldrv modldrv = -{ -X &mod_driverops, /* mod_ops structure pointer */ -X DEV_BANNER_STRING, /* device banner string */ -X &aperture_ops, /* dev_ops structure pointer */ -}; -X -static struct modlinkage modlinkage = -{ -X MODREV_1, /* as indicated indicated by manual */ -X (void *)&modldrv, /* module driver structure pointer */ -X NULL, /* termination of list of linkage structures */ -}; -X -/* -X * Function: _init() -X * Purpose: Solaris DDI/DKI _init(9E) entry point -X * Author: Doug Anson -X * Calls: -X * Log: DMA -- Origional Version -X * DWH - Removed extra cmn_err() calls 2/23/94 -X * DWH - Changed debugging 2/23/94 -X */ -#if defined(__STDC__) -int _init(void) -#else -int _init() -#endif /* __STDC__ */ -{ -X register int error; -X -#if APERTURE_DEBUG >= 3 -X -X /* enterance announcement */ -X cmn_err(CE_CONT,"%s: entering _init(aperture)\n", DEV_IDENT_STRING); -X -#endif -X -X if ((error = ddi_soft_state_init(&state_head, sizeof (Mmap), 1)) != 0) -X { -X /* failed to get state structure */ -X return (error); -X } -X -X if ((error = mod_install(&modlinkage)) != 0) -X ddi_soft_state_fini(&state_head); -X -X return (error); -} -X -/* -X * Function: _info() -X * Purpose: Solaris DDI/DKI _info(9E) entry point -X * Author: Doug Anson -X * Calls: -X * Modified: David Holland (davidh@use.com) -X * Log: DMA -- Origional Version -X * DWH - Changed debugging 2/23/94 -X */ -#if defined(__STDC__) -int _info(struct modinfo *modinfop) -#else -int _info(modinfop) -struct modinfo *modinfop; -#endif /* __STDC__ */ -{ -X -#if APERTURE_DEBUG >= 3 -X -X /* entrance announcement */ -X cmn_err(CE_CONT,"%s: entering _info(aperture)\n", DEV_IDENT_STRING); -X -#endif /* APERTURE_DEBUG >= 3 */ -X -X return (mod_info(&modlinkage, modinfop)); -} -X -/* -X * Function: _fini() -X * Purpose: Solaris DDI/DKI _fini(9E) entry point -X * Author: Doug Anson -X * Calls: -X * Modified: David Holland (davidh@use.com) -X * Log: DMA -- Origional Version -X * DWH - Changed debugging -X */ -#if defined(__STDC__) -int _fini(void) -#else -int _fini() -#endif /* __STDC__ */ -{ -X int status; -X -#if APERTURE_DEBUG >= 3 -X -/* entrance announcement */ -cmn_err(CE_CONT,"%s: entering _fini(aperture)\n", DEV_IDENT_STRING); -X -#endif /* APERTURE_DEBUG >= 3*/ -X -X if ((status = mod_remove(&modlinkage)) != 0) -X return (status); -X -X ddi_soft_state_fini(&state_head); -X -X return (status); -} -X -/* -X * Function: aperture_getinfo() -X * Purpose: This function provides the getinfo(9E) functionality -X * Author: Doug Anson -X * Calls: -X * Modified: David Holland (davidh@use.com) -X * Log: DMA -- Origional Version -X * DWH - Changed function name/variables/debugging 2/23/94 -X */ -#if defined(__STDC__) -static int aperture_getinfo(dev_info_t *dip, ddi_info_cmd_t infocmd, -X void *arg, void **result) -#else -static int aperture_getinfo(dip,infocmd,arg,result) -dev_info_t *dip; -ddi_info_cmd_t infocmd; -void *arg; -void **result; -#endif /* __STDC__ */ -{ -X register int error; -X register Mmap *aperture_p = NULL; -X -#if APERTURE_DEBUG >= 3 -X -X /* enterance announcement */ -X cmn_err(CE_CONT,"%s: entering aperture_getinfo()\n", DEV_IDENT_STRING); -X -#endif -X -X switch (infocmd) -X { -X case DDI_INFO_DEVT2DEVINFO: -X aperture_p = (Mmap *)ddi_get_soft_state(state_head, getminor((dev_t)arg)); -X if (aperture_p == NULL) -X { -X /* could not get state structure */ -X *result = NULL; -X error = DDI_FAILURE; -X } -X else -X { -X /* got state structure */ -X *result = aperture_p->dip; -X error = DDI_SUCCESS; -X } -X break; -X case DDI_INFO_DEVT2INSTANCE: -X *result = (void *)getminor((dev_t)arg); -X error = DDI_SUCCESS; -X break; -X default: -X *result = NULL; -X error = DDI_FAILURE; -X break; -X } -X return (error); -} -X -/* -X * Function: aperture_identify() -X * Purpose: This function implements the identify(9E) functionality -X * Author: Doug Anson -X * Calls: -X * Modified: David Holland (davidh@use.com) -X * Log: DMA -- Origional Version -X * DWH - Changed function name/debugging/variables 2/23/94 -X */ -#if defined(__STDC__) -static int aperture_identify(dev_info_t *dip) -#else -static int aperture_identify(dip) -dev_info_t *dip; -#endif /* __STDC__ */ -{ -#if APERTURE_DEBUG >= 3 -X -X /* entrance announcement */ -X cmn_err(CE_CONT,"%s: entering aperture_identify()\n", DEV_IDENT_STRING); -X -#endif -X -X /* check the driver name and respond */ -X if (strcmp(ddi_get_name(dip), APERTURE_NAME) == 0) -X return (DDI_IDENTIFIED); /* device driver is identified */ -X else -X return (DDI_NOT_IDENTIFIED); /* device driver not identified */ -} -X -/* -X * Function: aperture_probe() -X * Purpose: This function implements the probe(9E) functionality. -X * Currently this function returns a "dont care" result -X * as nothing is probed. -X * Author: Doug Anson -X * Calls: -X * Modfied: David Holland (davidh@use.com) -X * Log: DMA -- Origional Version -X * DWH - changed function name/variables/debugging 2/23/94 -X */ -#if defined(__STDC__) -static int aperture_probe(dev_info_t *dip) -#else -static int aperture_probe(dip) -dev_info_t *dip; -#endif /* __STDC__ */ -{ -X -#if APERTURE_DEBUG >= 3 -X -X /* enterance announcement */ -X cmn_err(CE_CONT,"%s: entering aperture_probe()\n", DEV_IDENT_STRING); -X -#endif -X -X /* return success as we really aren't probing for anything */ -X return (DDI_PROBE_SUCCESS); -} -X -/* -X * Function: aperture_attach() -X * Purpose: This function implements the attach(9E) functionality -X * Author: Doug Anson -X * Calls: -X * Modified: David Holland (davidh@use.com) -X * Log: DMA -- Origional Version -X * DWH - changed function name/variables/debugging 2/23/94 -X */ -#if defined(__STDC__) -static int aperture_attach(dev_info_t *dip, ddi_attach_cmd_t cmd) -#else -static int aperture_attach(dip,cmd) -dev_info_t *dip; -ddi_attach_cmd_t cmd; -#endif /* __STDC__ */ -{ -X register Mmap *aperture_p = NULL; -X int buf[AP_MAX]; -X int length; -X int instance; -X -#if APERTURE_DEBUG >= 3 -X -X /* entrance announcement */ -X cmn_err(CE_CONT,"%s: entering aperture_attach()\n", DEV_IDENT_STRING); -X -#endif -X -X /* only continue if doing a DDI_ATTACH */ -X if (cmd == DDI_ATTACH) -X { -X /* get and initialize our state structure */ -X instance = ddi_get_instance(dip); -X if (ddi_soft_state_zalloc(state_head, instance) != DDI_SUCCESS) -X { -X /* could not allocate state structure */ -X return (DDI_FAILURE); -X } -X -X /* get the state structure */ -X aperture_p = (Mmap *)ddi_get_soft_state(state_head, instance); -X -X if (aperture_p == NULL) -X { -X /* failed to get the soft state */ -X return (DDI_FAILURE); -X } -X -X /* initialize the mutex driver (ATOMIC) */ -X mutex_init(&aperture_p->map_lock, "apperture mmap lock", MUTEX_DRIVER, 0); -X -X /* ENTER the critical region */ -X mutex_enter(&aperture_p->map_lock); -X -X /* get the "reg" property from the .conf file */ -X length = sizeof(buf); -X if (ddi_getlongprop_buf(DDI_DEV_T_ANY, dip, DDI_PROP_DONTPASS, "reg", (caddr_t)buf, &length) != DDI_PROP_SUCCESS) -X { -X /* could not get the framebuffer properties */ -X return (DDI_FAILURE); -X } -X -X /* remember our register configuration */ -X aperture_p->regnum = (u_int)buf[AP_REGNUM]; -X aperture_p->regbase = (caddr_t)buf[AP_ADDR]; -X aperture_p->regsize = (off_t)buf[AP_SIZE]; -X -X /* initialize the mmap state info */ -X aperture_p->reglength = (off_t)AP_MEM_CHUNK; -X aperture_p->kaddr = (caddr_t)0; -X aperture_p->off = (off_t)0; -X aperture_p->mapaddr = AP_MEM_FAILURE; -X -X /* initialize internal accounting */ -X aperture_p->dip = dip; -X -X /* EXIT the critical region */ -X mutex_exit(&aperture_p->map_lock); -X -X /* create the device node */ -X /* DDI_PSEUDO, CLONE_DEV */ -X if (ddi_create_minor_node(dip, ddi_get_name(dip), S_IFCHR, instance, NULL, (int)NULL) == DDI_FAILURE) -X { -X /* failed to make the device leaf or in error state */ -X mutex_destroy(&aperture_p->map_lock); -X ddi_soft_state_free(state_head, instance); -X return (DDI_FAILURE); -X } -X -X /* device driver attached successfully */ -X ddi_report_dev(aperture_p->dip); -X return (DDI_SUCCESS); -X } -X else -X { -X /* command not DDI_ATTACH -- return failure */ -X return (DDI_FAILURE); -X } -} -X -/* -X * Function: aperture_detach() -X * Purpose: This function implements the detach(9E) functionality -X * Author: Doug Anson -X * Calls: -X * Modified: David Holland (davidh@use.com) -X * Log: DMA -- Origional Version -X * DWH - changed function name/variables/debugging 2/23/94 -X */ -#if defined(__STDC__) -static int aperture_detach(dev_info_t *dip, ddi_detach_cmd_t cmd) -#else -static int aperture_detach(dip,cmd) -dev_info_t *dip; -ddi_detach_cmd_t cmd; -#endif /* __STDC__ */ -{ -X register Mmap *aperture_p = NULL; -X int instance; -X -#if APERTURE_DEBUG >= 3 -X -X /* entrance announcement */ -X cmn_err(CE_CONT,"%s: entering aperture_detach()\n", DEV_IDENT_STRING); -X -#endif -X -X /* check the parameter list */ -X if (cmd != DDI_DETACH) -X { -X return (DDI_FAILURE); -X } -X -X /* get the instance info and state structure */ -X instance = ddi_get_instance(dip); -X aperture_p = (Mmap *)ddi_get_soft_state(state_head, instance); -X if (aperture_p == NULL) -X { -X /* failed to get the soft state */ -X return (DDI_FAILURE); -X } -X -X /* clean up the driver */ -X mutex_destroy(&aperture_p->map_lock); -X ddi_remove_minor_node(dip, NULL); -X ddi_soft_state_free(state_head, instance); -X -X /* device driver detached successfully */ -X return (DDI_SUCCESS); -} -X -/* -X * Function: aperture_open() -X * Purpose: This function is called in response to the open(2) system call -X * Author: Doug Anson -X * Calls: -X * Modified: David Holland (davidh@use.com) -X * Log: DMA -- Origional Version -X * DWH - Changed function name/variables/debugging -X */ -#if defined(__STDC__) -static int aperture_open(dev_t *dev, int openflags, int otyp, cred_t *credp) -#else -static int aperture_open(dev, openflags, otyp, credp) -dev_t *dev; -int openflags; -int otyp; -cred_t *credp; -#endif /* __STDC__ */ -{ -X register Mmap *aperture_p = NULL; -X -#if APERTURE_DEBUG >= 3 -X -X /* entrance announcement */ -X cmn_err(CE_CONT,"%s: entering aperture_open()\n", DEV_IDENT_STRING); -X -#endif -X -X /* get the state structure */ -X aperture_p = (Mmap *)ddi_get_soft_state(state_head, getminor(*dev)); -X if (aperture_p == NULL) -X { -X /* failed to get the soft state */ -X return (ENXIO); -X } -X -X /* check the parameter list for correctness */ -X if (otyp != OTYP_CHR) -X { -X /* invalid parameter list */ -X return (EINVAL); -X } -X -X return (0); -} -X -/* -X * Function: aperture_close() -X * Purpose: This function is called after the last process that has -X * the device open calls close(2) -X * Author: Doug Anson -X * Calls: -X * Modified: David Holland (davidh@use.com) -X * Log: DMA -- Origional Version -X * DWH - changed function name/variables/debugging 2/23/94 -X */ -#if defined(__STDC__) -static int aperture_close(dev_t dev, int closeflags, int otyp, cred_t *credp) -#else -static int aperture_close(dev, closeflags, otyp, credp) -dev_t dev; -int closeflags; -int otyp; -cred_t *credp; -#endif /* __STDC__ */ -{ -X register Mmap *aperture_p = NULL; -X -#if APERTURE_DEBUG >= 3 -X -X /* enterance announcement */ -X cmn_err(CE_CONT,"%s: entering aperture_close()\n", DEV_IDENT_STRING); -X -#endif -X -X /* get the state structure */ -X aperture_p = (Mmap *)ddi_get_soft_state(state_head, getminor(dev)); -X if (aperture_p == NULL) -X { -X /* failed to get the soft state */ -X return (ENXIO); -X } -X -X /* check the paramter list for correctness */ -X if (otyp != OTYP_CHR) -X { -X /* invalid parameter */ -X return (EINVAL); -X } -X -X /* do nothing but return successful */ -X return (0); -} -X -/* -X * Function: aperture_mmap() -X * Purpose: This function gets called when the user process tries to mmap -X * the framebuffer device using mmap(2). -X * Author: Doug Anson -X * Calls: -X * Modified: David Holland (davidh@use.com) -X * Log: DMA -- Origional Version -X * DWH - changed function name/variables/debugging 2/23/94 -X */ -#if defined(__STDC__) -static int aperture_mmap(dev_t dev, off_t off, int prot) -#else -static int aperture_mmap(dev, off, prot) -dev_t dev; -off_t off; -int prot; -#endif /* __STDC__ */ -{ -X register Mmap *aperture_p = NULL; -X -#if APERTURE_DEBUG >= 3 -X -X /* enterance announcement */ -X cmn_err(CE_CONT,"%s: entering aperture_mmap()\n", DEV_IDENT_STRING); -X -#endif -X -X /* get the state structure */ -X aperture_p = (Mmap *)ddi_get_soft_state(state_head, getminor(dev)); -X if (aperture_p == NULL) -X { -X /* failed to get the soft state */ -X return (AP_MEM_FAILURE); -X } -X -X /* check that we dont mmap out of bounds */ -X if (off > aperture_p->regsize) -X { -X /* offset is out of range for register length */ -X return (AP_MEM_FAILURE); -X } -X -X /* check that READ/WRITE only priv only */ -X if (!((prot & PROT_READ) || (prot & PROT_WRITE))) -X { -X /* invalid prot parameter in mmap(2) call */ -X return (AP_MEM_FAILURE); -X } -X -X /* ENTER the critical region */ -X mutex_enter(&aperture_p->map_lock); -X -X /* map the registers CRITICAL REGION ASSIGNMENT */ -X -X aperture_p->off = off; -X if (ddi_map_regs(aperture_p->dip, aperture_p->regnum, (caddr_t *)&(aperture_p->kaddr), -X aperture_p->off, aperture_p->reglength) == DDI_FAILURE) -X { -X -#if APERTURE_DEBUG >= 2 -X -X /* report error */ -X cmn_err(CE_CONT, "%s: ERROR: mmap failed (map regs). kaddr=0x%x off=0x%x\n", -X DEV_IDENT_STRING,aperture_p->kaddr,aperture_p->off); -X -#endif -X -X aperture_p->mapaddr = (off_t)AP_MEM_FAILURE; -X } -X else -X { -X /* fill in our state structure CRITICAL REGION ASSIGNMENT */ -X aperture_p->mapaddr = (off_t)hat_getkpfnum((caddr_t)aperture_p->kaddr); -X if ((u_int)aperture_p->mapaddr == (u_int)AP_MEM_FAILURE) -X { -X -#if APERTURE_DEBUG >= 2 -X -X /* report error */ -X cmn_err(CE_CONT, "%s: ERROR: mmap failed (kpf). kaddr=0x%x off=0x%x\n", -X DEV_IDENT_STRING,aperture_p->kaddr,aperture_p->off); -#endif -X -X } -X -X /* now unmap the region CRITICAL REGION ASSIGNMENT */ -X -X ddi_unmap_regs(aperture_p->dip, aperture_p->regnum, (caddr_t *)&(aperture_p->kaddr), -X aperture_p->off, aperture_p->reglength); -X -#if APERTURE_DEBUG >= 2 -X /* report register mmaping status */ -X if (aperture_p->mapaddr != AP_MEM_FAILURE) -X { -X /* mmap successful */ -X cmn_err(CE_CONT,"%s: mmap [off=0x%x,length=0x%x) successful\n", -X DEV_IDENT_STRING,aperture_p->off,aperture_p->regsize); -X -X cmn_err(CE_CONT,"%s: configuration:\n",DEV_IDENT_STRING); -X cmn_err(CE_CONT," REG(%d): regbase=0x%x regsize=0x%x\n", -X aperture_p->regnum, aperture_p->regbase, aperture_p->regsize); -X -X cmn_err(CE_CONT," kaddr=0x%x mmap off=0x%x mmap addr=0x%x\n", -X aperture_p->kaddr, aperture_p->off, aperture_p->mapaddr); -X } -X else -X { -X /* error in mmap routine */ -X cmn_err(CE_CONT,"%s: mmap not established due to errors", DEV_IDENT_STRING); -X } -#endif -X -X } -X -X /* EXIT the critical region */ -X mutex_exit(&aperture_p->map_lock); -X -X /* return the page frame number (PFN) */ -X -#if APERTURE_DEBUG >= 3 -X -X /* report exit - determining where the long delay is... */ -X cmn_err(CE_CONT, "%s: _mmap routine exiting\n", DEV_IDENT_STRING); -X -#endif -X -X return ((int)(aperture_p->mapaddr)); -} -SHAR_EOF -chmod 0644 aperture/aperture.c || -echo 'restore of aperture/aperture.c failed' -Wc_c="`wc -c < 'aperture/aperture.c'`" -test 20528 -eq "$Wc_c" || - echo 'aperture/aperture.c: original size 20528, current size' "$Wc_c" -fi -# ============= aperture/aperture.conf ============== -if test -f 'aperture/aperture.conf' -a X"$1" != X"-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' && -# -# Copyright 1994 Doug Anson, danson@lgc.com & David Holland, davidh@use.com -# -# File: aperture.conf -# Author: Doug Anson (danson@lgc.com) -# -# Modified: David Holland (davidh@use.com) -# Log: Change comments 2/23/94 -# Log: Change defaults/comments 9/25/94 -# -# Purpose: This conf file is used by the aperture Framebuffer aperture -# driver. Do NOT! change the first two numbers of of -# the 'reg' property. They should be 0, and 0x0, -# respectivly. -# -name="aperture" class="sysbus" reg=0,0x0,0x7fffffff; -SHAR_EOF -chmod 0644 aperture/aperture.conf || -echo 'restore of aperture/aperture.conf failed' -Wc_c="`wc -c < 'aperture/aperture.conf'`" -test 518 -eq "$Wc_c" || - echo 'aperture/aperture.conf: original size 518, current size' "$Wc_c" -fi -# ============= aperture/aptest.c ============== -if test -f 'aperture/aptest.c' -a X"$1" != X"-c"; then - echo 'x - skipping aperture/aptest.c (File already exists)' -else -echo 'x - extracting aperture/aptest.c (Text)' -sed 's/^X//' << 'SHAR_EOF' > 'aperture/aptest.c' && -/* -X * Copyright 1994 Doug Anson, danson@lgc.com & David Holland, davidh@use.com -X * -X * Author: Doug Anson (danson@lgc.com) -X * Date : 2/21/94 -X * Modifed: David Holland (davidh@use.com) -X * Log: -X * DWH - Changed names/added comments 2/23/94 -X * DWH - Removed annoying delays. 2/23/94 -X * -X * This program test the fb aperture driver by 'cheating' -X * it uses the aperture driver to access/read the main -X * system BIOS header -X * -X * Copyright notice: -X * Permission to use, copy, modify, distribute, and sell this software and its -X * documentation for any purpose is hereby granted without fee, provided that -X * the above copyright notice appear in all copies and that both that -X * copyright notice and this permission notice appear in supporting -X * documentation, and that the name of Doug Anson, and David Holland be used in -X * advertising or publicity pertaining to distribution of the software -X * Doug Anson, and David Holland make no * representations about the -X * suitability of this software for any purpose. -X * It is provided "as is" without express or implied warranty. -X * -X * Disclaimer: -X * DOUG ANSON, AND DAVID HOLLAND DISCLAIMS ALL WARRIENTS WITH REGARD TO THIS -X * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY, AND FITNESS, -X * IN NO EVENT SHALL DOUG ANSON, OR DAVID HOLLAND BE LIABLE FOR ANY SPECIAL, -X * INDIRECT, OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM -X * USAGE OF THIS SOFTWARE. -X */ -X -/* -X * linear framebuffer aperture driver test program -X */ -X -/* -X * $Id -X */ -X -X -#include <stdio.h> -#include <sys/types.h> -#include <sys/mman.h> -#include <sys/stat.h> -#include <fcntl.h> -#include <errno.h> -X -#if !defined(sun) -extern void exit(int); -extern caddr_t mmap(); -extern int close(); -extern int munmap(); -#endif -X -/* framebuffer access defines */ -#define AP_DEV "/dev/fbs/aperture" /* framebuffer apperture device */ -#define PADDR 0xf0000 /* offset from fbmem base */ -#define BUF_LENGTH 0x1000 /* length in bytes -- ignored */ -X -/* debug testing defines */ -#define START_INDEX 0 /* display starting index(>=0)*/ -#define STOP_INDEX 80 /* display stopping index */ -#define INCR 1 /* display increment */ -X -/* main program */ -int main(int argc,char **argv) -{ -X caddr_t addr = (caddr_t)0; -X int fb_dev; -X long start = START_INDEX; -X long stop = STOP_INDEX; -X int i; -X -X /* open the framebuffer device */ -X fb_dev = open (AP_DEV,O_RDWR); -X if (fb_dev < 0) -X { -X /* failed to open framebuffer driver */ -X printf("ERROR: failed to open %s\n",AP_DEV); -X perror("ERROR: open()"); -X exit(1); -X } -X -X /* memory map the framebuffer */ -X addr = (caddr_t)mmap((caddr_t)0,BUF_LENGTH,PROT_READ|PROT_WRITE,MAP_SHARED, -X fb_dev,(off_t)PADDR); -X if (addr == (caddr_t)-1) -X { -X /* failed to memory map framebuffer driver */ -X printf("ERROR: failed to mmap [0x%x ,size=%d bytes)\n", -X PADDR,BUF_LENGTH); -X perror("ERROR: mmap()"); -X close(fb_dev); -X exit(1); -X } -X else -X { -X /* frame buffer mapped */ -X close(fb_dev); -X printf("NOTICE: BIOS mapped [0x%x ,size=%d) to addr=0x%x...\n", -X PADDR,BUF_LENGTH,(int)addr); -X -X /* display the buffer */ -X for(i=start;i<stop;i=i+INCR) -X printf("%c",addr[i]); -X /* printf("addr[%d]=%c\n",i,addr[i]); -X */ -X printf("\nDONE displaying memory contents (%d bytes)\n",stop); -X -X /* unmap and close */ -X printf("UNMAPPING [0x%x ,size=%d) to addr=0x%x... and closing...", -X PADDR,BUF_LENGTH,(int)addr); -X munmap(addr,BUF_LENGTH); -X printf("DONE.\n"); -X printf("Exiting successful...\n"); -X exit(0); -X } -X return 1; -} -SHAR_EOF -chmod 0644 aperture/aptest.c || -echo 'restore of aperture/aptest.c failed' -Wc_c="`wc -c < 'aperture/aptest.c'`" -test 3530 -eq "$Wc_c" || - echo 'aperture/aptest.c: original size 3530, current size' "$Wc_c" -fi -# ============= aperture/DISCLAIMER ============== -if test -f 'aperture/DISCLAIMER' -a X"$1" != X"-c"; then - echo 'x - skipping aperture/DISCLAIMER (File already exists)' -else -echo 'x - extracting aperture/DISCLAIMER (Text)' -sed 's/^X//' << 'SHAR_EOF' > 'aperture/DISCLAIMER' && -/* -X * Copyright 1994 Doug Anson (danson@lgc.com) & David Holland (davidh@use.com) -X * -X * This code is based largely upon the sample device drivers provided -X * by Sun Microsystems Inc. -X * -X * Original copyright notice: -X * @(#)mmap.c 1.3 copyright 93/06/03 Sun Microsystems, Inc. -X * -X * Our copyright notice: -X * Permission to use, copy, modify, distribute, and sell this software and its -X * documentation for any purpose is hereby granted without fee, provided that -X * the above copyright notice appear in all copies and that both that -X * copyright notice and this permission notice appear in supporting -X * documentation, and that the name of Doug Anson, and David Holland be used in -X * advertising or publicity pertaining to distribution of the software -X * Doug Anson, and David Holland make no * representations about the -X * suitability of this software for any purpose. -X * It is provided "as is" without express or implied warranty. -X * -X * Original disclamer from Sun Microsystems, Inc.: -X * This is a package of sample device drivers for Solaris 2.x (SunOS -X * 5.x). You may use, modify and distribute these drivers and/or binaries -X * derived from them. However please note that: -X * -X * These examples are provided with no warranties of any kind, including -X * without limitation accuracy and usefulness, and Sun expressly disclaims -X * all implied warranties of merchantability, fitness for a particular -X * purpose and non-infringement. In no event shall Sun be liable for any -X * damages, including without limitation, direct, special, indirect, or -X * consequential damages arising out of, or relating to, use of these -X * examples by customer or any third party. Sun is under no obligation to -X * provide support to customer for this software. -X * -X * Our disclaimer: -X * DOUG ANSON, AND DAVID HOLLAND DISCLAIMS ALL WARRIENTS WITH REGARD TO THIS -X * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY, AND FITNESS, -X * IN NO EVENT SHALL DOUG ANSON, OR DAVID HOLLAND BE LIABLE FOR ANY SPECIAL, -X * INDIRECT, OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM -X * USAGE OF THIS SOFTWARE. -X */ -X -/* -X * linear framebuffer aperture driver -X * -X * $Id -X */ -SHAR_EOF -chmod 0644 aperture/DISCLAIMER || -echo 'restore of aperture/DISCLAIMER failed' -Wc_c="`wc -c < 'aperture/DISCLAIMER'`" -test 2174 -eq "$Wc_c" || - echo 'aperture/DISCLAIMER: original size 2174, current size' "$Wc_c" -fi -exit 0 |