[PATCH 2/7] OMAP2+: mux: Enable wakeup for wakeup enable requested pads
Paul Walmsley
paul at pwsan.com
Tue Mar 8 14:16:54 EST 2011
Hi
On Tue, 8 Mar 2011, Kevin Hilman wrote:
> Tony Lindgren <tony at atomide.com> writes:
>
> > * Govindraj <govindraj.ti at gmail.com> [110308 03:43]:
> >>
> >> I am not sure whether now we can control read/writes to pad_mux from any driver
> >> interface and I think we have to go through mux framework for any
> >> read/writes to mux.
> >
> > Sure, the drivers should not mess with those registers directly.
> >
> >> with this I cant control pad wake up capabilities with sysfs as done
> >> earlier in serial.c
> >> now control to read/write to pad is outside scope of the driver
> >> interface as omap_hwmod_mux
> >> is the one that takes decision for driver with mux values provided
> >> during omap_hwmod_mux_init.
> >
> > The sysfs interface to control this should still be from the drivers.
> > Sounds like we need some way to set the wakeup flags before pm_runtime_put
> > is called.
>
> Exactly. Driver's can currently check device_may_wakeup(dev) to
> determine if they *should* set wakeup flags, but currently, we don't
> have a clean way to pass the info down to core code.
>
> One possible option (albeit hacky) is for the omap_hwmod_mux code to
> check device_may_wakeup() itself, and set the bits accordingly. This
> means drivers don't have to do anything, but drivers also loose control
> of enabling/disabling wakeups.
>
> I think what we need are two omap_device-level APIs for wakeups.
>
> One for enable/disable of wakeups (both module-level and IO-ring, the
> driver should not care about the difference between the two):
Probably this should only control IO-ring/chain wakeups. Enabling
asynchronous wakeups will need to be handled differently...
> int omap_device_[enable|disable](struct platform_device *pdev);
>
> bool omap_device_wakeup_occured(struct platform_device *pdev);
>
> As OMAP-specific APIs, both of these should of course be called through
> pdata function pointers.
Looks good to me, modulo the obvious corrections, although the names of
these functions should probably say "ioring_wakeup" rather than just
"wakeup" to make it clear what exactly they are intended to do.
As we discussed in chat, we can drop the existing
omap_hwmod_{enable,disable}_wakeup() functions, since these were
effectively obsoleted by commit 9980ce53 ("OMAP: hwmod: Enable module
wakeup if in smartidle").
- Paul
More information about the linux-arm-kernel
mailing list