diff options
Diffstat (limited to 'drivers/video/tridentfb.c')
-rw-r--r-- | drivers/video/tridentfb.c | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/drivers/video/tridentfb.c b/drivers/video/tridentfb.c index 0f6e4054c996..dfe52b424c97 100644 --- a/drivers/video/tridentfb.c +++ b/drivers/video/tridentfb.c | |||
@@ -24,11 +24,12 @@ | |||
24 | #include <linux/delay.h> | 24 | #include <linux/delay.h> |
25 | #include <video/trident.h> | 25 | #include <video/trident.h> |
26 | 26 | ||
27 | #define VERSION "0.7.8-NEWAPI" | 27 | #define VERSION "0.7.9-NEWAPI" |
28 | 28 | ||
29 | struct tridentfb_par { | 29 | struct tridentfb_par { |
30 | void __iomem *io_virt; /* iospace virtual memory address */ | 30 | void __iomem *io_virt; /* iospace virtual memory address */ |
31 | u32 pseudo_pal[16]; | 31 | u32 pseudo_pal[16]; |
32 | int chip_id; | ||
32 | }; | 33 | }; |
33 | 34 | ||
34 | static unsigned char eng_oper; /* engine operation... */ | 35 | static unsigned char eng_oper; /* engine operation... */ |
@@ -42,9 +43,6 @@ static struct fb_fix_screeninfo tridentfb_fix = { | |||
42 | .accel = FB_ACCEL_NONE, | 43 | .accel = FB_ACCEL_NONE, |
43 | }; | 44 | }; |
44 | 45 | ||
45 | static int chip_id; | ||
46 | |||
47 | static int defaultaccel; | ||
48 | static int displaytype; | 46 | static int displaytype; |
49 | 47 | ||
50 | /* defaults which are normally overriden by user values */ | 48 | /* defaults which are normally overriden by user values */ |
@@ -79,9 +77,6 @@ module_param(nativex, int, 0); | |||
79 | module_param(fp, int, 0); | 77 | module_param(fp, int, 0); |
80 | module_param(crt, int, 0); | 78 | module_param(crt, int, 0); |
81 | 79 | ||
82 | static int chip3D; | ||
83 | static int chipcyber; | ||
84 | |||
85 | static int is3Dchip(int id) | 80 | static int is3Dchip(int id) |
86 | { | 81 | { |
87 | return ((id == BLADE3D) || (id == CYBERBLADEE4) || | 82 | return ((id == BLADE3D) || (id == CYBERBLADEE4) || |
@@ -658,7 +653,7 @@ static void set_lwidth(struct tridentfb_par *par, int width) | |||
658 | /* For resolutions smaller than FP resolution stretch */ | 653 | /* For resolutions smaller than FP resolution stretch */ |
659 | static void screen_stretch(struct tridentfb_par *par) | 654 | static void screen_stretch(struct tridentfb_par *par) |
660 | { | 655 | { |
661 | if (chip_id != CYBERBLADEXPAi1) | 656 | if (par->chip_id != CYBERBLADEXPAi1) |
662 | write3CE(par, BiosReg, 0); | 657 | write3CE(par, BiosReg, 0); |
663 | else | 658 | else |
664 | write3CE(par, BiosReg, 8); | 659 | write3CE(par, BiosReg, 8); |
@@ -706,7 +701,7 @@ static void set_vclk(struct tridentfb_par *par, unsigned long freq) | |||
706 | if (fi > freq) | 701 | if (fi > freq) |
707 | break; | 702 | break; |
708 | } | 703 | } |
709 | if (chip3D) { | 704 | if (is3Dchip(par->chip_id)) { |
710 | write3C4(par, ClockHigh, hi); | 705 | write3C4(par, ClockHigh, hi); |
711 | write3C4(par, ClockLow, lo); | 706 | write3C4(par, ClockLow, lo); |
712 | } else { | 707 | } else { |
@@ -739,7 +734,7 @@ static unsigned int __devinit get_displaytype(struct tridentfb_par *par) | |||
739 | { | 734 | { |
740 | if (fp) | 735 | if (fp) |
741 | return DISPLAY_FP; | 736 | return DISPLAY_FP; |
742 | if (crt || !chipcyber) | 737 | if (crt || !iscyber(par->chip_id)) |
743 | return DISPLAY_CRT; | 738 | return DISPLAY_CRT; |
744 | return (read3CE(par, FPConfig) & 0x10) ? DISPLAY_FP : DISPLAY_CRT; | 739 | return (read3CE(par, FPConfig) & 0x10) ? DISPLAY_FP : DISPLAY_CRT; |
745 | } | 740 | } |
@@ -754,7 +749,7 @@ static unsigned int __devinit get_memsize(struct tridentfb_par *par) | |||
754 | if (memsize) | 749 | if (memsize) |
755 | k = memsize * Kb; | 750 | k = memsize * Kb; |
756 | else | 751 | else |
757 | switch (chip_id) { | 752 | switch (par->chip_id) { |
758 | case CYBER9525DVD: | 753 | case CYBER9525DVD: |
759 | k = 2560 * Kb; | 754 | k = 2560 * Kb; |
760 | break; | 755 | break; |
@@ -1034,7 +1029,7 @@ static int tridentfb_set_par(struct fb_info *info) | |||
1034 | write3X4(par, PixelBusReg, tmp); | 1029 | write3X4(par, PixelBusReg, tmp); |
1035 | 1030 | ||
1036 | tmp = 0x10; | 1031 | tmp = 0x10; |
1037 | if (chipcyber) | 1032 | if (iscyber(par->chip_id)) |
1038 | tmp |= 0x20; | 1033 | tmp |= 0x20; |
1039 | write3X4(par, DRAMControl, tmp); /* both IO, linear enable */ | 1034 | write3X4(par, DRAMControl, tmp); /* both IO, linear enable */ |
1040 | 1035 | ||
@@ -1062,7 +1057,7 @@ static int tridentfb_set_par(struct fb_info *info) | |||
1062 | write3CE(par, 0x6, 0x05); /* graphics mode */ | 1057 | write3CE(par, 0x6, 0x05); /* graphics mode */ |
1063 | write3CE(par, 0x7, 0x0F); /* planes? */ | 1058 | write3CE(par, 0x7, 0x0F); /* planes? */ |
1064 | 1059 | ||
1065 | if (chip_id == CYBERBLADEXPAi1) { | 1060 | if (par->chip_id == CYBERBLADEXPAi1) { |
1066 | /* This fixes snow-effect in 32 bpp */ | 1061 | /* This fixes snow-effect in 32 bpp */ |
1067 | write3X4(par, CRTHSyncStart, 0x84); | 1062 | write3X4(par, CRTHSyncStart, 0x84); |
1068 | } | 1063 | } |
@@ -1217,6 +1212,9 @@ static int __devinit trident_pci_probe(struct pci_dev *dev, | |||
1217 | unsigned char revision; | 1212 | unsigned char revision; |
1218 | struct fb_info *info; | 1213 | struct fb_info *info; |
1219 | struct tridentfb_par *default_par; | 1214 | struct tridentfb_par *default_par; |
1215 | int defaultaccel; | ||
1216 | int chip3D; | ||
1217 | int chip_id; | ||
1220 | 1218 | ||
1221 | err = pci_enable_device(dev); | 1219 | err = pci_enable_device(dev); |
1222 | if (err) | 1220 | if (err) |
@@ -1269,7 +1267,6 @@ static int __devinit trident_pci_probe(struct pci_dev *dev, | |||
1269 | } | 1267 | } |
1270 | 1268 | ||
1271 | chip3D = is3Dchip(chip_id); | 1269 | chip3D = is3Dchip(chip_id); |
1272 | chipcyber = iscyber(chip_id); | ||
1273 | 1270 | ||
1274 | if (is_xp(chip_id)) { | 1271 | if (is_xp(chip_id)) { |
1275 | acc = &accel_xp; | 1272 | acc = &accel_xp; |
@@ -1279,6 +1276,8 @@ static int __devinit trident_pci_probe(struct pci_dev *dev, | |||
1279 | acc = &accel_image; | 1276 | acc = &accel_image; |
1280 | } | 1277 | } |
1281 | 1278 | ||
1279 | default_par->chip_id = chip_id; | ||
1280 | |||
1282 | /* acceleration is on by default for 3D chips */ | 1281 | /* acceleration is on by default for 3D chips */ |
1283 | defaultaccel = chip3D && !noaccel; | 1282 | defaultaccel = chip3D && !noaccel; |
1284 | 1283 | ||