void init_omap_revision(void) { /* * For some of the ES2/ES1 boards ID_CODE is not reliable: * Also, ES1 and ES2 have different ARM revisions * So use ARM revision for identification */ unsigned int arm_rev = cortex_rev(); switch (arm_rev) { case MIDR_CORTEX_A9_R0P1: *omap_si_rev = OMAP4430_ES1_0; break; case MIDR_CORTEX_A9_R1P2: switch (readl(CONTROL_ID_CODE)) { case OMAP4_CONTROL_ID_CODE_ES2_0: *omap_si_rev = OMAP4430_ES2_0; break; case OMAP4_CONTROL_ID_CODE_ES2_1: *omap_si_rev = OMAP4430_ES2_1; break; case OMAP4_CONTROL_ID_CODE_ES2_2: *omap_si_rev = OMAP4430_ES2_2; break; default: *omap_si_rev = OMAP4430_ES2_0; break; } break; case MIDR_CORTEX_A9_R1P3: *omap_si_rev = OMAP4430_ES2_3; break; case MIDR_CORTEX_A9_R2P10: switch (readl(CONTROL_ID_CODE)) { case OMAP4470_CONTROL_ID_CODE_ES1_0: *omap_si_rev = OMAP4470_ES1_0; break; case OMAP4460_CONTROL_ID_CODE_ES1_1: *omap_si_rev = OMAP4460_ES1_1; break; case OMAP4460_CONTROL_ID_CODE_ES1_0: default: *omap_si_rev = OMAP4460_ES1_0; break; } break; default: *omap_si_rev = OMAP4430_SILICON_ID_INVALID; break; } }
void init_omap_revision(void) { /* * For some of the ES2/ES1 boards ID_CODE is not reliable: * Also, ES1 and ES2 have different ARM revisions * So use ARM revision for identification */ unsigned int rev = cortex_rev(); switch (rev) { case MIDR_CORTEX_A15_R0P0: *omap_si_rev = OMAP5430_ES1_0; break; default: *omap_si_rev = OMAP5430_SILICON_ID_INVALID; } }