2002-10-31 20:04:22

by James Simmons

[permalink] [raw]
Subject: [BK fbdev updates]


Sorry about not producing a regular diff. The final changes really did a
number on the framebuffer console code in fbcon.c so I had some massive
work to do. I still have a massive amount of cleaning up to do. Also a lot
of drivers stil haven't been ported.

So here is the regular diff against 2.5.45

http://phoenix.infradead.org/~jsimmons/fbdev.diff.gz

diffstat:

CREDITS | 10
Documentation/DocBook/kernel-api.tmpl | 4
MAINTAINERS | 7
arch/alpha/Kconfig | 31
arch/arm/Kconfig | 21
arch/i386/Kconfig | 55
arch/ia64/Kconfig | 25
arch/m68k/Kconfig | 7
arch/mips/Kconfig | 62
arch/mips64/Kconfig | 23
arch/parisc/Kconfig | 19
arch/ppc/Kconfig | 22
arch/ppc64/Kconfig | 7
arch/sh/Kconfig | 55
arch/sparc/Kconfig | 16
arch/sparc64/Kconfig | 11
arch/x86_64/Kconfig | 55
drivers/Makefile | 3
drivers/char/consolemap.c | 1
drivers/char/keyboard.c | 1
drivers/char/selection.c | 1
drivers/char/tty_io.c | 7
drivers/char/vc_screen.c | 1
drivers/char/vt.c | 181
drivers/char/vt_ioctl.c | 58
drivers/video/Kconfig | 338 -
drivers/video/Makefile | 45
drivers/video/S3triofb.c | 2
drivers/video/amifb.c | 2
drivers/video/anakinfb.c | 18
drivers/video/atafb.c | 2
drivers/video/aty/atyfb_base.c | 111
drivers/video/aty/mach64_ct.c | 2
drivers/video/aty/mach64_cursor.c | 2
drivers/video/aty/mach64_gx.c | 2
drivers/video/aty128fb.c | 3165 +++++++---------
drivers/video/cfbcopyarea.c | 485 ++
drivers/video/cfbfillrect.c | 107
drivers/video/cfbimgblt.c | 335 +
drivers/video/chipsfb.c | 2
drivers/video/clps711xfb.c | 16
drivers/video/console/Kconfig | 277 +
drivers/video/console/Makefile | 52
drivers/video/console/dummycon.c | 73
drivers/video/console/fbcon-accel.c | 330 +
drivers/video/console/fbcon-accel.h | 34
drivers/video/console/fbcon-afb.c | 448 ++
drivers/video/console/fbcon-afb.h | 32
drivers/video/console/fbcon-hga.c | 253 +
drivers/video/console/fbcon-ilbm.c | 296 +
drivers/video/console/fbcon-ilbm.h | 32
drivers/video/console/fbcon-iplan2p2.c | 476 ++
drivers/video/console/fbcon-iplan2p2.h | 32
drivers/video/console/fbcon-iplan2p4.c | 497 ++
drivers/video/console/fbcon-iplan2p4.h | 32
drivers/video/console/fbcon-iplan2p8.c | 534 ++
drivers/video/console/fbcon-iplan2p8.h | 32
drivers/video/console/fbcon-sti.c | 289 +
drivers/video/console/fbcon.c | 2476 +++++++++++++
drivers/video/console/fbcon.h | 188
drivers/video/console/font.h | 53
drivers/video/console/font_6x11.c | 3351 +++++++++++++++++
drivers/video/console/font_8x16.c | 4631 ++++++++++++++++++++++++
drivers/video/console/font_8x8.c | 2583 +++++++++++++
drivers/video/console/font_acorn_8x8.c | 277 +
drivers/video/console/font_mini_4x6.c | 2158 +++++++++++
drivers/video/console/font_pearl_8x8.c | 2587 +++++++++++++
drivers/video/console/font_sun12x22.c | 6220 +++++++++++++++++++++++++++++++++
drivers/video/console/font_sun8x16.c | 275 +
drivers/video/console/fonts.c | 135
drivers/video/console/mdacon.c | 631 +++
drivers/video/console/newport_con.c | 745 +++
drivers/video/console/prom.uni | 11
drivers/video/console/promcon.c | 605 +++
drivers/video/console/sti.h | 289 +
drivers/video/console/sticon.c | 214 +
drivers/video/console/sticore.c | 601 +++
drivers/video/console/vgacon.c | 1066 +++++
drivers/video/controlfb.c | 2
drivers/video/cyberfb.c | 2
drivers/video/dnfb.c | 18
drivers/video/dummycon.c | 74
drivers/video/epson1355fb.c | 2
drivers/video/fbcmap.c | 92
drivers/video/fbcon-accel.c | 188
drivers/video/fbcon-accel.h | 34
drivers/video/fbcon-afb.c | 448 --
drivers/video/fbcon-cfb16.c | 319 -
drivers/video/fbcon-cfb2.c | 225 -
drivers/video/fbcon-cfb24.c | 333 -
drivers/video/fbcon-cfb32.c | 305 -
drivers/video/fbcon-cfb4.c | 229 -
drivers/video/fbcon-cfb8.c | 294 -
drivers/video/fbcon-hga.c | 253 -
drivers/video/fbcon-ilbm.c | 296 -
drivers/video/fbcon-iplan2p2.c | 476 --
drivers/video/fbcon-iplan2p4.c | 497 --
drivers/video/fbcon-iplan2p8.c | 534 --
drivers/video/fbcon-mfb.c | 217 -
drivers/video/fbcon-sti.c | 337 -
drivers/video/fbcon-vga-planes.c | 387 --
drivers/video/fbcon.c | 2509 -------------
drivers/video/fbgen.c | 313 -
drivers/video/fbmem.c | 100
drivers/video/fm2fb.c | 17
drivers/video/font_6x11.c | 3351 -----------------
drivers/video/font_8x16.c | 4631 ------------------------
drivers/video/font_8x8.c | 2583 -------------
drivers/video/font_acorn_8x8.c | 277 -
drivers/video/font_mini_4x6.c | 2158 -----------
drivers/video/font_pearl_8x8.c | 2587 -------------
drivers/video/font_sun12x22.c | 6220 ---------------------------------
drivers/video/font_sun8x16.c | 275 -
drivers/video/fonts.c | 135
drivers/video/g364fb.c | 32
drivers/video/hgafb.c | 228 -
drivers/video/hitfb.c | 17
drivers/video/hpfb.c | 16
drivers/video/igafb.c | 2
drivers/video/imsttfb.c | 3
drivers/video/macfb.c | 22
drivers/video/macmodes.c | 3
drivers/video/macmodes.h | 70
drivers/video/matrox/i2c-matroxfb.c | 2
drivers/video/matrox/matroxfb_base.c | 4
drivers/video/matrox/matroxfb_crtc2.c | 4
drivers/video/maxinefb.c | 15
drivers/video/mdacon.c | 632 ---
drivers/video/modedb.c | 7
drivers/video/neofb.c | 28
drivers/video/newport_con.c | 746 ---
drivers/video/offb.c | 23
drivers/video/platinumfb.c | 2
drivers/video/pm2fb.c | 2
drivers/video/pm3fb.c | 2
drivers/video/pmag-ba-fb.c | 15
drivers/video/pmagb-b-fb.c | 15
drivers/video/prom.uni | 11
drivers/video/promcon.c | 606 ---
drivers/video/pvr2fb.c | 4
drivers/video/q40fb.c | 16
drivers/video/retz3fb.c | 2
drivers/video/sa1100fb.c | 2
drivers/video/sbusfb.c | 2
drivers/video/sgivwfb.c | 24
drivers/video/sis/Makefile | 2
drivers/video/sis/sis_accel.c | 495 ++
drivers/video/sis/sis_main.c | 2
drivers/video/skeletonfb.c | 28
drivers/video/sstfb.c | 2
drivers/video/sti-bmode.h | 287 -
drivers/video/sti.h | 289 -
drivers/video/sticon-bmode.c | 895 ----
drivers/video/sticon.c | 215 -
drivers/video/sticore.c | 601 ---
drivers/video/sticore.h | 407 ++
drivers/video/stifb.c | 1403 ++++++-
drivers/video/sun3fb.c | 2
drivers/video/tdfxfb.c | 377 --
drivers/video/tgafb.c | 2
drivers/video/tridentfb.c | 2
drivers/video/tx3912fb.c | 16
drivers/video/valkyriefb.c | 2
drivers/video/vesafb.c | 24
drivers/video/vfb.c | 36
drivers/video/vga16fb.c | 1192 ++++--
drivers/video/vgacon.c | 1055 -----
drivers/video/virgefb.c | 2
include/linux/console.h | 1
include/linux/fb.h | 201 -
include/linux/sisfb.h | 58
include/linux/vt_kern.h | 8
include/video/fbcon-afb.h | 32
include/video/fbcon-cfb16.h | 34
include/video/fbcon-cfb2.h | 32
include/video/fbcon-cfb24.h | 34
include/video/fbcon-cfb32.h | 34
include/video/fbcon-cfb4.h | 32
include/video/fbcon-cfb8.h | 34
include/video/fbcon-hga.h | 32
include/video/fbcon-ilbm.h | 32
include/video/fbcon-iplan2p2.h | 32
include/video/fbcon-iplan2p4.h | 32
include/video/fbcon-iplan2p8.h | 32
include/video/fbcon-mac.h | 32
include/video/fbcon-mfb.h | 32
include/video/fbcon-vga-planes.h | 37
include/video/fbcon-vga.h | 32
include/video/fbcon.h | 795 ----
include/video/font.h | 53
include/video/macmodes.h | 70
191 files changed, 38960 insertions(+), 41494 deletions(-)

