---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 -- 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