On Tue, 2010-05-25 at 14:34 +0300, Peter Ujfalusi wrote:
Since the twl4030 codec driver supports different version of the PM chip, a helper function can come handy, which can check the driver's default versus the chip values.
Signed-off-by: Peter Ujfalusi peter.ujfalusi@nokia.com
sound/soc/codecs/twl4030.c | 23 +++++++++++++++++++++++ sound/soc/codecs/twl4030.h | 1 + 2 files changed, 24 insertions(+), 0 deletions(-)
diff --git a/sound/soc/codecs/twl4030.c b/sound/soc/codecs/twl4030.c index 08f24de..4220c8d 100644 --- a/sound/soc/codecs/twl4030.c +++ b/sound/soc/codecs/twl4030.c @@ -243,6 +243,25 @@ static void twl4030_codec_enable(struct snd_soc_codec *codec, int enable) udelay(10); }
+static inline void twl4030_check_defaults(struct snd_soc_codec *codec) +{
- int i, difference = 0;
- u8 val;
- dev_info(codec->dev, "Checking TWL audio default configuration\n");
- for (i = 1; i <= TWL4030_REG_MISC_SET_2; i++) {
twl4030_i2c_read_u8(TWL4030_MODULE_AUDIO_VOICE, &val, i);
if (val != twl4030_reg[i]) {
difference++;
dev_info(codec->dev,
"Reg 0x%02x: chip: 0x%02x driver: 0x%02x\n",
i, val, twl4030_reg[i]);
}
- }
- dev_info(codec->dev, "Found %d non maching registers. %s\n",
matching
difference, difference ? "Not OK" : "OK");
+}
static void twl4030_init_chip(struct platform_device *pdev) { struct snd_soc_device *socdev = platform_get_drvdata(pdev); @@ -252,6 +271,10 @@ static void twl4030_init_chip(struct platform_device *pdev) u8 reg, byte; int i = 0;
- /* Check defaults, if instructed before anythiing else */
- if (setup && setup->check_defaults)
twl4030_check_defaults(codec);
Is this purely for information/debug purposes ?
Why do we need to check default vales at init(). Is there another driver changing the audio codec registers ?
Thanks
Liam