BK

bk://fbdev.bkbits.net/fbdev-2.5

Go test it out. Just note several drivers haven't been ported yet.

MS: (n) 1. A debilitating and surprisingly widespread affliction that
renders the sufferer barely able to perform the simplest task. 2. A disease.

James Simmons [[email protected]] ____/|
fbdev/console/gfx developer \ o.O|
http://www.linux-fbdev.org =(_)=
http://linuxgfx.sourceforge.net U
http://linuxconsole.sourceforge.net


2002-10-31 21:41:37

by Antonino A. Daplas

[permalink] [raw]
Subject: Re: [Linux-fbdev-devel] [BK fbdev updates]

On Fri, 2002-11-01 at 05:03, James Simmons wrote:
>
> Sorry about not producing a regular diff. The final changes really did a
> number on the framebuffer console code in fbcon.c so I had some massive
> work to do. I still have a massive amount of cleaning up to do. Also a lot
> of drivers stil haven't been ported.
>
> So here is the regular diff against 2.5.45
>
> http://phoenix.infradead.org/~jsimmons/fbdev.diff.gz
>

James,

The diff you posted is still not the right one.

Tony

2002-10-31 23:44:29

by James Simmons

[permalink] [raw]
Subject: Re: [Linux-fbdev-devel] [BK fbdev updates]


