Commit 04aa1eef authored by Helge Deller's avatar Helge Deller Committed by Greg Kroah-Hartman

stifb: detect cards in double buffer mode more reliably

Visualize-EG, Graffiti and A4450A graphics cards on PARISC can
be configured in double-buffer and standard mode, but the stifb
driver supports standard mode only.
This patch detects double-buffered cards more reliable.

It is a real bugfix for a very nasty problem for all parisc users which have
wrongly configured their graphic card.  The problem: The stifb graphics driver
will not detect that the card is wrongly configured and then nevertheless just
enables the graphics mode, which it shouldn't.  In the end, the user will see
no further updates / boot messages on the screen.

We had documented this problem already on our FAQ
(http://parisc-linux.org/faq/index.html#viseg "Why do I get corrupted graphics
with my Vis-EG/Graffiti/A4450A card?") but people still run into this problem.
 So having this fix in as early as possible can help us.
Signed-off-by: default avatarHelge Deller <deller@gmx.de>
Signed-off-by: default avatarAntonino Daplas <adaplas@gmail.com>
Cc: Kyle McMartin <kyle@mcmartin.ca>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 9c33865a
...@@ -1100,13 +1100,18 @@ stifb_init_fb(struct sti_struct *sti, int bpp_pref) ...@@ -1100,13 +1100,18 @@ stifb_init_fb(struct sti_struct *sti, int bpp_pref)
/* only supported cards are allowed */ /* only supported cards are allowed */
switch (fb->id) { switch (fb->id) {
case CRT_ID_VISUALIZE_EG: case CRT_ID_VISUALIZE_EG:
/* look for a double buffering device like e.g. the /* Visualize cards can run either in "double buffer" or
"INTERNAL_EG_DX1024" in the RDI precisionbook laptop "standard" mode. Depending on the mode, the card reports
which won't work. The same device in non-double a different device name, e.g. "INTERNAL_EG_DX1024" in double
buffering mode returns "INTERNAL_EG_X1024". */ buffer mode and "INTERNAL_EG_X1024" in standard mode.
if (strstr(sti->outptr.dev_name, "EG_DX")) { Since this driver only supports standard mode, we check
printk(KERN_WARNING if the device name contains the string "DX" and tell the
"stifb: ignoring '%s'. Disable double buffering in IPL menu.\n", user how to reconfigure the card. */
if (strstr(sti->outptr.dev_name, "DX")) {
printk(KERN_WARNING "WARNING: stifb framebuffer driver does not "
"support '%s' in double-buffer mode.\n"
KERN_WARNING "WARNING: Please disable the double-buffer mode "
"in IPL menu (the PARISC-BIOS).\n",
sti->outptr.dev_name); sti->outptr.dev_name);
goto out_err0; goto out_err0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment