From 339fb3bc032b9f35b07b90480ae82a0fd352e078 Mon Sep 17 00:00:00 2001
From: Jan Lindemann <jan@jannet.de>
Date: Thu, 30 Aug 2012 18:09:10 +0000
Subject: Replace xf86UnMapVidMem with pci_device_unmap_range

Mixing pci_device_map_range with xf86UnMapVidMem doesn't work too well.

X.Org bug#18028 <https://bugs.freedesktop.org/show_bug.cgi?id=18028>

Bug found by Bryan Henderson <bryanh@giraffe-data.com>

Signed-off-by: Julien Cristau <jcristau@debian.org>
---
diff --git a/src/sis_driver.c b/src/sis_driver.c
index 61e8075..4c9b9cb 100644
--- a/src/sis_driver.c
+++ b/src/sis_driver.c
@@ -7344,7 +7344,11 @@ SISUnmapMem(ScrnInfoPtr pScrn)
         if(pSiSEnt->MapCountIOBase) {
 	    pSiSEnt->MapCountIOBase--;
 	    if((pSiSEnt->MapCountIOBase == 0) || (pSiSEnt->forceUnmapIOBase)) {
+#ifndef XSERVER_LIBPCIACCESS
 		xf86UnMapVidMem(pScrn->scrnIndex, (pointer)pSiSEnt->IOBase, (pSiS->mmioSize * 1024));
+#else
+	        pci_device_unmap_range(pSiS->PciInfo, pSiSEnt->IOBase, (pSiS->mmioSize * 1024));
+#endif
 		pSiSEnt->IOBase = NULL;
 		pSiSEnt->MapCountIOBase = 0;
 		pSiSEnt->forceUnmapIOBase = FALSE;
@@ -7355,7 +7359,11 @@ SISUnmapMem(ScrnInfoPtr pScrn)
 	if(pSiSEnt->MapCountIOBaseDense) {
 	    pSiSEnt->MapCountIOBaseDense--;
 	    if((pSiSEnt->MapCountIOBaseDense == 0) || (pSiSEnt->forceUnmapIOBaseDense)) {
+#ifndef XSERVER_LIBPCIACCESS
 		xf86UnMapVidMem(pScrn->scrnIndex, (pointer)pSiSEnt->IOBaseDense, (pSiS->mmioSize * 1024));
+#else
+		pci_device_unmap_range(pSiS->PciInfo, (pointer)pSiSEnt->IOBaseDense, (pSiS->mmioSize * 1024));
+#endif
 		pSiSEnt->IOBaseDense = NULL;
 		pSiSEnt->MapCountIOBaseDense = 0;
 		pSiSEnt->forceUnmapIOBaseDense = FALSE;
@@ -7366,7 +7374,11 @@ SISUnmapMem(ScrnInfoPtr pScrn)
 	if(pSiSEnt->MapCountFbBase) {
 	    pSiSEnt->MapCountFbBase--;
 	    if((pSiSEnt->MapCountFbBase == 0) || (pSiSEnt->forceUnmapFbBase)) {
+#ifndef XSERVER_LIBPCIACCESS
 		xf86UnMapVidMem(pScrn->scrnIndex, (pointer)pSiSEnt->RealFbBase, pSiS->FbMapSize);
+#else
+		pci_device_unmap_range(pSiS->PciInfo, (pointer)pSiSEnt->RealFbBase, pSiS->FbMapSize);
+#endif
 		pSiSEnt->FbBase = pSiSEnt->RealFbBase = NULL;
 		pSiSEnt->MapCountFbBase = 0;
 		pSiSEnt->forceUnmapFbBase = FALSE;
@@ -7376,13 +7388,25 @@ SISUnmapMem(ScrnInfoPtr pScrn)
 	}
     } else {
 #endif
+#ifndef XSERVER_LIBPCIACCESS
 	xf86UnMapVidMem(pScrn->scrnIndex, (pointer)pSiS->IOBase, (pSiS->mmioSize * 1024));
+#else
+	pci_device_unmap_range(pSiS->PciInfo, (pointer)pSiS->IOBase, (pSiS->mmioSize * 1024));
+#endif
 	pSiS->IOBase = NULL;
 #ifdef __alpha__
+#ifndef XSERVER_LIBPCIACCESS
 	xf86UnMapVidMem(pScrn->scrnIndex, (pointer)pSiS->IOBaseDense, (pSiS->mmioSize * 1024));
+#else
+	pci_device_unmap_range(pSiS->PciInfo, (pointer)pSiS->IOBaseDense, (pSiS->mmioSize * 1024));
+#endif
 	pSiS->IOBaseDense = NULL;
 #endif
+#ifndef XSERVER_LIBPCIACCESS
 	xf86UnMapVidMem(pScrn->scrnIndex, (pointer)pSiS->RealFbBase, pSiS->FbMapSize);
+#else
+	pci_device_unmap_range(pSiS->PciInfo, (pointer)pSiS->RealFbBase, pSiS->FbMapSize);
+#endif
 	pSiS->FbBase = pSiS->RealFbBase = NULL;
 #ifdef SISDUALHEAD
     }
--
cgit v0.9.0.2-2-gbebe
From 926d4f655c8491b68a338f50c810f6729686ec9f Mon Sep 17 00:00:00 2001
From: Adam Jackson <ajax@redhat.com>
Date: Tue, 25 Sep 2012 12:54:51 +0000
Subject: Remove mibstore.h

Signed-off-by: Adam Jackson <ajax@redhat.com>
---
diff --git a/src/sis_driver.c b/src/sis_driver.c
index 4c9b9cb..46cfefd 100644
--- a/src/sis_driver.c
+++ b/src/sis_driver.c
@@ -57,7 +57,6 @@
 #include "fb.h"
 #include "micmap.h"
 #include "mipointer.h"
-#include "mibstore.h"
 #include "edid.h"
 
 #define SIS_NEED_inSISREG
@@ -8883,7 +8882,6 @@ SISScreenInit(SCREEN_INIT_ARGS_DECL)
     }
     pSiS->SiSFastVidCopyDone = TRUE;
 
-    miInitializeBackingStore(pScreen);
     xf86SetBackingStore(pScreen);
     xf86SetSilkenMouse(pScreen);
 
--
cgit v0.9.0.2-2-gbebe
From 7d4402786b758de3e6ce2641e15a39d612d5c518 Mon Sep 17 00:00:00 2001
From: Adam Jackson <ajax@redhat.com>
Date: Mon, 15 Oct 2012 23:11:30 +0000
Subject: Stop including xf86Priv.h

As the name might suggest, it's server-private.

Signed-off-by: Adam Jackson <ajax@redhat.com>
---
diff --git a/src/sis.h b/src/sis.h
index 46fca2a..20e6134 100644
--- a/src/sis.h
+++ b/src/sis.h
@@ -75,7 +75,6 @@
 
 #include "compiler.h"
 #include "xf86Pci.h"
-#include "xf86Priv.h"
 #include "xf86_OSproc.h"
 #if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 6
 #include "xf86Resources.h"
diff --git a/src/sis_driver.c b/src/sis_driver.c
index 46cfefd..cefe503 100644
--- a/src/sis_driver.c
+++ b/src/sis_driver.c
@@ -93,6 +93,10 @@
 #include "dri.h"
 #endif
 
+#ifndef DEFAULT_DPI
+#define DEFAULT_DPI 96
+#endif
+
 /*
  * LookupWindow was removed with video abi 11.
  */
--
cgit v0.9.0.2-2-gbebe
From 0a4336efaafac4c34d4287b5df586bbb418f7f76 Mon Sep 17 00:00:00 2001
From: Alan Coopersmith <alan.coopersmith@oracle.com>
Date: Sat, 26 Oct 2013 14:27:17 -0700
Subject: Fix HDisplay/VDisplay typos

Found by gcc -Wlogicalops:

sis_driver.c: In function 'SiS_CheckModeCRT2':
sis_driver.c:13754:5: warning: logical 'and' of mutually exclusive tests is always false [-Wlogical-op]
sis_driver.c:13755:6: warning: logical 'and' of mutually exclusive tests is always false [-Wlogical-op]
sis_driver.c:13756:6: warning: logical 'and' of mutually exclusive tests is always false [-Wlogical-op]
sis_driver.c:13758:5: warning: logical 'and' of mutually exclusive tests is always false [-Wlogical-op]
sis_driver.c:13759:6: warning: logical 'and' of mutually exclusive tests is always false [-Wlogical-op]

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Reviewed-by: Gaetan Nadon <memsize@videotron.ca>

diff --git a/src/sis_driver.c b/src/sis_driver.c
index cefe503..80b8d51 100644
--- a/src/sis_driver.c
+++ b/src/sis_driver.c
@@ -13751,12 +13751,12 @@ SiS_CheckModeCRT2(ScrnInfoPtr pScrn, DisplayModePtr mode, unsigned int VBFlags,
       if( ((mode->HDisplay <= pSiS->LCDwidth) &&
            (mode->VDisplay <= pSiS->LCDheight)) ||
 	  ((pSiS->SiS_Pr->SiS_CustomT == CUT_PANEL848) &&
-	   (((mode->HDisplay == 1360) && (mode->HDisplay == 768)) ||
-	    ((mode->HDisplay == 1024) && (mode->HDisplay == 768)) ||
-	    ((mode->HDisplay ==  800) && (mode->HDisplay == 600)))) ||
+	   (((mode->HDisplay == 1360) && (mode->VDisplay == 768)) ||
+	    ((mode->HDisplay == 1024) && (mode->VDisplay == 768)) ||
+	    ((mode->HDisplay ==  800) && (mode->VDisplay == 600)))) ||
 	  ((pSiS->SiS_Pr->SiS_CustomT == CUT_PANEL856) &&
-	   (((mode->HDisplay == 1024) && (mode->HDisplay == 768)) ||
-	    ((mode->HDisplay ==  800) && (mode->HDisplay == 600)))) ) {
+	   (((mode->HDisplay == 1024) && (mode->VDisplay == 768)) ||
+	    ((mode->HDisplay ==  800) && (mode->VDisplay == 600)))) ) {
 
 	 ModeIndex = SiS_GetModeID_LCD(pSiS->VGAEngine, VBFlags, mode->HDisplay, mode->VDisplay, i,
 				pSiS->FSTN, pSiS->SiS_Pr->SiS_CustomT, pSiS->LCDwidth, pSiS->LCDheight,
-- 
cgit v0.10.2
From 49796d6a3274adc0250ee07faa6bc63e41c98740 Mon Sep 17 00:00:00 2001
From: Peter Hutterer <peter.hutterer@who-t.net>
Date: Fri, 22 Nov 2013 08:21:18 +1000
Subject: Fix format-security warnings

sis_driver.c: In function 'SISErrorLog':
sis_driver.c:432:5: error: format not a string literal and no format arguments [-Werror=format-security]
     xf86DrvMsg(pScrn->scrnIndex, X_ERROR, str);
     ^
sis_driver.c:439:5: error: format not a string literal and no format arguments [-Werror=format-security]
     xf86DrvMsg(pScrn->scrnIndex, X_ERROR, str);
     ^
sis_driver.c: In function 'SiSUpdateXineramaScreenInfo':
sis_driver.c:1917:4: error: format not a string literal and no format arguments [-Werror=format-security]
    xf86DrvMsg(pScrn1->scrnIndex, X_INFO, rectxine);
    ^
sis_driver.c:1924:8: error: format not a string literal and no format arguments [-Werror=format-security]
        xf86DrvMsg(pScrn1->scrnIndex, X_INFO, rectxine);

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>

diff --git a/src/sis_driver.c b/src/sis_driver.c
index 80b8d51..bd9c4e1 100644
--- a/src/sis_driver.c
+++ b/src/sis_driver.c
@@ -429,14 +429,14 @@ SISErrorLog(ScrnInfoPtr pScrn, const char *format, ...)
     static const char *str = "**************************************************\n";
 
     va_start(ap, format);
-    xf86DrvMsg(pScrn->scrnIndex, X_ERROR, str);
+    xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "%s", str);
     xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
 	"                      ERROR:\n");
     xf86VDrvMsgVerb(pScrn->scrnIndex, X_ERROR, 1, format, ap);
     va_end(ap);
     xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
 	"                  END OF MESSAGE\n");
-    xf86DrvMsg(pScrn->scrnIndex, X_ERROR, str);
+    xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "%s", str);
 }
 
 static void
