2,7 → 2,6 |
#define _LINUX_FB_H |
|
#include <linux/types.h> |
#include <list.h> |
#include <linux/i2c.h> |
|
struct dentry; |
11,6 → 10,34 |
|
#define FB_MAX 32 /* sufficient for now */ |
|
/* ioctls |
0x46 is 'F' */ |
#define FBIOGET_VSCREENINFO 0x4600 |
#define FBIOPUT_VSCREENINFO 0x4601 |
#define FBIOGET_FSCREENINFO 0x4602 |
#define FBIOGETCMAP 0x4604 |
#define FBIOPUTCMAP 0x4605 |
#define FBIOPAN_DISPLAY 0x4606 |
#ifdef __KERNEL__ |
#define FBIO_CURSOR _IOWR('F', 0x08, struct fb_cursor_user) |
#else |
#define FBIO_CURSOR _IOWR('F', 0x08, struct fb_cursor) |
#endif |
/* 0x4607-0x460B are defined below */ |
/* #define FBIOGET_MONITORSPEC 0x460C */ |
/* #define FBIOPUT_MONITORSPEC 0x460D */ |
/* #define FBIOSWITCH_MONIBIT 0x460E */ |
#define FBIOGET_CON2FBMAP 0x460F |
#define FBIOPUT_CON2FBMAP 0x4610 |
#define FBIOBLANK 0x4611 /* arg: 0 or vesa level + 1 */ |
#define FBIOGET_VBLANK _IOR('F', 0x12, struct fb_vblank) |
#define FBIO_ALLOC 0x4613 |
#define FBIO_FREE 0x4614 |
#define FBIOGET_GLYPH 0x4615 |
#define FBIOGET_HWCINFO 0x4616 |
#define FBIOPUT_MODEINFO 0x4617 |
#define FBIOGET_DISPINFO 0x4618 |
#define FBIO_WAITFORVSYNC _IOW('F', 0x20, __u32) |
|
#define FB_TYPE_PACKED_PIXELS 0 /* Packed Pixels */ |
#define FB_TYPE_PLANES 1 /* Non interleaved planes */ |
375,13 → 402,14 |
//#include <linux/workqueue.h> |
//#include <linux/notifier.h> |
#include <linux/list.h> |
#include <linux/mutex.h> |
//#include <linux/backlight.h> |
//#include <asm/io.h> |
|
//struct vm_area_struct; |
//struct fb_info; |
//struct device; |
//struct file; |
struct vm_area_struct; |
struct fb_info; |
struct device; |
struct file; |
|
/* Definitions below are used in the parsed monitor specs */ |
#define FB_DPMS_ACTIVE_OFF 1 |
408,7 → 436,6 |
|
#define FB_MISC_PRIM_COLOR 1 |
#define FB_MISC_1ST_DETAIL 2 /* First Detailed Timing is preferred */ |
|
struct fb_chroma { |
__u32 redx; /* in fraction of 1024 */ |
__u32 greenx; |
517,6 → 544,8 |
#define FB_EVENT_GET_REQ 0x0D |
/* Unbind from the console if possible */ |
#define FB_EVENT_FB_UNBIND 0x0E |
/* CONSOLE-SPECIFIC: remap all consoles to new fb - for vga switcheroo */ |
#define FB_EVENT_REMAP_ALL_CONSOLE 0x0F |
|
struct fb_event { |
struct fb_info *info; |
577,6 → 606,12 |
* LOCKING NOTE: those functions must _ALL_ be called with the console |
* semaphore held, this is the only suitable locking mechanism we have |
* in 2.6. Some may be called at interrupt time at this point though. |
* |
* The exception to this is the debug related hooks. Putting the fb |
* into a debug state (e.g. flipping to the kernel console) and restoring |
* it must be done in a lock-free manner, so low level drivers should |
* keep track of the initial console (if applicable) and may need to |
* perform direct, unlocked hardware writes in these hooks. |
*/ |
|
struct fb_ops { |
734,6 → 769,7 |
* takes over; acceleration engine should be in a quiescent state */ |
|
/* hints */ |
#define FBINFO_VIRTFB 0x0004 /* FB is System RAM, not device. */ |
#define FBINFO_PARTIAL_PAN_OK 0x0040 /* otw use pan only for double-buffering */ |
#define FBINFO_READS_FAST 0x0080 /* soft-copy faster than rendering */ |
|
755,8 → 791,6 |
#define FBINFO_MISC_USEREVENT 0x10000 /* event request |
from userspace */ |
#define FBINFO_MISC_TILEBLITTING 0x20000 /* use tile blitting */ |
#define FBINFO_MISC_FIRMWARE 0x40000 /* a replaceable firmware |
inited framebuffer */ |
|
/* 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 |
770,6 → 804,8 |
*/ |
#define FBINFO_MISC_ALWAYS_SETPAR 0x40000 |
|
/* where the fb is a firmware driver, and can be replaced with a proper one */ |
#define FBINFO_MISC_FIRMWARE 0x80000 |
/* |
* Host and GPU endianness differ. |
*/ |
781,11 → 817,15 |
*/ |
#define FBINFO_BE_MATH 0x100000 |
|
/* report to the VT layer that this fb driver can accept forced console |
output like oopses */ |
#define FBINFO_CAN_FORCE_OUTPUT 0x200000 |
|
struct fb_info { |
int node; |
int flags; |
// struct mutex lock; /* Lock for open/release/ioctl funcs */ |
// struct mutex mm_lock; /* Lock for fb_mmap and smem_* fields */ |
struct mutex lock; /* Lock for open/release/ioctl funcs */ |
struct mutex mm_lock; /* Lock for fb_mmap and smem_* fields */ |
struct fb_var_screeninfo var; /* Current var */ |
struct fb_fix_screeninfo fix; /* Current fix */ |
struct fb_monspecs monspecs; /* Current Monitor specs */ |
812,8 → 852,8 |
#endif |
|
struct fb_ops *fbops; |
// struct device *device; /* This is the parent */ |
// struct device *dev; /* This is this fb device */ |
struct device *device; /* This is the parent */ |
struct device *dev; /* This is this fb device */ |
int class_flag; /* private sysfs flags */ |
#ifdef CONFIG_FB_TILEBLITTING |
struct fb_tile_ops *tileops; /* Tile Blitting */ |
830,10 → 870,24 |
/* we need the PCI or similiar aperture base/size not |
smem_start/size as smem_start may just be an object |
allocated inside the aperture so may not actually overlap */ |
resource_size_t aperture_base; |
resource_size_t aperture_size; |
struct apertures_struct { |
unsigned int count; |
struct aperture { |
resource_size_t base; |
resource_size_t size; |
} ranges[0]; |
} *apertures; |
}; |
|
static inline struct apertures_struct *alloc_apertures(unsigned int max_num) { |
struct apertures_struct *a = kzalloc(sizeof(struct apertures_struct) |
+ max_num * sizeof(struct aperture), GFP_KERNEL); |
if (!a) |
return NULL; |
a->count = max_num; |
return a; |
} |
|
#ifdef MODULE |
#define FBINFO_DEFAULT FBINFO_MODULE |
#else |
852,6 → 906,42 |
*/ |
#define STUPID_ACCELF_TEXT_SHIT |
|
// This will go away |
#if defined(__sparc__) |
|
/* We map all of our framebuffers such that big-endian accesses |
* are what we want, so the following is sufficient. |
*/ |
|
// This will go away |
#define fb_readb sbus_readb |
#define fb_readw sbus_readw |
#define fb_readl sbus_readl |
#define fb_readq sbus_readq |
#define fb_writeb sbus_writeb |
#define fb_writew sbus_writew |
#define fb_writel sbus_writel |
#define fb_writeq sbus_writeq |
#define fb_memset sbus_memset_io |
#define fb_memcpy_fromfb sbus_memcpy_fromio |
#define fb_memcpy_tofb sbus_memcpy_toio |
|
#elif defined(__i386__) || defined(__alpha__) || defined(__x86_64__) || defined(__hppa__) || defined(__sh__) || defined(__powerpc__) || defined(__avr32__) || defined(__bfin__) |
|
#define fb_readb __raw_readb |
#define fb_readw __raw_readw |
#define fb_readl __raw_readl |
#define fb_readq __raw_readq |
#define fb_writeb __raw_writeb |
#define fb_writew __raw_writew |
#define fb_writel __raw_writel |
#define fb_writeq __raw_writeq |
#define fb_memset memset_io |
#define fb_memcpy_fromfb memcpy_fromio |
#define fb_memcpy_tofb memcpy_toio |
|
#else |
|
#define fb_readb(addr) (*(volatile u8 *) (addr)) |
#define fb_readw(addr) (*(volatile u16 *) (addr)) |
#define fb_readl(addr) (*(volatile u32 *) (addr)) |
861,7 → 951,11 |
#define fb_writel(b,addr) (*(volatile u32 *) (addr) = (b)) |
#define fb_writeq(b,addr) (*(volatile u64 *) (addr) = (b)) |
#define fb_memset memset |
#define fb_memcpy_fromfb memcpy |
#define fb_memcpy_tofb memcpy |
|
#endif |
|
#define FB_LEFT_POS(p, bpp) (fb_be_math(p) ? (32 - (bpp)) : 0) |
#define FB_SHIFT_HIGH(p, val, bits) (fb_be_math(p) ? (val) >> (bits) : \ |
(val) << (bits)) |
892,6 → 986,8 |
/* drivers/video/fbmem.c */ |
extern int register_framebuffer(struct fb_info *fb_info); |
extern int unregister_framebuffer(struct fb_info *fb_info); |
extern void remove_conflicting_framebuffers(struct apertures_struct *a, |
const char *name, bool primary); |
extern int fb_prepare_logo(struct fb_info *fb_info, int rotate); |
extern int fb_show_logo(struct fb_info *fb_info, int rotate); |
extern char* fb_get_buffer_offset(struct fb_info *info, struct fb_pixmap *buf, u32 size); |
912,7 → 1008,7 |
|
static inline void unlock_fb_info(struct fb_info *info) |
{ |
// mutex_unlock(&info->lock); |
mutex_unlock(&info->lock); |
} |
|
static inline void __fb_pad_aligned_buffer(u8 *dst, u32 d_pitch, |