NetBSD/sys/arch/newsmips/dev/fbreg.h

186 lines
6.3 KiB
C

/* $NetBSD: fbreg.h,v 1.2 1999/02/15 04:36:34 hubertf Exp $ */
/*
* Copyright (c) 1992, 1993
* The Regents of the University of California. All rights reserved.
*
* This code is derived from software contributed to Berkeley by
* Sony Corp. and Kazumasa Utashiro of Software Research Associates, Inc.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* from: $Hdr: fbreg.h,v 4.300 91/06/27 20:43:07 root Rel41 $ SONY
*
* @(#)fbreg.h 8.1 (Berkeley) 6/11/93
*/
#ifdef _KERNEL
#if defined(news3200) || defined(news3400)
#define splfb cpu_spl0 /* was spl3 */
#endif
#ifdef news3800
#define splfb spl4
#endif
extern int splfb();
/*
* state of fbstate
*/
#define FB_BUSY 01 /* fb is busy */
#define FB_WANTED 02 /* fb is wanted */
#define FB_WAIT 04 /* fb is waiting for command complete */
#define FB_DELAY 010 /* fb is busy, but not wait (inner ioctl) */
#define FB_DELAY2 020 /* fb is busy, but not wait (outer ioctl) */
/*
* physical page map for IOP
*/
#define FB_MAX_IO (2048*1024) /* 2048 KB */
#define NFBMAP (FB_MAX_IO / NBPG + 1) /* maximum number of pages */
struct fb_map {
caddr_t fm_vaddr; /* virtual address */
unsigned fm_offset; /* offset into first page */
unsigned fm_count; /* byte counts */
caddr_t fm_addr[NFBMAP]; /* first addr into page */
};
extern struct fb_map fbmap[];
/*
* fbreg definition
*/
struct fbreg {
u_char fb_command; /* command byte */
u_char fb_result; /* result byte */
u_char fb_device; /* device type */
u_char fb_unit; /* unit no */
union {
lBitblt _fb_bitblt; /* bitblt command */
lBatchBitblt _fb_batchbitblt; /* batch bitblt command */
lTileBitblt _fb_tilebitblt; /* tile bitblt command */
lBitblt3 _fb_bitblt3; /* 3 operand bitblt command */
lPrimLine _fb_polyline; /* (disjoint) polyline */
lPrimRect _fb_rectangle; /* rectangle */
lPrimFill _fb_fillscan; /* fill pattern */
lPrimMarker _fb_polymarker; /* polymarker */
lPrimText _fb_text; /* text display */
lPrimDot _fb_polydot; /* polydot */
lScrType _fb_scrtype; /* screen type */
lCursor2 _fb_cursor; /* cursor area */
lPalette _fb_palette; /* get/set palette */
lPoint _fb_point;
int _fb_data;
lVideoCtl _fb_videoctl;
lVideoStatus _fb_videostatus;
lFbIoctl _fb_ioctl;
} fb_un;
};
#define fb_bitblt fb_un._fb_bitblt
#define fb_batchbitblt fb_un._fb_batchbitblt
#define fb_tilebitblt fb_un._fb_tilebitblt
#define fb_bitblt3 fb_un._fb_bitblt3
#define fb_polyline fb_un._fb_polyline
#define fb_rectangle fb_un._fb_rectangle
#define fb_fillscan fb_un._fb_fillscan
#define fb_polymarker fb_un._fb_polymarker
#define fb_text fb_un._fb_text
#define fb_polydot fb_un._fb_polydot
#define fb_scrtype fb_un._fb_scrtype
#define fb_cursor fb_un._fb_cursor
#define fb_palette fb_un._fb_palette
#define fb_point fb_un._fb_point
#define fb_data fb_un._fb_data
#define fb_videoctl fb_un._fb_videoctl
#define fb_videostatus fb_un._fb_videostatus
#define fb_fbioctl fb_un._fb_ioctl
/* command definiton */
#define FB_CPROBE 0 /* probe */
#define FB_CATTACH 1 /* attach */
#define FB_COPEN 2 /* read from Frame Buffer */
#define FB_CCLOSE 3 /* write to Frame Buffer */
#define FB_CBITBLT 4 /* bitblt */
#define FB_CBATCHBITBLT 5 /* bitblt */
#define FB_CSETSCR 6 /* set display screen */
#define FB_CGETSCR 7 /* get display screen */
#define FB_CSETDIM 8 /* set dimmer level */
#define FB_CGETDIM 9 /* get dimmer level */
#define FB_CDRAW 10 /* graphic primitive drawing */
#define FB_CPOLYLINE 11
#define FB_CDJPOLYLINE 12
#define FB_CRECTANGLE 13
#define FB_CFILLSCAN 14
#define FB_CPOLYMARKER 15
#define FB_CTEXT 16
#define FB_CPOLYDOT 17
#define FB_CSETSCRMODE 18
#define FB_CGETSCRMODE 19
#define FB_CGETSCRTYPE 20 /* get screen type (b/w or color8 or...) */
#define FB_CSETPALETTE 21
#define FB_CGETPALETTE 22
#define FB_CSELPALETTE 23 /* select current palette */
#define FB_CSETDADDR 24 /* set display address */
#define FB_CTILEBITBLT 30 /* tile bitblt */
#define FB_CBITBLT3 31 /* 3 operand bitblt */
#define FB_CSETCURSOR 50
#define FB_CUNSETCURSOR 51
#define FB_CSHOWCURSOR 52
#define FB_CHIDECURSOR 53
#define FB_CSETXY 54
#define FB_CAUTODIM 55
#define FB_CSETVIDEO 60
#define FB_CGETVIDEO 61
#define FB_CSETPMODE 62
#define FB_CGETPMODE 63
#define FB_CGETPAGE 70
#define FB_CIOCTL 80
/* result definiton */
#define FB_ROK 0 /* OK */
#define FB_RERROR 1 /* some error occurred */
#define FBUNIT(dev) (minor(dev) & 0x7f)
#define FBVIDEO(dev) (minor(dev) & 0x80)
#define FBPRI (PRIBIO+1)
#define ASROM_SIZE 0x10000 /* size of auto-select ROM */
#define ASREG_SIZE 0x10000 /* size of auto-select control reg. */
#define ASREG_SIZE2 0x40000 /* size of 2nd area */
#endif /* _KERNEL */