|
@@ -298,7 +298,6 @@ static void __init omap4_check_revision(void)
|
|
|
u32 idcode;
|
|
|
u16 hawkeye;
|
|
|
u8 rev;
|
|
|
- char *rev_name = "ES1.0";
|
|
|
|
|
|
/*
|
|
|
* The IC rev detection is done with hawkeye and rev.
|
|
@@ -309,14 +308,39 @@ static void __init omap4_check_revision(void)
|
|
|
hawkeye = (idcode >> 12) & 0xffff;
|
|
|
rev = (idcode >> 28) & 0xff;
|
|
|
|
|
|
- if ((hawkeye == 0xb852) && (rev == 0x0)) {
|
|
|
- omap_revision = OMAP4430_REV_ES1_0;
|
|
|
- omap_chip.oc |= CHIP_IS_OMAP4430ES1;
|
|
|
- pr_info("OMAP%04x %s\n", omap_rev() >> 16, rev_name);
|
|
|
- return;
|
|
|
+ /*
|
|
|
+ * Few initial ES2.0 samples IDCODE is same as ES1.0
|
|
|
+ * Use ARM register to detect the correct ES version
|
|
|
+ */
|
|
|
+ if (!rev) {
|
|
|
+ idcode = read_cpuid(CPUID_ID);
|
|
|
+ rev = (idcode & 0xf) - 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ switch (hawkeye) {
|
|
|
+ case 0xb852:
|
|
|
+ switch (rev) {
|
|
|
+ case 0:
|
|
|
+ omap_revision = OMAP4430_REV_ES1_0;
|
|
|
+ omap_chip.oc |= CHIP_IS_OMAP4430ES1;
|
|
|
+ break;
|
|
|
+ case 1:
|
|
|
+ omap_revision = OMAP4430_REV_ES2_0;
|
|
|
+ omap_chip.oc |= CHIP_IS_OMAP4430ES2;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ omap_revision = OMAP4430_REV_ES2_0;
|
|
|
+ omap_chip.oc |= CHIP_IS_OMAP4430ES2;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ /* Unknown default to latest silicon rev as default*/
|
|
|
+ omap_revision = OMAP4430_REV_ES2_0;
|
|
|
+ omap_chip.oc |= CHIP_IS_OMAP4430ES2;
|
|
|
}
|
|
|
|
|
|
- pr_err("Unknown OMAP4 CPU id\n");
|
|
|
+ pr_info("OMAP%04x ES%d.0\n",
|
|
|
+ omap_rev() >> 16, ((omap_rev() >> 12) & 0xf) + 1);
|
|
|
}
|
|
|
|
|
|
#define OMAP3_SHOW_FEATURE(feat) \
|