diff options
| author | Amit Kucheria <amit.kucheria@verdurent.com> | 2010-09-01 15:49:13 -0400 |
|---|---|---|
| committer | Nicolas Pitre <nicolas.pitre@linaro.org> | 2010-10-01 22:26:38 -0400 |
| commit | 33d7c5c1c808ea47d85630ac2dd98490d7df0ff4 (patch) | |
| tree | a2f309098df9e509963e18f6aca9692251fb141b | |
| parent | c62d0f2ac18d38265ccf0e821e6afee60a0c89b5 (diff) | |
ARM: mxc: turn off HWCAP_NEON for older versions of imx51 silicon
Versions of silicon older than TO3 have broken NEON implementation. Turn off
NEON in such cases.
Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org>
Tested-by: Dave Martin <dave.martin@linaro.org>
Tested-by: Jason Hui <jason.hui@linaro.org>
Signed-off-by: Nicolas Pitre <nicolas.pitre@linaro.org>
| -rw-r--r-- | arch/arm/mach-mx5/cpu.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/arch/arm/mach-mx5/cpu.c b/arch/arm/mach-mx5/cpu.c index 2d37785e3857..eaacb6e9b5d0 100644 --- a/arch/arm/mach-mx5/cpu.c +++ b/arch/arm/mach-mx5/cpu.c | |||
| @@ -70,6 +70,25 @@ int mx51_revision(void) | |||
| 70 | } | 70 | } |
| 71 | EXPORT_SYMBOL(mx51_revision); | 71 | EXPORT_SYMBOL(mx51_revision); |
| 72 | 72 | ||
| 73 | #ifdef CONFIG_NEON | ||
| 74 | |||
| 75 | /* | ||
| 76 | * All versions of the silicon before Rev. 3 have broken NEON implementations. | ||
| 77 | * Dependent on link order - so the assumption is that vfp_init is called | ||
| 78 | * before us. | ||
| 79 | */ | ||
| 80 | static int __init mx51_neon_fixup(void) | ||
| 81 | { | ||
| 82 | if (mx51_revision() < MX51_CHIP_REV_3_0 && (elf_hwcap & HWCAP_NEON)) { | ||
| 83 | elf_hwcap &= ~HWCAP_NEON; | ||
| 84 | pr_info("Turning off NEON support, detected broken NEON implementation\n"); | ||
| 85 | } | ||
| 86 | return 0; | ||
| 87 | } | ||
| 88 | |||
| 89 | late_initcall(mx51_neon_fixup); | ||
| 90 | #endif | ||
| 91 | |||
| 73 | static int __init post_cpu_init(void) | 92 | static int __init post_cpu_init(void) |
| 74 | { | 93 | { |
| 75 | unsigned int reg; | 94 | unsigned int reg; |
