summaryrefslogtreecommitdiffstats
path: root/include/linux/fb.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/fb.h')
-rw-r--r--include/linux/fb.h40
1 files changed, 35 insertions, 5 deletions
diff --git a/include/linux/fb.h b/include/linux/fb.h
index 04a58f33ec5..2cb19e6503a 100644
--- a/include/linux/fb.h
+++ b/include/linux/fb.h
@@ -608,15 +608,21 @@ struct fb_ops {
int (*fb_sync)(struct fb_info *info);
/* perform fb specific ioctl (optional) */
- int (*fb_ioctl)(struct inode *inode, struct file *file, unsigned int cmd,
- unsigned long arg, struct fb_info *info);
+ int (*fb_ioctl)(struct fb_info *info, unsigned int cmd,
+ unsigned long arg);
/* Handle 32bit compat ioctl (optional) */
- long (*fb_compat_ioctl)(struct file *f, unsigned cmd, unsigned long arg,
- struct fb_info *info);
+ int (*fb_compat_ioctl)(struct fb_info *info, unsigned cmd,
+ unsigned long arg);
/* perform fb specific mmap */
- int (*fb_mmap)(struct fb_info *info, struct file *file, struct vm_area_struct *vma);
+ int (*fb_mmap)(struct fb_info *info, struct vm_area_struct *vma);
+
+ /* save current hardware state */
+ void (*fb_save_state)(struct fb_info *info);
+
+ /* restore saved state */
+ void (*fb_restore_state)(struct fb_info *info);
};
#ifdef CONFIG_FB_TILEBLITTING
@@ -726,6 +732,18 @@ struct fb_tile_ops {
from userspace */
#define FBINFO_MISC_TILEBLITTING 0x20000 /* use tile blitting */
+/* A driver may set this flag to indicate that it does want a set_par to be
+ * called every time when fbcon_switch is executed. The advantage is that with
+ * this flag set you can really be shure that set_par is always called before
+ * any of the functions dependant on the correct hardware state or altering
+ * that state, even if you are using some broken X releases. The disadvantage
+ * is that it introduces unwanted delays to every console switch if set_par
+ * is slow. It is a good idea to try this flag in the drivers initialization
+ * code whenever there is a bug report related to switching between X and the
+ * framebuffer console.
+ */
+#define FBINFO_MISC_ALWAYS_SETPAR 0x40000
+
struct fb_info {
int node;
int flags;
@@ -817,6 +835,18 @@ struct fb_info {
#endif
+#if defined (__BIG_ENDIAN)
+#define FB_LEFT_POS(bpp) (32 - bpp)
+#define FB_SHIFT_HIGH(val, bits) ((val) >> (bits))
+#define FB_SHIFT_LOW(val, bits) ((val) << (bits))
+#define FB_BIT_NR(b) (7 - (b))
+#else
+#define FB_LEFT_POS(bpp) (0)
+#define FB_SHIFT_HIGH(val, bits) ((val) << (bits))
+#define FB_SHIFT_LOW(val, bits) ((val) >> (bits))
+#define FB_BIT_NR(b) (b)
+#endif
+
/*
* `Generic' versions of the frame buffer device operations
*/