|
|
|
@ -22,7 +22,6 @@ |
|
|
|
|
#include <linux/timex.h> |
|
|
|
|
|
|
|
|
|
#include <asm/machdep.h> |
|
|
|
|
#include <asm/io.h> |
|
|
|
|
#include <asm/irq_regs.h> |
|
|
|
|
|
|
|
|
|
#define TICK_SIZE (tick_nsec / 1000) |
|
|
|
@ -66,29 +65,6 @@ irqreturn_t arch_timer_interrupt(int irq, void *dummy) |
|
|
|
|
else |
|
|
|
|
last_rtc_update = xtime.tv_sec - 600; /* do it again in 60 s */ |
|
|
|
|
} |
|
|
|
|
#ifdef CONFIG_HEARTBEAT |
|
|
|
|
/* use power LED as a heartbeat instead -- much more useful
|
|
|
|
|
for debugging -- based on the version for PReP by Cort */ |
|
|
|
|
/* acts like an actual heart beat -- ie thump-thump-pause... */ |
|
|
|
|
if (mach_heartbeat) { |
|
|
|
|
static unsigned cnt = 0, period = 0, dist = 0; |
|
|
|
|
|
|
|
|
|
if (cnt == 0 || cnt == dist) |
|
|
|
|
mach_heartbeat( 1 ); |
|
|
|
|
else if (cnt == 7 || cnt == dist+7) |
|
|
|
|
mach_heartbeat( 0 ); |
|
|
|
|
|
|
|
|
|
if (++cnt > period) { |
|
|
|
|
cnt = 0; |
|
|
|
|
/* The hyperbolic function below modifies the heartbeat period
|
|
|
|
|
* length in dependency of the current (5min) load. It goes |
|
|
|
|
* through the points f(0)=126, f(1)=86, f(5)=51, |
|
|
|
|
* f(inf)->30. */ |
|
|
|
|
period = ((672<<FSHIFT)/(5*avenrun[0]+(7<<FSHIFT))) + 30; |
|
|
|
|
dist = period / 4; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
#endif /* CONFIG_HEARTBEAT */ |
|
|
|
|
|
|
|
|
|
write_sequnlock(&xtime_lock); |
|
|
|
|
return(IRQ_HANDLED); |
|
|
|
|