aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/sis/sis_main.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/video/sis/sis_main.c')
-rw-r--r--drivers/video/sis/sis_main.c140
1 files changed, 52 insertions, 88 deletions
diff --git a/drivers/video/sis/sis_main.c b/drivers/video/sis/sis_main.c
index a7a48db64ce2..977e27927a21 100644
--- a/drivers/video/sis/sis_main.c
+++ b/drivers/video/sis/sis_main.c
@@ -106,8 +106,7 @@ sisfb_setdefaultparms(void)
106 106
107/* ------------- Parameter parsing -------------- */ 107/* ------------- Parameter parsing -------------- */
108 108
109static void __devinit 109static void sisfb_search_vesamode(unsigned int vesamode, bool quiet)
110sisfb_search_vesamode(unsigned int vesamode, bool quiet)
111{ 110{
112 int i = 0, j = 0; 111 int i = 0, j = 0;
113 112
@@ -146,8 +145,7 @@ sisfb_search_vesamode(unsigned int vesamode, bool quiet)
146 printk(KERN_ERR "sisfb: Invalid VESA mode 0x%x'\n", vesamode); 145 printk(KERN_ERR "sisfb: Invalid VESA mode 0x%x'\n", vesamode);
147} 146}
148 147
149static void __devinit 148static void sisfb_search_mode(char *name, bool quiet)
150sisfb_search_mode(char *name, bool quiet)
151{ 149{
152 unsigned int j = 0, xres = 0, yres = 0, depth = 0, rate = 0; 150 unsigned int j = 0, xres = 0, yres = 0, depth = 0, rate = 0;
153 int i = 0; 151 int i = 0;
@@ -225,8 +223,7 @@ sisfb_search_mode(char *name, bool quiet)
225} 223}
226 224
227#ifndef MODULE 225#ifndef MODULE
228static void __devinit 226static void sisfb_get_vga_mode_from_kernel(void)
229sisfb_get_vga_mode_from_kernel(void)
230{ 227{
231#ifdef CONFIG_X86 228#ifdef CONFIG_X86
232 char mymode[32]; 229 char mymode[32];
@@ -345,8 +342,7 @@ sisfb_search_specialtiming(const char *name)
345 342
346/* ----------- Various detection routines ----------- */ 343/* ----------- Various detection routines ----------- */
347 344
348static void __devinit 345static void sisfb_detect_custom_timing(struct sis_video_info *ivideo)
349sisfb_detect_custom_timing(struct sis_video_info *ivideo)
350{ 346{
351 unsigned char *biosver = NULL; 347 unsigned char *biosver = NULL;
352 unsigned char *biosdate = NULL; 348 unsigned char *biosdate = NULL;
@@ -403,8 +399,7 @@ sisfb_detect_custom_timing(struct sis_video_info *ivideo)
403 } while(mycustomttable[i].chipID); 399 } while(mycustomttable[i].chipID);
404} 400}
405 401
406static bool __devinit 402static bool sisfb_interpret_edid(struct sisfb_monitor *monitor, u8 *buffer)
407sisfb_interpret_edid(struct sisfb_monitor *monitor, u8 *buffer)
408{ 403{
409 int i, j, xres, yres, refresh, index; 404 int i, j, xres, yres, refresh, index;
410 u32 emodes; 405 u32 emodes;
@@ -505,8 +500,8 @@ sisfb_interpret_edid(struct sisfb_monitor *monitor, u8 *buffer)
505 return monitor->datavalid; 500 return monitor->datavalid;
506} 501}
507 502
508static void __devinit 503static void sisfb_handle_ddc(struct sis_video_info *ivideo,
509sisfb_handle_ddc(struct sis_video_info *ivideo, struct sisfb_monitor *monitor, int crtno) 504 struct sisfb_monitor *monitor, int crtno)
510{ 505{
511 unsigned short temp, i, realcrtno = crtno; 506 unsigned short temp, i, realcrtno = crtno;
512 unsigned char buffer[256]; 507 unsigned char buffer[256];
@@ -1898,8 +1893,7 @@ static struct fb_ops sisfb_ops = {
1898 1893
1899/* ---------------- Chip generation dependent routines ---------------- */ 1894/* ---------------- Chip generation dependent routines ---------------- */
1900 1895
1901static struct pci_dev * __devinit 1896static struct pci_dev *sisfb_get_northbridge(int basechipid)
1902sisfb_get_northbridge(int basechipid)
1903{ 1897{
1904 struct pci_dev *pdev = NULL; 1898 struct pci_dev *pdev = NULL;
1905 int nbridgenum, nbridgeidx, i; 1899 int nbridgenum, nbridgeidx, i;
@@ -1938,8 +1932,7 @@ sisfb_get_northbridge(int basechipid)
1938 return pdev; 1932 return pdev;
1939} 1933}
1940 1934
1941static int __devinit 1935static int sisfb_get_dram_size(struct sis_video_info *ivideo)
1942sisfb_get_dram_size(struct sis_video_info *ivideo)
1943{ 1936{
1944#if defined(CONFIG_FB_SIS_300) || defined(CONFIG_FB_SIS_315) 1937#if defined(CONFIG_FB_SIS_300) || defined(CONFIG_FB_SIS_315)
1945 u8 reg; 1938 u8 reg;
@@ -2038,8 +2031,7 @@ sisfb_get_dram_size(struct sis_video_info *ivideo)
2038 2031
2039/* -------------- video bridge device detection --------------- */ 2032/* -------------- video bridge device detection --------------- */
2040 2033
2041static void __devinit 2034static void sisfb_detect_VB_connect(struct sis_video_info *ivideo)
2042sisfb_detect_VB_connect(struct sis_video_info *ivideo)
2043{ 2035{
2044 u8 cr32, temp; 2036 u8 cr32, temp;
2045 2037
@@ -2164,8 +2156,7 @@ sisfb_detect_VB_connect(struct sis_video_info *ivideo)
2164 2156
2165/* ------------------ Sensing routines ------------------ */ 2157/* ------------------ Sensing routines ------------------ */
2166 2158
2167static bool __devinit 2159static bool sisfb_test_DDC1(struct sis_video_info *ivideo)
2168sisfb_test_DDC1(struct sis_video_info *ivideo)
2169{ 2160{
2170 unsigned short old; 2161 unsigned short old;
2171 int count = 48; 2162 int count = 48;
@@ -2177,8 +2168,7 @@ sisfb_test_DDC1(struct sis_video_info *ivideo)
2177 return (count != -1); 2168 return (count != -1);
2178} 2169}
2179 2170
2180static void __devinit 2171static void sisfb_sense_crt1(struct sis_video_info *ivideo)
2181sisfb_sense_crt1(struct sis_video_info *ivideo)
2182{ 2172{
2183 bool mustwait = false; 2173 bool mustwait = false;
2184 u8 sr1F, cr17; 2174 u8 sr1F, cr17;
@@ -2259,8 +2249,7 @@ sisfb_sense_crt1(struct sis_video_info *ivideo)
2259} 2249}
2260 2250
2261/* Determine and detect attached devices on SiS30x */ 2251/* Determine and detect attached devices on SiS30x */
2262static void __devinit 2252static void SiS_SenseLCD(struct sis_video_info *ivideo)
2263SiS_SenseLCD(struct sis_video_info *ivideo)
2264{ 2253{
2265 unsigned char buffer[256]; 2254 unsigned char buffer[256];
2266 unsigned short temp, realcrtno, i; 2255 unsigned short temp, realcrtno, i;
@@ -2347,8 +2336,7 @@ SiS_SenseLCD(struct sis_video_info *ivideo)
2347 ivideo->SiS_Pr.PanelSelfDetected = true; 2336 ivideo->SiS_Pr.PanelSelfDetected = true;
2348} 2337}
2349 2338
2350static int __devinit 2339static int SISDoSense(struct sis_video_info *ivideo, u16 type, u16 test)
2351SISDoSense(struct sis_video_info *ivideo, u16 type, u16 test)
2352{ 2340{
2353 int temp, mytest, result, i, j; 2341 int temp, mytest, result, i, j;
2354 2342
@@ -2377,8 +2365,7 @@ SISDoSense(struct sis_video_info *ivideo, u16 type, u16 test)
2377 return result; 2365 return result;
2378} 2366}
2379 2367
2380static void __devinit 2368static void SiS_Sense30x(struct sis_video_info *ivideo)
2381SiS_Sense30x(struct sis_video_info *ivideo)
2382{ 2369{
2383 u8 backupP4_0d,backupP2_00,backupP2_4d,backupSR_1e,biosflag=0; 2370 u8 backupP4_0d,backupP2_00,backupP2_4d,backupSR_1e,biosflag=0;
2384 u16 svhs=0, svhs_c=0; 2371 u16 svhs=0, svhs_c=0;
@@ -2518,8 +2505,7 @@ SiS_Sense30x(struct sis_video_info *ivideo)
2518} 2505}
2519 2506
2520/* Determine and detect attached TV's on Chrontel */ 2507/* Determine and detect attached TV's on Chrontel */
2521static void __devinit 2508static void SiS_SenseCh(struct sis_video_info *ivideo)
2522SiS_SenseCh(struct sis_video_info *ivideo)
2523{ 2509{
2524#if defined(CONFIG_FB_SIS_300) || defined(CONFIG_FB_SIS_315) 2510#if defined(CONFIG_FB_SIS_300) || defined(CONFIG_FB_SIS_315)
2525 u8 temp1, temp2; 2511 u8 temp1, temp2;
@@ -2643,8 +2629,7 @@ SiS_SenseCh(struct sis_video_info *ivideo)
2643 } 2629 }
2644} 2630}
2645 2631
2646static void __devinit 2632static void sisfb_get_VB_type(struct sis_video_info *ivideo)
2647sisfb_get_VB_type(struct sis_video_info *ivideo)
2648{ 2633{
2649 char stdstr[] = "sisfb: Detected"; 2634 char stdstr[] = "sisfb: Detected";
2650 char bridgestr[] = "video bridge"; 2635 char bridgestr[] = "video bridge";
@@ -2906,8 +2891,7 @@ sisfb_engine_init(struct sis_video_info *ivideo)
2906 ivideo->engineok = 1; 2891 ivideo->engineok = 1;
2907} 2892}
2908 2893
2909static void __devinit 2894static void sisfb_detect_lcd_type(struct sis_video_info *ivideo)
2910sisfb_detect_lcd_type(struct sis_video_info *ivideo)
2911{ 2895{
2912 u8 reg; 2896 u8 reg;
2913 int i; 2897 int i;
@@ -2962,8 +2946,7 @@ sisfb_detect_lcd_type(struct sis_video_info *ivideo)
2962 ivideo->lcdxres, ivideo->lcdyres); 2946 ivideo->lcdxres, ivideo->lcdyres);
2963} 2947}
2964 2948
2965static void __devinit 2949static void sisfb_save_pdc_emi(struct sis_video_info *ivideo)
2966sisfb_save_pdc_emi(struct sis_video_info *ivideo)
2967{ 2950{
2968#ifdef CONFIG_FB_SIS_300 2951#ifdef CONFIG_FB_SIS_300
2969 /* Save the current PanelDelayCompensation if the LCD is currently used */ 2952 /* Save the current PanelDelayCompensation if the LCD is currently used */
@@ -3081,8 +3064,7 @@ sisfb_save_pdc_emi(struct sis_video_info *ivideo)
3081 3064
3082/* -------------------- Memory manager routines ---------------------- */ 3065/* -------------------- Memory manager routines ---------------------- */
3083 3066
3084static u32 __devinit 3067static u32 sisfb_getheapstart(struct sis_video_info *ivideo)
3085sisfb_getheapstart(struct sis_video_info *ivideo)
3086{ 3068{
3087 u32 ret = ivideo->sisfb_parm_mem * 1024; 3069 u32 ret = ivideo->sisfb_parm_mem * 1024;
3088 u32 maxoffs = ivideo->video_size - ivideo->hwcursor_size - ivideo->cmdQueueSize; 3070 u32 maxoffs = ivideo->video_size - ivideo->hwcursor_size - ivideo->cmdQueueSize;
@@ -3128,8 +3110,7 @@ sisfb_getheapstart(struct sis_video_info *ivideo)
3128 return ret; 3110 return ret;
3129} 3111}
3130 3112
3131static u32 __devinit 3113static u32 sisfb_getheapsize(struct sis_video_info *ivideo)
3132sisfb_getheapsize(struct sis_video_info *ivideo)
3133{ 3114{
3134 u32 max = ivideo->video_size - ivideo->hwcursor_size - ivideo->cmdQueueSize; 3115 u32 max = ivideo->video_size - ivideo->hwcursor_size - ivideo->cmdQueueSize;
3135 u32 ret = 0; 3116 u32 ret = 0;
@@ -3154,8 +3135,7 @@ sisfb_getheapsize(struct sis_video_info *ivideo)
3154 return ret; 3135 return ret;
3155} 3136}
3156 3137
3157static int __devinit 3138static int sisfb_heap_init(struct sis_video_info *ivideo)
3158sisfb_heap_init(struct sis_video_info *ivideo)
3159{ 3139{
3160 struct SIS_OH *poh; 3140 struct SIS_OH *poh;
3161 3141
@@ -4061,8 +4041,8 @@ static int __init sisfb_setup(char *options)
4061} 4041}
4062#endif 4042#endif
4063 4043
4064static int __devinit 4044static int sisfb_check_rom(void __iomem *rom_base,
4065sisfb_check_rom(void __iomem *rom_base, struct sis_video_info *ivideo) 4045 struct sis_video_info *ivideo)
4066{ 4046{
4067 void __iomem *rom; 4047 void __iomem *rom;
4068 int romptr; 4048 int romptr;
@@ -4089,8 +4069,7 @@ sisfb_check_rom(void __iomem *rom_base, struct sis_video_info *ivideo)
4089 return 1; 4069 return 1;
4090} 4070}
4091 4071
4092static unsigned char * __devinit 4072static unsigned char *sisfb_find_rom(struct pci_dev *pdev)
4093sisfb_find_rom(struct pci_dev *pdev)
4094{ 4073{
4095 struct sis_video_info *ivideo = pci_get_drvdata(pdev); 4074 struct sis_video_info *ivideo = pci_get_drvdata(pdev);
4096 void __iomem *rom_base; 4075 void __iomem *rom_base;
@@ -4149,9 +4128,8 @@ sisfb_find_rom(struct pci_dev *pdev)
4149 return myrombase; 4128 return myrombase;
4150} 4129}
4151 4130
4152static void __devinit 4131static void sisfb_post_map_vram(struct sis_video_info *ivideo,
4153sisfb_post_map_vram(struct sis_video_info *ivideo, unsigned int *mapsize, 4132 unsigned int *mapsize, unsigned int min)
4154 unsigned int min)
4155{ 4133{
4156 if (*mapsize < (min << 20)) 4134 if (*mapsize < (min << 20))
4157 return; 4135 return;
@@ -4176,8 +4154,7 @@ sisfb_post_map_vram(struct sis_video_info *ivideo, unsigned int *mapsize,
4176} 4154}
4177 4155
4178#ifdef CONFIG_FB_SIS_300 4156#ifdef CONFIG_FB_SIS_300
4179static int __devinit 4157static int sisfb_post_300_buswidth(struct sis_video_info *ivideo)
4180sisfb_post_300_buswidth(struct sis_video_info *ivideo)
4181{ 4158{
4182 void __iomem *FBAddress = ivideo->video_vbase; 4159 void __iomem *FBAddress = ivideo->video_vbase;
4183 unsigned short temp; 4160 unsigned short temp;
@@ -4222,7 +4199,7 @@ sisfb_post_300_buswidth(struct sis_video_info *ivideo)
4222 return 1; /* 32bit */ 4199 return 1; /* 32bit */
4223} 4200}
4224 4201
4225static const unsigned short __devinitconst SiS_DRAMType[17][5] = { 4202static const unsigned short SiS_DRAMType[17][5] = {
4226 {0x0C,0x0A,0x02,0x40,0x39}, 4203 {0x0C,0x0A,0x02,0x40,0x39},
4227 {0x0D,0x0A,0x01,0x40,0x48}, 4204 {0x0D,0x0A,0x01,0x40,0x48},
4228 {0x0C,0x09,0x02,0x20,0x35}, 4205 {0x0C,0x09,0x02,0x20,0x35},
@@ -4242,10 +4219,9 @@ static const unsigned short __devinitconst SiS_DRAMType[17][5] = {
4242 {0x09,0x08,0x01,0x01,0x00} 4219 {0x09,0x08,0x01,0x01,0x00}
4243}; 4220};
4244 4221
4245static int __devinit 4222static int sisfb_post_300_rwtest(struct sis_video_info *ivideo, int iteration,
4246sisfb_post_300_rwtest(struct sis_video_info *ivideo, int iteration, int buswidth, 4223 int buswidth, int PseudoRankCapacity,
4247 int PseudoRankCapacity, int PseudoAdrPinCount, 4224 int PseudoAdrPinCount, unsigned int mapsize)
4248 unsigned int mapsize)
4249{ 4225{
4250 void __iomem *FBAddr = ivideo->video_vbase; 4226 void __iomem *FBAddr = ivideo->video_vbase;
4251 unsigned short sr14; 4227 unsigned short sr14;
@@ -4309,8 +4285,7 @@ sisfb_post_300_rwtest(struct sis_video_info *ivideo, int iteration, int buswidth
4309 return 0; 4285 return 0;
4310} 4286}
4311 4287
4312static void __devinit 4288static void sisfb_post_300_ramsize(struct pci_dev *pdev, unsigned int mapsize)
4313sisfb_post_300_ramsize(struct pci_dev *pdev, unsigned int mapsize)
4314{ 4289{
4315 struct sis_video_info *ivideo = pci_get_drvdata(pdev); 4290 struct sis_video_info *ivideo = pci_get_drvdata(pdev);
4316 int i, j, buswidth; 4291 int i, j, buswidth;
@@ -4335,8 +4310,7 @@ sisfb_post_300_ramsize(struct pci_dev *pdev, unsigned int mapsize)
4335 } 4310 }
4336} 4311}
4337 4312
4338static void __devinit 4313static void sisfb_post_sis300(struct pci_dev *pdev)
4339sisfb_post_sis300(struct pci_dev *pdev)
4340{ 4314{
4341 struct sis_video_info *ivideo = pci_get_drvdata(pdev); 4315 struct sis_video_info *ivideo = pci_get_drvdata(pdev);
4342 unsigned char *bios = ivideo->SiS_Pr.VirtualRomBase; 4316 unsigned char *bios = ivideo->SiS_Pr.VirtualRomBase;
@@ -4547,8 +4521,7 @@ sisfb_post_sis300(struct pci_dev *pdev)
4547 4521
4548#ifdef CONFIG_FB_SIS_315 4522#ifdef CONFIG_FB_SIS_315
4549#if 0 4523#if 0
4550static void __devinit 4524static void sisfb_post_sis315330(struct pci_dev *pdev)
4551sisfb_post_sis315330(struct pci_dev *pdev)
4552{ 4525{
4553 /* TODO */ 4526 /* TODO */
4554} 4527}
@@ -4559,8 +4532,7 @@ static inline int sisfb_xgi_is21(struct sis_video_info *ivideo)
4559 return ivideo->chip_real_id == XGI_21; 4532 return ivideo->chip_real_id == XGI_21;
4560} 4533}
4561 4534
4562static void __devinit 4535static void sisfb_post_xgi_delay(struct sis_video_info *ivideo, int delay)
4563sisfb_post_xgi_delay(struct sis_video_info *ivideo, int delay)
4564{ 4536{
4565 unsigned int i; 4537 unsigned int i;
4566 u8 reg; 4538 u8 reg;
@@ -4571,9 +4543,9 @@ sisfb_post_xgi_delay(struct sis_video_info *ivideo, int delay)
4571 } 4543 }
4572} 4544}
4573 4545
4574static int __devinit 4546static int sisfb_find_host_bridge(struct sis_video_info *ivideo,
4575sisfb_find_host_bridge(struct sis_video_info *ivideo, struct pci_dev *mypdev, 4547 struct pci_dev *mypdev,
4576 unsigned short pcivendor) 4548 unsigned short pcivendor)
4577{ 4549{
4578 struct pci_dev *pdev = NULL; 4550 struct pci_dev *pdev = NULL;
4579 unsigned short temp; 4551 unsigned short temp;
@@ -4591,9 +4563,8 @@ sisfb_find_host_bridge(struct sis_video_info *ivideo, struct pci_dev *mypdev,
4591 return ret; 4563 return ret;
4592} 4564}
4593 4565
4594static int __devinit 4566static int sisfb_post_xgi_rwtest(struct sis_video_info *ivideo, int starta,
4595sisfb_post_xgi_rwtest(struct sis_video_info *ivideo, int starta, 4567 unsigned int enda, unsigned int mapsize)
4596 unsigned int enda, unsigned int mapsize)
4597{ 4568{
4598 unsigned int pos; 4569 unsigned int pos;
4599 int i; 4570 int i;
@@ -4623,8 +4594,7 @@ sisfb_post_xgi_rwtest(struct sis_video_info *ivideo, int starta,
4623 return 1; 4594 return 1;
4624} 4595}
4625 4596
4626static int __devinit 4597static int sisfb_post_xgi_ramsize(struct sis_video_info *ivideo)
4627sisfb_post_xgi_ramsize(struct sis_video_info *ivideo)
4628{ 4598{
4629 unsigned int buswidth, ranksize, channelab, mapsize; 4599 unsigned int buswidth, ranksize, channelab, mapsize;
4630 int i, j, k, l, status; 4600 int i, j, k, l, status;
@@ -4876,8 +4846,7 @@ bail_out:
4876 return status; 4846 return status;
4877} 4847}
4878 4848
4879static void __devinit 4849static void sisfb_post_xgi_setclocks(struct sis_video_info *ivideo, u8 regb)
4880sisfb_post_xgi_setclocks(struct sis_video_info *ivideo, u8 regb)
4881{ 4850{
4882 u8 v1, v2, v3; 4851 u8 v1, v2, v3;
4883 int index; 4852 int index;
@@ -4932,8 +4901,8 @@ sisfb_post_xgi_setclocks(struct sis_video_info *ivideo, u8 regb)
4932 sisfb_post_xgi_delay(ivideo, 0x43); 4901 sisfb_post_xgi_delay(ivideo, 0x43);
4933} 4902}
4934 4903
4935static void __devinit 4904static void sisfb_post_xgi_ddr2_mrs_default(struct sis_video_info *ivideo,
4936sisfb_post_xgi_ddr2_mrs_default(struct sis_video_info *ivideo, u8 regb) 4905 u8 regb)
4937{ 4906{
4938 unsigned char *bios = ivideo->bios_abase; 4907 unsigned char *bios = ivideo->bios_abase;
4939 u8 v1; 4908 u8 v1;
@@ -4973,8 +4942,7 @@ sisfb_post_xgi_ddr2_mrs_default(struct sis_video_info *ivideo, u8 regb)
4973 sisfb_post_xgi_delay(ivideo, 1); 4942 sisfb_post_xgi_delay(ivideo, 1);
4974} 4943}
4975 4944
4976static void __devinit 4945static void sisfb_post_xgi_ddr2_mrs_xg21(struct sis_video_info *ivideo)
4977sisfb_post_xgi_ddr2_mrs_xg21(struct sis_video_info *ivideo)
4978{ 4946{
4979 sisfb_post_xgi_setclocks(ivideo, 1); 4947 sisfb_post_xgi_setclocks(ivideo, 1);
4980 4948
@@ -5015,8 +4983,7 @@ sisfb_post_xgi_ddr2_mrs_xg21(struct sis_video_info *ivideo)
5015 sisfb_post_xgi_delay(ivideo, 1); 4983 sisfb_post_xgi_delay(ivideo, 1);
5016} 4984}
5017 4985
5018static void __devinit 4986static void sisfb_post_xgi_ddr2(struct sis_video_info *ivideo, u8 regb)
5019sisfb_post_xgi_ddr2(struct sis_video_info *ivideo, u8 regb)
5020{ 4987{
5021 unsigned char *bios = ivideo->bios_abase; 4988 unsigned char *bios = ivideo->bios_abase;
5022 static const u8 cs158[8] = { 4989 static const u8 cs158[8] = {
@@ -5061,8 +5028,7 @@ sisfb_post_xgi_ddr2(struct sis_video_info *ivideo, u8 regb)
5061 sisfb_post_xgi_ddr2_mrs_default(ivideo, regb); 5028 sisfb_post_xgi_ddr2_mrs_default(ivideo, regb);
5062} 5029}
5063 5030
5064static u8 __devinit 5031static u8 sisfb_post_xgi_ramtype(struct sis_video_info *ivideo)
5065sisfb_post_xgi_ramtype(struct sis_video_info *ivideo)
5066{ 5032{
5067 unsigned char *bios = ivideo->bios_abase; 5033 unsigned char *bios = ivideo->bios_abase;
5068 u8 ramtype; 5034 u8 ramtype;
@@ -5101,8 +5067,7 @@ sisfb_post_xgi_ramtype(struct sis_video_info *ivideo)
5101 return ramtype; 5067 return ramtype;
5102} 5068}
5103 5069
5104static int __devinit 5070static int sisfb_post_xgi(struct pci_dev *pdev)
5105sisfb_post_xgi(struct pci_dev *pdev)
5106{ 5071{
5107 struct sis_video_info *ivideo = pci_get_drvdata(pdev); 5072 struct sis_video_info *ivideo = pci_get_drvdata(pdev);
5108 unsigned char *bios = ivideo->bios_abase; 5073 unsigned char *bios = ivideo->bios_abase;
@@ -5839,8 +5804,7 @@ sisfb_post_xgi(struct pci_dev *pdev)
5839} 5804}
5840#endif 5805#endif
5841 5806
5842static int __devinit 5807static int sisfb_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
5843sisfb_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
5844{ 5808{
5845 struct sisfb_chip_info *chipinfo = &sisfb_chip_info[ent->driver_data]; 5809 struct sisfb_chip_info *chipinfo = &sisfb_chip_info[ent->driver_data];
5846 struct sis_video_info *ivideo = NULL; 5810 struct sis_video_info *ivideo = NULL;
@@ -6530,7 +6494,7 @@ error_3: vfree(ivideo->bios_abase);
6530/* PCI DEVICE HANDLING */ 6494/* PCI DEVICE HANDLING */
6531/*****************************************************/ 6495/*****************************************************/
6532 6496
6533static void __devexit sisfb_remove(struct pci_dev *pdev) 6497static void sisfb_remove(struct pci_dev *pdev)
6534{ 6498{
6535 struct sis_video_info *ivideo = pci_get_drvdata(pdev); 6499 struct sis_video_info *ivideo = pci_get_drvdata(pdev);
6536 struct fb_info *sis_fb_info = ivideo->memyselfandi; 6500 struct fb_info *sis_fb_info = ivideo->memyselfandi;
@@ -6591,7 +6555,7 @@ static struct pci_driver sisfb_driver = {
6591 .name = "sisfb", 6555 .name = "sisfb",
6592 .id_table = sisfb_pci_table, 6556 .id_table = sisfb_pci_table,
6593 .probe = sisfb_probe, 6557 .probe = sisfb_probe,
6594 .remove = __devexit_p(sisfb_remove) 6558 .remove = sisfb_remove,
6595}; 6559};
6596 6560
6597static int __init sisfb_init(void) 6561static int __init sisfb_init(void)