提交 fdac4e69 编写于 作者: H Helge Deller 提交者: Linus Torvalds

sticore: don't activate unsupported GSC STI cards on HPPA

On HPPA there exists some older GSC graphics cards, which need special
graphic-card-BIOS patching to become supported.  Since we don't have yet
implemented the patching, it's better to detect such cards in advance,
inform to the user that there are known problems and to not activate the
card.

Problematic GSC cards and BIOS versions are:
* Hyperdrive/Hyperbowl (A4071A) graphics card series:
   * ID = 0x2BCB015A (Version 8.04/8)
   * ID = 0x2BCB015A (Version 8.04/11)
* Thunder 1 VISUALIZE 48 card:
   * ID = 0x2F23E5FC (Version 8.05/9)
* Thunder 2 VISUALIZE 48 XP card:
   * ID = 0x2F8D570E (Version 8.05/12)
* Some Hyperion and ThunderHawk GSC cards

Further details are described here:
http://parisc-linux.org/faq/graphics-howto.htmlSigned-off-by: NHelge Deller <deller@gmx.de>
Cc: Kyle McMartin <kyle@mcmartin.ca>
Cc: Krzysztof Helt <krzysztof.h1@poczta.fm>
Cc: "Antonino A. Daplas" <adaplas@pol.net>
Cc: Grant Grundler <grundler@parisc-linux.org>
Cc: Matthew Wilcox <matthew@wil.cx>
Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
上级 9b67c5d4
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
#include <asm/hardware.h> #include <asm/hardware.h>
#include <asm/parisc-device.h> #include <asm/parisc-device.h>
#include <asm/cacheflush.h> #include <asm/cacheflush.h>
#include <asm/grfioctl.h>
#include "../sticore.h" #include "../sticore.h"
...@@ -725,6 +726,7 @@ static int __devinit sti_read_rom(int wordmode, struct sti_struct *sti, ...@@ -725,6 +726,7 @@ static int __devinit sti_read_rom(int wordmode, struct sti_struct *sti,
{ {
struct sti_cooked_rom *cooked; struct sti_cooked_rom *cooked;
struct sti_rom *raw = NULL; struct sti_rom *raw = NULL;
unsigned long revno;
cooked = kmalloc(sizeof *cooked, GFP_KERNEL); cooked = kmalloc(sizeof *cooked, GFP_KERNEL);
if (!cooked) if (!cooked)
...@@ -767,9 +769,35 @@ static int __devinit sti_read_rom(int wordmode, struct sti_struct *sti, ...@@ -767,9 +769,35 @@ static int __devinit sti_read_rom(int wordmode, struct sti_struct *sti,
sti->graphics_id[1] = raw->graphics_id[1]; sti->graphics_id[1] = raw->graphics_id[1];
sti_dump_rom(raw); sti_dump_rom(raw);
/* check if the ROM routines in this card are compatible */
if (wordmode || sti->graphics_id[1] != 0x09A02587)
goto ok;
revno = (raw->revno[0] << 8) | raw->revno[1];
switch (sti->graphics_id[0]) {
case S9000_ID_HCRX:
/* HyperA or HyperB ? */
if (revno == 0x8408 || revno == 0x840b)
goto msg_not_supported;
break;
case CRT_ID_THUNDER:
if (revno == 0x8509)
goto msg_not_supported;
break;
case CRT_ID_THUNDER2:
if (revno == 0x850c)
goto msg_not_supported;
}
ok:
return 1; return 1;
msg_not_supported:
printk(KERN_ERR "Sorry, this GSC/STI card is not yet supported.\n");
printk(KERN_ERR "Please see http://parisc-linux.org/faq/"
"graphics-howto.html for more info.\n");
/* fall through */
out_err: out_err:
kfree(raw); kfree(raw);
kfree(cooked); kfree(cooked);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册