summaryrefslogtreecommitdiffstats
path: root/c/src/libmisc/mw-fb/mw_fb.h
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/libmisc/mw-fb/mw_fb.h')
-rw-r--r--c/src/libmisc/mw-fb/mw_fb.h153
1 files changed, 153 insertions, 0 deletions
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 */