diff options
Diffstat (limited to 'arch/arm/mach-omap2/id.c')
-rw-r--r-- | arch/arm/mach-omap2/id.c | 52 |
1 files changed, 45 insertions, 7 deletions
diff --git a/arch/arm/mach-omap2/id.c b/arch/arm/mach-omap2/id.c index 27ad722df637..6c5826605eae 100644 --- a/arch/arm/mach-omap2/id.c +++ b/arch/arm/mach-omap2/id.c | |||
@@ -226,7 +226,7 @@ static void __init omap4_check_features(void) | |||
226 | } | 226 | } |
227 | } | 227 | } |
228 | 228 | ||
229 | static void __init ti816x_check_features(void) | 229 | static void __init ti81xx_check_features(void) |
230 | { | 230 | { |
231 | omap_features = OMAP3_HAS_NEON; | 231 | omap_features = OMAP3_HAS_NEON; |
232 | } | 232 | } |
@@ -340,6 +340,29 @@ static void __init omap3_check_revision(const char **cpu_rev) | |||
340 | break; | 340 | break; |
341 | } | 341 | } |
342 | break; | 342 | break; |
343 | case 0xb944: | ||
344 | omap_revision = AM335X_REV_ES1_0; | ||
345 | *cpu_rev = "1.0"; | ||
346 | case 0xb8f2: | ||
347 | switch (rev) { | ||
348 | case 0: | ||
349 | /* FALLTHROUGH */ | ||
350 | case 1: | ||
351 | omap_revision = TI8148_REV_ES1_0; | ||
352 | *cpu_rev = "1.0"; | ||
353 | break; | ||
354 | case 2: | ||
355 | omap_revision = TI8148_REV_ES2_0; | ||
356 | *cpu_rev = "2.0"; | ||
357 | break; | ||
358 | case 3: | ||
359 | /* FALLTHROUGH */ | ||
360 | default: | ||
361 | omap_revision = TI8148_REV_ES2_1; | ||
362 | *cpu_rev = "2.1"; | ||
363 | break; | ||
364 | } | ||
365 | break; | ||
343 | default: | 366 | default: |
344 | /* Unknown default to latest silicon rev as default */ | 367 | /* Unknown default to latest silicon rev as default */ |
345 | omap_revision = OMAP3630_REV_ES1_2; | 368 | omap_revision = OMAP3630_REV_ES1_2; |
@@ -367,7 +390,7 @@ static void __init omap4_check_revision(void) | |||
367 | * Few initial 4430 ES2.0 samples IDCODE is same as ES1.0 | 390 | * Few initial 4430 ES2.0 samples IDCODE is same as ES1.0 |
368 | * Use ARM register to detect the correct ES version | 391 | * Use ARM register to detect the correct ES version |
369 | */ | 392 | */ |
370 | if (!rev && (hawkeye != 0xb94e)) { | 393 | if (!rev && (hawkeye != 0xb94e) && (hawkeye != 0xb975)) { |
371 | idcode = read_cpuid(CPUID_ID); | 394 | idcode = read_cpuid(CPUID_ID); |
372 | rev = (idcode & 0xf) - 1; | 395 | rev = (idcode & 0xf) - 1; |
373 | } | 396 | } |
@@ -389,8 +412,11 @@ static void __init omap4_check_revision(void) | |||
389 | omap_revision = OMAP4430_REV_ES2_1; | 412 | omap_revision = OMAP4430_REV_ES2_1; |
390 | break; | 413 | break; |
391 | case 4: | 414 | case 4: |
392 | default: | ||
393 | omap_revision = OMAP4430_REV_ES2_2; | 415 | omap_revision = OMAP4430_REV_ES2_2; |
416 | break; | ||
417 | case 6: | ||
418 | default: | ||
419 | omap_revision = OMAP4430_REV_ES2_3; | ||
394 | } | 420 | } |
395 | break; | 421 | break; |
396 | case 0xb94e: | 422 | case 0xb94e: |
@@ -401,9 +427,17 @@ static void __init omap4_check_revision(void) | |||
401 | break; | 427 | break; |
402 | } | 428 | } |
403 | break; | 429 | break; |
430 | case 0xb975: | ||
431 | switch (rev) { | ||
432 | case 0: | ||
433 | default: | ||
434 | omap_revision = OMAP4470_REV_ES1_0; | ||
435 | break; | ||
436 | } | ||
437 | break; | ||
404 | default: | 438 | default: |
405 | /* Unknown default to latest silicon rev as default */ | 439 | /* Unknown default to latest silicon rev as default */ |
406 | omap_revision = OMAP4430_REV_ES2_2; | 440 | omap_revision = OMAP4430_REV_ES2_3; |
407 | } | 441 | } |
408 | 442 | ||
409 | pr_info("OMAP%04x ES%d.%d\n", omap_rev() >> 16, | 443 | pr_info("OMAP%04x ES%d.%d\n", omap_rev() >> 16, |
@@ -432,6 +466,10 @@ static void __init omap3_cpuinfo(const char *cpu_rev) | |||
432 | cpu_name = (omap3_has_sgx()) ? "AM3517" : "AM3505"; | 466 | cpu_name = (omap3_has_sgx()) ? "AM3517" : "AM3505"; |
433 | } else if (cpu_is_ti816x()) { | 467 | } else if (cpu_is_ti816x()) { |
434 | cpu_name = "TI816X"; | 468 | cpu_name = "TI816X"; |
469 | } else if (cpu_is_am335x()) { | ||
470 | cpu_name = "AM335X"; | ||
471 | } else if (cpu_is_ti814x()) { | ||
472 | cpu_name = "TI814X"; | ||
435 | } else if (omap3_has_iva() && omap3_has_sgx()) { | 473 | } else if (omap3_has_iva() && omap3_has_sgx()) { |
436 | /* OMAP3430, OMAP3525, OMAP3515, OMAP3503 devices */ | 474 | /* OMAP3430, OMAP3525, OMAP3515, OMAP3503 devices */ |
437 | cpu_name = "OMAP3430/3530"; | 475 | cpu_name = "OMAP3430/3530"; |
@@ -472,11 +510,11 @@ void __init omap2_check_revision(void) | |||
472 | } else if (cpu_is_omap34xx()) { | 510 | } else if (cpu_is_omap34xx()) { |
473 | omap3_check_revision(&cpu_rev); | 511 | omap3_check_revision(&cpu_rev); |
474 | 512 | ||
475 | /* TI816X doesn't have feature register */ | 513 | /* TI81XX doesn't have feature register */ |
476 | if (!cpu_is_ti816x()) | 514 | if (!cpu_is_ti81xx()) |
477 | omap3_check_features(); | 515 | omap3_check_features(); |
478 | else | 516 | else |
479 | ti816x_check_features(); | 517 | ti81xx_check_features(); |
480 | 518 | ||
481 | omap3_cpuinfo(cpu_rev); | 519 | omap3_cpuinfo(cpu_rev); |
482 | return; | 520 | return; |