> > Sorry about not producing a regular diff. The final changes really did a
> > number on the framebuffer console code in fbcon.c so I had some massive
> > work to do. I still have a massive amount of cleaning up to do. Also a lot
> > of drivers stil haven't been ported.
> >
> > So here is the regular diff against 2.5.45
> >
> > http://phoenix.infradead.org/~jsimmons/fbdev.diff.gz
> >
>
> James,
>
> The diff you posted is still not the right one.

Ug. Try it again.



2002-11-01 08:59:19

by Sven Luther

[permalink] [raw]
Subject: Re: [Linux-fbdev-devel] [BK fbdev updates]

On Thu, Oct 31, 2002 at 01:03:54PM -0800, James Simmons wrote:
>
> Sorry about not producing a regular diff. The final changes really did a
> number on the framebuffer console code in fbcon.c so I had some massive
> work to do. I still have a massive amount of cleaning up to do. Also a lot
> of drivers stil haven't been ported.
>
> So here is the regular diff against 2.5.45
>
> http://phoenix.infradead.org/~jsimmons/fbdev.diff.gz

Doesn't apply, seems to be a diff against 2.5.2.

Friendly,

Sven Luther

2002-11-01 16:12:24

by James Simmons

[permalink] [raw]
Subject: Re: [Linux-fbdev-devel] [BK fbdev updates]


> > Sorry about not producing a regular diff. The final changes really did a
> > number on the framebuffer console code in fbcon.c so I had some massive
> > work to do. I still have a massive amount of cleaning up to do. Also a lot
> > of drivers stil haven't been ported.
> >
> > So here is the regular diff against 2.5.45
> >
> > http://phoenix.infradead.org/~jsimmons/fbdev.diff.gz
>
> Doesn't apply, seems to be a diff against 2.5.2.

Hm??? I will give it a try.

2002-11-01 19:36:43

by Antonino A. Daplas

[permalink] [raw]
Subject: Re: [Linux-fbdev-devel] [BK fbdev updates]

On Fri, 2002-11-01 at 05:03, James Simmons wrote:
>
> Sorry about not producing a regular diff. The final changes really did a
> number on the framebuffer console code in fbcon.c so I had some massive
> work to do. I still have a massive amount of cleaning up to do. Also a lot
> of drivers stil haven't been ported.
>
> So here is the regular diff against 2.5.45
>
> http://phoenix.infradead.org/~jsimmons/fbdev.diff.gz
>

James,

