On Thu, May 17, 2012 at 01:21:50PM -0700, Patrick Lai wrote:
On 5/14/2012 1:34 AM, Mark Brown wrote:
This sounds like expected behaviour, if the widgets aren't marked as ignoring suspend then they will be suspended.
As CODEC is getting more complicated and more widgets would be defined, I don't think it's scalable to mark ignore suspend per widget.
You only have to do this for widgets on the edge of the graph, it's just the same input to output algorithm that's applied as normal but with a subset of input and output widgets being considered.
No, the whole point here is to suspend. If we did that we'd never suspend any active streams.
If so, what is purpose of ignore_suspend? My problem is that active stream which has ignore_suspend flag set ends up suspended because an inactive stream without ignore_suspend flag set happens to be using same CODEC but different digital audio interface. I don't think it's the right behavior. DAPM should maintain widget usage reference. Only If all CODEC DAIs that are using given widget are going to suspend should DAPM go ahead power off the widget.
The suspend of the device is somewhat orthogonal to the suspend of the device as a whole - the device as a whole is suspended if there are no active widgets and the widgets will go inactive if they're not part of an active path. You will at the very least always have to mark inputs and outputs that are connected to the DAIs as ignoring suspend, adding something to flag the DAI widgets now we have those should be trivial.