From 152b1e31c3dce8976e7086f257f9334d3ee8bf8f Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Wed, 30 Aug 2000 08:21:24 +0000 Subject: 2000-08-26 Rosimildo da Silva * Added generic Micro FrameBuffer interface for MicroWindows. This interface allows MicroWindows to under RTEMS. A sample driver has been developed for the pc386 BSP. See pc386/fb_vga.c as a sample. * Added Uniform Input Device interface for MicroWindows. See PC386 bsp for sample drivers for mouse and keyboard (console). * mw-bf: New directory. * Makefile.am, configure.in, wrapup/Makefile.am: Account for mw-fb. * mw-fb/Makefile.am: New file. * mw-fb/mw_fb.c: New file. * mw-fb/mw_fb.h: New file. * mw-fb/mw_uid.c: New file. * mw-fb/mw_uid.h: New file. --- c/src/libmisc/mw-fb/mw_fb.h | 153 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 153 insertions(+) create mode 100644 c/src/libmisc/mw-fb/mw_fb.h (limited to 'c/src/libmisc/mw-fb/mw_fb.h') diff --git a/c/src/libmisc/mw-fb/mw_fb.h b/c/src/libmisc/mw-fb/mw_fb.h new file mode 100644 index 0000000000..ab965c1cb4 --- /dev/null +++ b/c/src/libmisc/mw-fb/mw_fb.h @@ -0,0 +1,153 @@ +/* +///////////////////////////////////////////////////////////////////////////// +// $Header$ +// +// Copyright (c) 2000 - Rosimildo da Silva +// +// MODULE DESCRIPTION: +// Micro FrameBuffer interface for Embedded Systems. +// +// MODIFICATION/HISTORY: +// +// $Log$ +// +///////////////////////////////////////////////////////////////////////////// +*/ +#ifndef _MW_FB_H +#define _MW_FB_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* ioctls + 0x46 is 'F' */ +#define FB_SCREENINFO 0x4601 +#define FB_GETPALETTE 0x4602 +#define FB_SETPALETTE 0x4603 +#define FB_EXEC_FUNCTION 0x4604 + + +#define FB_TYPE_PACKED_PIXELS 0 /* Packed Pixels */ +#define FB_TYPE_PLANES 1 /* Non interleaved planes */ +#define FB_TYPE_INTERLEAVED_PLANES 2 /* Interleaved planes */ +#define FB_TYPE_TEXT 3 /* Text/attributes */ +#define FB_TYPE_VGA_PLANES 4 /* EGA/VGA planes */ +#define FB_TYPE_VIRTUAL_BUFFER 5 /* Virtual Buffer */ + + +#define FB_VISUAL_MONO01 0 /* Monochr. 1=Black 0=White */ +#define FB_VISUAL_MONO10 1 /* Monochr. 1=White 0=Black */ +#define FB_VISUAL_TRUECOLOR 2 /* True color */ +#define FB_VISUAL_PSEUDOCOLOR 3 /* Pseudo color (like atari) */ +#define FB_VISUAL_DIRECTCOLOR 4 /* Direct color */ +#define FB_VISUAL_STATIC_PSEUDOCOLOR 5 /* Pseudo color readonly */ + +#define FB_ACCEL_NONE 0 /* no hardware accelerator */ + +/* no dependency on any other header file */ +typedef unsigned long __u32; +typedef unsigned short __u16; + +struct fb_screeninfo { + __u32 xres; /* visible resolution */ + __u32 yres; + __u32 bits_per_pixel; /* guess what */ + __u32 line_length; /* number of chars per line */ + volatile char *smem_start; /* Start of frame buffer mem */ + /* (physical address) */ + __u32 smem_len; /* Length of frame buffer mem */ + __u32 type; /* see FB_TYPE_* */ + __u32 visual; /* see FB_VISUAL_* */ + +}; + +struct fb_cmap { + __u32 start; /* First entry */ + __u32 len; /* Number of entries */ + __u16 *red; /* Red values */ + __u16 *green; + __u16 *blue; + __u16 *transp; /* transparency, can be NULL */ +}; + +/* type of function to be executed at the driver level */ +#define FB_FUNC_ENTER_GRAPHICS 0 +#define FB_FUNC_EXIT_GRAPHICS 1 +#define FB_FUNC_IS_DIRTY 2 +#define FB_FUNC_GET_MODE 3 + +struct fb_exec_function +{ + int func_no; + void *param; +}; + + +/* Micro Framebuffer API Wrapper */ + +/* + * This function returns the information regarding the display. + * It is called just after the driver be opened to get all needed + * information about the driver. No change in the mode of operation + * of the driver is done with this call. + */ +extern int ufb_get_screen_info( int fd, struct fb_screeninfo *info ); + + +/* + * Returns the mode of the graphics subsystem + */ +extern int ufb_get_mode( int fd, int *mode ); + + +/* + * Returns the current collor pallete + */ +extern int ufb_get_palette( int fd, struct fb_cmap *color ); + +/* + * Set the current collor pallete + */ +extern int ufb_set_palette( int fd, struct fb_cmap *color ); + +/* + * Does all necessary initialization to put the device in + * graphics mode + */ +extern int ufb_enter_graphics( int fd, int mode ); + + +/* + * Switch the device back to the default mode of operation. + * In most cases it put the device back to plain text mode. + */ +extern int ufb_exit_graphics( int fd ); + + +/* + * Tell the driver that the "virtual buffer" is dirty, and an update + * of it to the real device, maybe a serial/parallel LCD or whatever + * is required + */ +extern int ufb_buffer_is_dirty( int fd ); + + +/* + * This function maps the physical ( kernel mode ) address of the framebuffer device + * and maps it to the user space address. + */ + int ufb_mmap_to_user_space( int fd, void **fb_addr, void *physical_addr, unsigned long size ); + + + +/* + * This function unmaps memory of the FB from the user's space + */ + int ufb_unmmap_from_user_space( int fd, void *addr ); + +#ifdef __cplusplus +} +#endif + +#endif /* _MW_FB_H */ -- cgit v1.2.3