There's no longer any reason why we should prevent multiple
calls to omap_hwmod_init().  It is now simply used to register an
array of hwmods.

This should allow a subset of hwmods (e.g., hwmods
handling the system clocksource and clockevents) to be registered
earlier than the remaining mass of hwmods.

Signed-off-by: Paul Walmsley <[email protected]>
Cc: BenoĆ®t Cousson <[email protected]>
Cc: Kevin Hilman <[email protected]>
---
 arch/arm/mach-omap2/omap_hwmod.c |   29 ++++++++++-------------------
 1 files changed, 10 insertions(+), 19 deletions(-)

diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
index 41f548e..86eacaf 100644
--- a/arch/arm/mach-omap2/omap_hwmod.c
+++ b/arch/arm/mach-omap2/omap_hwmod.c
@@ -162,9 +162,6 @@ static LIST_HEAD(omap_hwmod_list);
 /* mpu_oh: used to add/remove MPU initiator from sleepdep list */
 static struct omap_hwmod *mpu_oh;
 
-/* inited: 0 if omap_hwmod_init() has not yet been called; 1 otherwise */
-static u8 inited;
-
 
 /* Private functions */
 
@@ -1600,26 +1597,20 @@ int omap_hwmod_for_each(int (*fn)(struct omap_hwmod 
*oh, void *data),
  */
 int __init omap_hwmod_init(struct omap_hwmod **ohs)
 {
-       struct omap_hwmod *oh;
-       int r;
-
-       if (inited)
-               return -EINVAL;
-
-       inited = 1;
+       int r, i;
 
        if (!ohs)
                return 0;
 
-       oh = *ohs;
-       while (oh) {
-               if (omap_chip_is(oh->omap_chip)) {
-                       r = _register(oh);
-                       WARN(r, "omap_hwmod: %s: _register returned "
-                            "%d\n", oh->name, r);
-               }
-               oh = *++ohs;
-       }
+       i = 0;
+       do {
+               if (!omap_chip_is(ohs[i]->omap_chip))
+                       continue;
+
+               r = _register(ohs[i]);
+               WARN(r, "omap_hwmod: %s: _register returned %d\n", ohs[i]->name,
+                    r);
+       } while (ohs[++i]);
 
        return 0;
 }


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

Reply via email to