ASoC: TWL4030: Helper to check chip default registers
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>
This commit is contained in:
parent
ee4ccac7ce
commit
9fdcc0f72a
@ -243,6 +243,25 @@ static void twl4030_codec_enable(struct snd_soc_codec *codec, int enable)
|
|||||||
udelay(10);
|
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)
|
static void twl4030_init_chip(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
struct snd_soc_device *socdev = platform_get_drvdata(pdev);
|
struct snd_soc_device *socdev = platform_get_drvdata(pdev);
|
||||||
@ -252,8 +271,12 @@ static void twl4030_init_chip(struct platform_device *pdev)
|
|||||||
u8 reg, byte;
|
u8 reg, byte;
|
||||||
int i = 0;
|
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 */
|
/* 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_REG_APLL_CTL);
|
||||||
twl4030_write_reg_cache(codec, TWL4030_REG_APLL_CTL, byte);
|
twl4030_write_reg_cache(codec, TWL4030_REG_APLL_CTL, byte);
|
||||||
|
|
||||||
|
@ -43,6 +43,7 @@ struct twl4030_setup_data {
|
|||||||
unsigned int ramp_delay_value;
|
unsigned int ramp_delay_value;
|
||||||
unsigned int sysclk;
|
unsigned int sysclk;
|
||||||
unsigned int offset_cncl_path;
|
unsigned int offset_cncl_path;
|
||||||
|
unsigned int check_defaults:1;
|
||||||
unsigned int hs_extmute:1;
|
unsigned int hs_extmute:1;
|
||||||
void (*set_hs_extmute)(int mute);
|
void (*set_hs_extmute)(int mute);
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user