Hi,
On Tuesday 27 May 2014 03:50 PM, Rajendra Nayak wrote:
On Monday 26 May 2014 04:14 PM, Archit Taneja wrote:
Generally, IP blocks/modules within a clock domain each have their own
CM_x_CLKCTRL register, each having it's own MODULEMODE field to manage the
module.
<snip>
@@ -2751,6 +2820,13 @@ static int __init _register(struct omap_hwmod *oh)
if (_lookup(oh->name))
return -EEXIST;
+ if (oh->prcm.omap4.flags & HWMOD_OMAP4_MODULEMODE_SHARED &&
+ !oh->prcm.omap4.modulemode_ref) {
You might also want to check for someone populating a modulemode_ref but
failing to populate the flag?
Alternatively, Since you expect a modulemode_ref to be always available for all modules which
share modulemode, that in itself can be used to identify such modules without the
need of an additional flag?
It does seem redundant to have a flag at the moment. But the flag make
things more visible. 'prcm.omap4.modulemode' seems to work without a
flag too, so I suppose I'll remove the flag.
+ pr_err("omap_hwmod: %s shares modulemode, but doesn't hold a ref to it\n",
+ oh->name);
+ return -EINVAL;
+ }
+
list_add_tail(&oh->node, &omap_hwmod_list);
INIT_LIST_HEAD(&oh->master_ports);
@@ -2759,6 +2835,15 @@ static int __init _register(struct omap_hwmod *oh)
oh->_state = _HWMOD_STATE_REGISTERED;
+ if (oh->prcm.omap4.flags & HWMOD_OMAP4_MODULEMODE_SHARED) {
+ struct modulemode_shared *mmode = oh->prcm.omap4.modulemode_ref;
+
+ if (!mmode->registered) {
+ spin_lock_init(&mmode->lock);
+ mmode->registered = true;
If this is only used to keep track of the spin_lock being initialized, maybe it'll be
more readable if you just call it mmode->spin_lock_init = true.
Yes, I'll fix this.
Archit
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html