提交 bac1a0f0 编写于 作者: P Paul Walmsley

OMAP2+: hwmod: allow multiple calls to omap_hwmod_init()

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: NPaul Walmsley <paul@pwsan.com>
Cc: Benoît Cousson <b-cousson@ti.com>
Cc: Kevin Hilman <khilman@ti.com>
上级 ce722d26
...@@ -162,9 +162,6 @@ static LIST_HEAD(omap_hwmod_list); ...@@ -162,9 +162,6 @@ static LIST_HEAD(omap_hwmod_list);
/* mpu_oh: used to add/remove MPU initiator from sleepdep list */ /* mpu_oh: used to add/remove MPU initiator from sleepdep list */
static struct omap_hwmod *mpu_oh; static struct omap_hwmod *mpu_oh;
/* inited: 0 if omap_hwmod_init() has not yet been called; 1 otherwise */
static u8 inited;
/* Private functions */ /* Private functions */
...@@ -1595,26 +1592,20 @@ int omap_hwmod_for_each(int (*fn)(struct omap_hwmod *oh, void *data), ...@@ -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) int __init omap_hwmod_init(struct omap_hwmod **ohs)
{ {
struct omap_hwmod *oh; int r, i;
int r;
if (inited)
return -EINVAL;
inited = 1;
if (!ohs) if (!ohs)
return 0; return 0;
oh = *ohs; i = 0;
while (oh) { do {
if (omap_chip_is(oh->omap_chip)) { if (!omap_chip_is(ohs[i]->omap_chip))
r = _register(oh); continue;
WARN(r, "omap_hwmod: %s: _register returned "
"%d\n", oh->name, r); r = _register(ohs[i]);
} WARN(r, "omap_hwmod: %s: _register returned %d\n", ohs[i]->name,
oh = *++ohs; r);
} } while (ohs[++i]);
return 0; return 0;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册