|
@@ -369,3 +369,113 @@ void __init omap3xxx_check_revision(void)
|
|
/* Handle 36xx devices */
|
|
/* Handle 36xx devices */
|
|
|
|
|
|
switch(rev) {
|
|
switch(rev) {
|
|
|
|
+ case 0: /* Take care of early samples */
|
|
|
|
+ omap_revision = OMAP3630_REV_ES1_0;
|
|
|
|
+ cpu_rev = "1.0";
|
|
|
|
+ break;
|
|
|
|
+ case 1:
|
|
|
|
+ omap_revision = OMAP3630_REV_ES1_1;
|
|
|
|
+ cpu_rev = "1.1";
|
|
|
|
+ break;
|
|
|
|
+ case 2:
|
|
|
|
+ /* FALLTHROUGH */
|
|
|
|
+ default:
|
|
|
|
+ omap_revision = OMAP3630_REV_ES1_2;
|
|
|
|
+ cpu_rev = "1.2";
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case 0xb81e:
|
|
|
|
+ switch (rev) {
|
|
|
|
+ case 0:
|
|
|
|
+ omap_revision = TI8168_REV_ES1_0;
|
|
|
|
+ cpu_rev = "1.0";
|
|
|
|
+ break;
|
|
|
|
+ case 1:
|
|
|
|
+ /* FALLTHROUGH */
|
|
|
|
+ default:
|
|
|
|
+ omap_revision = TI8168_REV_ES1_1;
|
|
|
|
+ cpu_rev = "1.1";
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case 0xb944:
|
|
|
|
+ omap_revision = AM335X_REV_ES1_0;
|
|
|
|
+ cpu_rev = "1.0";
|
|
|
|
+ break;
|
|
|
|
+ case 0xb8f2:
|
|
|
|
+ switch (rev) {
|
|
|
|
+ case 0:
|
|
|
|
+ /* FALLTHROUGH */
|
|
|
|
+ case 1:
|
|
|
|
+ omap_revision = TI8148_REV_ES1_0;
|
|
|
|
+ cpu_rev = "1.0";
|
|
|
|
+ break;
|
|
|
|
+ case 2:
|
|
|
|
+ omap_revision = TI8148_REV_ES2_0;
|
|
|
|
+ cpu_rev = "2.0";
|
|
|
|
+ break;
|
|
|
|
+ case 3:
|
|
|
|
+ /* FALLTHROUGH */
|
|
|
|
+ default:
|
|
|
|
+ omap_revision = TI8148_REV_ES2_1;
|
|
|
|
+ cpu_rev = "2.1";
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ default:
|
|
|
|
+ /* Unknown default to latest silicon rev as default */
|
|
|
|
+ omap_revision = OMAP3630_REV_ES1_2;
|
|
|
|
+ cpu_rev = "1.2";
|
|
|
|
+ pr_warn("Warning: unknown chip type; assuming OMAP3630ES1.2\n");
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void __init omap4xxx_check_revision(void)
|
|
|
|
+{
|
|
|
|
+ u32 idcode;
|
|
|
|
+ u16 hawkeye;
|
|
|
|
+ u8 rev;
|
|
|
|
+
|
|
|
|
+ /*
|
|
|
|
+ * The IC rev detection is done with hawkeye and rev.
|
|
|
|
+ * Note that rev does not map directly to defined processor
|
|
|
|
+ * revision numbers as ES1.0 uses value 0.
|
|
|
|
+ */
|
|
|
|
+ idcode = read_tap_reg(OMAP_TAP_IDCODE);
|
|
|
|
+ hawkeye = (idcode >> 12) & 0xffff;
|
|
|
|
+ rev = (idcode >> 28) & 0xf;
|
|
|
|
+
|
|
|
|
+ /*
|
|
|
|
+ * Few initial 4430 ES2.0 samples IDCODE is same as ES1.0
|
|
|
|
+ * Use ARM register to detect the correct ES version
|
|
|
|
+ */
|
|
|
|
+ if (!rev && (hawkeye != 0xb94e) && (hawkeye != 0xb975)) {
|
|
|
|
+ idcode = read_cpuid(CPUID_ID);
|
|
|
|
+ rev = (idcode & 0xf) - 1;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ switch (hawkeye) {
|
|
|
|
+ case 0xb852:
|
|
|
|
+ switch (rev) {
|
|
|
|
+ case 0:
|
|
|
|
+ omap_revision = OMAP4430_REV_ES1_0;
|
|
|
|
+ break;
|
|
|
|
+ case 1:
|
|
|
|
+ default:
|
|
|
|
+ omap_revision = OMAP4430_REV_ES2_0;
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case 0xb95c:
|
|
|
|
+ switch (rev) {
|
|
|
|
+ case 3:
|
|
|
|
+ omap_revision = OMAP4430_REV_ES2_1;
|
|
|
|
+ break;
|
|
|
|
+ case 4:
|
|
|
|
+ omap_revision = OMAP4430_REV_ES2_2;
|
|
|
|
+ break;
|
|
|
|
+ case 6:
|
|
|
|
+ default:
|
|
|
|
+ omap_revision = OMAP4430_REV_ES2_3;
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case 0xb94e:
|