diff options
Diffstat (limited to 'drivers/video/console')
-rw-r--r-- | drivers/video/console/sticore.c | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/drivers/video/console/sticore.c b/drivers/video/console/sticore.c index d7822af0e00a..ef7870f5ea08 100644 --- a/drivers/video/console/sticore.c +++ b/drivers/video/console/sticore.c | |||
@@ -24,6 +24,7 @@ | |||
24 | #include <asm/hardware.h> | 24 | #include <asm/hardware.h> |
25 | #include <asm/parisc-device.h> | 25 | #include <asm/parisc-device.h> |
26 | #include <asm/cacheflush.h> | 26 | #include <asm/cacheflush.h> |
27 | #include <asm/grfioctl.h> | ||
27 | 28 | ||
28 | #include "../sticore.h" | 29 | #include "../sticore.h" |
29 | 30 | ||
@@ -725,6 +726,7 @@ static int __devinit sti_read_rom(int wordmode, struct sti_struct *sti, | |||
725 | { | 726 | { |
726 | struct sti_cooked_rom *cooked; | 727 | struct sti_cooked_rom *cooked; |
727 | struct sti_rom *raw = NULL; | 728 | struct sti_rom *raw = NULL; |
729 | unsigned long revno; | ||
728 | 730 | ||
729 | cooked = kmalloc(sizeof *cooked, GFP_KERNEL); | 731 | cooked = kmalloc(sizeof *cooked, GFP_KERNEL); |
730 | if (!cooked) | 732 | if (!cooked) |
@@ -767,9 +769,35 @@ static int __devinit sti_read_rom(int wordmode, struct sti_struct *sti, | |||
767 | sti->graphics_id[1] = raw->graphics_id[1]; | 769 | sti->graphics_id[1] = raw->graphics_id[1]; |
768 | 770 | ||
769 | sti_dump_rom(raw); | 771 | sti_dump_rom(raw); |
770 | 772 | ||
773 | /* check if the ROM routines in this card are compatible */ | ||
774 | if (wordmode || sti->graphics_id[1] != 0x09A02587) | ||
775 | goto ok; | ||
776 | |||
777 | revno = (raw->revno[0] << 8) | raw->revno[1]; | ||
778 | |||
779 | switch (sti->graphics_id[0]) { | ||
780 | case S9000_ID_HCRX: | ||
781 | /* HyperA or HyperB ? */ | ||
782 | if (revno == 0x8408 || revno == 0x840b) | ||
783 | goto msg_not_supported; | ||
784 | break; | ||
785 | case CRT_ID_THUNDER: | ||
786 | if (revno == 0x8509) | ||
787 | goto msg_not_supported; | ||
788 | break; | ||
789 | case CRT_ID_THUNDER2: | ||
790 | if (revno == 0x850c) | ||
791 | goto msg_not_supported; | ||
792 | } | ||
793 | ok: | ||
771 | return 1; | 794 | return 1; |
772 | 795 | ||
796 | msg_not_supported: | ||
797 | printk(KERN_ERR "Sorry, this GSC/STI card is not yet supported.\n"); | ||
798 | printk(KERN_ERR "Please see http://parisc-linux.org/faq/" | ||
799 | "graphics-howto.html for more info.\n"); | ||
800 | /* fall through */ | ||
773 | out_err: | 801 | out_err: |
774 | kfree(raw); | 802 | kfree(raw); |
775 | kfree(cooked); | 803 | kfree(cooked); |