
On Wed, 2012-02-08 at 13:27 +0000, Liam Girdwood wrote:
On Wed, 2012-02-08 at 11:20 +0000, Mark Brown wrote:
On Wed, Feb 08, 2012 at 10:57:30AM +0000, Liam Girdwood wrote:
On Wed, 2012-02-08 at 16:06 +0530, Vinod Koul wrote:
We want to dynamical turn off this clock when not is use and turn on only when codec is using. So I was thinking of turning this ON in codecs .set_bias_level callback, but how to propagate this into machine driver?
It's usually done in the machine driver hw_params() since at this point we know the rate, format etc that can have a bearing on the clock configuration. You could switch it OFF in machine hw_free().
For modern devices set_bias_level() is often a better choice if you're only going to do one of that or hw_params(), especially on the shutdown paths - devices these days typically need the clocks for a lot more stuff. hw_params() by itself obviously has issues for analogue only paths too.
I'd generally expect to see new machine drivers doing this stuff in set_bias_level() and possibly also having additional startup code in hw_params() depending on how flexible the clocking is.
The scope of set_bias_level() is now starting to increase to more than just the card bias power. It may be worthwhile at some point to rename it to cover all possibilities.
Well not really. In order to power up codec and digital logic, we need to feed the input clock. So any activity which is required for this should be performed here. Remember this is not configuring the clock but to ensure that its turned ON so that codec can power up.