sisfb: move XGI POST RAM type detection into a subroutine
authorAaro Koskinen <aaro.koskinen@iki.fi>
Sun, 13 Feb 2011 22:11:24 +0000 (22:11 +0000)
committerPaul Mundt <lethal@linux-sh.org>
Tue, 22 Mar 2011 06:20:19 +0000 (15:20 +0900)
Move XGI POST RAM type detection into a separate subroutine to make
further code changes easier. No changes in functionality

Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi>
Cc: Thomas Winischhofer <thomas@winischhofer.net>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
drivers/video/sis/sis_main.c

index 2c5de66dacf8e74c8979c4d0f8d6c857e304fefd..364559b12fc5c9dcd90eed4047fa5d1a582d2c3b 100644 (file)
@@ -4936,6 +4936,40 @@ sisfb_post_xgi_setclocks(struct sis_video_info *ivideo, u8 regb)
        sisfb_post_xgi_delay(ivideo, 0x43);
 }
 
+static u8 __devinit
+sisfb_post_xgi_ramtype(struct sis_video_info *ivideo)
+{
+       unsigned char *bios = ivideo->bios_abase;
+       u8 ramtype;
+       u8 reg;
+       u8 v1;
+
+       ramtype = 0x00; v1 = 0x10;
+       if (ivideo->haveXGIROM) {
+               ramtype = bios[0x62];
+               v1 = bios[0x1d2];
+       }
+       if (!(ramtype & 0x80)) {
+               if (ivideo->chip == XGI_20) {
+                       SiS_SetReg(SISCR, 0x97, v1);
+                       reg = SiS_GetReg(SISCR, 0x97);
+                       if (reg & 0x10) {
+                               ramtype = (reg & 0x01) << 1;
+                       }
+               } else {
+                       reg = SiS_GetReg(SISSR, 0x39);
+                       ramtype = reg & 0x02;
+                       if (!(ramtype)) {
+                               reg = SiS_GetReg(SISSR, 0x3a);
+                               ramtype = (reg >> 1) & 0x01;
+                       }
+               }
+       }
+       ramtype &= 0x07;
+
+       return ramtype;
+}
+
 static int __devinit
 sisfb_post_xgi(struct pci_dev *pdev)
 {
@@ -5380,28 +5414,7 @@ sisfb_post_xgi(struct pci_dev *pdev)
                SiS_SetReg(SISSR, 0x1c, 0x00);
        }
 
-       ramtype = 0x00; v1 = 0x10;
-       if(ivideo->haveXGIROM) {
-               ramtype = bios[0x62];
-               v1 = bios[0x1d2];
-       }
-       if(!(ramtype & 0x80)) {
-               if(ivideo->chip == XGI_20) {
-                       SiS_SetReg(SISCR, 0x97, v1);
-                       reg = SiS_GetReg(SISCR, 0x97);
-                       if(reg & 0x10) {
-                               ramtype = (reg & 0x01) << 1;
-                       }
-               } else {
-                       reg = SiS_GetReg(SISSR, 0x39);
-                       ramtype = reg & 0x02;
-                       if(!(ramtype)) {
-                               reg = SiS_GetReg(SISSR, 0x3a);
-                               ramtype = (reg >> 1) & 0x01;
-                       }
-               }
-       }
-       ramtype &= 0x07;
+       ramtype = sisfb_post_xgi_ramtype(ivideo);
 
        regb = 0;       /* ! */