diff options
Diffstat (limited to 'app-misc/lcd4linux/files/lcd4linux-0.10.1_rc2-nordtsc.patch')
-rw-r--r-- | app-misc/lcd4linux/files/lcd4linux-0.10.1_rc2-nordtsc.patch | 187 |
1 files changed, 0 insertions, 187 deletions
diff --git a/app-misc/lcd4linux/files/lcd4linux-0.10.1_rc2-nordtsc.patch b/app-misc/lcd4linux/files/lcd4linux-0.10.1_rc2-nordtsc.patch deleted file mode 100644 index b25d01e8e901..000000000000 --- a/app-misc/lcd4linux/files/lcd4linux-0.10.1_rc2-nordtsc.patch +++ /dev/null @@ -1,187 +0,0 @@ -kMessage-ID: <47011930.60100@reinelt.co.at> -Date: Mon, 01 Oct 2007 17:58:40 +0200 -From: Michael Reinelt <michael@reinelt.co.at> -Subject: [Lcd4linux-devel] asm/msr.h inclusion and RDTSC stuff removed - -Hi there, - -I just committed a changeset where I removed the whole RDTSC delay loop -stuff, and therefore lcd4linux does no longer need asm/msr.h - -Instead, a gettimeofday() delay loop will be used when necessary. - -The rdtsc stuff worked fine, but had two major disadvantages: It did not -work with variable CPU frequencies, and latest kernels do no longer -offer the rdtsc() macro. - -The changeset has been committed to trunk, and will be backported to the -0.10.1 branch as soon as I get some positive feedback 8or at least I -don't get any negative feedback) - - -bye, Michael - --- -Michael Reinelt <michael@reinelt.co.at> -http://home.pages.at/reinelt -GPG-Key 0xDF13BA50 -ICQ #288386781 - -Index: configure.in -=================================================================== ---- lcd4linux-0.10.1-RC2/configure.in.orig -+++ lcd4linux-0.10.1-RC2/configure.in -@@ -99,7 +99,6 @@ AC_HEADER_STDC - AC_CHECK_HEADERS([arpa/inet.h fcntl.h netdb.h netinet/in.h stdlib.h string.h sys/ioctl.h sys/socket.h sys/time.h sys/vfs.h syslog.h termios.h unistd.h]) - AC_CHECK_HEADERS(sys/io.h asm/io.h) - AC_CHECK_HEADERS(linux/parport.h linux/ppdev.h) --AC_CHECK_HEADERS(asm/msr.h) - - # Checks for typedefs, structures, and compiler characteristics. - AC_C_CONST -Index: udelay.c -=================================================================== ---- lcd4linux-0.10.1-RC2/udelay.c.orig -+++ lcd4linux-0.10.1-RC2/udelay.c -@@ -55,11 +55,6 @@ - #include <string.h> - #include <sys/time.h> - --#ifdef HAVE_ASM_MSR_H --#define u32 unsigned int --#include <asm/msr.h> --#endif -- - - #include "debug.h" - #include "cfg.h" -@@ -67,79 +62,10 @@ - #include "udelay.h" - - --static unsigned int ticks_per_usec = 0; -- -- --static void getCPUinfo(int *hasTSC, double *MHz) --{ -- int fd; -- char buffer[4096], *p; -- -- *hasTSC = 0; -- *MHz = -1; -- -- fd = open("/proc/cpuinfo", O_RDONLY); -- if (fd == -1) { -- error("udelay: open(/proc/cpuinfo) failed: %s", strerror(errno)); -- return; -- } -- if (read(fd, &buffer, sizeof(buffer) - 1) == -1) { -- error("udelay: read(/proc/cpuinfo) failed: %s", strerror(errno)); -- close(fd); -- return; -- } -- close(fd); -- -- p = strstr(buffer, "flags"); -- if (p == NULL) { -- info("udelay: /proc/cpuinfo has no 'flags' line"); -- } else { -- p = strstr(p, "tsc"); -- if (p == NULL) { -- info("udelay: CPU does not support Time Stamp Counter"); -- } else { -- info("udelay: CPU supports Time Stamp Counter"); -- *hasTSC = 1; -- } -- } -- -- p = strstr(buffer, "cpu MHz"); -- if (p == NULL) { -- info("udelay: /proc/cpuinfo has no 'cpu MHz' line"); -- } else { -- if (sscanf(p + 7, " : %lf", MHz) != 1) { -- error("udelay: parse(/proc/cpuinfo) failed: unknown 'cpu MHz' format"); -- *MHz = -1; -- } else { -- info("udelay: CPU runs at %f MHz", *MHz); -- } -- } -- --} -- - - void udelay_init(void) - { --#ifdef HAVE_ASM_MSR_H -- -- int tsc; -- double mhz; -- -- getCPUinfo(&tsc, &mhz); -- -- if (tsc && mhz > 0.0) { -- ticks_per_usec = ceil(mhz); -- info("udelay: using TSC delay loop, %u ticks per microsecond", ticks_per_usec); -- } else --#else -- error("udelay: The file 'include/asm/msr.h' was missing at compile time."); -- error("udelay: Even if your CPU supports TSC, it will not be used!"); -- error("udelay: You *really* should install msr.h and recompile LCD4linux!"); --#endif -- { -- ticks_per_usec = 0; -- info("udelay: using gettimeofday() delay loop"); -- } -+ info("udelay: using gettimeofday() delay loop"); - } - - -@@ -172,37 +98,17 @@ unsigned long timing(const char *driver, - void ndelay(const unsigned long nsec) - { - --#ifdef HAVE_ASM_MSR_H -- -- if (ticks_per_usec) { -+ struct timeval now, end; - -- unsigned int t1, t2; -- unsigned long tsc; -- -- tsc = (nsec * ticks_per_usec + 999) / 1000; -- -- rdtscl(t1); -- do { -- rep_nop(); -- rdtscl(t2); -- } while ((t2 - t1) < tsc); -- -- } else --#endif -- -- { -- struct timeval now, end; -- -- gettimeofday(&end, NULL); -- end.tv_usec += (nsec + 999) / 1000; -- while (end.tv_usec > 1000000) { -- end.tv_usec -= 1000000; -- end.tv_sec++; -- } -- -- do { -- rep_nop(); -- gettimeofday(&now, NULL); -- } while (now.tv_sec == end.tv_sec ? now.tv_usec < end.tv_usec : now.tv_sec < end.tv_sec); -+ gettimeofday(&end, NULL); -+ end.tv_usec += (nsec + 999) / 1000; -+ while (end.tv_usec > 1000000) { -+ end.tv_usec -= 1000000; -+ end.tv_sec++; - } -+ -+ do { -+ rep_nop(); -+ gettimeofday(&now, NULL); -+ } while (now.tv_sec == end.tv_sec ? now.tv_usec < end.tv_usec : now.tv_sec < end.tv_sec); - } |