333 lines
10 KiB
C
333 lines
10 KiB
C
/* @(#)fbio.h 1.1 94/10/31 SMI */
|
|
|
|
/*
|
|
* Copyright 1986 by Sun Microsystems, Inc.
|
|
*/
|
|
|
|
#ifndef _sun_fbio_h
|
|
#define _sun_fbio_h
|
|
#include <sys/types.h>
|
|
|
|
#ifndef ASM
|
|
/*
|
|
* Frame buffer descriptor.
|
|
* Returned by FBIOGTYPE ioctl on frame buffer devices.
|
|
*/
|
|
struct fbtype {
|
|
int fb_type; /* as defined below */
|
|
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 KERNEL
|
|
struct fbpixrect {
|
|
struct pixrect *fbpr_pixrect; /* Pixrect of dev returned here */
|
|
};
|
|
|
|
#define FBIOGPIXRECT _IOWR(F, 1, struct fbpixrect)
|
|
#endif KERNEL
|
|
|
|
/*
|
|
* General purpose structure for passing info in and out of frame buffers
|
|
* (used for gp1)
|
|
*/
|
|
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 */
|
|
unsigned char *fb_ropaddr; /* fb va thru kernelmap */
|
|
int fb_unit; /* minor devnum of fb */
|
|
};
|
|
|
|
#define FBIOGINFO _IOR(F, 2, struct fbinfo)
|
|
|
|
/*
|
|
* Color map I/O. See also fbcmap_i below.
|
|
*/
|
|
struct fbcmap {
|
|
int index; /* first element (0 origin) */
|
|
int count; /* number of elements */
|
|
unsigned char *red; /* red color map elements */
|
|
unsigned char *green; /* green color map elements */
|
|
unsigned 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; /* misc flags */
|
|
#define FB_ATTR_AUTOINIT 1 /* emulation auto init flag */
|
|
#define FB_ATTR_DEVSPECIFIC 2 /* dev. specific stuff valid flag */
|
|
int emu_type; /* emulation type (-1 if unused) */
|
|
int dev_specific[FB_ATTR_NDEVSPECIFIC]; /* catchall */
|
|
};
|
|
|
|
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) */
|
|
};
|
|
|
|
#define FBIOSATTR _IOW(F, 5, struct fbsattr)
|
|
#define FBIOGATTR _IOR(F, 6, struct fbgattr)
|
|
|
|
|
|
/*
|
|
* Video control
|
|
* (the unused bits are reserved for future use)
|
|
*/
|
|
#define FBVIDEO_OFF 0
|
|
#define FBVIDEO_ON 1
|
|
|
|
#define FBIOSVIDEO _IOW(F, 7, int)
|
|
#define FBIOGVIDEO _IOR(F, 8, int)
|
|
|
|
/* Vertical retrace support. */
|
|
#define FBIOVERTICAL _IOW(F, 9, int)
|
|
#define GRABPAGEALLOC _IOR(F, 10, caddr_t)
|
|
#define GRABPAGEFREE _IOW(F, 11, caddr_t)
|
|
#define GRABATTACH _IOW(F, 12, caddr_t)
|
|
|
|
#define FBIOGPLNGRP _IOR(F, 13, int)
|
|
#define FBIOGCMSIZE _IOR(F, 14, int)
|
|
#define FBIOSCMSIZE _IOW(F, 15, int)
|
|
#define FBIOSCMS _IOW(F, 16, int)
|
|
#define FBIOAVAILPLNGRP _IOR(F, 17, int)
|
|
|
|
|
|
/*
|
|
* Structure to pass double buffering state back and forth the device.
|
|
*/
|
|
|
|
/* used in devstate */
|
|
#define FBDBL_AVAIL 0x80000000
|
|
#define FBDBL_DONT_BLOCK 0x40000000
|
|
#define FBDBL_AVAIL_PG 0x20000000
|
|
|
|
/* used in read/write/display */
|
|
#define FBDBL_A 0x1
|
|
#define FBDBL_B 0x2
|
|
#define FBDBL_BOTH (FBDBL_A | FBDBL_B)
|
|
#define FBDBL_NONE 0x4
|
|
|
|
struct fbdblinfo {
|
|
unsigned int dbl_devstate;
|
|
unsigned int dbl_read;
|
|
unsigned int dbl_write;
|
|
unsigned int dbl_display;
|
|
int dbl_depth;
|
|
char dbl_wid;
|
|
};
|
|
|
|
#define FBIODBLGINFO _IOR(F, 18, struct fbdblinfo)
|
|
#define FBIODBLSINFO _IOW(F, 19, struct fbdblinfo)
|
|
|
|
/* 8-bit emulation in 24-bit ioctls */
|
|
|
|
#define FBIOSWINFD _IOR(F, 20, int)
|
|
#define FBIOSAVWINFD _IOR(F, 21, int)
|
|
#define FBIORESWINFD _IOR(F, 22, int)
|
|
#define FBIOSRWINFD _IOR(F, 23, int)
|
|
|
|
/*
|
|
* hardware cursor control
|
|
*/
|
|
|
|
struct fbcurpos {
|
|
short x, y;
|
|
};
|
|
|
|
struct fbcursor {
|
|
short set; /* what to set */
|
|
#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
|
|
short enable; /* cursor on/off */
|
|
struct fbcurpos pos; /* cursor position */
|
|
struct fbcurpos hot; /* cursor hot spot */
|
|
struct fbcmap cmap; /* color map info */
|
|
struct fbcurpos size; /* cursor bit map size */
|
|
char *image; /* cursor image bits */
|
|
char *mask; /* cursor 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)
|
|
|
|
/* Window Grabber info ioctl */
|
|
#define GRABLOCKINFO _IOR(F, 29, caddr_t)
|
|
|
|
/*
|
|
* Window Identification (wid) defines, structures, and ioctls.
|
|
*
|
|
* Some wids need to be unique when used for things such as double
|
|
* buffering or rendering clipping. Some wids can be shared when
|
|
* used for display attributes only. What can be shared and how
|
|
* may be device dependent. The fb_wid_alloc.wa_type and fb_wid_item
|
|
* structure members will be left to device specific interpretation.
|
|
*/
|
|
|
|
#define FB_WID_SHARED_8 0
|
|
#define FB_WID_SHARED_24 1
|
|
#define FB_WID_DBL_8 2
|
|
#define FB_WID_DBL_24 3
|
|
|
|
struct fb_wid_alloc
|
|
{
|
|
unsigned int wa_type; /* special attributes */
|
|
int wa_index; /* base wid returned */
|
|
unsigned int wa_count; /* how many contiguous wids */
|
|
};
|
|
|
|
struct fb_wid_item
|
|
{
|
|
unsigned int wi_type; /* special attributes */
|
|
int wi_index; /* which lut */
|
|
unsigned int wi_attrs; /* which attributes */
|
|
unsigned int wi_values[NBBY*sizeof(int)]; /* the attr values */
|
|
};
|
|
|
|
struct fb_wid_list
|
|
{
|
|
unsigned int wl_flags;
|
|
unsigned int wl_count;
|
|
struct fb_wid_item *wl_list;
|
|
};
|
|
|
|
struct fb_wid_dbl_info
|
|
{
|
|
struct fb_wid_alloc dbl_wid;
|
|
char dbl_fore;
|
|
char dbl_back;
|
|
char dbl_read_state;
|
|
char dbl_write_state;
|
|
};
|
|
|
|
#define FBIO_WID_ALLOC _IOWR(F, 30, struct fb_wid_alloc)
|
|
#define FBIO_WID_FREE _IOW(F, 31, struct fb_wid_alloc)
|
|
#define FBIO_WID_PUT _IOW(F, 32, struct fb_wid_list)
|
|
#define FBIO_WID_GET _IOW(F, 33, struct fb_wid_list)
|
|
|
|
#define FBIO_DEVID _IOR(F, 34, int)
|
|
#define FBIO_U_RST _IOW(F, 35, int)
|
|
#define FBIO_FULLSCREEN_ELIMINATION_GROUPS _IOR(F, 36, unsigned char *)
|
|
#define FBIO_WID_DBL_SET _IO(F, 37)
|
|
#define FBIOVRTOFFSET _IOR(F, 38, int)
|
|
|
|
struct cg6_info {
|
|
u_short accessible_width; /* accessible bytes in scanline */
|
|
u_short accessible_height; /* number of accessible scanlines */
|
|
u_short line_bytes; /* number of bytes/scanline */
|
|
u_short hdb_capable; /* can this thing hardware db? */
|
|
u_short vmsize; /* this is Mb of video memory */
|
|
u_char boardrev; /* board revision # */
|
|
u_char slot; /* sbus slot # */
|
|
u_long pad1; /* expansion */
|
|
} ;
|
|
|
|
#define MON_TYPE_STEREO 0x8 /* stereo display */
|
|
#define MON_TYPE_0_OFFSET 0x4 /* black level 0 ire instead of 7.5 */
|
|
#define MON_TYPE_OVERSCAN 0x2 /* overscan */
|
|
#define MON_TYPE_GRAY 0x1 /* greyscale monitor */
|
|
|
|
struct mon_info {
|
|
u_long mon_type; /* bit array: defined above */
|
|
u_long pixfreq; /* pixel frequency in Hz */
|
|
u_long hfreq; /* horizontal freq in Hz */
|
|
u_long vfreq; /* vertical freq in Hz */
|
|
u_long vsync; /* vertical sync in scanlines */
|
|
u_long hsync; /* horizontal sync in pixels */
|
|
/* these are in pixel units */
|
|
u_short hfporch; /* horizontal front porch */
|
|
u_short hbporch; /* horizontal back porch */
|
|
u_short vfporch; /* vertical front porch */
|
|
u_short vbporch; /* vertical back porch */
|
|
} ;
|
|
|
|
|
|
#define FBIOGXINFO _IOR(F, 39, struct cg6_info)
|
|
#define FBIOMONINFO _IOR(F, 40, struct mon_info)
|
|
|
|
/*
|
|
* Color map I/O.
|
|
*/
|
|
struct fbcmap_i {
|
|
unsigned int flags; /* see below */
|
|
int id; /* colormap id for multiple cmaps */
|
|
int index; /* first element (0 origin) */
|
|
int count; /* number of elements */
|
|
unsigned char *red; /* red color map elements */
|
|
unsigned char *green; /* green color map elements */
|
|
unsigned char *blue; /* blue color map elements */
|
|
};
|
|
|
|
#define FB_CMAP_BLOCK 0x1 /* wait for vrt before returning */
|
|
#define FB_CMAP_KERNEL 0x2 /* called within kernel */
|
|
|
|
#define FBIOPUTCMAPI _IOW(F, 41, struct fbcmap_i)
|
|
#define FBIOGETCMAPI _IOW(F, 42, struct fbcmap_i)
|
|
|
|
/* assigning a given window id to a pixrect - special for PHIGS */
|
|
#define FBIO_ASSIGNWID _IOWR(F, 43, struct fb_wid_alloc)
|
|
|
|
/* assigning a given window to be stereo */
|
|
#define FBIO_STEREO _IOWR(F, 44, int)
|
|
#define FB_WIN_STEREO 0x2
|
|
|
|
#endif !ASM
|
|
|
|
/* 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_SUNGIFB 15 /* medical image */
|
|
#define FBTYPE_SUNGPLAS 16 /* plasma panel */
|
|
#define FBTYPE_SUNGP3 17 /* cg12 running gpsi microcode */
|
|
#define FBTYPE_SUNGT 18 /* gt graphics accelerator */
|
|
#define FBTYPE_RESERVED1 19 /* reserved, do not use */
|
|
|
|
#define FBTYPE_LASTPLUSONE 20 /* max number of fbs (change as add) */
|
|
|
|
#endif /*!_sun_fbio_h*/
|