On Thu, Nov 26, 2009 at 04:03:51PM +0000, Mark Brown wrote:
On Thu, Nov 26, 2009 at 04:48:07PM +0100, Daniel Mack wrote:
- I only added VA for now because when VD is disabled, we need to restore all codec information, and I can't test that here. We can still add that later, right?
I'd suggest just adding it blind. The code is very simple and it's much easier to fix if there's a problem than it is to go through retrofit the additional regulator hookups to boards if the other supplies are added later.
You can test the flow by defining a fixed voltage regulator with no soft control, obviously it won't actually turn the power on or off but the code will run.
Ok. I couldn't find a dummy framework for such cases, and registering a full regulator just to satisfy the codec code seems a litte cumbersome. Is there anything like that? Or should there be?
Just fail if you can't get the supply. If you can't get the regulator then you've no analogue supply and the CODEC isn't going to work terribly well. Currently the assumption is that if you've built in the regulator API you intend to use it, otherwise it's very hard to tell if the operation failed and broke something or failed because the API isn't in use.
Hmm - that will break all existing platforms that use this codec and need regulators for other drivers. But ok, I'm fine with forcing everyone to innovation :)
struct cs4270_private *cs4270 = i2c_get_clientdata(client); struct snd_soc_codec *codec = &cs4270->codec;
- cs4270_set_bias_level(codec, SND_SOC_BIAS_OFF);
- return snd_soc_suspend_device(codec->dev);
}
This patch isn't against current for-2.6.33 - those functions have been removed. Better to do the bias management in the ASoC suspend/resume callbacks anyway so that it's joined up with the register save/restore. Until we get the pm_link stuff in the next merge window there's no link between the I2C bus suspend and the platform bus suspend for the ASoC core.
Ok, done - see the new patch below. I did use the regulator_bulk functions in the first place, but due to the VA special case, I had to extract the single regulators again from the bulk struct which turned out to mess the code quite a bit. Looks better this way.
Thanks, Daniel