@@ -1914,14 +1914,14 @@ SiSUpdateXineramaScreenInfo(ScrnInfoPtr pScrn1)
        if(infochanged && !usenonrect) {
 	  xf86DrvMsg(pScrn1->scrnIndex, X_INFO,
 			"Virtual screen size does not match maximum display modes...\n");
-	  xf86DrvMsg(pScrn1->scrnIndex, X_INFO, rectxine);
+	  xf86DrvMsg(pScrn1->scrnIndex, X_INFO, "%s", rectxine);
 
        }
     } else if(infochanged && usenonrect) {
        usenonrect = FALSE;
        xf86DrvMsg(pScrn1->scrnIndex, X_INFO,
 		"Only clone modes available for this virtual screen size...\n");
-       xf86DrvMsg(pScrn1->scrnIndex, X_INFO, rectxine);
+       xf86DrvMsg(pScrn1->scrnIndex, X_INFO, "%s", rectxine);
     }
 
     if(pSiS->maxCRT1_X1) {		/* Means we have at least one non-clone mode */
-- 
cgit v0.10.2
From d0550de19cacab3e591641ba358a72fbc798b231 Mon Sep 17 00:00:00 2001
From: Dave Airlie <airlied@redhat.com>
Date: Mon, 22 Sep 2014 12:45:02 +1000
Subject: sis: fix build against latest xserver


diff --git a/src/sis.h b/src/sis.h
index 20e6134..385b784 100644
--- a/src/sis.h
+++ b/src/sis.h
@@ -1004,7 +1004,9 @@ typedef struct {
     ScrnInfoPtr		pScrn;
     pciVideoPtr		PciInfo;
     int			PciBus, PciDevice, PciFunc;
+#ifndef XSERVER_LIBPCIACCESS
     PCITAG		PciTag;
+#endif
     EntityInfoPtr	pEnt;
     int			Chipset;
     unsigned char	ChipType;
diff --git a/src/vstruct.h b/src/vstruct.h
index 88f7eb6..5d7a98d 100644
--- a/src/vstruct.h
+++ b/src/vstruct.h
@@ -237,8 +237,10 @@ struct SiS_Private
 	unsigned char			ChipType;
 	unsigned char			ChipRevision;
 #ifdef SIS_XORG_XF86
+#ifndef XSERVER_LIBPCIACCESS
 	PCITAG				PciTag;
 #endif
+#endif
 #ifdef SIS_LINUX_KERNEL
 	void				*ivideo;
 #endif
-- 
cgit v0.10.2
From d2597696ba81862d80ec17b978d8370c58572e27 Mon Sep 17 00:00:00 2001
From: Dave Airlie <airlied@redhat.com>
Date: Wed, 12 Nov 2014 08:04:21 +1000
Subject: sis: more build fixes against master X server.


diff --git a/src/sis_driver.c b/src/sis_driver.c
index bd9c4e1..125eee7 100644
--- a/src/sis_driver.c
+++ b/src/sis_driver.c
@@ -3279,9 +3279,11 @@ SISPreInit(ScrnInfoPtr pScrn, int flags)
     pSiS->PciDevice = PCI_CFG_DEV(pSiS->PciInfo); /*SIS_PCI_DEVICE(pSiS->PciInfo);*/
     pSiS->PciFunc = PCI_CFG_FUNC(pSiS->PciInfo);  /*SIS_PCI_FUNC(pSiS->PciInfo);*/
 
+#ifndef XSERVER_LIBPCIACCESS
     pSiS->PciTag = pciTag(PCI_DEV_BUS(pSiS->PciInfo),
 			  PCI_DEV_DEV(pSiS->PciInfo),
 			  PCI_DEV_FUNC(pSiS->PciInfo));
+#endif
 
 #ifdef SIS_NEED_MAP_IOP
     /********************************************/
@@ -3905,7 +3907,9 @@ SISPreInit(ScrnInfoPtr pScrn, int flags)
        if(pSiSEnt) pSiSEnt->SiS_Pr = pSiS->SiS_Pr;
 #endif
        memset(pSiS->SiS_Pr, 0, sizeof(struct SiS_Private));
+#ifndef XSERVER_LIBPCIACCESS
        pSiS->SiS_Pr->PciTag = pSiS->PciTag;
+#endif
        pSiS->SiS_Pr->ChipType = pSiS->ChipType;
        pSiS->SiS_Pr->ChipRevision = pSiS->ChipRev;
        pSiS->SiS_Pr->SiS_Backup70xx = 0xff;
@@ -7134,7 +7138,9 @@ static Bool
 SISMapMem(ScrnInfoPtr pScrn)
 {
     SISPtr pSiS = SISPTR(pScrn);
+#ifndef XSERVER_LIBPCIACCESS
     int mmioFlags = VIDMEM_MMIO;
+#endif
 #ifdef SISDUALHEAD
     SISEntPtr pSiSEnt = pSiS->entityPrivate;
 #endif
@@ -7144,9 +7150,11 @@ SISMapMem(ScrnInfoPtr pScrn)
      * (For Alpha, we need to map SPARSE memory, since we need
      * byte/short access.)
      */
+#ifndef XSERVER_LIBPCIACCESS
 #if defined(__alpha__)
     mmioFlags |= VIDMEM_SPARSE;
 #endif
+#endif
 
 #ifdef SISDUALHEAD
     if(pSiS->DualHeadMode) {
@@ -14017,6 +14025,7 @@ SiS_GetSetBIOSScratch(ScrnInfoPtr pScrn, UShort offset, UChar value)
        break;
     }
 
+#ifndef XSERVER_LIBPCIACCESS
 #ifdef SIS_USE_BIOS_SCRATCH
     if(SISPTR(pScrn)->Primary) {
        base = xf86MapVidMem(pScrn->scrnIndex, VIDMEM_MMIO, 0, 0x2000);
@@ -14035,6 +14044,7 @@ SiS_GetSetBIOSScratch(ScrnInfoPtr pScrn, UShort offset, UChar value)
        xf86UnMapVidMem(pScrn->scrnIndex, base, 0x2000);
     }
 #endif
+#endif
     return ret;
 }
 
-- 
cgit v0.10.2
From 0f50f8c3db2b9f1c9d4ecab8ad278e9db6418a92 Mon Sep 17 00:00:00 2001
From: Dave Airlie <airlied@redhat.com>
Date: Wed, 12 Nov 2014 09:27:33 +1000
Subject: sis: force build, who uses this crazy code anyways


diff --git a/src/sis_driver.c b/src/sis_driver.c
index 125eee7..854cb54 100644
--- a/src/sis_driver.c
+++ b/src/sis_driver.c
@@ -9385,6 +9385,7 @@ SISMergedPointerMoved(SCRN_ARG_TYPE arg, int x, int y)
 	}
      }
      if(doit) {
+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 20 /* screw it */
 	sigstate = xf86BlockSIGIO();
 #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 15
         {
@@ -9402,6 +9403,7 @@ SISMergedPointerMoved(SCRN_ARG_TYPE arg, int x, int y)
 	miPointerAbsoluteCursor(x, y, currentTime.milliseconds);
 #endif
 	xf86UnblockSIGIO(sigstate);
+#endif
 	return;
      }
   }
-- 
cgit v0.10.2

