diff options
author | Sanjeev Premi <premi@ti.com> | 2009-11-22 13:10:58 -0500 |
---|---|---|
committer | Tony Lindgren <tony@atomide.com> | 2009-11-22 13:24:32 -0500 |
commit | 4cac60180649b83e094d4ea5c440229814488431 (patch) | |
tree | a5adbdcb0cd085d497727ba152407745ed06a607 /arch/arm/mach-omap2/id.c | |
parent | f18af0a847f9e1a843bcb8ba69697ccbba2d03e9 (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.c | 36 |
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); |