mirror of
https://github.com/torvalds/linux.git
synced 2024-11-02 18:21:49 +00:00
ASoC: STA32x: Preserve reserved register bits
Chip documentation explicitly requires that the reset values of reserved register bits are left untouched. It is possible there are differences between STA326 and STA328 or future chip revisions in these bits, and clobbering them might cause malfunction. Signed-off-by: Johannes Stezenbach <js@sig21.net> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
parent
7968843915
commit
889ebae537
@ -756,6 +756,22 @@ static int sta32x_probe(struct snd_soc_codec *codec)
|
||||
for (i = 0; i < STA32X_REGISTER_COUNT; i++)
|
||||
snd_soc_cache_write(codec, i, sta32x_regs[i]);
|
||||
|
||||
/* preserve reset values of reserved register bits */
|
||||
snd_soc_cache_write(codec, STA32X_CONFC,
|
||||
codec->hw_read(codec, STA32X_CONFC));
|
||||
snd_soc_cache_write(codec, STA32X_CONFE,
|
||||
codec->hw_read(codec, STA32X_CONFE));
|
||||
snd_soc_cache_write(codec, STA32X_CONFF,
|
||||
codec->hw_read(codec, STA32X_CONFF));
|
||||
snd_soc_cache_write(codec, STA32X_MMUTE,
|
||||
codec->hw_read(codec, STA32X_MMUTE));
|
||||
snd_soc_cache_write(codec, STA32X_AUTO1,
|
||||
codec->hw_read(codec, STA32X_AUTO1));
|
||||
snd_soc_cache_write(codec, STA32X_AUTO3,
|
||||
codec->hw_read(codec, STA32X_AUTO3));
|
||||
snd_soc_cache_write(codec, STA32X_C3CFG,
|
||||
codec->hw_read(codec, STA32X_C3CFG));
|
||||
|
||||
/* FIXME enable thermal warning adjustment and recovery */
|
||||
snd_soc_update_bits(codec, STA32X_CONFA,
|
||||
STA32X_CONFA_TWAB | STA32X_CONFA_TWRB, 0);
|
||||
|
Loading…
Reference in New Issue
Block a user