aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIvan Khoronzhuk <ivan.khoronzhuk@ti.com>2012-11-14 15:10:37 -0500
committerTony Lindgren <tony@atomide.com>2012-11-14 15:10:37 -0500
commit42a1cc9c0ec2a00b53b4f02849dc4377b09b3b05 (patch)
treef6c4b76c4fd76b4930a08217a08e2b961759aba5
parent0b4b61c0dcbfd409832bfbeb6693d5e3ca1f3b95 (diff)
ARM: OMAP4: ID: Improve features detection and check
Replaces several flags bearing the same meaning. There is no need to set flags due to different omap types here, it can be checked in appropriate places as well. Cc: Tony Lindgren <tony@atomide.com> Cc: Russell King <linux@arm.linux.org.uk> Cc: linux-omap@vger.kernel.org Cc: linux-arm-kernel@lists.infradead.org Cc: linux-kernel@vger.kernel.org Acked-by: Nishanth Menon <nm@ti.com> Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com> Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
-rw-r--r--arch/arm/mach-omap2/id.c25
-rw-r--r--arch/arm/mach-omap2/soc.h8
2 files changed, 9 insertions, 24 deletions
diff --git a/arch/arm/mach-omap2/id.c b/arch/arm/mach-omap2/id.c
index cf2362ccb234..3c47a19a580f 100644
--- a/arch/arm/mach-omap2/id.c
+++ b/arch/arm/mach-omap2/id.c
@@ -28,6 +28,9 @@
28#include "soc.h" 28#include "soc.h"
29#include "control.h" 29#include "control.h"
30 30
31#define OMAP4_SILICON_TYPE_STANDARD 0x01
32#define OMAP4_SILICON_TYPE_PERFORMANCE 0x02
33
31static unsigned int omap_revision; 34static unsigned int omap_revision;
32static const char *cpu_rev; 35static const char *cpu_rev;
33u32 omap_features; 36u32 omap_features;
@@ -273,25 +276,11 @@ void __init omap4xxx_check_features(void)
273{ 276{
274 u32 si_type; 277 u32 si_type;
275 278
276 if (cpu_is_omap443x()) 279 si_type =
277 omap_features |= OMAP4_HAS_MPU_1GHZ; 280 (read_tap_reg(OMAP4_CTRL_MODULE_CORE_STD_FUSE_PROD_ID_1) >> 16) & 0x03;
278
279 281
280 if (cpu_is_omap446x()) { 282 if (si_type == OMAP4_SILICON_TYPE_PERFORMANCE)
281 si_type = 283 omap_features = OMAP4_HAS_PERF_SILICON;
282 read_tap_reg(OMAP4_CTRL_MODULE_CORE_STD_FUSE_PROD_ID_1);
283 switch ((si_type & (3 << 16)) >> 16) {
284 case 2:
285 /* High performance device */
286 omap_features |= OMAP4_HAS_MPU_1_5GHZ;
287 break;
288 case 1:
289 default:
290 /* Standard device */
291 omap_features |= OMAP4_HAS_MPU_1_2GHZ;
292 break;
293 }
294 }
295} 284}
296 285
297void __init ti81xx_check_features(void) 286void __init ti81xx_check_features(void)
diff --git a/arch/arm/mach-omap2/soc.h b/arch/arm/mach-omap2/soc.h
index 070096496e20..f31d90774de0 100644
--- a/arch/arm/mach-omap2/soc.h
+++ b/arch/arm/mach-omap2/soc.h
@@ -435,9 +435,7 @@ extern u32 omap_features;
435#define OMAP3_HAS_IO_WAKEUP BIT(6) 435#define OMAP3_HAS_IO_WAKEUP BIT(6)
436#define OMAP3_HAS_SDRC BIT(7) 436#define OMAP3_HAS_SDRC BIT(7)
437#define OMAP3_HAS_IO_CHAIN_CTRL BIT(8) 437#define OMAP3_HAS_IO_CHAIN_CTRL BIT(8)
438#define OMAP4_HAS_MPU_1GHZ BIT(9) 438#define OMAP4_HAS_PERF_SILICON BIT(9)
439#define OMAP4_HAS_MPU_1_2GHZ BIT(10)
440#define OMAP4_HAS_MPU_1_5GHZ BIT(11)
441 439
442 440
443#define OMAP3_HAS_FEATURE(feat,flag) \ 441#define OMAP3_HAS_FEATURE(feat,flag) \
@@ -465,9 +463,7 @@ static inline unsigned int omap4_has_ ##feat(void) \
465 return omap_features & OMAP4_HAS_ ##flag; \ 463 return omap_features & OMAP4_HAS_ ##flag; \
466} \ 464} \
467 465
468OMAP4_HAS_FEATURE(mpu_1ghz, MPU_1GHZ) 466OMAP4_HAS_FEATURE(perf_silicon, PERF_SILICON)
469OMAP4_HAS_FEATURE(mpu_1_2ghz, MPU_1_2GHZ)
470OMAP4_HAS_FEATURE(mpu_1_5ghz, MPU_1_5GHZ)
471 467
472#endif /* __ASSEMBLY__ */ 468#endif /* __ASSEMBLY__ */
473 469