#ifndef _SYS_FBIO_H_
#define _SYS_FBIO_H_
#ifndef _SYS_TYPES_H_
#include <sys/types.h>
#endif
#ifndef _SYS_IOCCOM_H_
#include <sys/ioccom.h>
#endif
#include <machine/types.h>
#define FBTYPE_SUN1BW 0
#define FBTYPE_SUN1COLOR 1
#define FBTYPE_SUN2BW 2
#define FBTYPE_SUN2COLOR 3
#define FBTYPE_SUN2GP 4
#define FBTYPE_SUN5COLOR 5
#define FBTYPE_SUN3COLOR 6
#define FBTYPE_MEMCOLOR 7
#define FBTYPE_SUN4COLOR 8
#define FBTYPE_NOTSUN1 9
#define FBTYPE_NOTSUN2 10
#define FBTYPE_NOTSUN3 11
#define FBTYPE_SUNFAST_COLOR 12
#define FBTYPE_SUNROP_COLOR 13
#define FBTYPE_SUNFB_VIDEO 14
#define FBTYPE_RESERVED5 15
#define FBTYPE_RESERVED4 16
#define FBTYPE_RESERVED3 17
#define FBTYPE_RESERVED2 18
#define FBTYPE_RESERVED1 19
#define FBTYPE_MDA 20
#define FBTYPE_HERCULES 21
#define FBTYPE_CGA 22
#define FBTYPE_EGA 23
#define FBTYPE_VGA 24
#define FBTYPE_TGA 26
#define FBTYPE_DUMBFB 27
#define FBTYPE_LASTPLUSONE 28
struct fbtype {
int fb_type;
int fb_height;
int fb_width;
int fb_depth;
int fb_cmsize;
int fb_size;
};
#define FBIOGTYPE _IOR('F', 0, struct fbtype)
#ifdef notdef
struct fbinfo {
int fb_physaddr;
int fb_hwwidth;
int fb_hwheight;
int fb_addrdelta;
u_char *fb_ropaddr;
int fb_unit;
};
#define FBIOGINFO _IOR('F', 2, struct fbinfo)
#endif
struct fbcmap {
int index;
int count;
u_char *red;
u_char *green;
u_char *blue;
};
#define FBIOPUTCMAP _IOW('F', 3, struct fbcmap)
#define FBIOGETCMAP _IOW('F', 4, struct fbcmap)
#define FB_ATTR_NDEVSPECIFIC 8
#define FB_ATTR_NEMUTYPES 4
struct fbsattr {
int flags;
int emu_type;
int dev_specific[FB_ATTR_NDEVSPECIFIC];
};
#define FB_ATTR_AUTOINIT 1
#define FB_ATTR_DEVSPECIFIC 2
struct fbgattr {
int real_type;
int owner;
struct fbtype fbtype;
struct fbsattr sattr;
int emu_types[FB_ATTR_NEMUTYPES];
};
#define FBIOGATTR _IOR('F', 6, struct fbgattr)
#define FBVIDEO_OFF 0
#define FBVIDEO_ON 1
#define FBIOSVIDEO _IOW('F', 7, int)
#define FBIOGVIDEO _IOR('F', 8, int)
struct fbcurpos {
short x;
short y;
};
struct fbcursor {
short set;
short enable;
struct fbcurpos pos;
struct fbcurpos hot;
struct fbcmap cmap;
struct fbcurpos size;
caddr_t image;
caddr_t mask;
};
#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 (FB_CUR_SETCUR | FB_CUR_SETPOS | FB_CUR_SETHOT | \
FB_CUR_SETCMAP | FB_CUR_SETSHAPE)
#define FBIOSCURSOR _IOW('F', 24, struct fbcursor)
#define FBIOGCURSOR _IOWR('F', 25, struct fbcursor)
#define FBIOSCURPOS _IOW('F', 26, struct fbcurpos)
#define FBIOGCURPOS _IOW('F', 27, struct fbcurpos)
#define FBIOGCURMAX _IOR('F', 28, struct fbcurpos)
struct video_info {
int vi_mode;
int vi_flags;
#define V_INFO_COLOR (1 << 0)
#define V_INFO_GRAPHICS (1 << 1)
#define V_INFO_LINEAR (1 << 2)
int vi_width;
int vi_height;
int vi_cwidth;
int vi_cheight;
int vi_depth;
int vi_planes;
u_int vi_window;
size_t vi_window_size;
size_t vi_window_gran;
u_int vi_buffer;
size_t vi_buffer_size;
int vi_mem_model;
#define V_INFO_MM_OTHER (-1)
#define V_INFO_MM_TEXT 0
#define V_INFO_MM_PLANAR 1
#define V_INFO_MM_PACKED 2
#define V_INFO_MM_DIRECT 3
#define V_INFO_MM_CGA 100
#define V_INFO_MM_HGC 101
#define V_INFO_MM_VGAX 102
int vi_pixel_size;
int vi_pixel_fields[4];
int vi_pixel_fsizes[4];
u_char vi_reserved[64];
};
typedef struct video_info video_info_t;
struct video_adapter {
int va_index;
int va_type;
#define KD_OTHER 0
#define KD_MONO 1
#define KD_HERCULES 2
#define KD_CGA 3
#define KD_EGA 4
#define KD_VGA 5
#define KD_TGA 7
char *va_name;
int va_unit;
int va_minor;
int va_flags;
#define V_ADP_COLOR (1 << 0)
#define V_ADP_MODECHANGE (1 << 1)
#define V_ADP_STATESAVE (1 << 2)
#define V_ADP_STATELOAD (1 << 3)
#define V_ADP_FONT (1 << 4)
#define V_ADP_PALETTE (1 << 5)
#define V_ADP_BORDER (1 << 6)
#define V_ADP_PROBED (1 << 16)
#define V_ADP_INITIALIZED (1 << 17)
#define V_ADP_REGISTERED (1 << 18)
int va_io_base;
int va_io_size;
int va_mem_base;
int va_mem_size;
vm_offset_t va_window;
size_t va_window_size;
size_t va_window_gran;
u_int va_window_orig;
vm_offset_t va_buffer;
size_t va_buffer_size;
int va_initial_mode;
int va_initial_bios_mode;
int va_mode;
u_char va_palette_regs[16];
struct video_info va_info;
int va_line_width;
struct {
int x;
int y;
} va_disp_start;
void *va_token;
};
typedef struct video_adapter video_adapter_t;
struct video_adapter_info {
int va_index;
int va_type;
char va_name[16];
int va_unit;
int va_flags;
int va_io_base;
int va_io_size;
int va_mem_base;
int va_mem_size;
u_int va_window;
size_t va_window_size;
size_t va_window_gran;
u_int va_unused0;
size_t va_buffer_size;
int va_initial_mode;
int va_initial_bios_mode;
int va_mode;
int va_line_width;
struct {
int x;
int y;
} va_disp_start;
u_int va_window_orig;
u_char va_reserved[64];
};
typedef struct video_adapter_info video_adapter_info_t;
#define M_B40x25 0
#define M_C40x25 1
#define M_B80x25 2
#define M_C80x25 3
#define M_BG320 4
#define M_CG320 5
#define M_BG640 6
#define M_EGAMONO80x25 7
#define M_CG320_D 13
#define M_CG640_E 14
#define M_EGAMONOAPA 15
#define M_CG640x350 16
#define M_ENHMONOAPA2 17
#define M_ENH_CG640 18
#define M_ENH_B40x25 19
#define M_ENH_C40x25 20
#define M_ENH_B80x25 21
#define M_ENH_C80x25 22
#define M_VGA_C40x25 23
#define M_VGA_C80x25 24
#define M_VGA_M80x25 25
#define M_VGA11 26
#define M_BG640x480 26
#define M_VGA12 27
#define M_CG640x480 27
#define M_VGA13 28
#define M_VGA_CG320 28
#define M_VGA_C80x50 30
#define M_VGA_M80x50 31
#define M_VGA_C80x30 32
#define M_VGA_M80x30 33
#define M_VGA_C80x60 34
#define M_VGA_M80x60 35
#define M_VGA_CG640 36
#define M_VGA_MODEX 37
#define M_VGA_C90x25 40
#define M_VGA_M90x25 41
#define M_VGA_C90x30 42
#define M_VGA_M90x30 43
#define M_VGA_C90x43 44
#define M_VGA_M90x43 45
#define M_VGA_C90x50 46
#define M_VGA_M90x50 47
#define M_VGA_C90x60 48
#define M_VGA_M90x60 49
#define M_ENH_B80x43 0x70
#define M_ENH_C80x43 0x71
#define M_HGC_P0 0xe0
#define M_HGC_P1 0xe1
#define M_MCA_MODE 0xff
struct video_display_start {
int x;
int y;
};
typedef struct video_display_start video_display_start_t;
struct video_color_palette {
int index;
int count;
u_char *red;
u_char *green;
u_char *blue;
u_char *transparent;
};
typedef struct video_color_palette video_color_palette_t;
#define FBIO_ADAPTER _IOR('F', 100, int)
#define FBIO_ADPTYPE _IOR('F', 101, int)
#define FBIO_ADPINFO _IOR('F', 102, struct video_adapter_info)
#define FBIO_MODEINFO _IOWR('F', 103, struct video_info)
#define FBIO_FINDMODE _IOWR('F', 104, struct video_info)
#define FBIO_GETMODE _IOR('F', 105, int)
#define FBIO_SETMODE _IOW('F', 106, int)
#define FBIO_GETWINORG _IOR('F', 107, u_int)
#define FBIO_SETWINORG _IOW('F', 108, u_int)
#define FBIO_GETDISPSTART _IOR('F', 109, video_display_start_t)
#define FBIO_SETDISPSTART _IOW('F', 110, video_display_start_t)
#define FBIO_GETLINEWIDTH _IOR('F', 111, u_int)
#define FBIO_SETLINEWIDTH _IOW('F', 112, u_int)
#define FBIO_GETPALETTE _IOW('F', 113, video_color_palette_t)
#define FBIO_SETPALETTE _IOW('F', 114, video_color_palette_t)
#define V_DISPLAY_ON 0
#define V_DISPLAY_BLANK 1
#define V_DISPLAY_STAND_BY 2
#define V_DISPLAY_SUSPEND 3
#define FBIO_BLANK _IOW('F', 115, int)
#endif