diff options
Diffstat (limited to 'packages/linux/linux-2.6.22.6/ts72xx/ep93xx-timer-accuracy.diff')
-rw-r--r-- | packages/linux/linux-2.6.22.6/ts72xx/ep93xx-timer-accuracy.diff | 59 |
1 files changed, 0 insertions, 59 deletions
diff --git a/packages/linux/linux-2.6.22.6/ts72xx/ep93xx-timer-accuracy.diff b/packages/linux/linux-2.6.22.6/ts72xx/ep93xx-timer-accuracy.diff deleted file mode 100644 index 8254153b69..0000000000 --- a/packages/linux/linux-2.6.22.6/ts72xx/ep93xx-timer-accuracy.diff +++ /dev/null @@ -1,59 +0,0 @@ - -The ep93xx has a weird timer tick base (983.04 kHz.) This experimental -patch tries to increase time of day accuracy by keeping the number of -ticks until the next jiffy in a fractional value representation. - -Signed-off-by: Lennert Buytenhek <buytenh@wantstofly.org> - -Index: linux-2.6.22/arch/arm/mach-ep93xx/core.c -=================================================================== ---- linux-2.6.22.orig/arch/arm/mach-ep93xx/core.c -+++ linux-2.6.22/arch/arm/mach-ep93xx/core.c -@@ -94,19 +94,32 @@ void __init ep93xx_map_io(void) - * track of lost jiffies. - */ - static unsigned int last_jiffy_time; -+static unsigned int next_jiffy_time; -+static unsigned int accumulator; - --#define TIMER4_TICKS_PER_JIFFY ((CLOCK_TICK_RATE + (HZ/2)) / HZ) -+#define TIMER4_TICKS_PER_JIFFY (983040 / HZ) -+#define TIMER4_TICKS_MOD_JIFFY (983040 % HZ) -+ -+static int after_eq(unsigned long a, unsigned long b) -+{ -+ return ((signed long)(a - b)) >= 0; -+} - - static int ep93xx_timer_interrupt(int irq, void *dev_id) - { - write_seqlock(&xtime_lock); - - __raw_writel(1, EP93XX_TIMER1_CLEAR); -- while ((signed long) -- (__raw_readl(EP93XX_TIMER4_VALUE_LOW) - last_jiffy_time) -- >= TIMER4_TICKS_PER_JIFFY) { -- last_jiffy_time += TIMER4_TICKS_PER_JIFFY; -+ while (after_eq(__raw_readl(EP93XX_TIMER4_VALUE_LOW), next_jiffy_time)) { - timer_tick(); -+ -+ last_jiffy_time = next_jiffy_time; -+ next_jiffy_time += TIMER4_TICKS_PER_JIFFY; -+ accumulator += TIMER4_TICKS_MOD_JIFFY; -+ if (accumulator >= HZ) { -+ next_jiffy_time++; -+ accumulator -= HZ; -+ } - } - - write_sequnlock(&xtime_lock); -Index: linux-2.6.22/include/asm-arm/arch-ep93xx/timex.h -=================================================================== ---- linux-2.6.22.orig/include/asm-arm/arch-ep93xx/timex.h -+++ linux-2.6.22/include/asm-arm/arch-ep93xx/timex.h -@@ -2,4 +2,4 @@ - * linux/include/asm-arm/arch-ep93xx/timex.h - */ - --#define CLOCK_TICK_RATE 983040 -+#define CLOCK_TICK_RATE (1000 * HZ) |