[alsa-devel] [PATCH 1/4] ASoC: Optimise DSP performance for WM8994
Change the chip defaults to optimise performance of some of the DSP functionality.
Signed-off-by: Mark Brown broonie@opensource.wolfsonmicro.com --- sound/soc/codecs/wm8994.c | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c index a87046a..2dc9daa 100644 --- a/sound/soc/codecs/wm8994.c +++ b/sound/soc/codecs/wm8994.c @@ -3082,10 +3082,11 @@ static int wm8994_set_bias_level(struct snd_soc_codec *codec,
case SND_SOC_BIAS_STANDBY: if (codec->bias_level == SND_SOC_BIAS_OFF) { - /* Tweak DC servo configuration for improved - * performance. */ + /* Tweak DC servo and DSP configuration for + * improved performance. */ snd_soc_write(codec, 0x102, 0x3); snd_soc_write(codec, 0x56, 0x3); + snd_soc_write(codec, 0x817, 0); snd_soc_write(codec, 0x102, 0);
/* Discharge LINEOUT1 & 2 */
Any subsequent revisions will have these configuration changes applied by default.
Signed-off-by: Mark Brown broonie@opensource.wolfsonmicro.com --- sound/soc/codecs/wm8994.c | 20 +++++++++++++------- 1 files changed, 13 insertions(+), 7 deletions(-)
diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c index 2dc9daa..522249d 100644 --- a/sound/soc/codecs/wm8994.c +++ b/sound/soc/codecs/wm8994.c @@ -95,6 +95,7 @@ struct wm8994_priv {
struct wm8994_micdet micdet[2];
+ int revision; struct wm8994_pdata *pdata; };
@@ -3070,6 +3071,8 @@ static int wm8994_set_dai_sysclk(struct snd_soc_dai *dai, static int wm8994_set_bias_level(struct snd_soc_codec *codec, enum snd_soc_bias_level level) { + struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); + switch (level) { case SND_SOC_BIAS_ON: break; @@ -3084,10 +3087,14 @@ static int wm8994_set_bias_level(struct snd_soc_codec *codec, if (codec->bias_level == SND_SOC_BIAS_OFF) { /* Tweak DC servo and DSP configuration for * improved performance. */ - snd_soc_write(codec, 0x102, 0x3); - snd_soc_write(codec, 0x56, 0x3); - snd_soc_write(codec, 0x817, 0); - snd_soc_write(codec, 0x102, 0); + if (wm8994->revision < 4) { + /* Tweak DC servo and DSP configuration for + * improved performance. */ + snd_soc_write(codec, 0x102, 0x3); + snd_soc_write(codec, 0x56, 0x3); + snd_soc_write(codec, 0x817, 0); + snd_soc_write(codec, 0x102, 0); + }
/* Discharge LINEOUT1 & 2 */ snd_soc_update_bits(codec, WM8994_ANTIPOP_1, @@ -3920,7 +3927,6 @@ static int wm8994_codec_probe(struct platform_device *pdev) struct wm8994_priv *wm8994; struct snd_soc_codec *codec; int i; - u16 rev;
if (wm8994_codec) { dev_err(&pdev->dev, "Another WM8994 is registered\n"); @@ -3974,8 +3980,8 @@ static int wm8994_codec_probe(struct platform_device *pdev) wm8994->reg_cache[i] = 0;
/* Set revision-specific configuration */ - rev = snd_soc_read(codec, WM8994_CHIP_REVISION); - switch (rev) { + wm8994->revision = snd_soc_read(codec, WM8994_CHIP_REVISION); + switch (wm8994->revision) { case 2: case 3: wm8994->hubs.dcs_codes = -5;
Signed-off-by: Mark Brown broonie@opensource.wolfsonmicro.com --- MAINTAINERS | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/MAINTAINERS b/MAINTAINERS index 13608bd..c1ec5d6 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -6303,7 +6303,7 @@ S: Supported F: drivers/input/touchscreen/*wm97* F: include/linux/wm97xx.h
-WOLFSON MICROELECTRONICS PMIC DRIVERS +WOLFSON MICROELECTRONICS DRIVERS M: Mark Brown broonie@opensource.wolfsonmicro.com T: git git://opensource.wolfsonmicro.com/linux-2.6-audioplus W: http://opensource.wolfsonmicro.com/node/8 @@ -6319,8 +6319,8 @@ F: drivers/watchdog/wm83*_wdt.c F: include/linux/mfd/wm831x/ F: include/linux/mfd/wm8350/ F: include/linux/mfd/wm8400* -F: sound/soc/codecs/wm8350.* -F: sound/soc/codecs/wm8400.* +F: include/sound/wm????.h +F: sound/soc/codecs/wm*
X.25 NETWORK LAYER M: Andrew Hendry andrew.hendry@gmail.com
Signed-off-by: Mark Brown broonie@opensource.wolfsonmicro.com --- MAINTAINERS | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/MAINTAINERS b/MAINTAINERS index c1ec5d6..db8155e 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -6305,6 +6305,7 @@ F: include/linux/wm97xx.h
WOLFSON MICROELECTRONICS DRIVERS M: Mark Brown broonie@opensource.wolfsonmicro.com +M: Ian Lartey ian@opensource.wolfsonmicro.com T: git git://opensource.wolfsonmicro.com/linux-2.6-audioplus W: http://opensource.wolfsonmicro.com/node/8 S: Supported
On Fri, 2010-08-13 at 14:39 +0100, Mark Brown wrote:
Change the chip defaults to optimise performance of some of the DSP functionality.
Signed-off-by: Mark Brown broonie@opensource.wolfsonmicro.com
All
Acked-by: Liam Girdwood lrg@slimlogic.co.uk
Will get to the 2.6.37 patches later...
participants (2)
-
Liam Girdwood
-
Mark Brown