aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap2/id.c
diff options
context:
space:
mode:
authorSanjeev Premi <premi@ti.com>2009-11-22 13:10:58 -0500
committerTony Lindgren <tony@atomide.com>2009-11-22 13:24:32 -0500
commit4cac60180649b83e094d4ea5c440229814488431 (patch)
treea5adbdcb0cd085d497727ba152407745ed06a607 /arch/arm/mach-omap2/id.c
parentf18af0a847f9e1a843bcb8ba69697ccbba2d03e9 (diff)
omap3: AM35xx: Runtime detection of the device
Add support to detect AM3505/AM3517 devices at runtime. Also updates the CPU names printed during boot. Signed-off-by: Sanjeev Premi <premi@ti.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
Diffstat (limited to 'arch/arm/mach-omap2/id.c')
-rw-r--r--arch/arm/mach-omap2/id.c36
1 files changed, 30 insertions, 6 deletions
diff --git a/arch/arm/mach-omap2/id.c b/arch/arm/mach-omap2/id.c
index 189cf7a6e61b..f8252c64c423 100644
--- a/arch/arm/mach-omap2/id.c
+++ b/arch/arm/mach-omap2/id.c
@@ -242,6 +242,14 @@ void __init omap3_check_revision(void)
242 omap_revision = OMAP3630_REV_ES1_0; 242 omap_revision = OMAP3630_REV_ES1_0;
243 } 243 }
244 break; 244 break;
245 case 0xb868:
246 /* Handle OMAP35xx/AM35xx devices
247 *
248 * Set the device to be OMAP3505 here. Actual device
249 * is identified later based on the features.
250 */
251 omap_revision = OMAP3505_REV(rev);
252 break;
245 default: 253 default:
246 /* Unknown default to latest silicon rev as default*/ 254 /* Unknown default to latest silicon rev as default*/
247 omap_revision = OMAP3630_REV_ES1_0; 255 omap_revision = OMAP3630_REV_ES1_0;
@@ -267,20 +275,36 @@ void __init omap3_cpuinfo(void)
267 * and CPU class bits. 275 * and CPU class bits.
268 */ 276 */
269 if (cpu_is_omap3630()) 277 if (cpu_is_omap3630())
270 strcpy(cpu_name, "3630"); 278 strcpy(cpu_name, "OMAP3630");
279 else if (cpu_is_omap3505()) {
280 /*
281 * AM35xx devices
282 */
283 if (omap3_has_sgx()) {
284 omap_revision = OMAP3517_REV(rev);
285 strcpy(cpu_name, "AM3517");
286 }
287 else {
288 /* Already set in omap3_check_revision() */
289 strcpy(cpu_name, "AM3505");
290 }
291 }
292 /*
293 * OMAP3430, OMAP3525, OMAP3515, OMAP3503 devices
294 */
271 else if (omap3_has_iva() && omap3_has_sgx()) 295 else if (omap3_has_iva() && omap3_has_sgx())
272 strcpy(cpu_name, "3430/3530"); 296 strcpy(cpu_name, "OMAP3430/3530");
273 else if (omap3_has_sgx()) { 297 else if (omap3_has_sgx()) {
274 omap_revision = OMAP3525_REV(rev); 298 omap_revision = OMAP3525_REV(rev);
275 strcpy(cpu_name, "3525"); 299 strcpy(cpu_name, "OMAP3525");
276 } 300 }
277 else if (omap3_has_iva()) { 301 else if (omap3_has_iva()) {
278 omap_revision = OMAP3515_REV(rev); 302 omap_revision = OMAP3515_REV(rev);
279 strcpy(cpu_name, "3515"); 303 strcpy(cpu_name, "OMAP3515");
280 } 304 }
281 else { 305 else {
282 omap_revision = OMAP3503_REV(rev); 306 omap_revision = OMAP3503_REV(rev);
283 strcpy(cpu_name, "3503"); 307 strcpy(cpu_name, "OMAP3503");
284 } 308 }
285 309
286 switch (rev) { 310 switch (rev) {
@@ -307,7 +331,7 @@ void __init omap3_cpuinfo(void)
307 /* 331 /*
308 * Print verbose information 332 * Print verbose information
309 */ 333 */
310 pr_info("OMAP%s ES%s\n", cpu_name, cpu_rev); 334 pr_info("%s ES%s\n", cpu_name, cpu_rev);
311 335
312 OMAP3_SHOW_FEATURE(l2cache); 336 OMAP3_SHOW_FEATURE(l2cache);
313 OMAP3_SHOW_FEATURE(iva); 337 OMAP3_SHOW_FEATURE(iva);