aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm/mach-omap2/Makefile3
-rw-r--r--arch/arm/mach-omap2/id.c25
-rw-r--r--arch/arm/mach-omap2/soc.h8
3 files changed, 11 insertions, 25 deletions
diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile
index 78cbb8c5992e..dd76ff77760b 100644
--- a/arch/arm/mach-omap2/Makefile
+++ b/arch/arm/mach-omap2/Makefile
@@ -73,6 +73,8 @@ obj-$(CONFIG_ARCH_OMAP4) += opp4xxx_data.o
73endif 73endif
74 74
75# Power Management 75# Power Management
76obj-$(CONFIG_OMAP_PM_NOOP) += omap-pm-noop.o
77
76ifeq ($(CONFIG_PM),y) 78ifeq ($(CONFIG_PM),y)
77obj-$(CONFIG_ARCH_OMAP2) += pm24xx.o 79obj-$(CONFIG_ARCH_OMAP2) += pm24xx.o
78obj-$(CONFIG_ARCH_OMAP2) += sleep24xx.o 80obj-$(CONFIG_ARCH_OMAP2) += sleep24xx.o
@@ -80,7 +82,6 @@ obj-$(CONFIG_ARCH_OMAP3) += pm34xx.o sleep34xx.o
80obj-$(CONFIG_ARCH_OMAP4) += pm44xx.o omap-mpuss-lowpower.o 82obj-$(CONFIG_ARCH_OMAP4) += pm44xx.o omap-mpuss-lowpower.o
81obj-$(CONFIG_SOC_OMAP5) += omap-mpuss-lowpower.o 83obj-$(CONFIG_SOC_OMAP5) += omap-mpuss-lowpower.o
82obj-$(CONFIG_PM_DEBUG) += pm-debug.o 84obj-$(CONFIG_PM_DEBUG) += pm-debug.o
83obj-$(CONFIG_OMAP_PM_NOOP) += omap-pm-noop.o
84 85
85obj-$(CONFIG_POWER_AVS_OMAP) += sr_device.o 86obj-$(CONFIG_POWER_AVS_OMAP) += sr_device.o
86obj-$(CONFIG_POWER_AVS_OMAP_CLASS3) += smartreflex-class3.o 87obj-$(CONFIG_POWER_AVS_OMAP_CLASS3) += smartreflex-class3.o
diff --git a/arch/arm/mach-omap2/id.c b/arch/arm/mach-omap2/id.c
index f1e121502789..45cc7ed4dd58 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