omap_type can be determined at the init time based on the device
tree compatible string. This will avoid checking again for soc string.

Signed-off-by: Keerthy <j-keer...@ti.com>
---
 arch/arm/mach-omap2/id.c | 38 +++++++++++++++++++++-----------------
 1 file changed, 21 insertions(+), 17 deletions(-)

diff --git a/arch/arm/mach-omap2/id.c b/arch/arm/mach-omap2/id.c
index 19289df..885416d 100644
--- a/arch/arm/mach-omap2/id.c
+++ b/arch/arm/mach-omap2/id.c
@@ -45,6 +45,7 @@ static char soc_rev[OMAP_SOC_MAX_NAME_LENGTH];
 u32 omap_features;
 
 static int soc_ids[MAX_ID];
+static int omap_type_val = OMAP2_DEVICETYPE_MASK;
 
 unsigned int omap_rev(void)
 {
@@ -54,8 +55,13 @@ EXPORT_SYMBOL(omap_rev);
 
 void init_dra_soc_id(void)
 {
-       if (of_machine_is_compatible("ti,dra7"))
+       if (of_machine_is_compatible("ti,dra7")) {
+               omap_type_val = omap_ctrl_readl(OMAP5XXX_CONTROL_STATUS);
+               omap_type_val &= OMAP5_DEVICETYPE_MASK;
+               omap_type_val >>= 6;
                soc_ids[DRA7XX] = 1;
+       }
+
        if (of_machine_is_compatible("ti,dra74"))
                soc_ids[DRA74X] = 1;
        if (of_machine_is_compatible("ti,dra72"))
@@ -69,36 +75,34 @@ int check_dra_soc(int id)
 
 int omap_type(void)
 {
-       static u32 val = OMAP2_DEVICETYPE_MASK;
-
-       if (val < OMAP2_DEVICETYPE_MASK)
-               return val;
+       if (omap_type_val < OMAP2_DEVICETYPE_MASK)
+               return omap_type_val;
 
        if (cpu_is_omap24xx()) {
-               val = omap_ctrl_readl(OMAP24XX_CONTROL_STATUS);
+               omap_type_val = omap_ctrl_readl(OMAP24XX_CONTROL_STATUS);
        } else if (cpu_is_ti81xx()) {
-               val = omap_ctrl_readl(TI81XX_CONTROL_STATUS);
+               omap_type_val = omap_ctrl_readl(TI81XX_CONTROL_STATUS);
        } else if (soc_is_am33xx() || soc_is_am43xx()) {
-               val = omap_ctrl_readl(AM33XX_CONTROL_STATUS);
+               omap_type_val = omap_ctrl_readl(AM33XX_CONTROL_STATUS);
        } else if (cpu_is_omap34xx()) {
-               val = omap_ctrl_readl(OMAP343X_CONTROL_STATUS);
+               omap_type_val = omap_ctrl_readl(OMAP343X_CONTROL_STATUS);
        } else if (cpu_is_omap44xx()) {
-               val = omap_ctrl_readl(OMAP4_CTRL_MODULE_CORE_STATUS);
-       } else if (soc_is_omap54xx() || soc_is_dra7xx()) {
-               val = omap_ctrl_readl(OMAP5XXX_CONTROL_STATUS);
-               val &= OMAP5_DEVICETYPE_MASK;
-               val >>= 6;
+               omap_type_val = omap_ctrl_readl(OMAP4_CTRL_MODULE_CORE_STATUS);
+       } else if (soc_is_omap54xx()) {
+               omap_type_val = omap_ctrl_readl(OMAP5XXX_CONTROL_STATUS);
+               omap_type_val &= OMAP5_DEVICETYPE_MASK;
+               omap_type_val >>= 6;
                goto out;
        } else {
                pr_err("Cannot detect omap type!\n");
                goto out;
        }
 
-       val &= OMAP2_DEVICETYPE_MASK;
-       val >>= 8;
+       omap_type_val &= OMAP2_DEVICETYPE_MASK;
+       omap_type_val >>= 8;
 
 out:
-       return val;
+       return omap_type_val;
 }
 EXPORT_SYMBOL(omap_type);
 
-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to