diff options
author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2012-04-26 15:06:56 -0400 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2012-04-27 13:42:10 -0400 |
commit | af31a227e1abee06ccd88c2c52f4fb36b786cebe (patch) | |
tree | 1d828dbc011d4c8871f851ba4dcf6a3fe45995c7 /sound/soc/codecs/wm8994.c | |
parent | f57b8488bc39f7674cbadf4e2db05a7db8ffa660 (diff) |
ASoC: wm_hubs: Special case headphones for digital paths in more use cases
The optimisations which we can do with caching the headphone DCS result in
wm_hubs have only been enabled in cases where class W is enabled. However,
there are more use cases which can benefit from the cache, especially with
WM8994 series devices with their more advanced digital routing.
Rather than keying off the class W information from the CODECs have a
check in wm_hubs for a suitable path and use that to determine if we can
deploy our headphone optimisations.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'sound/soc/codecs/wm8994.c')
-rw-r--r-- | sound/soc/codecs/wm8994.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c index a22c29386243..2475e1c10334 100644 --- a/sound/soc/codecs/wm8994.c +++ b/sound/soc/codecs/wm8994.c | |||
@@ -998,13 +998,11 @@ static void wm8994_update_class_w(struct snd_soc_codec *codec) | |||
998 | WM8994_CP_DYN_PWR | | 998 | WM8994_CP_DYN_PWR | |
999 | WM8994_CP_DYN_SRC_SEL_MASK, | 999 | WM8994_CP_DYN_SRC_SEL_MASK, |
1000 | source | WM8994_CP_DYN_PWR); | 1000 | source | WM8994_CP_DYN_PWR); |
1001 | wm8994->hubs.class_w = true; | ||
1002 | 1001 | ||
1003 | } else { | 1002 | } else { |
1004 | dev_dbg(codec->dev, "Class W disabled\n"); | 1003 | dev_dbg(codec->dev, "Class W disabled\n"); |
1005 | snd_soc_update_bits(codec, WM8994_CLASS_W_1, | 1004 | snd_soc_update_bits(codec, WM8994_CLASS_W_1, |
1006 | WM8994_CP_DYN_PWR, 0); | 1005 | WM8994_CP_DYN_PWR, 0); |
1007 | wm8994->hubs.class_w = false; | ||
1008 | } | 1006 | } |
1009 | } | 1007 | } |
1010 | 1008 | ||
@@ -3609,7 +3607,7 @@ static int wm8994_codec_probe(struct snd_soc_codec *codec) | |||
3609 | wm8994->hubs.dcs_readback_mode = 2; | 3607 | wm8994->hubs.dcs_readback_mode = 2; |
3610 | wm8994->hubs.no_series_update = 1; | 3608 | wm8994->hubs.no_series_update = 1; |
3611 | wm8994->hubs.hp_startup_mode = 1; | 3609 | wm8994->hubs.hp_startup_mode = 1; |
3612 | wm8994->hubs.no_cache_class_w = true; | 3610 | wm8994->hubs.no_cache_dac_hp_direct = true; |
3613 | wm8994->fll_byp = true; | 3611 | wm8994->fll_byp = true; |
3614 | 3612 | ||
3615 | switch (wm8994->revision) { | 3613 | switch (wm8994->revision) { |