@@ -186,6 +186,7 @@ void __init omap3_check_revision(void)
{
u32 cpuid, idcode;
u16 hawkeye;
+ u16 omap_type;
u8 rev;
char *rev_name = "ES1.0";
@@ -210,7 +211,10 @@ void __init omap3_check_revision(void)
hawkeye = (idcode >> 12) & 0xffff;
rev = (idcode >> 28) & 0xff;
- if (hawkeye == 0xb7ae) {
+ omap_type = omap_rev() >> 16;
+ switch (hawkeye) {
+ case 0xb7ae:
+ /* Handle 34xx devices */
switch (rev) {
case 0:
omap_revision = OMAP3430_REV_ES2_0;
@@ -231,12 +235,33 @@ void __init omap3_check_revision(void)
default:
/* Use the latest known revision as default */
omap_revision = OMAP3430_REV_ES3_1;
- rev_name = "Unknown revision\n";
+ rev_name = "Unknown 34xx revision\n";
}
+ break;
+ case 0xb891:
+ /* Handle 36xx devices
+ * But, override for display purposes
+ */
+ omap_type = 0x3630;
+ switch (rev) {
+ case 0:
+ omap_revision = OMAP3630_REV_ES1_0;
+ rev_name = "ES1.0";
+ break;
+ default:
+ /* Use the latest known revision as default */
+ omap_revision = OMAP3630_REV_ES1_0;
+ rev_name = "Unknown 36xx revision\n";
+ }
+ break;
+ default:
+ /* Unknown default to latest rev as default*/
+ omap_revision = OMAP3630_REV_ES1_0;
+ rev_name = "Unknown revision\n";
}
out:
- pr_info("OMAP%04x %s\n", omap_rev() >> 16, rev_name);
+ pr_info("OMAP%04x %s\n", omap_type, rev_name);
}
#define OMAP3_SHOW_FEATURE(feat) \
@@ -383,6 +383,12 @@ IS_OMAP_TYPE(3430, 0x3430)
#define OMAP3430_REV_ES2_1 0x34302034
#define OMAP3430_REV_ES3_0 0x34303034
#define OMAP3430_REV_ES3_1 0x34304034
+/* NOTE: Add 36xx series below
+ * If additional 34xx series are added, OMAP3430_REV_ESXXXX can be
+ * added above the 3630 defines and series renumbered to ensure
+ * rev() > checks to work
+ */
+#define OMAP3630_REV_ES1_0 0x34305034
#define OMAP443X_CLASS 0x44300034