Karmic fsl-imx51 SRU: only export NEON flag to userspace on Freescale iMX51 rev3.x or later silicon

Tim Gardner timg at tpi.com
Thu Feb 11 21:08:44 UTC 2010


The following changes since commit 4b1196706272826e74e35e9ebf2cc94ba8d4062c:
  Leann Ogasawara (1):
        UBUNTU: Ubuntu-2.6.31-108.21

are available in the git repository at:

  git://kernel.ubuntu.com/rtg/ubuntu-karmic fsl-imx51-neon

Bryan Wu (1):
      UBUNTU: SAUCE: IMX51: only export NEON flag to userspace on Freescale iMX51 rev3.x or later silicon

 arch/arm/vfp/vfpmodule.c |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)

>From d77e3635c6d402cebdda49f654402c67460acfab Mon Sep 17 00:00:00 2001
From: Bryan Wu <bryan.wu at canonical.com>
Date: Tue, 26 Jan 2010 19:00:22 +0000
Subject: [PATCH] UBUNTU: SAUCE: IMX51: only export NEON flag to userspace on Freescale iMX51 rev3.x or later silicon

BugLink: http://bugs.launchpad.net/bugs/507416

NEON function is broken on old Freescale iMX51 silicons, such as rev1.x and
rev2.x. Since more and more iMX51 based products will move to rev3.x or later
silicon, we need to enable NEON on these newer silicons and disable NEON on
those old ones.

This patch will detect the silicon revision dynamically and only export NEON
flag to userspace on Freescale iMX51 rev3.x or later silicon. It was tested on
Babbage 3.0 board and Babbage 2.x board.

Signed-off-by: Bryan Wu <bryan.wu at canonical.com>
Signed-off-by: Andy Whitcroft <apw at canonical.com>
Signed-off-by: Tim Gardner <tim.gardner at canonical.com>
---
 arch/arm/vfp/vfpmodule.c |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)

diff --git a/arch/arm/vfp/vfpmodule.c b/arch/arm/vfp/vfpmodule.c
index 2d7423a..e0d6b01 100644
--- a/arch/arm/vfp/vfpmodule.c
+++ b/arch/arm/vfp/vfpmodule.c
@@ -432,6 +432,10 @@ out:
 
 #include <linux/smp.h>
 
+#if defined(CONFIG_ARCH_MX51) && defined(CONFIG_NEON)
+#include <mach/hardware.h>
+#endif
+
 /*
  * VFP support code initialisation.
  */
@@ -498,7 +502,8 @@ static int __init vfp_init(void)
 		 * load/store instructions, integer and single
 		 * precision floating point operations.
 		 */
-		if ((fmrx(MVFR1) & 0x000fff00) == 0x00011100)
+		if (((fmrx(MVFR1) & 0x000fff00) == 0x00011100)
+			&& cpu_is_mx51_rev(CHIP_REV_3_0) > 0)
 			elf_hwcap |= HWCAP_NEON;
 #endif
 	}
-- 
1.6.2.4





More information about the kernel-team mailing list