I tried the patch, and it does produce a cleaner and smaller driver.
Overall, I like it. Some observations:

1. Without the fb_set_var() hook, switching from X messes up the
console. I would guess this will be addressed by the console?

2. Console panning/wrapping does not work. updatevar includes a check
"if (con == info->currcon)", and my guess is info->currcon is obsoleted
so the check always fails.

3. fbdev can be loaded without taking over the console. After running
an fb-based application, exiting fbdev messes up the vga console
(actually hangs the system). Should the fbdev driver provide the
capability to restore the VGA state then, ie at info->fb_release?

4. The initial font loaded is 8x8. It seems that 8x16 fonts are limited
for the SGI console console only. Any reason why?

5. The cfb_* drawing functions still behave erratically, especially in
emacs. Geert has made some versions that work correctly for me. This
was discussed in a thread sometimes ago.

Some of the above problems may be from the driver side (ie. #3).

Tony

Attached is a diff that will allow the logo to be drawn at 8-bpp
pseudocolor:

diff -Naur linux-2.4.45-fbdev/drivers/video/console/fbcon.c linux/drivers/video/console/fbcon.c
--- linux-2.4.45-fbdev/drivers/video/console/fbcon.c Fri Nov 1 19:19:13 2002
+++ linux/drivers/video/console/fbcon.c Fri Nov 1 19:20:00 2002
@@ -2281,12 +2281,12 @@
}
saved_palette = info->pseudo_palette;
info->pseudo_palette = palette;
- image.width = LOGO_W;
- image.height = LOGO_H;
- image.depth = depth;
- image.data = logo;
- image.dy = 0;
}
+ image.width = LOGO_W;
+ image.height = LOGO_H;
+ image.depth = depth;
+ image.data = logo;
+ image.dy = 0;
#endif

for (x = 0; x < num_online_cpus() * (LOGO_W + 8) &&








2002-11-01 22:29:24

by James Simmons

[permalink] [raw]
Subject: Re: [Linux-fbdev-devel] [BK fbdev updates]


> James,
>
> I tried the patch, and it does produce a cleaner and smaller driver.
> Overall, I like it. Some observations:
>
> 1. Without the fb_set_var() hook, switching from X messes up the
> console. I would guess this will be addressed by the console?

fbcon_switch has to be rewritten. I'm going threw the process of cleaning
up the upper fbcon layer. Its such a mess. Yuck!!!

> 2. Console panning/wrapping does not work. updatevar includes a check
> "if (con == info->currcon)", and my guess is info->currcon is obsoleted
> so the check always fails.

It worked before. Strange. Do you mean for you console panning doesn't
work on the visiable VC or a non visible VC?

> 3. fbdev can be loaded without taking over the console. After running
> an fb-based application, exiting fbdev messes up the vga console
> (actually hangs the system). Should the fbdev driver provide the
> capability to restore the VGA state then, ie at info->fb_release?

Yes!!! Of course there is the issue is the framebuffer that actual one
used for vgacon or is it independent, thinking multihead here.

> 4. The initial font loaded is 8x8. It seems that 8x16 fonts are limited
> for the SGI console console only. Any reason why?

I have no idea why that is. You can select a differnt font.

> 5. The cfb_* drawing functions still behave erratically, especially in
> emacs. Geert has made some versions that work correctly for me. This
> was discussed in a thread sometimes ago.

Where are the patchs. I like to incorporate them into BK.

> Attached is a diff that will allow the logo to be drawn at 8-bpp
> pseudocolor:

Applied.

2002-11-02 04:01:58

by Antonino A. Daplas

[permalink] [raw]
Subject: Re: [Linux-fbdev-devel] [BK fbdev updates]

On Sat, 2002-11-02 at 07:29, James Simmons wrote:
>
> > James,
> >
> > I tried the patch, and it does produce a cleaner and smaller driver.
> > Overall, I like it. Some observations:
> >
> > 1. Without the fb_set_var() hook, switching from X messes up the
> > console. I would guess this will be addressed by the console?
>
> fbcon_switch has to be rewritten. I'm going threw the process of cleaning
> up the upper fbcon layer. Its such a mess. Yuck!!!
Thank goodness for this :) I was already thinking of adding an 'Option
Usefbdev' for the xfree86 driver.

>
> > 2. Console panning/wrapping does not work. updatevar includes a check
> > "if (con == info->currcon)", and my guess is info->currcon is obsoleted
> > so the check always fails.
>
> It worked before. Strange. Do you mean for you console panning doesn't
> work on the visiable VC or a non visible VC?
>
I grepped the source for currcon, and did not see any instances where
it's being updated. So, I removed the "if (con == info->currcon)" line
and panning worked again for the current console. However, switching to
another console screws up the viewport again. The viewport will be
restored if I scrolled past yres_virtual.

