On Thu, 2012-01-19 at 11:24 -0800, Kevin Hilman wrote: > Tomi Valkeinen <tomi.valkeinen@xxxxxx> writes: > > Now, you already said using pm_runtime_put_sync version is the correct > > way when suspending. But to use that I need to either always use > > pm_runtime_put_sync, or add an extra boolean which marks that we're > > suspending, and pass that around, or make it a DSS global variable. > > I'm not sure why can't you use the sync version just in the suspend > callback? To do that the suspend callback should be the one that disables the device and calls pm_runtime_suspend. With DSS that's not the case, it's the panel drivers that are in charge of enabling/disabling DSS (by calling appropriate functions in omapdss). The only thing that the omapdss suspend callback does is to call the normal disable functions on the display drivers. This leads to calls to disable-functions on the dss hwmod drivers, and then pm_runtime_put calls. But at the point the pm_runtime funcs are called, the code has no idea that we're actually doing system suspend. Thus I'd need to pass that information somehow, probably with a global variable. And while that's not difficult to do, it sure feels a bit ugly. I think I'll just change the pm_runtime_put calls to sync versions for now. I imagine the perf impact with the change should be negligible. I'll return to this issue after the devtree adaptation has been made, as it changes the child-parent relations of the dss related devices, and perhaps managing the PM states will also get a bit easier. Tomi
Attachment:
signature.asc
Description: This is a digitally signed message part