You can subscribe to this list here.
2000 |
Jan
|
Feb
|
Mar
(235) |
Apr
(30) |
May
(32) |
Jun
(86) |
Jul
(81) |
Aug
(108) |
Sep
(27) |
Oct
(22) |
Nov
(34) |
Dec
(10) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2001 |
Jan
(78) |
Feb
(10) |
Mar
(81) |
Apr
(27) |
May
(13) |
Jun
(105) |
Jul
(78) |
Aug
(52) |
Sep
(59) |
Oct
(90) |
Nov
(127) |
Dec
(49) |
2002 |
Jan
(102) |
Feb
(72) |
Mar
(54) |
Apr
(98) |
May
(25) |
Jun
(23) |
Jul
(123) |
Aug
(14) |
Sep
(52) |
Oct
(65) |
Nov
(48) |
Dec
(48) |
2003 |
Jan
(22) |
Feb
(25) |
Mar
(29) |
Apr
(12) |
May
(16) |
Jun
(11) |
Jul
(20) |
Aug
(20) |
Sep
(43) |
Oct
(84) |
Nov
(98) |
Dec
(56) |
2004 |
Jan
(28) |
Feb
(39) |
Mar
(41) |
Apr
(28) |
May
(88) |
Jun
(17) |
Jul
(43) |
Aug
(57) |
Sep
(54) |
Oct
(42) |
Nov
(32) |
Dec
(58) |
2005 |
Jan
(80) |
Feb
(31) |
Mar
(65) |
Apr
(41) |
May
(20) |
Jun
(34) |
Jul
(62) |
Aug
(73) |
Sep
(81) |
Oct
(48) |
Nov
(57) |
Dec
(57) |
2006 |
Jan
(63) |
Feb
(24) |
Mar
(18) |
Apr
(9) |
May
(22) |
Jun
(29) |
Jul
(47) |
Aug
(11) |
Sep
|
Oct
|
Nov
|
Dec
|
2024 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
From: James S. <jsi...@tr...> - 2001-11-29 18:24:45
|
> > Should be able to support that as well. I haven't added any flags for > > that. Hm. > > Just add a field to contain the color index for an inverting color (e.g. 3 for > XGA) or -1 if not supported. > > For transparency, use the alpha in the cmap. Okay. I guess we have to work the cursor stuff out more. |
From: James S. <jsi...@tr...> - 2001-11-29 18:08:23
|
> >From what you wrote I assume that cmap.start must be 0 and cmap.len > some length, and it must be always set, as otherwise it is impossible > to guess image/mask depth from it. [snip]... I figured the cursor stuff would be something to work out more. I shamefully stoled it from the sun fb implementation. I have another patch patch for fb.h which removes the cursor stuff until we work something out. Geert if I have your blessing on this I like to send it off to Linus. --- linux-2.5.0/include/linux/fb.h Wed Nov 28 16:43:10 2001 +++ linux/include/linux/fb.h Thu Nov 29 11:02:26 2001 @@ -241,6 +241,39 @@ __u32 reserved[4]; /* reserved for future compatibility */ }; +/* Internal HW accel */ +#define ROP_COPY 0 +#define ROP_XOR 1 + +struct fb_copyarea { + __u32 sx; /* screen-relative */ + __u32 sy; + __u32 width; + __u32 height; + __u32 dx; + __u32 dy; +}; + +struct fb_fillrect { + __u32 dx; /* screen-relative */ + __u32 dy; + __u32 width; + __u32 height; + __u32 color; + __u32 rop; +}; + +struct fb_image { + __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 bg_color; + __u8 depth; /* Dpeth of the image */ + char *data; /* Pointer to image data */ +}; + #ifdef __KERNEL__ #if 1 /* to go away in 2.5.0 */ @@ -250,10 +283,10 @@ #endif #include <linux/fs.h> +#include <linux/poll.h> #include <linux/init.h> #include <linux/devfs_fs_kernel.h> - struct fb_info; struct fb_info_gen; struct vm_area_struct; @@ -283,9 +316,25 @@ /* set colormap */ int (*fb_set_cmap)(struct fb_cmap *cmap, int kspc, int con, struct fb_info *info); - /* pan display (optional) */ - int (*fb_pan_display)(struct fb_var_screeninfo *var, int con, - struct fb_info *info); + /* 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 */ + int (*fb_set_par)(struct fb_info *info); + /* set color register */ + int (*fb_setcolreg)(unsigned regno, unsigned red, unsigned green, + unsigned blue, unsigned transp, struct fb_info *info); + /* 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); + /* draws a rectangle */ + void (*fb_fillrect)(struct fb_info *p, struct fb_fillrect *rect); + /* Copy data from area to another */ + void (*fb_copyarea)(struct fb_info *p, struct fb_copyarea *region); + /* Draws a image to the display */ + void (*fb_imageblit)(struct fb_info *p, struct fb_image *image); + /* perform polling on fb device */ + int (*fb_poll)(struct fb_info *info, poll_table *wait); /* 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); @@ -309,6 +358,7 @@ 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 */ devfs_handle_t devfs_handle; /* Devfs handle for new name */ devfs_handle_t devfs_lhandle; /* Devfs handle for compat. symlink */ @@ -387,6 +437,9 @@ struct fb_info *info); extern int fbgen_pan_display(struct fb_var_screeninfo *var, int con, struct fb_info *info); +extern void cfb_fillrect(struct fb_info *p, struct fb_fillrect *rect); +extern void cfb_copyarea(struct fb_info *p, struct fb_copyarea *region); +extern void cfb_imageblit(struct fb_info *p, struct fb_image *image); /* * Helper functions @@ -400,6 +453,7 @@ extern int fbgen_switch(int con, struct fb_info *info); extern void fbgen_blank(int blank, struct fb_info *info); +extern void fbgen2_set_disp(int con, struct fb_info *info); /* drivers/video/fbmem.c */ extern int register_framebuffer(struct fb_info *fb_info); |
From: Petr V. <VAN...@vc...> - 2001-11-29 17:59:08
|
On 29 Nov 01 at 9:35, James Simmons wrote: > +struct fbcursor { > + __u16 set; /* what to set */ > + __u16 enable;/* cursor on/off */ > + struct fbcurpos pos;/* cursor position */ > + struct fbcurpos hot;/* cursor hot spot */ > + struct fb_cmap cmap;/* color map info */ From what you wrote I assume that cmap.start must be 0 and cmap.len some length, and it must be always set, as otherwise it is impossible to guess image/mask depth from it. > + struct fbcurpos size;/* cursor bit map size */ > + char *image;/* cursor image bits */ > + char *mask;/* cursor mask bits */ And maybe it is better to go with Geert idea? Remove mask, and make image just really use cmap - if cmap entry is 100% transparent, it is like that bit(mask) == 1, and add one more field for inverted cmap entry. As no driver can use image/mask immediately anyway, there is no big problem. I hope that mask/image format is going to be specified somewhere more exactly - like whether each image/mask line consist of non-fractional number of bytes, what happens if cmap has 8 entries and other legal, but hard to implement, features... Petr Vandrovec van...@vc... |
From: James S. <jsi...@tr...> - 2001-11-29 17:35:25
|
> And x and y here? > > I'd vote for either x/y or dx/dy (destinatation x/y). I named them dx. I have a new patch here. If you approve of it I will send it to Linus then. --- linux-2.5.0/include/linux/fb.h Wed Nov 28 16:43:10 2001 +++ linux/include/linux/fb.h Thu Nov 29 10:30:41 2001 @@ -241,6 +241,65 @@ __u32 reserved[4]; /* reserved for future compatibility */ }; +/* + * hardware cursor control + */ + +#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_SETALL 0x1F + +struct fbcurpos { + __u16 x, y; +}; + +struct fbcursor { + __u16 set; /* what to set */ + __u16 enable;/* cursor on/off */ + struct fbcurpos pos;/* cursor position */ + struct fbcurpos hot;/* cursor hot spot */ + struct fb_cmap cmap;/* color map info */ + struct fbcurpos size;/* cursor bit map size */ + char *image;/* cursor image bits */ + char *mask;/* cursor mask bits */ +}; + +/* Internal HW accel */ +#define ROP_COPY 0 +#define ROP_XOR 1 + +struct fb_copyarea { + __u32 sx; /* screen-relative */ + __u32 sy; + __u32 width; + __u32 height; + __u32 dx; + __u32 dy; +}; + +struct fb_fillrect { + __u32 dx; /* screen-relative */ + __u32 dy; + __u32 width; + __u32 height; + __u32 color; + __u32 rop; +}; + +struct fb_image { + __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 bg_color; + __u8 depth; /* Dpeth of the image */ + char *data; /* Pointer to image data */ +}; + #ifdef __KERNEL__ #if 1 /* to go away in 2.5.0 */ @@ -250,10 +309,10 @@ #endif #include <linux/fs.h> +#include <linux/poll.h> #include <linux/init.h> #include <linux/devfs_fs_kernel.h> - struct fb_info; struct fb_info_gen; struct vm_area_struct; @@ -283,9 +342,27 @@ /* set colormap */ int (*fb_set_cmap)(struct fb_cmap *cmap, int kspc, int con, struct fb_info *info); - /* pan display (optional) */ - int (*fb_pan_display)(struct fb_var_screeninfo *var, int con, - struct fb_info *info); + /* 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 */ + int (*fb_set_par)(struct fb_info *info); + /* cursor control */ + int (*fb_cursor)(struct fb_info *info, struct fbcursor *cursor); + /* set color register */ + int (*fb_setcolreg)(unsigned regno, unsigned red, unsigned green, + unsigned blue, unsigned transp, struct fb_info *info); + /* 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); + /* draws a rectangle */ + void (*fb_fillrect)(struct fb_info *p, struct fb_fillrect *rect); + /* Copy data from area to another */ + void (*fb_copyarea)(struct fb_info *p, struct fb_copyarea *region); + /* Draws a image to the display */ + void (*fb_imageblit)(struct fb_info *p, struct fb_image *image); + /* perform polling on fb device */ + int (*fb_poll)(struct fb_info *info, poll_table *wait); /* 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); @@ -309,6 +386,7 @@ 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 */ devfs_handle_t devfs_handle; /* Devfs handle for new name */ devfs_handle_t devfs_lhandle; /* Devfs handle for compat. symlink */ @@ -387,6 +465,9 @@ struct fb_info *info); extern int fbgen_pan_display(struct fb_var_screeninfo *var, int con, struct fb_info *info); +extern void cfb_fillrect(struct fb_info *p, struct fb_fillrect *rect); +extern void cfb_copyarea(struct fb_info *p, struct fb_copyarea *region); +extern void cfb_imageblit(struct fb_info *p, struct fb_image *image); /* * Helper functions @@ -400,6 +481,7 @@ extern int fbgen_switch(int con, struct fb_info *info); extern void fbgen_blank(int blank, struct fb_info *info); +extern void fbgen2_set_disp(int con, struct fb_info *info); /* drivers/video/fbmem.c */ extern int register_framebuffer(struct fb_info *fb_info); |
From: Geert U. <ge...@li...> - 2001-11-29 07:53:21
|
On Wed, 28 Nov 2001, James Simmons wrote: > +struct fb_copyarea { > + __u32 sx; /* screen-relative */ > + __u32 sy; > + __u32 width; > + __u32 height; > + __u32 dx; > + __u32 dy; > +}; > + > +struct fb_fillrect { > + __u32 x1; /* screen-relative */ > + __u32 y1; Why call them x1 and y1 here? > + __u32 width; > + __u32 height; > + __u32 color; > + __u32 rop; > +}; > + > +struct fb_image { > + __u32 width; /* Size of image */ > + __u32 height; > + __u16 x; /* Where to place image */ > + __u16 y; And x and y here? I'd vote for either x/y or dx/dy (destinatation x/y). > + __u32 fg_color; /* Only used when a mono bitmap */ > + __u32 bg_color; > + __u8 depth; /* Dpeth of the image */ Depth > + char *data; /* Pointer to image data */ > +}; > + Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@li... In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds |
From: Geert U. <ge...@li...> - 2001-11-29 07:52:20
|
On Wed, 28 Nov 2001, James Simmons wrote: > > > +struct fbcursor { > > > + __u16 set; /* what to set */ > > > + __u16 enable;/* cursor on/off */ > > > + struct fbcurpos pos;/* cursor position */ > > > + struct fbcurpos hot;/* cursor hot spot */ > > > + struct fb_cmap cmap;/* color map info */ > > > + struct fbcurpos size;/* cursor bit map size */ > > > + char *image;/* cursor image bits */ > > > + char *mask;/* cursor mask bits */ > > > +}; > > > > Any details about contents of image and mask? > > Depends on what color depth you use for the cursor. > > > Or is it just monochromatic > > 1bpp image? There is hardware which can do 16color hardware cursors (+ > > transparent+inverse). > > I know. That is why we have a colormap for the cursor. This allows for > much more for the cursor than a mono color map. > > > And if it is 1bpp image, is it 0/1/transparent/invert (XGA), or > > transp./transp./0/1 (X)? > > Should be able to support that as well. I haven't added any flags for > that. Hm. Just add a field to contain the color index for an inverting color (e.g. 3 for XGA) or -1 if not supported. For transparency, use the alpha in the cmap. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@li... In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds |
From: James S. <jsi...@tr...> - 2001-11-29 00:44:56
|
> > accessing /dev/console only effects the first console in the list instead > > of all of them. If this is true then that means /dev/consoel can exist > > without /dev/tty which could be a good thing. > > Currently the "console" doesn't need to include a tty device - if its only > being hit with printk output. Then should we make TTY console aka /dev/console support a option? |
From: Alan C. <al...@lx...> - 2001-11-29 00:44:19
|
> accessing /dev/console only effects the first console in the list instead > of all of them. If this is true then that means /dev/consoel can exist > without /dev/tty which could be a good thing. Currently the "console" doesn't need to include a tty device - if its only being hit with printk output. |
From: James S. <jsi...@tr...> - 2001-11-29 00:39:52
|
> > the printk is currently writting to the VT console. This small patch is > > the first step toward that. Also tusing vc_tty will be needed in > > keyboard.c when it handles more than one keyboard. > > What happens when you have no tty bound to your console - and its just for > messages (eg the printer port console) ? What? What happens when you open /dev/console then? The tty layer redirects the console to some tty normally. If this is the case then I will do it the way I started out. Having the lock in struct console and sharing it with the tty layer. I was thinking about a tty_driver just for the struct console list anyways. Currently accessing /dev/console only effects the first console in the list instead of all of them. If this is true then that means /dev/consoel can exist without /dev/tty which could be a good thing. |
From: Alan C. <al...@lx...> - 2001-11-29 00:18:00
|
> the printk is currently writting to the VT console. This small patch is > the first step toward that. Also tusing vc_tty will be needed in > keyboard.c when it handles more than one keyboard. What happens when you have no tty bound to your console - and its just for messages (eg the printer port console) ? |
From: James S. <jsi...@tr...> - 2001-11-29 00:12:32
|
These patches seem trival but they are very important for my new console lock patch coming soon. Basically I have made the console lock more finer grain. Each individual console is locked instead of all consoles when printk is called. Their is no reason to block the serial console when say the printk is currently writting to the VT console. This small patch is the first step toward that. Also tusing vc_tty will be needed in keyboard.c when it handles more than one keyboard. diff -urN linux-2.5.0/drivers/char/console.c linux/drivers/char/console.c --- linux-2.5.0/drivers/char/console.c Tue Nov 27 11:56:43 2001 +++ linux/drivers/char/console.c Wed Nov 28 16:24:54 2001 @@ -2377,6 +2377,7 @@ vt_cons[currcons]->vc_num = currcons; tty->driver_data = vt_cons[currcons]; + vc_cons[currcons].d->vc_tty = tty; if (!tty->winsize.ws_row && !tty->winsize.ws_col) { tty->winsize.ws_row = video_num_lines; diff -urN linux-2.5.0/drivers/char/keyboard.c linux/drivers/char/keyboard.c --- linux-2.5.0/drivers/char/keyboard.c Tue Nov 27 11:56:43 2001 +++ linux/drivers/char/keyboard.c Wed Nov 28 16:30:31 2001 @@ -36,6 +36,7 @@ #include <asm/keyboard.h> #include <asm/bitops.h> +#include <linux/console_struct.h> #include <linux/kbd_kern.h> #include <linux/kbd_diacr.h> #include <linux/vt_kern.h> @@ -98,7 +99,6 @@ static unsigned char diacr; static char rep; /* flag telling character repeat */ struct kbd_struct kbd_table[MAX_NR_CONSOLES]; -static struct tty_struct **ttytab; static struct kbd_struct * kbd = kbd_table; static struct tty_struct * tty; @@ -207,7 +207,8 @@ pm_access(pm_kbd); add_keyboard_randomness(scancode | up_flag); - tty = ttytab? ttytab[fg_console]: NULL; + tty = vc_cons[fg_console].d->vc_tty; + if (tty && (!tty->driver_data)) { /* * We touch the tty structure via the ttytab array @@ -919,7 +920,6 @@ { int i; struct kbd_struct kbd0; - extern struct tty_driver console_driver; kbd0.ledflagstate = kbd0.default_ledflagstate = KBD_DEFLEDS; kbd0.ledmode = LED_SHOW_FLAGS; @@ -930,8 +930,6 @@ for (i = 0 ; i < MAX_NR_CONSOLES ; i++) kbd_table[i] = kbd0; - - ttytab = console_driver.table; kbd_init_hw(); diff -urN linux-2.5.0/include/linux/console_struct.h linux/include/linux/console_struct.h --- linux-2.5.0/include/linux/console_struct.h Tue Nov 27 11:56:33 2001 +++ linux/include/linux/console_struct.h Wed Nov 28 16:21:51 2001 @@ -33,6 +33,7 @@ unsigned int vc_top, vc_bottom; /* Scrolling region */ unsigned int vc_state; /* Escape sequence parser state */ unsigned int vc_npar,vc_par[NPAR]; /* Parameters of current escape sequence */ + struct tty_struct *vc_tty; /* TTY we are attached to */ unsigned long vc_origin; /* [!] Start of real screen */ unsigned long vc_scr_end; /* [!] End of real screen */ unsigned long vc_visible_origin; /* [!] Top of visible window */ |
From: James S. <jsi...@tr...> - 2001-11-28 19:55:28
|
> > +struct fbcursor { > > + __u16 set; /* what to set */ > > + __u16 enable;/* cursor on/off */ > > + struct fbcurpos pos;/* cursor position */ > > + struct fbcurpos hot;/* cursor hot spot */ > > + struct fb_cmap cmap;/* color map info */ > > + struct fbcurpos size;/* cursor bit map size */ > > + char *image;/* cursor image bits */ > > + char *mask;/* cursor mask bits */ > > +}; > > Any details about contents of image and mask? Depends on what color depth you use for the cursor. > Or is it just monochromatic > 1bpp image? There is hardware which can do 16color hardware cursors (+ > transparent+inverse). I know. That is why we have a colormap for the cursor. This allows for much more for the cursor than a mono color map. > And if it is 1bpp image, is it 0/1/transparent/invert (XGA), or > transp./transp./0/1 (X)? Should be able to support that as well. I haven't added any flags for that. Hm. |
From: Petr V. <VAN...@vc...> - 2001-11-28 19:29:47
|
[trimmed linux-kernel, as it has big traffic even without my stupid questions...] On 28 Nov 01 at 10:50, James Simmons wrote: > > 1) Universal cursor api. This allows the fbcon layer to not be required > hooks to program the cursor for every type of card avaliable. This > allows a seperation of fbdev and fbcon. > +struct fbcursor { > + __u16 set; /* what to set */ > + __u16 enable;/* cursor on/off */ > + struct fbcurpos pos;/* cursor position */ > + struct fbcurpos hot;/* cursor hot spot */ > + struct fb_cmap cmap;/* color map info */ > + struct fbcurpos size;/* cursor bit map size */ > + char *image;/* cursor image bits */ > + char *mask;/* cursor mask bits */ > +}; Any details about contents of image and mask? Or is it just monochromatic 1bpp image? There is hardware which can do 16color hardware cursors (+ transparent+inverse). And if it is 1bpp image, is it 0/1/transparent/invert (XGA), or transp./transp./0/1 (X)? Thanks, Petr Vandrovec van...@vc... |
From: James S. <jsi...@tr...> - 2001-11-28 18:51:08
|
Hi! This is my first public release of the new api of the framebuffer layer. The basic goal is to remove all the excess duplicate code and to place all the console related code into fbcon.c. The second goal to allow the framebuffer layer to exist without the console system. On embedded devices that lack a keyboard it makes no sense plus it takes up valiable space to have the VT system compiled in. The 3rd and finally goal is to allow fbdev driver writing to be easy and yet flexiable. This patch shows 3 basic things I like to change. 1) Universal cursor api. This allows the fbcon layer to not be required hooks to program the cursor for every type of card avaliable. This allows a seperation of fbdev and fbcon. 2) Move from framebuffer base to more accel engine base. This allows the complete removal of console code from the low level framebuffer drivers and we get ride of those god forsaken fbcon-cfb* files. So we end up with a huge code reducution and this encourages the driver write to write much faster fbdev drivers. Note these our the basic accels needed for the fbcon layer. They are not used by userland in anyway. It also means you have only 3 basic functions to deal with instead of the 7 of struct display_switch. 3) Removal of duplicate code. Examples are the fb_cmap functions which are basically the same in every driver. So you will be seeing soon a fbgen2 that will have the same code that is duplicated over and over again in each driver. --- /usr/src/linux-2.5.0/include/linux/fb.h Tue Nov 27 12:29:52 2001 +++ /usr/src/linux/include/linux/fb.h Wed Nov 28 11:47:29 2001 @@ -241,6 +241,65 @@ __u32 reserved[4]; /* reserved for future compatibility */ }; +/* + * hardware cursor control + */ + +#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_SETALL 0x1F + +struct fbcurpos { + __u16 x, y; +}; + +struct fbcursor { + __u16 set; /* what to set */ + __u16 enable;/* cursor on/off */ + struct fbcurpos pos;/* cursor position */ + struct fbcurpos hot;/* cursor hot spot */ + struct fb_cmap cmap;/* color map info */ + struct fbcurpos size;/* cursor bit map size */ + char *image;/* cursor image bits */ + char *mask;/* cursor mask bits */ +}; + +/* Internal HW accel */ +#define ROP_COPY 0 +#define ROP_XOR 1 + +struct fb_copyarea { + __u32 sx; /* screen-relative */ + __u32 sy; + __u32 width; + __u32 height; + __u32 dx; + __u32 dy; +}; + +struct fb_fillrect { + __u32 x1; /* screen-relative */ + __u32 y1; + __u32 width; + __u32 height; + __u32 color; + __u32 rop; +}; + +struct fb_image { + __u32 width; /* Size of image */ + __u32 height; + __u16 x; /* Where to place image */ + __u16 y; + __u32 fg_color; /* Only used when a mono bitmap */ + __u32 bg_color; + __u8 depth; /* Dpeth of the image */ + char *data; /* Pointer to image data */ +}; + #ifdef __KERNEL__ #if 1 /* to go away in 2.5.0 */ @@ -250,10 +309,10 @@ #endif #include <linux/fs.h> +#include <linux/poll.h> #include <linux/init.h> #include <linux/devfs_fs_kernel.h> - struct fb_info; struct fb_info_gen; struct vm_area_struct; @@ -283,9 +342,29 @@ /* set colormap */ int (*fb_set_cmap)(struct fb_cmap *cmap, int kspc, int con, struct fb_info *info); - /* pan display (optional) */ - int (*fb_pan_display)(struct fb_var_screeninfo *var, int con, - struct fb_info *info); + /* 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 */ + int (*fb_set_par)(struct fb_info *info); + /* cursor control */ + int (*fb_cursor)(struct fb_info *info, struct fbcursor *cursor); + /* set color register */ + int (*fb_setcolreg)(unsigned regno, unsigned red, unsigned green, + unsigned blue, unsigned transp, struct fb_info *info); + /* 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); + /* draws a rectangle */ + void (*fb_fillrect)(struct fb_info *p, int x1, int y1, unsigned int width, + unsigned int height, unsigned long color, int rop); + /* Copy data from area to another */ + void (*fb_copyarea)(struct fb_info *p, int sx, int sy, unsigned int width, + unsigned int height, int dx, int dy); + /* Draws a image to the display */ + void (*fb_imageblit)(struct fb_info *p, struct fb_image *image); + /* perform polling on fb device */ + int (*fb_poll)(struct fb_info *info, poll_table *wait); /* 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); @@ -309,6 +388,7 @@ 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 */ devfs_handle_t devfs_handle; /* Devfs handle for new name */ devfs_handle_t devfs_lhandle; /* Devfs handle for compat. symlink */ @@ -387,6 +467,11 @@ struct fb_info *info); extern int fbgen_pan_display(struct fb_var_screeninfo *var, int con, struct fb_info *info); +extern void cfb_fillrect(struct fb_info *p, int x1, int y1, unsigned int width, + unsigned int rows, unsigned long color, int rop); +extern void cfb_copyarea(struct fb_info *p, int sx, int sy, unsigned int width, + unsigned int rows, int dx, int dy); +extern void cfb_imageblit(struct fb_info *p, struct fb_image *image); /* * Helper functions @@ -400,6 +485,7 @@ extern int fbgen_switch(int con, struct fb_info *info); extern void fbgen_blank(int blank, struct fb_info *info); +extern void fbgen2_set_disp(int con, struct fb_info *info); /* drivers/video/fbmem.c */ extern int register_framebuffer(struct fb_info *fb_info); |
From: James S. <jsi...@tr...> - 2001-11-28 17:42:47
|
Sorry. I have been busy writing patches for 2.5.X. > I have been trying to do that, and encountered a problem. Making this > input patch makes sense provided the console and input stuff are > separable. Is that the case ? Nope. It is the opposite. The console layer depends on the input layer. Not the other way around. > Right now, it looks to me there is a strong > depedency: the keyboard depends on the vt, which depends on the console, > which depends on the frame buffer. > At the end, my input patch may more or less include the whole ruby/linux > tree !!! No. Both the framebuffer layer and the input layer can exist without a VT console. Now the VT console does need a display system i.e framebuffer console, vgacon etc and the input api system. |
From: Rogelio M. S. Jr. <ro...@ev...> - 2001-11-28 02:57:48
|
Im using the latest ruby from cvs. It failed to compile twice. The first was undefined fontname array. The second generates the following error message: >gcc -D__KERNEL__ -I/usr/src/linux/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mpreferred-stack-boundary=2 -march=i686 -DMODULE -DMODVERSIONS -include /usr/src/linux/include/linux/modversions.h -c -o serial_8250_pci.o serial_8250_pci.c >serial_8250_pci.c:1081: sizeof applied to an incomplete type >serial_8250_pci.c:1081: warning: initialization from incompatible pointer type >make[2]: *** [serial_8250_pci.o] Error 1 >make[2]: Leaving directory `/usr/src/linux/drivers/serial' >make[1]: *** [_modsubdir_serial] Error 2 >make[1]: Leaving directory `/usr/src/linux/drivers' >make: *** [_mod_drivers] Error 2 > My configuration is: # # Automatically generated by make menuconfig: don't edit # CONFIG_X86=y CONFIG_ISA=y # CONFIG_SBUS is not set CONFIG_UID16=y # # Code maturity level options # CONFIG_EXPERIMENTAL=y # # Loadable module support # CONFIG_MODULES=y CONFIG_MODVERSIONS=y CONFIG_KMOD=y # # Processor type and features # # CONFIG_M386 is not set # CONFIG_M486 is not set # CONFIG_M586 is not set # CONFIG_M586TSC is not set # CONFIG_M586MMX is not set # CONFIG_M686 is not set CONFIG_MPENTIUMIII=y # CONFIG_MPENTIUM4 is not set # CONFIG_MK6 is not set # CONFIG_MK7 is not set # CONFIG_MCRUSOE is not set # CONFIG_MWINCHIPC6 is not set # CONFIG_MWINCHIP2 is not set # CONFIG_MWINCHIP3D is not set # CONFIG_MCYRIXIII is not set CONFIG_X86_WP_WORKS_OK=y CONFIG_X86_INVLPG=y CONFIG_X86_CMPXCHG=y CONFIG_X86_XADD=y CONFIG_X86_BSWAP=y CONFIG_X86_POPAD_OK=y # CONFIG_RWSEM_GENERIC_SPINLOCK is not set CONFIG_RWSEM_XCHGADD_ALGORITHM=y CONFIG_X86_L1_CACHE_SHIFT=5 CONFIG_X86_TSC=y CONFIG_X86_GOOD_APIC=y CONFIG_X86_PGE=y CONFIG_X86_USE_PPRO_CHECKSUM=y # CONFIG_TOSHIBA is not set # CONFIG_I8K is not set # CONFIG_MICROCODE is not set # CONFIG_X86_MSR is not set # CONFIG_X86_CPUID is not set CONFIG_NOHIGHMEM=y # CONFIG_HIGHMEM4G is not set # CONFIG_HIGHMEM64G is not set # CONFIG_MATH_EMULATION is not set CONFIG_MTRR=y # CONFIG_SMP is not set CONFIG_X86_UP_APIC=y CONFIG_X86_UP_IOAPIC=y CONFIG_X86_LOCAL_APIC=y CONFIG_X86_IO_APIC=y # # General setup # CONFIG_NET=y CONFIG_PCI=y # CONFIG_PCI_GOBIOS is not set # CONFIG_PCI_GODIRECT is not set CONFIG_PCI_GOANY=y CONFIG_PCI_BIOS=y CONFIG_PCI_DIRECT=y CONFIG_PCI_NAMES=y # CONFIG_EISA is not set # CONFIG_MCA is not set # CONFIG_HOTPLUG is not set # CONFIG_PCMCIA is not set CONFIG_SYSVIPC=y # CONFIG_BSD_PROCESS_ACCT is not set CONFIG_SYSCTL=y CONFIG_KCORE_ELF=y # CONFIG_KCORE_AOUT is not set CONFIG_BINFMT_AOUT=m CONFIG_BINFMT_ELF=y CONFIG_BINFMT_MISC=m CONFIG_PM=y CONFIG_ACPI=y # CONFIG_ACPI_DEBUG is not set CONFIG_ACPI_BUSMGR=m CONFIG_ACPI_SYS=m CONFIG_ACPI_CPU=m # CONFIG_ACPI_BUTTON is not set # CONFIG_ACPI_AC is not set # CONFIG_ACPI_EC is not set # CONFIG_ACPI_CMBATT is not set # CONFIG_ACPI_THERMAL is not set # CONFIG_APM is not set # # Memory Technology Devices (MTD) # # CONFIG_MTD is not set # # Plug and Play configuration # CONFIG_PNP=y CONFIG_ISAPNP=y # # Parallel port support # CONFIG_PARPORT=m CONFIG_PARPORT_PC=m CONFIG_PARPORT_PC_CML1=m # CONFIG_PARPORT_SERIAL is not set CONFIG_PARPORT_PC_FIFO=y CONFIG_PARPORT_PC_SUPERIO=y # CONFIG_PARPORT_AMIGA is not set # CONFIG_PARPORT_MFC3 is not set # CONFIG_PARPORT_ATARI is not set # CONFIG_PARPORT_SUNBPP is not set # CONFIG_PARPORT_OTHER is not set # CONFIG_PARPORT_1284 is not set # # Serial drivers # CONFIG_UART=m CONFIG_SERIAL_8250=m # CONFIG_SERIAL_8250_CONSOLE is not set # CONFIG_SERIAL_8250_EXTENDED is not set # CONFIG_SERIAL_8250_MANY_PORTS is not set # CONFIG_SERIAL_8250_SHARE_IRQ is not set # CONFIG_SERIAL_8250_DETECT_IRQ is not set # CONFIG_SERIAL_8250_MULTIPORT is not set # CONFIG_SERIAL_8250_HUB6 is not set # # Block devices # CONFIG_BLK_DEV_FD=m # CONFIG_BLK_DEV_XD is not set # CONFIG_PARIDE is not set # CONFIG_BLK_CPQ_DA is not set # CONFIG_BLK_CPQ_CISS_DA is not set # CONFIG_BLK_DEV_DAC960 is not set CONFIG_BLK_DEV_LOOP=m # CONFIG_BLK_DEV_NBD is not set CONFIG_BLK_DEV_RAM=m CONFIG_BLK_DEV_RAM_SIZE=4096 # CONFIG_BLK_DEV_INITRD is not set # # Multi-device support (RAID and LVM) # # CONFIG_MD is not set # CONFIG_BLK_DEV_MD is not set # CONFIG_MD_LINEAR is not set # CONFIG_MD_RAID0 is not set # CONFIG_MD_RAID1 is not set # CONFIG_MD_RAID5 is not set # CONFIG_MD_MULTIPATH is not set # CONFIG_BLK_DEV_LVM is not set # # Networking options # CONFIG_PACKET=y CONFIG_PACKET_MMAP=y # CONFIG_NETLINK is not set # CONFIG_NETFILTER is not set # CONFIG_FILTER is not set CONFIG_UNIX=y CONFIG_INET=y CONFIG_IP_MULTICAST=y # CONFIG_IP_ADVANCED_ROUTER is not set # CONFIG_IP_PNP is not set # CONFIG_NET_IPIP is not set # CONFIG_NET_IPGRE is not set # CONFIG_IP_MROUTE is not set CONFIG_INET_ECN=y # CONFIG_SYN_COOKIES is not set CONFIG_IPV6=m # CONFIG_KHTTPD is not set # CONFIG_ATM is not set # CONFIG_VLAN_8021Q is not set # CONFIG_IPX is not set # CONFIG_ATALK is not set # CONFIG_DECNET is not set # CONFIG_BRIDGE is not set # CONFIG_X25 is not set # CONFIG_LAPB is not set # CONFIG_LLC is not set # CONFIG_NET_DIVERT is not set # CONFIG_ECONET is not set # CONFIG_WAN_ROUTER is not set # CONFIG_NET_FASTROUTE is not set # CONFIG_NET_HW_FLOWCONTROL is not set # # QoS and/or fair queueing # # CONFIG_NET_SCHED is not set # # Telephony Support # # CONFIG_PHONE is not set # CONFIG_PHONE_IXJ is not set # CONFIG_PHONE_IXJ_PCMCIA is not set # # ATA/IDE/MFM/RLL support # CONFIG_IDE=y # # IDE, ATA and ATAPI Block devices # CONFIG_BLK_DEV_IDE=y # CONFIG_BLK_DEV_HD_IDE is not set # CONFIG_BLK_DEV_HD is not set CONFIG_BLK_DEV_IDEDISK=y CONFIG_IDEDISK_MULTI_MODE=y # CONFIG_BLK_DEV_IDEDISK_VENDOR is not set # CONFIG_BLK_DEV_IDEDISK_FUJITSU is not set # CONFIG_BLK_DEV_IDEDISK_IBM is not set # CONFIG_BLK_DEV_IDEDISK_MAXTOR is not set # CONFIG_BLK_DEV_IDEDISK_QUANTUM is not set # CONFIG_BLK_DEV_IDEDISK_SEAGATE is not set # CONFIG_BLK_DEV_IDEDISK_WD is not set # CONFIG_BLK_DEV_COMMERIAL is not set # CONFIG_BLK_DEV_TIVO is not set # CONFIG_BLK_DEV_IDECS is not set CONFIG_BLK_DEV_IDECD=m # CONFIG_BLK_DEV_IDETAPE is not set # CONFIG_BLK_DEV_IDEFLOPPY is not set CONFIG_BLK_DEV_IDESCSI=m # CONFIG_BLK_DEV_CMD640 is not set # CONFIG_BLK_DEV_CMD640_ENHANCED is not set # CONFIG_BLK_DEV_ISAPNP is not set # CONFIG_BLK_DEV_RZ1000 is not set CONFIG_BLK_DEV_IDEPCI=y CONFIG_IDEPCI_SHARE_IRQ=y CONFIG_BLK_DEV_IDEDMA_PCI=y CONFIG_BLK_DEV_ADMA=y # CONFIG_BLK_DEV_OFFBOARD is not set CONFIG_IDEDMA_PCI_AUTO=y CONFIG_BLK_DEV_IDEDMA=y # CONFIG_IDEDMA_PCI_WIP is not set # CONFIG_IDEDMA_NEW_DRIVE_LISTINGS is not set # CONFIG_BLK_DEV_AEC62XX is not set # CONFIG_AEC62XX_TUNING is not set # CONFIG_BLK_DEV_ALI15X3 is not set # CONFIG_WDC_ALI15X3 is not set # CONFIG_BLK_DEV_AMD74XX is not set # CONFIG_AMD74XX_OVERRIDE is not set # CONFIG_BLK_DEV_CMD64X is not set # CONFIG_BLK_DEV_CY82C693 is not set # CONFIG_BLK_DEV_CS5530 is not set # CONFIG_BLK_DEV_HPT34X is not set # CONFIG_HPT34X_AUTODMA is not set # CONFIG_BLK_DEV_HPT366 is not set # CONFIG_BLK_DEV_PIIX is not set # CONFIG_PIIX_TUNING is not set # CONFIG_BLK_DEV_NS87415 is not set # CONFIG_BLK_DEV_OPTI621 is not set # CONFIG_BLK_DEV_PDC202XX is not set # CONFIG_PDC202XX_BURST is not set # CONFIG_PDC202XX_FORCE is not set # CONFIG_BLK_DEV_SVWKS is not set # CONFIG_BLK_DEV_SIS5513 is not set # CONFIG_BLK_DEV_SLC90E66 is not set # CONFIG_BLK_DEV_TRM290 is not set CONFIG_BLK_DEV_VIA82CXXX=y # CONFIG_IDE_CHIPSETS is not set CONFIG_IDEDMA_AUTO=y # CONFIG_IDEDMA_IVB is not set # CONFIG_DMA_NONPCI is not set CONFIG_BLK_DEV_IDE_MODES=y # CONFIG_BLK_DEV_ATARAID is not set # CONFIG_BLK_DEV_ATARAID_PDC is not set # CONFIG_BLK_DEV_ATARAID_HPT is not set # # SCSI support # CONFIG_SCSI=m CONFIG_BLK_DEV_SD=m CONFIG_SD_EXTRA_DEVS=40 # CONFIG_CHR_DEV_ST is not set # CONFIG_CHR_DEV_OSST is not set CONFIG_BLK_DEV_SR=m # CONFIG_BLK_DEV_SR_VENDOR is not set CONFIG_SR_EXTRA_DEVS=2 CONFIG_CHR_DEV_SG=m CONFIG_SCSI_DEBUG_QUEUES=y CONFIG_SCSI_MULTI_LUN=y # CONFIG_SCSI_CONSTANTS is not set # CONFIG_SCSI_LOGGING is not set # # SCSI low-level drivers # # CONFIG_BLK_DEV_3W_XXXX_RAID is not set # CONFIG_SCSI_7000FASST is not set # CONFIG_SCSI_ACARD is not set # CONFIG_SCSI_AHA152X is not set # CONFIG_SCSI_AHA1542 is not set # CONFIG_SCSI_AHA1740 is not set # CONFIG_SCSI_AIC7XXX is not set # CONFIG_SCSI_AIC7XXX_OLD is not set # CONFIG_SCSI_DPT_I2O is not set # CONFIG_SCSI_ADVANSYS is not set # CONFIG_SCSI_IN2000 is not set # CONFIG_SCSI_AM53C974 is not set # CONFIG_SCSI_MEGARAID is not set # CONFIG_SCSI_BUSLOGIC is not set # CONFIG_SCSI_CPQFCTS is not set # CONFIG_SCSI_DMX3191D is not set # CONFIG_SCSI_DTC3280 is not set # CONFIG_SCSI_EATA is not set # CONFIG_SCSI_EATA_DMA is not set # CONFIG_SCSI_EATA_PIO is not set # CONFIG_SCSI_FUTURE_DOMAIN is not set # CONFIG_SCSI_GDTH is not set # CONFIG_SCSI_GENERIC_NCR5380 is not set # CONFIG_SCSI_IPS is not set # CONFIG_SCSI_INITIO is not set # CONFIG_SCSI_INIA100 is not set # CONFIG_SCSI_PPA is not set # CONFIG_SCSI_IMM is not set # CONFIG_SCSI_NCR53C406A is not set # CONFIG_SCSI_NCR53C7xx is not set # CONFIG_SCSI_NCR53C8XX is not set # CONFIG_SCSI_SYM53C8XX is not set # CONFIG_SCSI_PAS16 is not set # CONFIG_SCSI_PCI2000 is not set # CONFIG_SCSI_PCI2220I is not set # CONFIG_SCSI_PSI240I is not set # CONFIG_SCSI_QLOGIC_FAS is not set # CONFIG_SCSI_QLOGIC_ISP is not set # CONFIG_SCSI_QLOGIC_FC is not set # CONFIG_SCSI_QLOGIC_1280 is not set # CONFIG_SCSI_SEAGATE is not set # CONFIG_SCSI_SIM710 is not set # CONFIG_SCSI_SYM53C416 is not set # CONFIG_SCSI_DC390T is not set # CONFIG_SCSI_T128 is not set # CONFIG_SCSI_U14_34F is not set # CONFIG_SCSI_ULTRASTOR is not set # CONFIG_SCSI_DEBUG is not set # # Fusion MPT device support # # CONFIG_FUSION is not set # CONFIG_FUSION_BOOT is not set # CONFIG_FUSION_ISENSE is not set # CONFIG_FUSION_CTL is not set # CONFIG_FUSION_LAN is not set # # IEEE 1394 (FireWire) support (EXPERIMENTAL) # # CONFIG_IEEE1394 is not set # # I2O device support # # CONFIG_I2O is not set # CONFIG_I2O_PCI is not set # CONFIG_I2O_BLOCK is not set # CONFIG_I2O_LAN is not set # CONFIG_I2O_SCSI is not set # CONFIG_I2O_PROC is not set # # Network device support # CONFIG_NETDEVICES=y # # ARCnet devices # # CONFIG_ARCNET is not set CONFIG_DUMMY=m # CONFIG_BONDING is not set # CONFIG_EQUALIZER is not set # CONFIG_TUN is not set # CONFIG_NET_SB1000 is not set # # Ethernet (10 or 100Mbit) # CONFIG_NET_ETHERNET=y # CONFIG_SUNLANCE is not set # CONFIG_HAPPYMEAL is not set # CONFIG_SUNBMAC is not set # CONFIG_SUNQE is not set # CONFIG_SUNLANCE is not set # CONFIG_SUNGEM is not set # CONFIG_NET_VENDOR_3COM is not set # CONFIG_LANCE is not set # CONFIG_NET_VENDOR_SMC is not set # CONFIG_NET_VENDOR_RACAL is not set # CONFIG_AT1700 is not set # CONFIG_DEPCA is not set # CONFIG_HP100 is not set # CONFIG_NET_ISA is not set CONFIG_NET_PCI=y # CONFIG_PCNET32 is not set # CONFIG_ADAPTEC_STARFIRE is not set # CONFIG_AC3200 is not set # CONFIG_APRICOT is not set # CONFIG_CS89x0 is not set # CONFIG_TULIP is not set # CONFIG_DE4X5 is not set # CONFIG_DGRS is not set # CONFIG_DM9102 is not set CONFIG_EEPRO100=m # CONFIG_LNE390 is not set # CONFIG_FEALNX is not set # CONFIG_NATSEMI is not set # CONFIG_NE2K_PCI is not set # CONFIG_NE3210 is not set # CONFIG_ES3210 is not set # CONFIG_8139CP is not set # CONFIG_8139TOO is not set # CONFIG_8139TOO_PIO is not set # CONFIG_8139TOO_TUNE_TWISTER is not set # CONFIG_8139TOO_8129 is not set # CONFIG_SIS900 is not set # CONFIG_EPIC100 is not set # CONFIG_SUNDANCE is not set # CONFIG_TLAN is not set # CONFIG_VIA_RHINE is not set # CONFIG_WINBOND_840 is not set # CONFIG_NET_POCKET is not set # # Ethernet (1000 Mbit) # # CONFIG_ACENIC is not set # CONFIG_DL2K is not set # CONFIG_MYRI_SBUS is not set # CONFIG_NS83820 is not set # CONFIG_HAMACHI is not set # CONFIG_YELLOWFIN is not set # CONFIG_SK98LIN is not set # CONFIG_FDDI is not set # CONFIG_HIPPI is not set CONFIG_PLIP=m CONFIG_PPP=m # CONFIG_PPP_MULTILINK is not set # CONFIG_PPP_FILTER is not set CONFIG_PPP_ASYNC=m # CONFIG_PPP_SYNC_TTY is not set CONFIG_PPP_DEFLATE=m CONFIG_PPP_BSDCOMP=m CONFIG_PPPOE=m # CONFIG_SLIP is not set # # Wireless LAN (non-hamradio) # # CONFIG_NET_RADIO is not set # # Token Ring devices # # CONFIG_TR is not set # CONFIG_NET_FC is not set # CONFIG_RCPCI is not set # CONFIG_SHAPER is not set # # Wan interfaces # # CONFIG_WAN is not set # # Amateur Radio support # # CONFIG_HAMRADIO is not set # # IrDA (infrared) support # # CONFIG_IRDA is not set # # ISDN subsystem # # CONFIG_ISDN is not set # # Old CD-ROM drivers (not SCSI, not IDE) # # CONFIG_CD_NO_IDESCSI is not set # # USB support # # CONFIG_USB is not set # CONFIG_USB_UHCI is not set # CONFIG_USB_UHCI_ALT is not set # CONFIG_USB_OHCI is not set # CONFIG_USB_AUDIO is not set # CONFIG_USB_BLUETOOTH is not set # CONFIG_USB_STORAGE is not set # CONFIG_USB_STORAGE_DEBUG is not set # CONFIG_USB_STORAGE_DATAFAB is not set # CONFIG_USB_STORAGE_FREECOM is not set # CONFIG_USB_STORAGE_ISD200 is not set # CONFIG_USB_STORAGE_DPCM is not set # CONFIG_USB_STORAGE_HP8200e is not set # CONFIG_USB_STORAGE_SDDR09 is not set # CONFIG_USB_STORAGE_JUMPSHOT is not set # CONFIG_USB_ACM is not set # CONFIG_USB_PRINTER is not set # CONFIG_USB_DC2XX is not set # CONFIG_USB_MDC800 is not set # CONFIG_USB_SCANNER is not set # CONFIG_USB_MICROTEK is not set # CONFIG_USB_HPUSBSCSI is not set # CONFIG_USB_PEGASUS is not set # CONFIG_USB_KAWETH is not set # CONFIG_USB_CATC is not set # CONFIG_USB_CDCETHER is not set # CONFIG_USB_USBNET is not set # CONFIG_USB_USS720 is not set # # USB Serial Converter support # # CONFIG_USB_SERIAL is not set # CONFIG_USB_SERIAL_GENERIC is not set # CONFIG_USB_SERIAL_BELKIN is not set # CONFIG_USB_SERIAL_WHITEHEAT is not set # CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set # CONFIG_USB_SERIAL_EMPEG is not set # CONFIG_USB_SERIAL_FTDI_SIO is not set # CONFIG_USB_SERIAL_VISOR is not set # CONFIG_USB_SERIAL_IR is not set # CONFIG_USB_SERIAL_EDGEPORT is not set # CONFIG_USB_SERIAL_KEYSPAN_PDA is not set # CONFIG_USB_SERIAL_KEYSPAN is not set # CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set # CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set # CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set # CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set # CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set # CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set # CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set # CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set # CONFIG_USB_SERIAL_MCT_U232 is not set # CONFIG_USB_SERIAL_PL2303 is not set # CONFIG_USB_SERIAL_CYBERJACK is not set # CONFIG_USB_SERIAL_XIRCOM is not set # CONFIG_USB_SERIAL_OMNINET is not set # CONFIG_USB_RIO500 is not set # # Input device support # CONFIG_INPUT=y CONFIG_INPUT_PS2=y CONFIG_INPUT_I8042=y CONFIG_I8042_REG_BASE=60 CONFIG_I8042_KBD_IRQ=1 CONFIG_I8042_AUX_IRQ=12 # CONFIG_INPUT_CT82C710 is not set # CONFIG_INPUT_Q40KBD is not set # CONFIG_INPUT_SUN8042 is not set # CONFIG_INPUT_RPCKBD is not set # CONFIG_INPUT_MIPSKBD is not set # CONFIG_INPUT_JAZZKBD is not set CONFIG_INPUT_PARKBD=m # CONFIG_INPUT_XTKBD is not set CONFIG_INPUT_ATKBD=y CONFIG_INPUT_PSMOUSE=y CONFIG_INPUT_SERIAL=y CONFIG_INPUT_SERPORT_OLD=m # CONFIG_INPUT_SUNZS is not set CONFIG_INPUT_SERMOUSE=m # CONFIG_INPUT_SUNKBD is not set CONFIG_INPUT_PS2SERIAL=m # CONFIG_INPUT_TWIDSERIAL is not set # CONFIG_INPUT_WARRIOR is not set # CONFIG_INPUT_MAGELLAN is not set # CONFIG_INPUT_SPACEORB is not set # CONFIG_INPUT_SPACEBALL is not set # CONFIG_INPUT_STINGER is not set # CONFIG_INPUT_IFORCE_232 is not set # CONFIG_INPUT_GUNZE is not set # CONFIG_INPUT_NEWTON is not set CONFIG_INPUT_GAMEPORT=y CONFIG_INPUT_GAMECARDS=y CONFIG_INPUT_NS558=m # CONFIG_INPUT_LIGHTNING is not set # CONFIG_INPUT_PCIGAME is not set # CONFIG_INPUT_CS461X is not set # CONFIG_INPUT_EMU10K1 is not set # CONFIG_INPUT_ANALOG is not set # CONFIG_INPUT_A3D is not set CONFIG_INPUT_ADI=m # CONFIG_INPUT_COBRA is not set # CONFIG_INPUT_GF2K is not set # CONFIG_INPUT_GRIP is not set # CONFIG_INPUT_GUILLEMOT is not set # CONFIG_INPUT_INTERACT is not set # CONFIG_INPUT_TMDC is not set # CONFIG_INPUT_SIDEWINDER is not set CONFIG_INPUT_JOYDUMP=m # CONFIG_INPUT_DB9 is not set # CONFIG_INPUT_GAMECON is not set # CONFIG_INPUT_TURBOGRAFX is not set # CONFIG_INPUT_INPORT is not set # CONFIG_INPUT_LOGIBM is not set # CONFIG_INPUT_PC110PAD is not set # CONFIG_INPUT_BTTV is not set # CONFIG_INPUT_AMIKBD is not set # CONFIG_INPUT_AMIMOUSE is not set # CONFIG_INPUT_AMIJOY is not set # CONFIG_INPUT_ATAKBD is not set # CONFIG_INPUT_ATAMOUSE is not set # CONFIG_INPUT_ATAJOY is not set # CONFIG_INPUT_RPCMOUSE is not set # CONFIG_INPUT_ARCKBD is not set # CONFIG_INPUT_APOLLOKBD is not set # CONFIG_INPUT_HPHIL is not set CONFIG_INPUT_MOUSEDEV=m CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 CONFIG_INPUT_JOYDEV=m CONFIG_INPUT_TOUCHSCREEN=m CONFIG_INPUT_EVDEV=m CONFIG_INPUT_EVBUG=m # # Character devices # CONFIG_VT=y CONFIG_VT_CONSOLE=y CONFIG_UNIX98_PTYS=y CONFIG_UNIX98_PTY_COUNT=256 # CONFIG_PRINTER is not set # CONFIG_PPDEV is not set # # I2C support # # CONFIG_I2C is not set # CONFIG_QIC02_TAPE is not set # # Watchdog Cards # # CONFIG_WATCHDOG is not set # CONFIG_INTEL_RNG is not set # CONFIG_NVRAM is not set CONFIG_RTC=y # CONFIG_DTLK is not set # CONFIG_R3964 is not set # CONFIG_APPLICOM is not set # CONFIG_SONYPI is not set # # Ftape, the floppy tape device driver # # CONFIG_FTAPE is not set CONFIG_AGP=m CONFIG_AGP_INTEL=y CONFIG_AGP_I810=y CONFIG_AGP_VIA=y CONFIG_AGP_AMD=y CONFIG_AGP_SIS=y CONFIG_AGP_ALI=y # CONFIG_AGP_SWORKS is not set CONFIG_DRM=y # CONFIG_DRM_TDFX is not set # CONFIG_DRM_GAMMA is not set CONFIG_DRM_R128=m CONFIG_DRM_RADEON=m # CONFIG_DRM_I810 is not set # CONFIG_DRM_MGA is not set # CONFIG_MWAVE is not set # # File systems # # CONFIG_QUOTA is not set # CONFIG_AUTOFS_FS is not set CONFIG_AUTOFS4_FS=m # CONFIG_REISERFS_FS is not set # CONFIG_REISERFS_CHECK is not set # CONFIG_ADFS_FS is not set # CONFIG_ADFS_FS_RW is not set # CONFIG_AFFS_FS is not set # CONFIG_HFS_FS is not set # CONFIG_BFS_FS is not set CONFIG_FAT_FS=m # CONFIG_MSDOS_FS is not set # CONFIG_UMSDOS_FS is not set CONFIG_VFAT_FS=m # CONFIG_EFS_FS is not set # CONFIG_JFFS_FS is not set # CONFIG_JFFS2_FS is not set CONFIG_CRAMFS=m CONFIG_TMPFS=y CONFIG_RAMFS=m CONFIG_ISO9660_FS=m CONFIG_JOLIET=y CONFIG_ZISOFS=y CONFIG_MINIX_FS=m # CONFIG_VXFS_FS is not set # CONFIG_NTFS_FS is not set # CONFIG_NTFS_RW is not set # CONFIG_HPFS_FS is not set CONFIG_GFXFS_FS=m # CONFIG_GFXFS_FS_DEBUG is not set CONFIG_INPUTFS_FS=m CONFIG_PROC_FS=y CONFIG_DEVFS_FS=y CONFIG_DEVFS_MOUNT=y # CONFIG_DEVFS_DEBUG is not set CONFIG_DEVPTS_FS=y # CONFIG_QNX4FS_FS is not set # CONFIG_QNX4FS_RW is not set CONFIG_ROMFS_FS=m CONFIG_EXT2_FS=y # CONFIG_SYSV_FS is not set # CONFIG_UDF_FS is not set # CONFIG_UDF_RW is not set # CONFIG_UFS_FS is not set # CONFIG_UFS_FS_WRITE is not set # # Network File Systems # CONFIG_CODA_FS=m CONFIG_NFS_FS=m CONFIG_NFS_V3=y # CONFIG_ROOT_NFS is not set CONFIG_NFSD=m CONFIG_NFSD_V3=y CONFIG_SUNRPC=m CONFIG_LOCKD=m CONFIG_LOCKD_V4=y CONFIG_SMB_FS=m # CONFIG_SMB_NLS_DEFAULT is not set # CONFIG_NCP_FS is not set # CONFIG_NCPFS_PACKET_SIGNING is not set # CONFIG_NCPFS_IOCTL_LOCKING is not set # CONFIG_NCPFS_STRONG is not set # CONFIG_NCPFS_NFS_NS is not set # CONFIG_NCPFS_OS2_NS is not set # CONFIG_NCPFS_SMALLDOS is not set # CONFIG_NCPFS_NLS is not set # CONFIG_NCPFS_EXTRAS is not set CONFIG_ZISOFS_FS=m CONFIG_ZLIB_FS_INFLATE=m # # Partition Types # # CONFIG_PARTITION_ADVANCED is not set CONFIG_MSDOS_PARTITION=y CONFIG_SMB_NLS=y CONFIG_NLS=y # # Native Language Support # CONFIG_NLS_DEFAULT="iso8859-1" CONFIG_NLS_CODEPAGE_437=m CONFIG_NLS_CODEPAGE_737=m CONFIG_NLS_CODEPAGE_775=m CONFIG_NLS_CODEPAGE_850=m CONFIG_NLS_CODEPAGE_852=m CONFIG_NLS_CODEPAGE_855=m CONFIG_NLS_CODEPAGE_857=m CONFIG_NLS_CODEPAGE_860=m CONFIG_NLS_CODEPAGE_861=m CONFIG_NLS_CODEPAGE_862=m CONFIG_NLS_CODEPAGE_863=m CONFIG_NLS_CODEPAGE_864=m CONFIG_NLS_CODEPAGE_865=m CONFIG_NLS_CODEPAGE_866=m CONFIG_NLS_CODEPAGE_869=m CONFIG_NLS_CODEPAGE_936=m CONFIG_NLS_CODEPAGE_950=m CONFIG_NLS_CODEPAGE_932=m CONFIG_NLS_CODEPAGE_949=m CONFIG_NLS_CODEPAGE_874=m CONFIG_NLS_ISO8859_8=m CONFIG_NLS_CODEPAGE_1251=m CONFIG_NLS_ISO8859_1=m CONFIG_NLS_ISO8859_2=m CONFIG_NLS_ISO8859_3=m CONFIG_NLS_ISO8859_4=m CONFIG_NLS_ISO8859_5=m CONFIG_NLS_ISO8859_6=m CONFIG_NLS_ISO8859_7=m CONFIG_NLS_ISO8859_9=m CONFIG_NLS_ISO8859_13=m CONFIG_NLS_ISO8859_14=m CONFIG_NLS_ISO8859_15=m CONFIG_NLS_KOI8_R=m CONFIG_NLS_KOI8_U=m CONFIG_NLS_UTF8=m # # Sound # CONFIG_SOUND=m # CONFIG_SOUND_BT878 is not set CONFIG_SOUND_CMPCI=m # CONFIG_SOUND_CMPCI_FM is not set # CONFIG_SOUND_CMPCI_MIDI is not set # CONFIG_SOUND_CMPCI_JOYSTICK is not set CONFIG_SOUND_CMPCI_CM8738=y # CONFIG_SOUND_CMPCI_SPDIFINVERSE is not set # CONFIG_SOUND_CMPCI_SPDIFLOOP is not set CONFIG_SOUND_CMPCI_SPEAKERS=4 # CONFIG_SOUND_CMPCI_LINE_REAR is not set CONFIG_SOUND_CMPCI_LINE_BASS=y # CONFIG_SOUND_EMU10K1 is not set # CONFIG_MIDI_EMU10K1 is not set # CONFIG_SOUND_FUSION is not set # CONFIG_SOUND_CS4281 is not set # CONFIG_SOUND_ES1370 is not set # CONFIG_SOUND_ES1371 is not set # CONFIG_SOUND_ESSSOLO1 is not set # CONFIG_SOUND_MAESTRO is not set # CONFIG_SOUND_MAESTRO3 is not set # CONFIG_SOUND_ICH is not set # CONFIG_SOUND_RME96XX is not set # CONFIG_SOUND_SONICVIBES is not set # CONFIG_SOUND_TRIDENT is not set # CONFIG_SOUND_MSNDCLAS is not set # CONFIG_SOUND_MSNDPIN is not set # CONFIG_SOUND_VIA82CXXX is not set # CONFIG_MIDI_VIA82CXXX is not set CONFIG_SOUND_OSS=m CONFIG_SOUND_TRACEINIT=y CONFIG_SOUND_DMAP=y # CONFIG_SOUND_AD1816 is not set # CONFIG_SOUND_SGALAXY is not set # CONFIG_SOUND_ADLIB is not set # CONFIG_SOUND_ACI_MIXER is not set # CONFIG_SOUND_CS4232 is not set # CONFIG_SOUND_SSCAPE is not set # CONFIG_SOUND_GUS is not set # CONFIG_SOUND_VMIDI is not set # CONFIG_SOUND_TRIX is not set # CONFIG_SOUND_MSS is not set # CONFIG_SOUND_MPU401 is not set # CONFIG_SOUND_NM256 is not set # CONFIG_SOUND_MAD16 is not set # CONFIG_SOUND_PAS is not set # CONFIG_PAS_JOYSTICK is not set # CONFIG_SOUND_PSS is not set CONFIG_SOUND_SB=m CONFIG_SOUND_AWE32_SYNTH=m # CONFIG_SOUND_WAVEFRONT is not set # CONFIG_SOUND_MAUI is not set # CONFIG_SOUND_YM3812 is not set # CONFIG_SOUND_OPL3SA1 is not set # CONFIG_SOUND_OPL3SA2 is not set # CONFIG_SOUND_YMFPCI is not set # CONFIG_SOUND_YMFPCI_LEGACY is not set # CONFIG_SOUND_UART6850 is not set # CONFIG_SOUND_AEDSP16 is not set # CONFIG_SOUND_TVMIXER is not set # # Multimedia devices # # CONFIG_VIDEO_DEV is not set # # Video # CONFIG_FB=y # # Frame-buffer support # # CONFIG_FB_RIVA is not set # CONFIG_FB_PM3 is not set # CONFIG_FB_CLGEN is not set # CONFIG_FB_PM2 is not set # CONFIG_FB_CYBER2000 is not set CONFIG_FB_VESA=y # CONFIG_FB_VGA16 is not set # CONFIG_FB_HGA is not set CONFIG_VIDEO_SELECT=y # CONFIG_FB_E1355 is not set # CONFIG_FB_MATROX is not set # CONFIG_FB_ATY is not set # CONFIG_FB_RADEON is not set CONFIG_FB_ATY128=y # CONFIG_FB_TDFX is not set # CONFIG_FB_SIS is not set # CONFIG_FB_VIRTUAL is not set CONFIG_VGA_CONSOLE=y CONFIG_VIDEO_SELECT=y # CONFIG_MDA_CONSOLE is not set # CONFIG_NVIDIA_CONSOLE is not set CONFIG_FRAMEBUFFER_CONSOLE=y CONFIG_PCI_CONSOLE=y CONFIG_FONTS=y # CONFIG_SELECT_FONTS is not set CONFIG_FONT_8x8=y CONFIG_FONT_8x16=y # # Bluetooth support # # CONFIG_BLUEZ is not set # # Kernel hacking # # CONFIG_DEBUG_KERNEL is not set |
From: James S. <jsi...@tr...> - 2001-11-28 00:35:49
|
Small cleanups for the VT system. Doesn't make sense to have any VT code in genhd.c. So I moved it to tty_io.c where it belongs. Patch has been tested. --- linux-2.5.0/drivers/block/genhd.c Tue Nov 27 12:05:59 2001 +++ linux/drivers/block/genhd.c Tue Nov 27 17:24:26 2001 @@ -183,7 +183,6 @@ extern int fusion_init(void); #endif extern int net_dev_init(void); -extern void console_map_init(void); extern int soc_probe(void); extern int atmdev_init(void); extern int i2o_init(void); @@ -212,9 +211,6 @@ #endif #ifdef CONFIG_ATM (void) atmdev_init(); -#endif -#ifdef CONFIG_VT - console_map_init(); #endif return 0; } --- linux-2.5.0/drivers/char/tty_io.c Tue Nov 27 11:56:43 2001 +++ linux/drivers/char/tty_io.c Tue Nov 27 17:24:05 2001 @@ -2317,7 +2317,9 @@ if (tty_register_driver(&dev_console_driver)) panic("Couldn't register /dev/tty0 driver\n"); + vcs_init(); kbd_init(); + console_map_init(); #endif #ifdef CONFIG_ESPSERIAL /* init ESP before rs, so rs doesn't see the port */ @@ -2363,9 +2365,6 @@ #ifdef CONFIG_MOXA_INTELLIO moxa_init(); #endif -#ifdef CONFIG_VT - vcs_init(); -#endif #ifdef CONFIG_TN3270 tub3270_init(); #endif |
From: James S. <jsi...@tr...> - 2001-11-27 23:33:03
|
PROC_CONSOLE is defined in fbcon.c. No need for duplicate code. Please apply. --- linux-2.5.0/drivers/video/modedb.c Tue Nov 27 16:05:02 2001 +++ linux/drivers/video/modedb.c Tue Nov 27 16:10:04 2001 @@ -14,9 +14,9 @@ #include <linux/module.h> #include <linux/tty.h> #include <linux/fb.h> -#include <linux/console_struct.h> #include <linux/sched.h> +#include <video/fbcon.h> #undef DEBUG @@ -256,29 +256,6 @@ } } } - -static int PROC_CONSOLE(const struct fb_info *info) -{ - int fgc; - - if (info->display_fg != NULL) - fgc = info->display_fg->vc_num; - else - return -1; - - if (!current->tty) - return fgc; - - if (current->tty->driver.type != TTY_DRIVER_TYPE_CONSOLE) - /* XXX Should report error here? */ - return fgc; - - if (MINOR(current->tty->device) < 1) - return fgc; - - return MINOR(current->tty->device) - 1; -} - /** * __fb_try_mode - test a video mode |
From: Johann D. <jo...@Do...> - 2001-11-25 13:30:56
|
On Fri, 16 Nov 2001, Johann Deneux wrote: > Hello, > > About the directory hierarchy, I decided to keep linus' hierarchy. Not > that this is a better choice, but it first appeared to me being easier > (fewer changes to makefiles). However, I think I will try to move to the > linuxconsole hierarchy in the next version. I have been trying to do that, and encountered a problem. Making this input patch makes sense provided the console and input stuff are separable. Is that the case ? Right now, it looks to me there is a strong depedency: the keyboard depends on the vt, which depends on the console, which depends on the frame buffer. At the end, my input patch may more or less include the whole ruby/linux tree !!! -- Johann Deneux |
From: James S. <jsi...@tr...> - 2001-11-24 18:20:31
|
I broke the patche up into a few patches. Basically I have added a new generic framebuffer system (fbgen2.c). To convert to this new gen layer you need to do a few things. 1) Get ride of your struct fb_info_xxx { ...excess junk ... struct fb_info *info; .. more excess junk... } Instead use a struct xxx_par { /* All driver specific data. */ } statci struct xxx_par default_par; struct fb_info info; xxxfb_init() { .... info.par = default_par; .... } Trust me. This will make for a much cleaner more transparent system. I have done several drivers this way. In this design par is only avaliable to the local driver. The upper fbdev and fbcon code doesn't know about it. 2) New function pointers have been added into struct fb_ops. They are int (*fb_check_var)(struct fb_var_screeninfo *var, struct fb_info *info) The above function validates a graphics resolution. It does NOT alter the hardware state in xxx_par. int (*fb_set_par)(struct fb_info *info); This above function sets the hardware state according to the new var which is placed into struct fb_info in the upper layers. So all you have to pass into this function is info. Par which is always the current hardware state so it is always in info. int (*fb_setcolreg)(unsigned regno, unsigned red, unsigned green, unsigned blue, unsigned transp, struct fb_info *info); This is to kill the stupidity of passing around the function pointer to setcolreg to fb_set_cmap. Since we use the cmap field in struct fb_info this makes the need for fb_get_cmap go away :-). Also the info->palette crap can finally go away. Here is the patch and code to fbgen2.c. Please review it as I plan to send it to Linus with Geert's blessing. /* * linux/drivers/video/fbgen2.c -- Generic routines for frame buffer devices * * Created 27 June 2001 by "Crazy" James Simmons <jsi...@tr...> * * 2001 - Documented with DocBook * - Brad Douglas <br...@ne...> * * This file is subject to the terms and conditions of the GNU General Public * License. See the file COPYING in the main directory of this archive * for more details. */ #include <linux/module.h> #include <linux/string.h> #include <linux/tty.h> #include <linux/fb.h> #include <linux/slab.h> #include <asm/uaccess.h> #include <asm/io.h> #include <video/fbcon.h> /** * fbgen_set_disp - set generic display * @con: virtual console number * @info: generic frame buffer info structure * * Sets a display on virtual console @con for device @info. * */ void fbgen2_set_disp(int con, struct fb_info *info) { struct display *display; if (con >= 0) display = &fb_display[con]; else display = info->disp; /* used during initialization */ display->screen_base = info->screen_base; display->var = info->var; display->visual = info->fix.visual; display->type = info->fix.type; display->type_aux = info->fix.type_aux; display->ypanstep = info->fix.ypanstep; display->ywrapstep = info->fix.ywrapstep; display->line_length = info->fix.line_length; if (info->blank || info->fix.visual == FB_VISUAL_PSEUDOCOLOR || info->fix.visual == FB_VISUAL_DIRECTCOLOR) display->can_soft_blank = 1; else display->can_soft_blank = 0; #if 0 /* FIXME: generic inverse is not supported yet */ display->inverse = (info->fix.visual==FB_VISUAL_MONO01 ? !inverse : inverse); #else display->inverse = info->fix.visual == FB_VISUAL_MONO01; #endif switch (info->var.bits_per_pixel) { #ifdef FBCON_HAS_CFB4 case 4: display->dispsw = &fbcon_cfb4; break; #endif #ifdef FBCON_HAS_CFB8 case 8: display->dispsw = &fbcon_cfb8; break; #endif #ifdef FBCON_HAS_CFB16 case 12: case 16: display->dispsw = &fbcon_cfb16; display->dispsw_data = info->pseudo_palette; break; #endif #ifdef FBCON_HAS_CFB32 case 32: display->dispsw = &fbcon_cfb32; display->dispsw_data = info->pseudo_palette; break; #endif default: display->dispsw = &fbcon_dummy; break; } } /* ---- `Generic' versions of the frame buffer device operations ----------- */ /** * fbgen_get_fix - get fixed part of display * @fix: fb_fix_screeninfo structure * @con: virtual console number * @info: frame buffer info structure * * Get the fixed information part of the display and place it * into @fix for virtual console @con on device @info. * * Returns negative errno on error, or zero on success. * */ int fbgen_get_fix(struct fb_fix_screeninfo *fix, int con, struct fb_info *info) { *fix = info->fix; return 0; } /** * fbgen_get_var - get user defined part of display * @var: fb_var_screeninfo structure * @con: virtual console number * @info: frame buffer info structure * * Get the user defined part of the display and place it into @var * for virtual console @con on device @info. * * Returns negative errno on error, or zero for success. * */ int fbgen_get_var(struct fb_var_screeninfo *var, int con, struct fb_info *info) { if (con == info->currcon) var = &info->var; else var = &fb_display[con].var; return 0; } /** * fbgen_set_var - set the user defined part of display * @var: fb_var_screeninfo user defined part of the display * @con: virtual console number * @info: frame buffer info structure * * Set the user defined part of the display as dictated by @var * for virtual console @con on device @info. * * Returns negative errno on error, or zero for success. * */ int fbgen_set_var(struct fb_var_screeninfo *var, int con, struct fb_info *info) { struct fb_bitfield oldred, oldgreen, oldblue, oldalpha; int oldbpp, err; if (memcmp(&info->var, var, sizeof(var)) || con < 0) { if ((err = info->fbops->fb_check_var(var, info))) return err; if (var->activate & FB_ACTIVATE_ALL) info->disp->var = *var; if ((var->activate & FB_ACTIVATE_MASK) == FB_ACTIVATE_NOW) { oldbpp = info->var.bits_per_pixel; oldred = info->var.red; oldblue = info->var.blue; oldgreen = info->var.green; oldalpha = info->var.transp; if (info->fbops->fb_set_par) info->fbops->fb_set_par(info); info->var = *var; fbgen2_set_disp(con, info); if (info->changevar) (*info->changevar)(con); if (oldbpp != var->bits_per_pixel || memcmp(&oldred,&info->var.red,sizeof(oldred)) || memcmp(&oldgreen,&info->var.green,sizeof(oldgreen)) || memcmp(&oldblue, &info->var.blue, sizeof(oldblue)) || memcmp(&oldalpha,&info->var.transp,sizeof(oldalpha))){ if ((err = fb_alloc_cmap(&info->cmap, 0, 0))) return err; fb_set_cmap(&info->cmap, 1, info->fbops->fb_setcolreg, info); } } var->activate = 0; } return 0; } /** * fbgen_get_cmap - get the colormap * @cmap: frame buffer colormap structure * @kspc: boolean, 0 copy local, 1 put_user() function * @con: virtual console number * @info: frame buffer info structure * * Gets the colormap for virtual console @con and places it into * @cmap for device @info. * * Returns negative errno on error, or zero for success. * */ int fbgen_get_cmap(struct fb_cmap *cmap, int kspc, int con, struct fb_info *info) { struct fb_cmap *dcmap; if (con == info->currcon) dcmap = &info->cmap; else dcmap = &fb_display[con].cmap; fb_copy_cmap(dcmap, cmap, kspc ? 0 : 2); return 0; } /** * fbgen_set_cmap - set the colormap * @cmap: frame buffer colormap structure * @kspc: boolean, 0 copy local, 1 get_user() function * @con: virtual console number * @info: frame buffer info structure * * Sets the colormap @cmap for virtual console @con on * device @info. * * Returns negative errno on error, or zero for success. * */ int fbgen_set_cmap(struct fb_cmap *cmap, int kspc, int con, struct fb_info *info) { struct fb_cmap *dcmap; int err = 0; if (con == info->currcon) dcmap = &info->cmap; else dcmap = &fb_display[con].cmap; /* no colormap allocated? */ if (!dcmap->len) err = fb_alloc_cmap(dcmap, 256, 0); if (!err && con == info->currcon) err = fb_set_cmap(cmap, kspc, info->fbops->fb_setcolreg, info); if (!err) fb_copy_cmap(cmap, dcmap, kspc ? 0 : 1); return err; } /** * fbgen_update_var - update user defined part of display * @con: virtual console number * @info: frame buffer info structure * * Updates the user defined part of the display ('var' * structure) on virtual console @con for device @info. * This function is called by fbcon.c. * * Returns negative errno on error, or zero for success. * */ int fbgen_update_var(int con, struct fb_info *info) { int err = 0; if (info->fbops->fb_pan_display) err = info->fbops->fb_pan_display(&fb_display[con].var,con,info); return err; } /** * fbgen_switch - switch to a different virtual console. * @con: virtual console number * @info: frame buffer info structure * * Switch to virtuall console @con on device @info. * * Returns zero. * */ int fbgen_switch(int con, struct fb_info *info) { struct display *disp; struct fb_cmap *cmap; if (con == info->currcon) return 0; if (info->currcon >= 0) { disp = fb_display + info->currcon; /* * Save the old colormap and video mode. */ disp->var = info->var; if (disp->cmap.len) fb_copy_cmap(&info->cmap, &disp->cmap, 0); } info->currcon = con; disp = fb_display + con; if (disp->cmap.len) cmap = &disp->cmap; else cmap = fb_default_cmap(1 << disp->var.bits_per_pixel); fb_copy_cmap(cmap, &info->cmap, 0); info->var = disp->var; info->var.activate = FB_ACTIVATE_NOW; fbgen_set_var(&info->var, con, info); return 0; } --- linux-2.5.0/include/linux/fb.h Fri Nov 23 23:01:48 2001 +++ linux/include/linux/fb.h Sat Nov 24 11:02:04 2001 @@ -283,6 +283,13 @@ /* set colormap */ int (*fb_set_cmap)(struct fb_cmap *cmap, int kspc, int con, struct fb_info *info); + /* 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 */ + int (*fb_set_par)(struct fb_info *info); + /* set color register */ + int (*fb_setcolreg)(unsigned regno, unsigned red, unsigned green, + unsigned blue, unsigned transp, struct fb_info *info); /* pan display (optional) */ int (*fb_pan_display)(struct fb_var_screeninfo *var, int con, struct fb_info *info); @@ -323,6 +330,7 @@ void *pseudo_palette; /* Fake palette of 16 colors and the cursor's color for non palette mode */ + int currcon; /* Current console for fbdev */ /* From here on everything is device dependent */ void *par; }; @@ -400,6 +408,7 @@ extern int fbgen_switch(int con, struct fb_info *info); extern void fbgen_blank(int blank, struct fb_info *info); +extern void fbgen2_set_disp(int con, struct fb_info *info); /* drivers/video/fbmem.c */ extern int register_framebuffer(struct fb_info *fb_info); |
From: James S. <jsi...@tr...> - 2001-11-24 16:36:29
|
> interested in that's likely to be broken (like this CVS tree.. the > XFree CVS tree, etc..) ... I should also be setting up another box > soon... Then I can cover testing a decent spread of the fbdev stuff... > This machine has a Geforce 2 GTS, and sitting around I have a > TNT, and some older Matrox cards: a Millenium 2, a Mystique and > a Millenium... and I believe an AGP ATI Rage something-or-other > too... Great. Someon to test my patches. Patchs will be going from ruby o 2.5.X now. Of course ruby isn't finished yet but the important changes, rewrite of fbdev, and the input api are the key elements must go in first. > BTW, is anybody doing any work on moving the event-driver for > xf86 (tuntitko) to the 4.x tree? Nope. Something I need to do :-/ |
From: James S. <jsi...@tr...> - 2001-11-24 07:34:05
|
Hi folks!!! As some might know I have been working for the last year in my spare time on the linux console project. Well it ended up as a total rewrite of the tty/console layer. In the new design the the tty/console layer is composed of seperate subsystems which can exist independently outside of the tty layer. Thus the tty layer is constructed from these subsystems. This makes for a cleaner mor emodular design. Some of things done are: 1) New framebuffer api. This new api allows the fbramebuffer layer to exist without a framebuffer console. This makes for a much simpler api and much smaller code. Plus on embedded devices like a iPAQ have a VT console doesn't make sense. Okay a stowaway does change that. But it would be nice if the VT system was modular and loadable :-) This is what we are working at. Pretty much complete. 2) Moving all the keyboards and other input devices over to the input api. Also makes for a nice modular design. Alot of work done. 3) Rewrite of the serial layer to be more like the parport layer. Here we have a hardware layer that registers ports and then we bind device interface drivers to specific ports. It makes no sense to use a serial tty to talk to a serial joystick for example. Plus their is a extra cost of going threw needless layers. This is partially complete but needs alot fo work. So expect patches. I also look forward to working with people to port devices over to these new APIs. Thank you. |
From: James S. <jsi...@tr...> - 2001-11-24 07:20:11
|
The time has come. Soon patches wil be be going into 2.5.X. Now comes the time to truly change the api for the frmaebuffer layer once and for all. So I'm asking all maintainers of fbdev devices to work with me on this. Please test my patches. Note for the console project we will be migrating to the 2.5.X kernels since this project started for this reason. |
From: Franz S. <Fra...@la...> - 2001-11-23 10:47:13
|
At 02:40 23.11.2001, James Simmons wrote: > > > I just finished and tested the ATI 128 driver for the ruby tree which > uses > > > the new fbdev api. Works like a charm. No acceleration tho. I will add > > > that in later. Please give it a try. Also use it as a example for porting > > > other drivers. > > > > I removed some more old PPC cruft (COMPAT_XPMAC, vmode/cmode handling), > but I > > cannot get it to boot, cause it crashes early with a corrupted video > mode, so > > I cannot see anything. > >Thanks for removing the crud. I tried the driver on my ix86 box and it >worked. The only difference is the macmode stuff. Try commenting that out >to see what happens. If it works then we have a bug with the mac mode >stuff. Already tried that, same problem. > > Have you tried it without any other CONFIG_*_CONSOLE besides > > CONFIG_FRAMEBUFFER_CONSOLE? > >Yes. VGAcon and MDAcon work fine. In fact I run my machine with mdacon and >fbcon at the same time, with mdacon as my VT console. This way if it oops >mdacon prints out what happens. Plus I can debug fbcon or a framebuffer >driver without any problems. I mean did you try with _only_ CONFIG_FRAMEBUFFER_CONSOLE and CONFIG_FB_ATY128 enabled? Cause that's the only choice I have. The screen looks like the console code and the chip disagree on the selected resolution and/or bpp, but I can't see anything obviously wrong in your changes. Franz. |
From: Nick K. <nic...@ma...> - 2001-11-23 08:19:04
|
Hello, Romain! On Thu, 22 Nov 2001 10:45:29 +0100 you wrote: > Nick Kurshev wrote: > > > Sorry! This part was taken by me from mga_vid driver > > and this part is still not clear for me :( > > IMHO if such branch will be in the Linux this problem > > will disapeared. > > I don't think bew /dev/ entry with new major will ever > get integrated, there's been a lot of discussion in LK. > The idea in linux-console is to add a new FS that would > allow for such stuff dynamically. But it won't happen > tomorrow... > As I already wrote - implementing VID driver within framebuffer's one is not good for me. I need with standalone driver :( Simply because radeon_vid need with VESA BIOS as graphics server to get working TV-out. (radeonfb doesn't enable TV-out and probably will never do that) > > In the future - it would be better to write into documentation: > > __u16 depth_avail; /* <- available depth(s) for this FOURCC: FB_VIDEOVERLAY_DEPTH* */ > > simply because AFAIK - there are no driver which were implemented with using > > this standard and first implementation ( of driver and app ) will cause > > a lot of questions, like: __u16 capability_avail what should be here and so on. > > yes, you're right. It's only a draft :-/ > > > These "atoms" exist in X11 project for the same lots of stuff ;) > > IMHO driver can ingnore unknown fields. > > but you need a way to tell the app that field so-and-so > are ignored. > It would be better to move such parameters into separate structure which could be passed into driver through other ioctl (changing brightness, saturation, ... on the fly). From other side - each member of this structure is optional for driver. Maybe it would be even better to pass each such atom as independed one into driver: struct hw_video_tuneup { char parameter[40]; // or uint32_t uint32_t value; uint32_t min_range,max_range; uint32_t flags; }; In the future it ould be possible easy expand this by: #define BRIGHTNESS 1 #define SATURATION 2 #define HUE 3 /* year after 1-st implementation */ #define SGI_SPECIFIC_PARM123 0xFFFF8888 /* vendor specific addition */ > > P.S.: Maybe it would be better to rename fbvid.h to something other > > like: linux_video_overlay.h or linux_vid.h > > Because: > > framebuffers were designed to get linux console on non x86 systems > > but it's perfectly other technology and is useful for x86 system too. > > But: my radeon_vid doesn't require any framebuffer to be loaded and > > can be loaded from text-mode of x86 systems. > > I use it over VESA's output driver of mplayer. It's trickly but it's > > only solution to get working TV-out on radeon chips. Simply because > > ATI will never open TV-out related documentation due macrovision concerns. > > But after terminating - VESA will switch display back to text-mode > > (it's radeon specific thing). If someone will use radeon_vid over > > framebuffer and tried to use VESA then result will be predictable, imho. > > The new FB layer in linux-console is not dependant on console code, > you can have console without FB or FB without console. That's was > the idea behinf fbvid.h : add the ability to overlay video (or > still image) on the FB, not in the console. if there's also a > console, fine. > I prefer don't mix framebuffer and video overlay which is useful on x68 systems too. > Again, feel free to add this subject to the current discussion > on the new API in linux-fbdev and linux-console, I think it's > worth public discussion, as there's obviously interest in > FB and/or console video. My draft was only a suggestion and > a way to get the discussion started, not something cast in > iron that can't be improved/reworked. > Done > Anyway, radeon stuff interest me a lot, I just bought a > PowerBook G4 with a radeon mobility M6 in it :-) :-) > Unfortunately - radeon_vid currently is useless for you simply because only mplayer works with it and only through VESA. (Currently mplayer is far from standards in console video overlay stuff :( But I hope that after implementing such standard it would be possible to add corresponding stuff to mplayer). > -- > DOLBEAU Romain | Nothing is real but the way that I feel > ENS Cachan / Ker Lann | And I feel like going down, down, down > Thesard IRISA / CAPS | -- Rainbow, > dol...@cl... | 'Self Portrait' > Best regards! Nick |