summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorJames Simmons <jsimmons@maxwell.earthlink.net>2002-12-07 03:24:53 -0800
committerJames Simmons <jsimmons@maxwell.earthlink.net>2002-12-07 03:24:53 -0800
commit9c0b841c2edab11c321b878dd65144368bd2992c (patch)
treeafa9b5f4cfc67fd8e6100955008d74cb88b3cfe5 /include/linux
parent66b3836b6c1dda6748dce443cd1a02099208e225 (diff)
parente7a1f2478ea82a0b20d3f5b2f628e3dfde6fc82b (diff)
Merge maxwell.earthlink.net:/usr/src/linus-2.5
into maxwell.earthlink.net:/usr/src/fbdev-2.5
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/console.h1
-rw-r--r--include/linux/console_struct.h1
-rw-r--r--include/linux/fb.h207
-rw-r--r--include/linux/radeonfb.h15
-rw-r--r--include/linux/sisfb.h58
-rw-r--r--include/linux/vt_kern.h8
6 files changed, 169 insertions, 121 deletions
diff --git a/include/linux/console.h b/include/linux/console.h
index 646e0eaa9fb3..37b441e6dfd8 100644
--- a/include/linux/console.h
+++ b/include/linux/console.h
@@ -40,6 +40,7 @@ struct consw {
int (*con_switch)(struct vc_data *);
int (*con_blank)(struct vc_data *, int);
int (*con_font_op)(struct vc_data *, struct console_font_op *);
+ int (*con_resize)(struct vc_data *, unsigned int, unsigned int);
int (*con_set_palette)(struct vc_data *, unsigned char *);
int (*con_scrolldelta)(struct vc_data *, int);
int (*con_set_origin)(struct vc_data *);
diff --git a/include/linux/console_struct.h b/include/linux/console_struct.h
index d86c16e96d11..153f71db1f38 100644
--- a/include/linux/console_struct.h
+++ b/include/linux/console_struct.h
@@ -27,6 +27,7 @@ struct vc_data {
unsigned char vc_halfcolor; /* Color for half intensity mode */
unsigned short vc_complement_mask; /* [#] Xor mask for mouse pointer */
unsigned short vc_hi_font_mask; /* [#] Attribute set for upper 256 chars of font or 0 if not supported */
+ struct console_font_op vc_font; /* Current VC font set */
unsigned short vc_video_erase_char; /* Background erase character */
unsigned short vc_s_complement_mask; /* Saved mouse pointer mask */
unsigned int vc_x, vc_y; /* Cursor position */
diff --git a/include/linux/fb.h b/include/linux/fb.h
index cda1c818f68c..0281509b85c8 100644
--- a/include/linux/fb.h
+++ b/include/linux/fb.h
@@ -3,6 +3,7 @@
#include <linux/tty.h>
#include <asm/types.h>
+#include <asm/io.h>
/* Definitions of frame buffers */
@@ -17,6 +18,7 @@
#define FBIOGETCMAP 0x4604
#define FBIOPUTCMAP 0x4605
#define FBIOPAN_DISPLAY 0x4606
+#define FBIO_CURSOR _IOWR('F', 0x08, struct fb_cursor)
/* 0x4607-0x460B are defined below */
/* #define FBIOGET_MONITORSPEC 0x460C */
/* #define FBIOPUT_MONITORSPEC 0x460D */
@@ -208,7 +210,8 @@ struct fb_var_screeninfo {
__u32 vsync_len; /* length of vertical sync */
__u32 sync; /* see FB_SYNC_* */
__u32 vmode; /* see FB_VMODE_* */
- __u32 reserved[6]; /* Reserved for future compatibility */
+ __u32 rotate; /* angle we rotate counter clockwise */
+ __u32 reserved[5]; /* Reserved for future compatibility */
};
struct fb_cmap {
@@ -262,12 +265,12 @@ struct fb_vblank {
#define ROP_XOR 1
struct fb_copyarea {
- __u32 sx; /* screen-relative */
- __u32 sy;
- __u32 width;
- __u32 height;
__u32 dx;
__u32 dy;
+ __u32 width;
+ __u32 height;
+ __u32 sx;
+ __u32 sy;
};
struct fb_fillrect {
@@ -280,23 +283,45 @@ struct fb_fillrect {
};
struct fb_image {
- __u32 width; /* Size of image */
+ __u32 dx; /* Where to place image */
+ __u32 dy;
+ __u32 width; /* Size of image */
__u32 height;
- __u16 dx; /* Where to place image */
- __u16 dy;
- __u32 fg_color; /* Only used when a mono bitmap */
+ __u32 fg_color; /* Only used when a mono bitmap */
__u32 bg_color;
- __u8 depth; /* Dpeth of the image */
- char *data; /* Pointer to image data */
+ __u8 depth; /* Depth of the image */
+ char *data; /* Pointer to image data */
+ struct fb_cmap cmap; /* color map info */
};
-#ifdef __KERNEL__
+/*
+ * hardware cursor control
+ */
-#if 1 /* to go away in 2.5.0 */
-extern int GET_FB_IDX(kdev_t rdev);
-#else
-#define GET_FB_IDX(node) (minor(node))
-#endif
+#define FB_CUR_SETCUR 0x01
+#define FB_CUR_SETPOS 0x02
+#define FB_CUR_SETHOT 0x04
+#define FB_CUR_SETCMAP 0x08
+#define FB_CUR_SETSHAPE 0x10
+#define FB_CUR_SETDEST 0x20
+#define FB_CUR_SETSIZE 0x40
+#define FB_CUR_SETALL 0xFF
+
+struct fbcurpos {
+ __u16 x, y;
+};
+
+struct fb_cursor {
+ __u16 set; /* what to set */
+ __u16 enable; /* cursor on/off */
+ __u16 rop; /* bitop operation */
+ char *mask; /* cursor mask bits */
+ char *dest; /* destination */
+ struct fbcurpos hot; /* cursor hot spot */
+ struct fb_image image; /* Cursor image */
+};
+
+#ifdef __KERNEL__
#include <linux/fs.h>
#include <linux/poll.h>
@@ -316,15 +341,9 @@ struct fb_ops {
struct module *owner;
int (*fb_open)(struct fb_info *info, int user);
int (*fb_release)(struct fb_info *info, int user);
- /* set settable parameters */
- int (*fb_set_var)(struct fb_var_screeninfo *var, int con,
- struct fb_info *info);
- /* get colormap */
- int (*fb_get_cmap)(struct fb_cmap *cmap, int kspc, int con,
- struct fb_info *info);
- /* set colormap */
- int (*fb_set_cmap)(struct fb_cmap *cmap, int kspc, int con,
- struct fb_info *info);
+ /* For framebuffers with strange non linear layouts */
+ ssize_t (*fb_read)(struct file *file, char *buf, size_t count, loff_t *ppos);
+ ssize_t (*fb_write)(struct file *file, const char *buf, size_t count, loff_t *ppos);
/* checks var and creates a par based on it */
int (*fb_check_var)(struct fb_var_screeninfo *var, struct fb_info *info);
/* set the video mode according to par */
@@ -335,26 +354,29 @@ struct fb_ops {
/* blank display */
int (*fb_blank)(int blank, struct fb_info *info);
/* pan display */
- int (*fb_pan_display)(struct fb_var_screeninfo *var, int con, struct fb_info *info);
+ int (*fb_pan_display)(struct fb_var_screeninfo *var, struct fb_info *info);
/* draws a rectangle */
void (*fb_fillrect)(struct fb_info *info, struct fb_fillrect *rect);
/* Copy data from area to another */
void (*fb_copyarea)(struct fb_info *info, struct fb_copyarea *region);
/* Draws a image to the display */
void (*fb_imageblit)(struct fb_info *info, struct fb_image *image);
+ /* Draws cursor */
+ int (*fb_cursor)(struct fb_info *info, struct fb_cursor *cursor);
+ /* Rotates the display */
+ void (*fb_rotate)(struct fb_info *info, int angle);
/* perform polling on fb device */
int (*fb_poll)(struct fb_info *info, poll_table *wait);
+ /* wait for blit idle, optional */
+ 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, int con, struct fb_info *info);
+ unsigned long arg, struct fb_info *info);
/* perform fb specific mmap */
int (*fb_mmap)(struct fb_info *info, struct file *file, struct vm_area_struct *vma);
- /* switch to/from raster image mode */
- int (*fb_rasterimg)(struct fb_info *info, int start);
};
struct fb_info {
- char modename[40]; /* default video mode */
kdev_t node;
int flags;
int open; /* Has this been open already ? */
@@ -362,18 +384,12 @@ struct fb_info {
struct fb_var_screeninfo var; /* Current var */
struct fb_fix_screeninfo fix; /* Current fix */
struct fb_monspecs monspecs; /* Current Monitor specs */
+ struct fb_cursor cursor; /* Current cursor */
struct fb_cmap cmap; /* Current cmap */
struct fb_ops *fbops;
char *screen_base; /* Virtual address */
- struct display *disp; /* initial display variable */
struct vc_data *display_fg; /* Console visible on this display */
int currcon; /* Current VC. */
- char fontname[40]; /* default font name */
- int (*changevar)(int); /* tell console var has changed */
- int (*switch_con)(int, struct fb_info*);
- /* tell fb to switch consoles */
- int (*updatevar)(int, struct fb_info*);
- /* tell fb to update the vars */
void *pseudo_palette; /* Fake palette of 16 colors and
the cursor's color for non
palette mode */
@@ -387,31 +403,53 @@ struct fb_info {
#define FBINFO_FLAG_DEFAULT 0
#endif
- /*
- * `Generic' versions of the frame buffer device operations
- */
+#if defined(__sparc__)
-extern int gen_set_var(struct fb_var_screeninfo *var, int con,
- struct fb_info *info);
-extern int gen_get_cmap(struct fb_cmap *cmap, int kspc, int con,
- struct fb_info *info);
-extern int gen_set_cmap(struct fb_cmap *cmap, int kspc, int con,
- struct fb_info *info);
-extern int fb_pan_display(struct fb_var_screeninfo *var, int con,
- struct fb_info *info);
-extern void cfb_fillrect(struct fb_info *info, struct fb_fillrect *rect);
-extern void cfb_copyarea(struct fb_info *info, struct fb_copyarea *region);
-extern void cfb_imageblit(struct fb_info *info, struct fb_image *image);
+/* We map all of our framebuffers such that big-endian accesses
+ * are what we want, so the following is sufficient.
+ */
+
+#define fb_readb sbus_readb
+#define fb_readw sbus_readw
+#define fb_readl sbus_readl
+#define fb_writeb sbus_writeb
+#define fb_writew sbus_writew
+#define fb_writel sbus_writel
+#define fb_memset sbus_memset_io
+
+#elif defined(__i386__) || defined(__alpha__) || defined(__x86_64__) || defined(__hppa__)
+
+#define fb_readb __raw_readb
+#define fb_readw __raw_readw
+#define fb_readl __raw_readl
+#define fb_writeb __raw_writeb
+#define fb_writew __raw_writew
+#define fb_writel __raw_writel
+#define fb_memset memset_io
+
+#else
+
+#define fb_readb(addr) (*(volatile u8 *) (addr))
+#define fb_readw(addr) (*(volatile u16 *) (addr))
+#define fb_readl(addr) (*(volatile u32 *) (addr))
+#define fb_writeb(b,addr) (*(volatile u8 *) (addr) = (b))
+#define fb_writew(b,addr) (*(volatile u16 *) (addr) = (b))
+#define fb_writel(b,addr) (*(volatile u32 *) (addr) = (b))
+#define fb_memset memset
+
+#endif
/*
- * Helper functions
+ * `Generic' versions of the frame buffer device operations
*/
-extern void do_install_cmap(int con, struct fb_info *info);
-extern int gen_update_var(int con, struct fb_info *info);
+extern int fb_set_var(struct fb_var_screeninfo *var, struct fb_info *info);
+extern int fb_pan_display(struct fb_var_screeninfo *var, struct fb_info *info);
extern int fb_blank(int blank, struct fb_info *info);
-extern int gen_switch(int con, struct fb_info *info);
-extern void gen_set_disp(int con, struct fb_info *info);
+extern int soft_cursor(struct fb_info *info, struct fb_cursor *cursor);
+extern void cfb_fillrect(struct fb_info *info, struct fb_fillrect *rect);
+extern void cfb_copyarea(struct fb_info *info, struct fb_copyarea *area);
+extern void cfb_imageblit(struct fb_info *info, struct fb_image *image);
/* drivers/video/fbmem.c */
extern int register_framebuffer(struct fb_info *fb_info);
@@ -427,12 +465,9 @@ extern int fbmon_dpms(const struct fb_info *fb_info);
/* drivers/video/fbcmap.c */
extern int fb_alloc_cmap(struct fb_cmap *cmap, int len, int transp);
+extern void fb_dealloc_cmap(struct fb_cmap *cmap);
extern void fb_copy_cmap(struct fb_cmap *from, struct fb_cmap *to,
int fsfromto);
-extern int fb_get_cmap(struct fb_cmap *cmap, int kspc,
- int (*getcolreg)(u_int, u_int *, u_int *, u_int *,
- u_int *, struct fb_info *),
- struct fb_info *fb_info);
extern int fb_set_cmap(struct fb_cmap *cmap, int kspc, struct fb_info *fb_info);
extern struct fb_cmap *fb_default_cmap(int len);
extern void fb_invert_cmaps(void);
@@ -491,54 +526,4 @@ extern int __init fb_find_mode(struct fb_var_screeninfo *var,
#endif /* __KERNEL__ */
-#if 1
-
-#define FBCMD_GET_CURRENTPAR 0xDEAD0005
-#define FBCMD_SET_CURRENTPAR 0xDEAD8005
-
-#endif
-
-
-#if 1 /* Preliminary */
-
- /*
- * Hardware Cursor
- */
-
-#define FBIOGET_FCURSORINFO 0x4607
-#define FBIOGET_VCURSORINFO 0x4608
-#define FBIOPUT_VCURSORINFO 0x4609
-#define FBIOGET_CURSORSTATE 0x460A
-#define FBIOPUT_CURSORSTATE 0x460B
-
-
-struct fb_fix_cursorinfo {
- __u16 crsr_width; /* width and height of the cursor in */
- __u16 crsr_height; /* pixels (zero if no cursor) */
- __u16 crsr_xsize; /* cursor size in display pixels */
- __u16 crsr_ysize;
- __u16 crsr_color1; /* colormap entry for cursor color1 */
- __u16 crsr_color2; /* colormap entry for cursor color2 */
-};
-
-struct fb_var_cursorinfo {
- __u16 width;
- __u16 height;
- __u16 xspot;
- __u16 yspot;
- __u8 data[1]; /* field with [height][width] */
-};
-
-struct fb_cursorstate {
- __s16 xoffset;
- __s16 yoffset;
- __u16 mode;
-};
-
-#define FB_CURSOR_OFF 0
-#define FB_CURSOR_ON 1
-#define FB_CURSOR_FLASH 2
-
-#endif /* Preliminary */
-
#endif /* _LINUX_FB_H */
diff --git a/include/linux/radeonfb.h b/include/linux/radeonfb.h
new file mode 100644
index 000000000000..99bdf91bbc5d
--- /dev/null
+++ b/include/linux/radeonfb.h
@@ -0,0 +1,15 @@
+#ifndef __LINUX_RADEONFB_H__
+#define __LINUX_RADEONFB_H__
+
+#include <asm/ioctl.h>
+#include <asm/types.h>
+
+#define ATY_RADEON_LCD_ON 0x00000001
+#define ATY_RADEON_CRT_ON 0x00000002
+
+
+#define FBIO_RADEON_GET_MIRROR _IOR('@', 3, sizeof(__u32*))
+#define FBIO_RADEON_SET_MIRROR _IOW('@', 4, sizeof(__u32*))
+
+#endif
+
diff --git a/include/linux/sisfb.h b/include/linux/sisfb.h
index 4d12567013ba..f45257643986 100644
--- a/include/linux/sisfb.h
+++ b/include/linux/sisfb.h
@@ -1,6 +1,11 @@
#ifndef _LINUX_SISFB
#define _LINUX_SISFB
+#include <linux/spinlock.h>
+
+#include <asm/ioctl.h>
+#include <asm/types.h>
+
#define DISPTYPE_CRT1 0x00000008L
#define DISPTYPE_CRT2 0x00000004L
#define DISPTYPE_LCD 0x00000002L
@@ -20,6 +25,7 @@
#define HASVB_303 0x40
#define HASVB_CHRONTEL 0x80
+/* TW: *Never* change the order of the following enum */
typedef enum _SIS_CHIP_TYPE {
SIS_VGALegacy = 0,
SIS_300,
@@ -32,10 +38,17 @@ typedef enum _SIS_CHIP_TYPE {
SIS_315PRO,
SIS_640,
SIS_740,
- SIS_330,
+ SIS_650,
+ SIS_330,
MAX_SIS_CHIP
} SIS_CHIP_TYPE;
+typedef enum _VGA_ENGINE {
+ UNKNOWN_VGA = 0,
+ SIS_300_VGA,
+ SIS_315_VGA,
+} VGA_ENGINE;
+
typedef enum _TVTYPE {
TVMODE_NTSC = 0,
TVMODE_PAL,
@@ -81,21 +94,25 @@ struct ap_data {
};
struct video_info {
- int chip_id;
+ int chip_id;
unsigned int video_size;
unsigned long video_base;
- char *video_vbase;
+ char * video_vbase;
unsigned long mmio_base;
- char *mmio_vbase;
+ char * mmio_vbase;
unsigned long vga_base;
+ unsigned long mtrr;
+ unsigned long heapstart;
int video_bpp;
+ int video_cmap_len;
int video_width;
int video_height;
int video_vwidth;
int video_vheight;
int org_x;
int org_y;
+ int video_linelength;
unsigned int refresh_rate;
unsigned long disp_state;
@@ -106,9 +123,42 @@ struct video_info {
SIS_CHIP_TYPE chip;
unsigned char revision_id;
+ unsigned short DstColor; /* TW: For 2d acceleration */
+ unsigned long SiS310_AccelDepth;
+ unsigned long CommandReg;
+
+ spinlock_t lockaccel;
+
char reserved[256];
};
+
+/* TW: Addtional IOCTL for communication sisfb <> X driver */
+/* If changing this, vgatypes.h must also be changed (for X driver) */
+
+/* TW: ioctl for identifying and giving some info (esp. memory heap start) */
+#define SISFB_GET_INFO _IOR('n',0xF8,sizeof(__u32))
+
+/* TW: Structure argument for SISFB_GET_INFO ioctl */
+typedef struct _SISFB_INFO sisfb_info, *psisfb_info;
+
+struct _SISFB_INFO {
+ unsigned long sisfb_id; /* for identifying sisfb */
+#ifndef SISFB_ID
+#define SISFB_ID 0x53495346 /* Identify myself with 'SISF' */
+#endif
+ int chip_id; /* PCI ID of detected chip */
+ int memory; /* video memory in KB which sisfb manages */
+ int heapstart; /* heap start (= sisfb "mem" argument) in KB */
+ unsigned char fbvidmode; /* current sisfb mode */
+
+ unsigned char sisfb_version;
+ unsigned char sisfb_revision;
+ unsigned char sisfb_patchlevel;
+
+ char reserved[253]; /* for future use */
+};
+
#ifdef __KERNEL__
extern struct video_info ivideo;
diff --git a/include/linux/vt_kern.h b/include/linux/vt_kern.h
index 6d0b234f5a61..d611200c749d 100644
--- a/include/linux/vt_kern.h
+++ b/include/linux/vt_kern.h
@@ -10,6 +10,7 @@
#include <linux/vt.h>
#include <linux/kd.h>
#include <linux/tty.h>
+#include <linux/console_struct.h>
/*
* Presently, a lot of graphics programs do not restore the contents of
@@ -37,14 +38,9 @@ extern int kbd_rate(struct kbd_repeat *rep);
/* console.c */
-struct console_font_op;
-
int vc_allocate(unsigned int console);
int vc_cons_allocated(unsigned int console);
-int vc_resize(unsigned int lines, unsigned int cols,
- unsigned int first, unsigned int last);
-#define vc_resize_all(l, c) vc_resize(l, c, 0, MAX_NR_CONSOLES-1)
-#define vc_resize_con(l, c, x) vc_resize(l, c, x, x)
+int vc_resize(int currcons, unsigned int cols, unsigned int lines);
void vc_disallocate(unsigned int console);
void reset_palette(int currcons);
void set_palette(int currcons);