NetBSD/sys/arch/sparc/include/fbio.h
matt 4b814be9cf Initial stab at a P9100 console FB driver for the Tadpole 3GX.
It supports RASTERCONSOLE only and the colormap support is
broken (the hardware doesn't seem to be doing what the tech.
docs. say it should be doing).  But it is usable as a console
(but with blue on white as the only color choice).  I figured
I'd check it in since it is somewhat usable and someone else
might figure what I screwed up in the color map support.
1999-08-01 00:23:48 +00:00

189 lines
6.6 KiB
C

/* $NetBSD: fbio.h,v 1.6 1999/08/01 00:23:49 matt Exp $ */
/*
* Copyright (c) 1992 Regents of the University of California.
* All rights reserved.
*
* This code is derived from software developed by the Computer Systems
* Engineering group at Lawrence Berkeley Laboratory under DARPA
* contract BG 91-66 and contributed to Berkeley.
*
* 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.
*
* @(#)fbio.h 7.2 (Berkeley) 4/1/92
*/
/*
* Frame buffer ioctls (from Sprite, trimmed to essentials for X11).
*/
/*
* Frame buffer type codes.
*/
#define FBTYPE_SUN1BW 0 /* multibus mono */
#define FBTYPE_SUN1COLOR 1 /* multibus color */
#define FBTYPE_SUN2BW 2 /* memory mono */
#define FBTYPE_SUN2COLOR 3 /* color w/rasterop chips */
#define FBTYPE_SUN2GP 4 /* GP1/GP2 */
#define FBTYPE_SUN5COLOR 5 /* RoadRunner accelerator */
#define FBTYPE_SUN3COLOR 6 /* memory color */
#define FBTYPE_MEMCOLOR 7 /* memory 24-bit */
#define FBTYPE_SUN4COLOR 8 /* memory color w/overlay */
#define FBTYPE_NOTSUN1 9 /* reserved for customer */
#define FBTYPE_NOTSUN2 10 /* reserved for customer */
#define FBTYPE_NOTSUN3 11 /* reserved for customer */
#define FBTYPE_SUNFAST_COLOR 12 /* accelerated 8bit */
#define FBTYPE_SUNROP_COLOR 13 /* MEMCOLOR with rop h/w */
#define FBTYPE_SUNFB_VIDEO 14 /* Simple video mixing */
#define FBTYPE_RESERVED5 15 /* reserved, do not use */
#define FBTYPE_RESERVED4 16 /* reserved, do not use */
#define FBTYPE_RESERVED3 17 /* reserved, do not use */
#define FBTYPE_SUNGP3 17 /* cg12 running gpsi microcode */
#define FBTYPE_SUNGT 18 /* gt graphics accelerator */
#define FBTYPE_SUNLEO 19 /* zx graphics accelerator */
#define FBTYPE_MDICOLOR 20 /* cgfourteen framebuffer */
#define FBTYPE_P9100 21 /* tadpole 3gx p9100 controller */
#define FBTYPE_LASTPLUSONE 22 /* max number of fbs (change as add) */
/*
* Frame buffer descriptor as returned by FBIOGTYPE.
*/
struct fbtype {
int fb_type; /* as defined above */
int fb_height; /* in pixels */
int fb_width; /* in pixels */
int fb_depth; /* bits per pixel */
int fb_cmsize; /* size of color map (entries) */
int fb_size; /* total size in bytes */
};
#define FBIOGTYPE _IOR('F', 0, struct fbtype)
#ifdef notdef
/*
* General purpose structure for passing info in and out of frame buffers
* (used for gp1) -- unsupported.
*/
struct fbinfo {
int fb_physaddr; /* physical frame buffer address */
int fb_hwwidth; /* fb board width */
int fb_hwheight; /* fb board height */
int fb_addrdelta; /* phys addr diff between boards */
u_char *fb_ropaddr; /* fb virtual addr */
int fb_unit; /* minor devnum of fb */
};
#define FBIOGINFO _IOR('F', 2, struct fbinfo)
#endif
/*
* Color map I/O.
*/
struct fbcmap {
int index; /* first element (0 origin) */
int count; /* number of elements */
u_char *red; /* red color map elements */
u_char *green; /* green color map elements */
u_char *blue; /* blue color map elements */
};
#define FBIOPUTCMAP _IOW('F', 3, struct fbcmap)
#define FBIOGETCMAP _IOW('F', 4, struct fbcmap)
/*
* Set/get attributes.
*/
#define FB_ATTR_NDEVSPECIFIC 8 /* no. of device specific values */
#define FB_ATTR_NEMUTYPES 4 /* no. of emulation types */
struct fbsattr {
int flags; /* flags; see below */
int emu_type; /* emulation type (-1 if unused) */
int dev_specific[FB_ATTR_NDEVSPECIFIC]; /* catchall */
};
#define FB_ATTR_AUTOINIT 1 /* emulation auto init flag */
#define FB_ATTR_DEVSPECIFIC 2 /* dev. specific stuff valid flag */
struct fbgattr {
int real_type; /* real device type */
int owner; /* PID of owner, 0 if myself */
struct fbtype fbtype; /* fbtype info for real device */
struct fbsattr sattr; /* see above */
int emu_types[FB_ATTR_NEMUTYPES]; /* possible emulations */
/* (-1 if unused) */
};
/* FBIOSATTR _IOW('F', 5, struct fbsattr) -- unsupported */
#define FBIOGATTR _IOR('F', 6, struct fbgattr)
/*
* Video control.
*/
#define FBVIDEO_OFF 0
#define FBVIDEO_ON 1
#define FBIOSVIDEO _IOW('F', 7, int)
#define FBIOGVIDEO _IOR('F', 8, int)
/*
* hardware cursor control
*/
struct fbcurpos {
short x;
short y;
};
#define FB_CUR_SETCUR 0x01
#define FB_CUR_SETPOS 0x02
#define FB_CUR_SETHOT 0x04
#define FB_CUR_SETCMAP 0x08
#define FB_CUR_SETSHAPE 0x10
#define FB_CUR_SETALL 0x1F
struct fbcursor {
short set; /* what to set */
short enable; /* enable/disable cursor */
struct fbcurpos pos; /* cursor's position */
struct fbcurpos hot; /* cursor's hot spot */
struct fbcmap cmap; /* color map info */
struct fbcurpos size; /* cursor's bit map size */
char *image; /* cursor's image bits */
char *mask; /* cursor's mask bits */
};
/* set/get cursor attributes/shape */
#define FBIOSCURSOR _IOW('F', 24, struct fbcursor)
#define FBIOGCURSOR _IOWR('F', 25, struct fbcursor)
/* set/get cursor position */
#define FBIOSCURPOS _IOW('F', 26, struct fbcurpos)
#define FBIOGCURPOS _IOW('F', 27, struct fbcurpos)
/* get max cursor size */
#define FBIOGCURMAX _IOR('F', 28, struct fbcurpos)