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: Paul Walmsley <paul@pwsan.com> Cc: Benoît Cousson <b-cousson@ti.com> Cc: Kevin Hilman <khilman@ti.com>
This commit is contained in:
Родитель
ce722d269f
Коммит
bac1a0f0bb
|
@ -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),
|
||||||
*/
|
*/
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче