ASoC: wm5110: Add post SYSCLK register patch for rev D chip
Subsystems (3)
PATCH 1/1 ASoC: wm5110: Add post SYSCLK register patch for rev D chip
Certain registers require patching after the SYSCLK has been brought up add support for this into the CODEC driver.
Signed-off-by Charles Keepax <[email protected]>
--- sound/soc/codecs/wm5110.c | 43 ++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 42 insertions(+), 1 deletions(-)
sound/soc/codecs/wm5110.c +42 -1
@@ -37,6 +37,47 @@ struct wm5110_priv {struct arizona_fll fll[2 ]; }; +static const struct reg_default wm5110_sysclk_revd_patch[] = { + {0x3093 ,0x1001 }, + {0x30E3 ,0x1301 }, + {0x3133 ,0x1201 }, + {0x3183 ,0x1501 }, + {0x31D3 ,0x1401 }, +}; + +static int wm5110_sysclk_ev (struct snd_soc_dapm_widget *w, +struct snd_kcontrol *kcontrol,int event) +{ +struct snd_soc_codec *codec = w->codec; +struct arizona *arizona =dev_get_drvdata (codec->dev->parent); +struct regmap *regmap = codec->control_data; +const struct reg_default *patch =NULL ; +int i, patch_size; + +switch (arizona->rev) { +case 3 : + patch = wm5110_sysclk_revd_patch; + patch_size =ARRAY_SIZE (wm5110_sysclk_revd_patch); +break ; +default : +return 0 ; + } + +switch (event) { +case SND_SOC_DAPM_POST_PMU : +if (patch) +for (i =0 ; i < patch_size; i++) +regmap_write (regmap, patch[i].reg, + patch[i].def); +break ; + +default : +break ; + } + +return 0 ; +} + static DECLARE_TLV_DB_SCALE(ana_tlv, 0, 100, 0); static DECLARE_TLV_DB_SCALE(eq_tlv, -1200, 100, 0); static DECLARE_TLV_DB_SCALE(digital_tlv, -6400, 50, 0);
@@ -400,7 +441,7 @@ static const struct snd_kcontrol_new wm5110_aec_loopback_mux =static const struct snd_soc_dapm_widget wm5110_dapm_widgets[] = {SND_SOC_DAPM_SUPPLY ("SYSCLK" ,ARIZONA_SYSTEM_CLOCK_1 ,ARIZONA_SYSCLK_ENA_SHIFT , -0 ,NULL ,0 ), +0 , wm5110_sysclk_ev,SND_SOC_DAPM_POST_PMU ),SND_SOC_DAPM_SUPPLY ("ASYNCCLK" ,ARIZONA_ASYNC_CLOCK_1 ,ARIZONA_ASYNC_CLK_ENA_SHIFT ,0 ,NULL ,0 ), SND_SOC_DAPM_SUPPLY("OPCLK", ARIZONA_OUTPUT_SYSTEM_CLOCK,
Signature · 1 line
1.7.2.5
Quoted 2 lines · Charles Keepax
Certain registers require patching after the SYSCLK has been brought up add support for this into the CODEC driver.
Applied, thanks.