Skip to content

Commit

Permalink
ASoC: TWL4030: Helper to check chip default registers
Browse files Browse the repository at this point in the history
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>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
  • Loading branch information
Peter Ujfalusi authored and Liam Girdwood committed May 31, 2010
1 parent ee4ccac commit 9fdcc0f
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 1 deletion.
25 changes: 24 additions & 1 deletion sound/soc/codecs/twl4030.c
Original file line number Diff line number Diff line change
Expand Up @@ -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_dbg(codec->dev, "Checking TWL audio default configuration\n");
for (i = 1; i <= TWL4030_REG_MISC_SET_2; i++) {
twl_i2c_read_u8(TWL4030_MODULE_AUDIO_VOICE, &val, i);
if (val != twl4030_reg[i]) {
difference++;
dev_dbg(codec->dev,
"Reg 0x%02x: chip: 0x%02x driver: 0x%02x\n",
i, val, twl4030_reg[i]);
}
}
dev_dbg(codec->dev, "Found %d non maching registers. %s\n",
difference, difference ? "Not OK" : "OK");
}

static void twl4030_init_chip(struct platform_device *pdev)
{
struct snd_soc_device *socdev = platform_get_drvdata(pdev);
Expand All @@ -252,8 +271,12 @@ static void twl4030_init_chip(struct platform_device *pdev)
u8 reg, byte;
int i = 0;

/* Check defaults, if instructed before anything else */
if (setup && setup->check_defaults)
twl4030_check_defaults(codec);

/* Refresh APLL_CTL register from HW */
twl4030_i2c_read_u8(TWL4030_MODULE_AUDIO_VOICE, &byte,
twl_i2c_read_u8(TWL4030_MODULE_AUDIO_VOICE, &byte,
TWL4030_REG_APLL_CTL);
twl4030_write_reg_cache(codec, TWL4030_REG_APLL_CTL, byte);

Expand Down
1 change: 1 addition & 0 deletions sound/soc/codecs/twl4030.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ struct twl4030_setup_data {
unsigned int ramp_delay_value;
unsigned int sysclk;
unsigned int offset_cncl_path;
unsigned int check_defaults:1;
unsigned int hs_extmute:1;
void (*set_hs_extmute)(int mute);
};
Expand Down

0 comments on commit 9fdcc0f

Please sign in to comment.