Skip to content

Commit

Permalink
OMAP2+: hwmod: allow multiple calls to omap_hwmod_init()
Browse files Browse the repository at this point in the history
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 <paul@pwsan.com>
Cc: Benoît Cousson <b-cousson@ti.com>
Cc: Kevin Hilman <khilman@ti.com>
  • Loading branch information
Paul Walmsley committed Feb 28, 2011
1 parent ce722d2 commit bac1a0f
Showing 1 changed file with 10 additions and 19 deletions.
29 changes: 10 additions & 19 deletions arch/arm/mach-omap2/omap_hwmod.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 */

Expand Down Expand Up @@ -1595,26 +1592,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;
}
Expand Down

0 comments on commit bac1a0f

Please sign in to comment.