Package: xserver-xfree86 Version: 4.1.0-16woody3 Severity: important Tags: patch
This is a expanded version of bug #223567, which was not applied to 4.1 These patches allow XFree86 4.1 to work on ARM. In particular, to allow non-framebuffer devices to work. There is one change worthy of note. The open() call for ARM to access DEV_MEM includes O_SYNC i lnx_video.c. This is absolutely required to ensure that memory access to card registers and other device memory is not cached. I didn't put a comment in, because it conflicts with the ia64 comment, and I suggest something suitable is done here. Similar, if not identical, patches are required for 4.2 and 4.3. -- System Information Debian Release: 3.0 Architecture: arm Kernel: Linux puffin 2.4.22-iyonix #9 Thu Feb 19 16:31:32 GMT 2004 armv5l Locale: LANG=C, LC_CTYPE=C Versions of packages xserver-xfree86 depends on: ii debconf 1.2.35 Debian configuration management sy ii libc6 2.2.5-11.5 GNU C Library: Shared libraries an ii xserver-common 4.1.0-16woody3 files and utilities common to all ii zlib1g 1:1.1.4-1.0woody0 compression library - runtime --- hw/xfree86/common/xf86Bus.c.old Wed Feb 25 16:05:30 2004 +++ hw/xfree86/common/xf86Bus.c Wed Feb 25 16:06:38 2004 @@ -3123,7 +3123,7 @@ static void CheckGenericGA() { -#if !defined(__sparc__) && !defined(__powerpc__) && !defined(__mips__) /* FIXME ?? */ +#if !defined(__sparc__) && !defined(__powerpc__) && !defined(__mips__) && !defined(__arm__) /* FIXME ?? */ CARD16 GenericIOBase = VGAHW_GET_IOBASE(); CARD8 CurrentValue, TestValue; --- hw/xfree86/os-support/linux/lnx_video.c.old Wed Feb 25 15:43:32 2004 +++ hw/xfree86/os-support/linux/lnx_video.c Wed Feb 25 15:55:28 2004 @@ -436,7 +436,7 @@ mapflags |= MAP_NONCACHED; #endif -#if defined(__ia64__) +#if defined(__ia64__) || defined(__arm__) /* this will disappear when people upgrade their kernels */ if ((fd = open(DEV_MEM, O_RDWR|O_SYNC)) < 0) #else @@ -519,7 +519,7 @@ #endif } close(fd); -#elif !defined(__mc68000__) && !defined(__sparc__) && !defined(__mips__) && !defined(__hppa__) +#elif !defined(__mc68000__) && !defined(__sparc__) && !defined(__mips__) && !defined(__hppa__) && !defined(__arm__) if (ioperm(0, 1024, 1) || iopl(3)) { if (errno == ENODEV) ErrorF("xf86EnableIOPorts: no I/O ports found\n"); @@ -544,7 +544,7 @@ #if defined(__powerpc__) munmap(ioBase, 0x20000); ioBase = NULL; -#elif !defined(__mc68000__) && !defined(__sparc__) && !defined(__mips__) && !defined(__hppa__) +#elif !defined(__mc68000__) && !defined(__sparc__) && !defined(__mips__) && !defined(__hppa__) && !defined(__arm__) iopl(0); ioperm(0, 1024, 0); #endif @@ -562,11 +562,11 @@ xf86DisableInterrupts() { if (!ExtendedEnabled) -#if !defined(__mc68000__) && !defined(__powerpc__) && !defined(__sparc__) && !defined(__mips__) && !defined(__hppa__) +#if !defined(__mc68000__) && !defined(__powerpc__) && !defined(__sparc__) && !defined(__mips__) && !defined(__hppa__) && !defined(__arm__) if (iopl(3) || ioperm(0, 1024, 1)) return (FALSE); #endif -#if defined(__alpha__) || defined(__mc68000__) || defined(__powerpc__) || defined(__sparc__) || defined(__mips__) || defined(__arm__) || defined(__hppa__) +#if defined(__alpha__) || defined(__mc68000__) || defined(__powerpc__) || defined(__sparc__) || defined(__mips__) || defined(__arm__) || defined(__hppa__) || defined(__arm__) #else #ifdef __GNUC__ #if defined(__ia64__) @@ -580,7 +580,7 @@ asm("cli"); #endif #endif -#if !defined(__mc68000__) && !defined(__powerpc__) && !defined(__sparc__) && !defined(__mips__) && !defined(__hppa__) +#if !defined(__mc68000__) && !defined(__powerpc__) && !defined(__sparc__) && !defined(__mips__) && !defined(__hppa__) && !defined(__arm__) if (!ExtendedEnabled) { iopl(0); ioperm(0, 1024, 0); @@ -594,11 +594,11 @@ xf86EnableInterrupts() { if (!ExtendedEnabled) -#if !defined(__mc68000__) && !defined(__powerpc__) && !defined(__sparc__) && !defined(__mips__) && !defined(__hppa__) +#if !defined(__mc68000__) && !defined(__powerpc__) && !defined(__sparc__) && !defined(__mips__) && !defined(__hppa__) && !defined(__arm__) if (iopl(3) || ioperm(0, 1024, 1)) return; #endif -#if defined(__alpha__) || defined(__mc68000__) || defined(__powerpc__) || defined(__sparc__) || defined(__mips__) || defined(__arm__) || defined(__hppa__) +#if defined(__alpha__) || defined(__mc68000__) || defined(__powerpc__) || defined(__sparc__) || defined(__mips__) || defined(__arm__) || defined(__hppa__) || defined(__arm__) #else #ifdef __GNUC__ #if defined(__ia64__) @@ -612,7 +612,7 @@ asm("sti"); #endif #endif -#if !defined(__mc68000__) && !defined(__powerpc__) && !defined(__sparc__) && !defined(__mips__) && !defined(__hppa__) +#if !defined(__mc68000__) && !defined(__powerpc__) && !defined(__sparc__) && !defined(__mips__) && !defined(__hppa__) && !defined(__arm__) if (!ExtendedEnabled) { iopl(0); ioperm(0, 1024, 0); --- hw/xfree86/vgahw/vgaHW.h.old Thu May 10 23:18:58 2001 +++ hw/xfree86/vgahw/vgaHW.h Wed Feb 25 19:31:20 2004 @@ -188,11 +188,15 @@ #define BITS_PER_GUN 6 #define COLORMAP_SIZE 256 +#ifdef __arm__ +#define DACDelay(hw) +#else #define DACDelay(hw) \ do { \ unsigned char temp = inb((hw)->IOBase + VGA_IN_STAT_1_OFFSET); \ temp = inb((hw)->IOBase + VGA_IN_STAT_1_OFFSET); \ } while (0) +#endif /* Function Prototypes */