gpm selection vs VGA console & fbcon
Daniel Berlin
dan at cgsoftware.com
Tue Jul 10 01:15:56 EST 2001
Benjamin Herrenschmidt <benh at kernel.crashing.org> writes:
> There's an endian bug that have been around for some time causing
> text & attributes to be flipped when doing selections with gpm
> in console mode with VGA console enabled & running on an fbdev.
>
> I didn't follow that closely, but since it's popping up again for
> users I beleive a fix was never merged in the main tree. Is there
> such a patch available or it's still on the list of "things to
> look into one day" ?
I have a patch still that fixes it, and i keep inserting it into my
tree.
3 liner to include/asm-ppc/vga.h
4 liner to drivers/video/fbcon.c
(this is really two seperate patches, I wasn't about to set up two
trees simply to get 20 lines worth of diff. :P)
*** vga.h Wed Jul 4 10:58:40 2001
--- /root/linux/include/asm-ppc/vga.h Thu Jun 28 14:22:02 2001
*************** extern inline u16 scr_readw(volatile con
*** 37,42 ****
--- 37,45 ----
#define VT_BUF_HAVE_MEMCPYW
#define scr_memcpyw memcpy
+ #define VT_BUF_HAVE_MEMCPYF
+ #define scr_memcpyw_to memcpy
+ #define scr_memcpyw_from memcpy
#endif /* !CONFIG_VGA_CONSOLE && !CONFIG_MDA_CONSOLE */
*** fbcon.c Tue Jul 3 17:58:41 2001
--- /root/linux/drivers/video/fbcon.c Wed Jun 27 14:52:59 2001
*************** static void fbcon_invert_region(struct v
*** 1954,1966 ****
if (!conp->vc_can_do_color)
*p++ ^= 0x0800;
else if (conp->vc_hi_font_mask == 0x100) {
! u16 a = *p;
a = ((a) & 0x11ff) | (((a) & 0xe000) >> 4) | (((a) & 0x0e00) << 4);
! *p++ = a;
} else {
! u16 a = *p;
a = ((a) & 0x88ff) | (((a) & 0x7000) >> 4) | (((a) & 0x0700) << 4);
! *p++ = a;
}
if (p == (u16 *)softback_end)
p = (u16 *)softback_buf;
--- 1954,1966 ----
if (!conp->vc_can_do_color)
*p++ ^= 0x0800;
else if (conp->vc_hi_font_mask == 0x100) {
! u16 a = scr_readw(p);
a = ((a) & 0x11ff) | (((a) & 0xe000) >> 4) | (((a) & 0x0e00) << 4);
! scr_writew(a, p++);
} else {
! u16 a = scr_readw(p);
a = ((a) & 0x88ff) | (((a) & 0x7000) >> 4) | (((a) & 0x0700) << 4);
! scr_writew(a, p++);
}
if (p == (u16 *)softback_end)
p = (u16 *)softback_buf;
> ;)
>
> Ben.
>
>
--
"Last night, I walked up to this beautiful woman in a bar and
asked her, "Do you live around here often?" She said, "You're
wearing two different colored socks." I said, "Yes, but to me
they're the same because I go by thickness." Then she asked,
"How do you feel?" and I said, "Well, you know when you're
sitting on a chair and you lean back so you're just on two legs
then you lean too far and you almost fall over but at the last
second you catch yourself? I feel like that all the time."
"-Steven Wright
** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/
More information about the Linuxppc-dev
mailing list