summaryrefslogtreecommitdiff
path: root/package/xorg-server/patches/patch-hw_xfree86_os-support_linux_lnx_video_c
blob: c6cd39636f666e6f98f2c56e165aeeeeeb8707d1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
	Enable the ioBase mapping code for mips, too. This is needed by
	xf86-video-siliconmotion.
--- xorg-server-1.9.3.orig/hw/xfree86/os-support/linux/lnx_video.c	2010-11-23 20:07:26.000000000 +0100
+++ xorg-server-1.9.3/hw/xfree86/os-support/linux/lnx_video.c	2012-10-01 13:23:55.000000000 +0200
@@ -480,7 +480,7 @@ unmapVidMem(int ScreenNum, pointer Base,
 /* I/O Permissions section                                                 */
 /***************************************************************************/
 
-#if defined(__powerpc__)
+#if defined(__powerpc__) || defined(__mips__)
 volatile unsigned char *ioBase = NULL;
 
 #ifndef __NR_pciconfig_iobase
@@ -492,7 +492,7 @@ volatile unsigned char *ioBase = NULL;
 Bool
 xf86EnableIO(void)
 {
-#if defined(__powerpc__)
+#if defined(__powerpc__) || defined(__mips__)
 	int fd;
 	unsigned int ioBase_phys;
 #endif
@@ -500,8 +500,12 @@ xf86EnableIO(void)
 	if (ExtendedEnabled)
 		return TRUE;
 
-#if defined(__powerpc__)
+#if defined(__powerpc__) || defined(__mips__)
+#ifdef __powerpc__
 	ioBase_phys = syscall(__NR_pciconfig_iobase, 2, 0, 0);
+#else
+	ioBase_phys = 0x1fd00000;
+#endif
 
 	fd = open("/dev/mem", O_RDWR);
 	if (ioBase == NULL) {
@@ -517,9 +521,10 @@ xf86EnableIO(void)
 		    return FALSE;
 		}
 #endif
+		xf86Msg(X_INFO,"ioBase 0x%lx\n", (unsigned long)ioBase);
 	}
 	close(fd);
-#elif !defined(__mc68000__) && !defined(__sparc__) && !defined(__mips__) && !defined(__sh__) && !defined(__hppa__) && !defined(__s390__) && !defined(__arm__) && !defined(__m32r__)
+#elif !defined(__mc68000__) && !defined(__sparc__) && !defined(__sh__) && !defined(__hppa__) && !defined(__s390__) && !defined(__arm__) && !defined(__m32r__)
         if (ioperm(0, 1024, 1) || iopl(3)) {
                 if (errno == ENODEV)
                         ErrorF("xf86EnableIOPorts: no I/O ports found\n");
@@ -545,10 +550,10 @@ xf86DisableIO(void)
 {
 	if (!ExtendedEnabled)
 		return;
-#if defined(__powerpc__)
+#if defined(__powerpc__) || defined(__mips__)
 	munmap(ioBase, 0x20000);
 	ioBase = NULL;
-#elif !defined(__mc68000__) && !defined(__sparc__) && !defined(__mips__) && !defined(__sh__) && !defined(__hppa__) && !defined(__arm__) && !defined(__s390__) && !defined(__m32r__)
+#elif !defined(__mc68000__) && !defined(__sparc__) && !defined(__sh__) && !defined(__hppa__) && !defined(__arm__) && !defined(__s390__) && !defined(__m32r__)
 	iopl(0);
 	ioperm(0, 1024, 0);
 #endif