Subject: [PATCH v6 01/16] OMAP2+: hwmod: Add API to enable IO ring wakeup.

From: [email-masked] (Vishwanath Sripathy)
Date: Mon, 3 Oct 2011 20:40:44 +0530

---snip--
> > +{
> > +	struct omap_device_pad *pad;
> > +	int ret = -EINVAL, j;
> > +
> > +	if (oh->mux&&  oh->mux->enabled) {
> > +		for (j = 0; j<  oh->mux->nr_pads_dynamic; j++) {
> > +			pad = oh->mux->pads_dynamic[j];
> > +			if (pad->flags&  OMAP_DEVICE_PAD_WAKEUP) {
> > +				if (set_wake)
> > +					pad->idle |= OMAP_WAKEUP_EN;
> > +				else
> > +					pad->idle&= ~OMAP_WAKEUP_EN;
>
> I think apart from enabling/disabling the IO wakeup's at the pad
> level, there is also a need to trigger the IO daisy chain control
> (Wu clock) by programming the PRCM.PM_WKEN_WKUP[16] EN_IO_CHAIN
> bit and waiting on the PRCM.PM_WKST_WKUP[16] ST_IO_CHAIN) bit,
> which is done by the omap3_enable/disable_io_chain function.
> This is still done in the cpuidle path, but it makes sense to
> move that over here, since it should be done every time a pad
> level wakeup is enabled or disabled.
>
> See section 3.5.7.2.2 I/O Wake-Up Mechanism of 36xx TRM revA.
>
> "The I/O wake-up scheme is enabled by triggering the I/O daisy chain
> control (Wu clock) by
> programming a dedicated register (PRCM.PM_WKEN_WKUP[16] EN_IO_CHAIN)
> in
> the PRCM module.Software must wait for the I/O daisy chain to
> complete
> before it transitions the PER domain to a
> nonfunctional state. This is done by polling a dedicated status bit
> in
> the PRCM module
> (PRCM.PM_WKST_WKUP[16] ST_IO_CHAIN). This status bit must be cleared
> by
> software when the bit is
> read to 1."
I am working on adding Daisy chain support via hwmod mux framework.
I will post the patches soon.

Regards
Vishwa