diff options
author | David Daney <ddaney@caviumnetworks.com> | 2010-06-01 16:18:15 -0400 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2010-08-05 08:26:20 -0400 |
commit | ca148125e6134de334b61822539d220794d8da18 (patch) | |
tree | e31af5840a8873ec6613bf9b09fe0f9ad3e6a9c7 /arch/mips/include/asm | |
parent | e6b78c4f224925c71cce57033b1e6e30dd56add7 (diff) |
MIPS: Octeon: Implement delays with cycle counter.
Power throttling make deterministic delay loops impossible.
Re-implement delays using the cycle counter. This also allows us to
get rid of the code that calculates loops per jiffy.
Signed-off-by: David Daney <ddaney@caviumnetworks.com>
To: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/1317/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/include/asm')
-rw-r--r-- | arch/mips/include/asm/mach-cavium-octeon/cpu-feature-overrides.h | 11 | ||||
-rw-r--r-- | arch/mips/include/asm/octeon/octeon.h | 1 |
2 files changed, 1 insertions, 11 deletions
diff --git a/arch/mips/include/asm/mach-cavium-octeon/cpu-feature-overrides.h b/arch/mips/include/asm/mach-cavium-octeon/cpu-feature-overrides.h index 2a7ea90fee2a..b952fc7215e2 100644 --- a/arch/mips/include/asm/mach-cavium-octeon/cpu-feature-overrides.h +++ b/arch/mips/include/asm/mach-cavium-octeon/cpu-feature-overrides.h | |||
@@ -61,22 +61,11 @@ | |||
61 | 61 | ||
62 | #define kernel_uses_smartmips_rixi (cpu_data[0].cputype == CPU_CAVIUM_OCTEON_PLUS) | 62 | #define kernel_uses_smartmips_rixi (cpu_data[0].cputype == CPU_CAVIUM_OCTEON_PLUS) |
63 | 63 | ||
64 | #define ARCH_HAS_READ_CURRENT_TIMER 1 | ||
65 | #define ARCH_HAS_IRQ_PER_CPU 1 | 64 | #define ARCH_HAS_IRQ_PER_CPU 1 |
66 | #define ARCH_HAS_SPINLOCK_PREFETCH 1 | 65 | #define ARCH_HAS_SPINLOCK_PREFETCH 1 |
67 | #define spin_lock_prefetch(x) prefetch(x) | 66 | #define spin_lock_prefetch(x) prefetch(x) |
68 | #define PREFETCH_STRIDE 128 | 67 | #define PREFETCH_STRIDE 128 |
69 | 68 | ||
70 | static inline int read_current_timer(unsigned long *result) | ||
71 | { | ||
72 | asm volatile ("rdhwr %0,$31\n" | ||
73 | #ifndef CONFIG_64BIT | ||
74 | "\tsll %0, 0" | ||
75 | #endif | ||
76 | : "=r" (*result)); | ||
77 | return 0; | ||
78 | } | ||
79 | |||
80 | #ifdef __OCTEON__ | 69 | #ifdef __OCTEON__ |
81 | /* | 70 | /* |
82 | * All gcc versions that have OCTEON support define __OCTEON__ and have the | 71 | * All gcc versions that have OCTEON support define __OCTEON__ and have the |
diff --git a/arch/mips/include/asm/octeon/octeon.h b/arch/mips/include/asm/octeon/octeon.h index c29debe7a8ad..917a6c413b1a 100644 --- a/arch/mips/include/asm/octeon/octeon.h +++ b/arch/mips/include/asm/octeon/octeon.h | |||
@@ -50,6 +50,7 @@ extern void octeon_crypto_disable(struct octeon_cop2_state *state, | |||
50 | extern asmlinkage void octeon_cop2_restore(struct octeon_cop2_state *task); | 50 | extern asmlinkage void octeon_cop2_restore(struct octeon_cop2_state *task); |
51 | 51 | ||
52 | extern void octeon_init_cvmcount(void); | 52 | extern void octeon_init_cvmcount(void); |
53 | extern void octeon_setup_delays(void); | ||
53 | 54 | ||
54 | #define OCTEON_ARGV_MAX_ARGS 64 | 55 | #define OCTEON_ARGV_MAX_ARGS 64 |
55 | #define OCTOEN_SERIAL_LEN 20 | 56 | #define OCTOEN_SERIAL_LEN 20 |