|
@@ -628,6 +628,41 @@ void __init omap5xxx_check_revision(void)
|
|
pr_info("%s %s\n", soc_name, soc_rev);
|
|
pr_info("%s %s\n", soc_name, soc_rev);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void __init dra7xxx_check_revision(void)
|
|
|
|
+{
|
|
|
|
+ u32 idcode;
|
|
|
|
+ u16 hawkeye;
|
|
|
|
+ u8 rev;
|
|
|
|
+
|
|
|
|
+ idcode = read_tap_reg(OMAP_TAP_IDCODE);
|
|
|
|
+ hawkeye = (idcode >> 12) & 0xffff;
|
|
|
|
+ rev = (idcode >> 28) & 0xff;
|
|
|
|
+ switch (hawkeye) {
|
|
|
|
+ case 0xb990:
|
|
|
|
+ switch (rev) {
|
|
|
|
+ case 0:
|
|
|
|
+ omap_revision = DRA752_REV_ES1_0;
|
|
|
|
+ break;
|
|
|
|
+ case 1:
|
|
|
|
+ default:
|
|
|
|
+ omap_revision = DRA752_REV_ES1_1;
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ default:
|
|
|
|
+ /* Unknown default to latest silicon rev as default*/
|
|
|
|
+ pr_warn("%s: unknown idcode=0x%08x (hawkeye=0x%08x,rev=0x%d)\n",
|
|
|
|
+ __func__, idcode, hawkeye, rev);
|
|
|
|
+ omap_revision = DRA752_REV_ES1_1;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ sprintf(soc_name, "DRA%03x", omap_rev() >> 16);
|
|
|
|
+ sprintf(soc_rev, "ES%d.%d", (omap_rev() >> 12) & 0xf,
|
|
|
|
+ (omap_rev() >> 8) & 0xf);
|
|
|
|
+
|
|
|
|
+ pr_info("%s %s\n", soc_name, soc_rev);
|
|
|
|
+}
|
|
|
|
+
|
|
/*
|
|
/*
|
|
* Set up things for map_io and processor detection later on. Gets called
|
|
* Set up things for map_io and processor detection later on. Gets called
|
|
* pretty much first thing from board init. For multi-omap, this gets
|
|
* pretty much first thing from board init. For multi-omap, this gets
|
|
@@ -669,6 +704,8 @@ static const char * __init omap_get_family(void)
|
|
return kasprintf(GFP_KERNEL, "OMAP5");
|
|
return kasprintf(GFP_KERNEL, "OMAP5");
|
|
else if (soc_is_am43xx())
|
|
else if (soc_is_am43xx())
|
|
return kasprintf(GFP_KERNEL, "AM43xx");
|
|
return kasprintf(GFP_KERNEL, "AM43xx");
|
|
|
|
+ else if (soc_is_dra7xx())
|
|
|
|
+ return kasprintf(GFP_KERNEL, "DRA7");
|
|
else
|
|
else
|
|
return kasprintf(GFP_KERNEL, "Unknown");
|
|
return kasprintf(GFP_KERNEL, "Unknown");
|
|
}
|
|
}
|