summaryrefslogblamecommitdiffstats
path: root/cpukit/libmisc/mw-fb/mw_fb.h
blob: fb7b6f6170902c7c217642627b4058989669112a (plain) (tree)
1
2
3
4
5
6
7




                                                                             

                      




                                                    
















                                                                           


































































                                                                             
                       







                                   
  







                                                                     

                                             



                                             

                                     


                                                            

                                 


                                                            


                                                         



                                                  
  





                                                           



                                                                    



                                         
  






                                                                                               
  








                                                              
/*
/////////////////////////////////////////////////////////////////////////////
// $Header$
//
// Copyright (c) 2000 - Rosimildo da Silva
//
// MODULE DESCRIPTION:
// Micro FrameBuffer interface for Embedded Systems.
//
// MODIFICATION/HISTORY:
//
// $Log$
// Revision 1.1  2000/08/30 08:21:24  joel
// 2000-08-26  Rosimildo da Silva  <rdasilva@connecttel.com>
//
// 	* 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.
//
//
/////////////////////////////////////////////////////////////////////////////
*/
#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 */