summaryrefslogtreecommitdiff
path: root/arch/arm/include/asm/timex.h
diff options
context:
space:
mode:
authorWill Deacon <will.deacon@arm.com>2012-07-06 15:46:45 +0100
committerRussell King <rmk+kernel@arm.linux.org.uk>2012-07-09 17:42:23 +0100
commit923df96b9f31b7d08d8438ff9677326d9537accf (patch)
tree3df937a0431a2ae0500ae011f5742a28611490fa /arch/arm/include/asm/timex.h
parentf8f5701bdaf9134b1f90e5044a82c66324d2073f (diff)
ARM: 7451/1: arch timer: implement read_current_timer and get_cycles
This patch implements read_current_timer using the architected timers when they are selected via CONFIG_ARM_ARCH_TIMER. If they are detected not to be usable at runtime, we return -ENXIO to the caller. Furthermore, if read_current_timer is exported then we can implement get_cycles in terms of it for use as both an entropy source and for implementing __udelay and friends. Tested-by: Shinya Kuribayashi <shinya.kuribayashi.px@renesas.com> Reviewed-by: Stephen Boyd <sboyd@codeaurora.org> Signed-off-by: Will Deacon <will.deacon@arm.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/include/asm/timex.h')
-rw-r--r--arch/arm/include/asm/timex.h10
1 files changed, 6 insertions, 4 deletions
diff --git a/arch/arm/include/asm/timex.h b/arch/arm/include/asm/timex.h
index 3be8de3adaba..ce119442277c 100644
--- a/arch/arm/include/asm/timex.h
+++ b/arch/arm/include/asm/timex.h
@@ -12,13 +12,15 @@
#ifndef _ASMARM_TIMEX_H
#define _ASMARM_TIMEX_H
+#include <asm/arch_timer.h>
#include <mach/timex.h>
typedef unsigned long cycles_t;
-static inline cycles_t get_cycles (void)
-{
- return 0;
-}
+#ifdef ARCH_HAS_READ_CURRENT_TIMER
+#define get_cycles() ({ cycles_t c; read_current_timer(&c) ? 0 : c; })
+#else
+#define get_cycles() (0)
+#endif
#endif