|
@@ -205,3 +205,72 @@ static void __init omap3_cpuinfo(void)
|
|
|
cpu_name = "OMAP3430/3530";
|
|
|
} else if (omap3_has_iva()) {
|
|
|
cpu_name = "OMAP3525";
|
|
|
+ } else if (omap3_has_sgx()) {
|
|
|
+ cpu_name = "OMAP3515";
|
|
|
+ } else {
|
|
|
+ cpu_name = "OMAP3503";
|
|
|
+ }
|
|
|
+
|
|
|
+ /* Print verbose information */
|
|
|
+ pr_info("%s ES%s (", cpu_name, cpu_rev);
|
|
|
+
|
|
|
+ OMAP3_SHOW_FEATURE(l2cache);
|
|
|
+ OMAP3_SHOW_FEATURE(iva);
|
|
|
+ OMAP3_SHOW_FEATURE(sgx);
|
|
|
+ OMAP3_SHOW_FEATURE(neon);
|
|
|
+ OMAP3_SHOW_FEATURE(isp);
|
|
|
+ OMAP3_SHOW_FEATURE(192mhz_clk);
|
|
|
+
|
|
|
+ printk(")\n");
|
|
|
+}
|
|
|
+
|
|
|
+#define OMAP3_CHECK_FEATURE(status,feat) \
|
|
|
+ if (((status & OMAP3_ ##feat## _MASK) \
|
|
|
+ >> OMAP3_ ##feat## _SHIFT) != FEAT_ ##feat## _NONE) { \
|
|
|
+ omap_features |= OMAP3_HAS_ ##feat; \
|
|
|
+ }
|
|
|
+
|
|
|
+void __init omap3xxx_check_features(void)
|
|
|
+{
|
|
|
+ u32 status;
|
|
|
+
|
|
|
+ omap_features = 0;
|
|
|
+
|
|
|
+ status = omap_ctrl_readl(OMAP3_CONTROL_OMAP_STATUS);
|
|
|
+
|
|
|
+ OMAP3_CHECK_FEATURE(status, L2CACHE);
|
|
|
+ OMAP3_CHECK_FEATURE(status, IVA);
|
|
|
+ OMAP3_CHECK_FEATURE(status, SGX);
|
|
|
+ OMAP3_CHECK_FEATURE(status, NEON);
|
|
|
+ OMAP3_CHECK_FEATURE(status, ISP);
|
|
|
+ if (cpu_is_omap3630())
|
|
|
+ omap_features |= OMAP3_HAS_192MHZ_CLK;
|
|
|
+ if (cpu_is_omap3430() || cpu_is_omap3630())
|
|
|
+ omap_features |= OMAP3_HAS_IO_WAKEUP;
|
|
|
+ if (cpu_is_omap3630() || omap_rev() == OMAP3430_REV_ES3_1 ||
|
|
|
+ omap_rev() == OMAP3430_REV_ES3_1_2)
|
|
|
+ omap_features |= OMAP3_HAS_IO_CHAIN_CTRL;
|
|
|
+
|
|
|
+ omap_features |= OMAP3_HAS_SDRC;
|
|
|
+
|
|
|
+ /*
|
|
|
+ * am35x fixups:
|
|
|
+ * - The am35x Chip ID register has bits 12, 7:5, and 3:2 marked as
|
|
|
+ * reserved and therefore return 0 when read. Unfortunately,
|
|
|
+ * OMAP3_CHECK_FEATURE() will interpret some of those zeroes to
|
|
|
+ * mean that a feature is present even though it isn't so clear
|
|
|
+ * the incorrectly set feature bits.
|
|
|
+ */
|
|
|
+ if (soc_is_am35xx())
|
|
|
+ omap_features &= ~(OMAP3_HAS_IVA | OMAP3_HAS_ISP);
|
|
|
+
|
|
|
+ /*
|
|
|
+ * TODO: Get additional info (where applicable)
|
|
|
+ * e.g. Size of L2 cache.
|
|
|
+ */
|
|
|
+
|
|
|
+ omap3_cpuinfo();
|
|
|
+}
|
|
|
+
|
|
|
+void __init omap4xxx_check_features(void)
|
|
|
+{
|