Perhaps, I should apply your console patches? I haven't done that yet.

> > 3. fbdev can be loaded without taking over the console. After running
> > an fb-based application, exiting fbdev messes up the vga console
> > (actually hangs the system). Should the fbdev driver provide the
> > capability to restore the VGA state then, ie at info->fb_release?
>
> Yes!!! Of course there is the issue is the framebuffer that actual one
> used for vgacon or is it independent, thinking multihead here.
>
I was trying to confirm if vgacon should restore its own state or not.

But this one is neat :) I added VGA save/restore state routines to
fb_open() and fb_release(). I was able to boot to a VGA console, fired
up XFBDev and DirectFB and exited back again to a VGA console. DirectFB
came back without problems, XFBDev needed a console reset.

I guess the save/restore state routines will only be needed for graphics
card with a VGA core. I think multiple graphics card or multi-head
systems will not be affected since the driver will only be
saving/restoring its own hardware anyway.

> > 4. The initial font loaded is 8x8. It seems that 8x16 fonts are limited
> > for the SGI console console only. Any reason why?
>
> I have no idea why that is. You can select a differnt font.
You have this in Kconfig in the 'console' directory.

config FONT_8x16
bool "VGA 8x16 font" if FBCON_FONTS
depends on FB && SGI_NEWPORT_CONSOLE=y

I changed the '&&' operator to '||' in my case.

>
> > 5. The cfb_* drawing functions still behave erratically, especially in
> > emacs. Geert has made some versions that work correctly for me. This
> > was discussed in a thread sometimes ago.
>
> Where are the patchs. I like to incorporate them into BK.
The patch exceeded 40K uncompressed, so here's a link:

http://i810fb.sourceforge.net/draw_ops.diff.gz

The diff is against 2.5.45 plus your fbdev.diff.

Tony

2002-11-03 08:38:36

by Antonino A. Daplas

[permalink] [raw]
Subject: Re: [Linux-fbdev-devel] [BK fbdev updates]

On Sat, 2002-11-02 at 07:29, James Simmons wrote:
>
> > James,
> >
> > I tried the patch, and it does produce a cleaner and smaller driver.
> > Overall, I like it. Some observations:
> >
> > 1. Without the fb_set_var() hook, switching from X messes up the
> > console. I would guess this will be addressed by the console?
>
> fbcon_switch has to be rewritten. I'm going threw the process of cleaning
> up the upper fbcon layer. Its such a mess. Yuck!!!
>
> > 2. Console panning/wrapping does not work. updatevar includes a check
> > "if (con == info->currcon)", and my guess is info->currcon is obsoleted
> > so the check always fails.
>
> It worked before. Strange. Do you mean for you console panning doesn't
> work on the visiable VC or a non visible VC?
>

Adding update_var to fbcon_switch fixes #1 and #2 for me. Attached is a
diff.

Also, using fbset to change video modes corrupts the console. Looking
at the code, the flow of control is from the console to fbdev only? Is
this correct? I agree with this, it's saner.

Tony

diff -Naur linux/drivers/video/console/fbcon.c linux-2.5.45-fbdev/drivers/video/console/fbcon.c
--- linux/drivers/video/console/fbcon.c Sun Nov 3 08:19:32 2002
+++ linux-2.5.45-fbdev/drivers/video/console/fbcon.c Sun Nov 3 08:18:56 2002
@@ -1604,8 +1604,6 @@
scrollback_max = 0;
scrollback_current = 0;

- update_var(unit, info);
-
if (p->dispsw->clear_margins && vt_cons[unit]->vc_mode == KD_TEXT)
p->dispsw->clear_margins(conp, p, 0);
if (logo_shown == -2) {


2002-11-07 21:18:31

by James Simmons

[permalink] [raw]
Subject: Re: [Linux-fbdev-devel] [BK fbdev updates]


> Adding update_var to fbcon_switch fixes #1 and #2 for me. Attached is a
> diff.

Patch applied :-)

> Also, using fbset to change video modes corrupts the console. Looking
> at the code, the flow of control is from the console to fbdev only? Is
> this correct? I agree with this, it's saner.

Yes this is correct. In the next set of changes you will be able to set
the VC size via stty. You can change the resolution of the display via
/dev/fb but ideally after a close it will reset the VC original mode.