On Tue, Apr 22, 2014 at 10:17:35AM +0530, Santhosh N M wrote:
Why do you not want to do power management?
It is because of the following reasons,
- Due the complication in hardware (where codec is inbuilt to the SoC) and
the software architecture, we decided to leave all the AMPs, DIFFINs and SINGINs ON always. All the MUXs are pre-configured (in codec driver) to route audio to the right path. So there is no real need to switch OFF any of the power components on the device!
That doesn't sound like a generic upstreamable driver that'll work on other systems...
- The device is AC powered and power consumption is not a problem here
(unlike battery operated devices)
This isn't done purely for power reasons, it's also done so that an idle device doesn't end up playing the noise floor which generally is audible and so that changing use cases can be done without generating noise.
This approach worked when I tested quickly. However, I'm slightly worried when you say " it's likely things will break". Not sure if there could lead to some memory leak in the long run.
Not memory leaks particularly, but the framework does assume that DAPM is there and may fail to do things like start the audio streams. If it's holding together for you it'll probably not break but I'd expect you'll run into trouble if you try to move forward to a new kernel version, and possibly if you change what you're doing on your current one.
Do you have any recommendation to achieve this in the right way?
If you really want the audio stream up all the time I'd just play audio all the time from your sound server.