[alsa-devel] WM8993: amp control, amplifying pops.

Mark Brown broonie at opensource.wolfsonmicro.com
Tue May 11 13:12:26 CEST 2010

On Tue, May 11, 2010 at 11:07:38AM +0800, Zhang JieJing wrote:
> 2010/5/10 Mark Brown <broonie at opensource.wolfsonmicro.com>

> Hi, Our kernel version is 2.6.28, but port the wm8993 driver to this
> version's kernel.

Normally in these situations I would recommend backporting the entire
ASoC subsystem - it's fairly well isolated from the rest of the kernel
so this tends to be reasonably straightforward.

> the amplifying pop is when system resume, the speaker will hear one
> short pop noise,
> also, this short pop noise will hear the first time driver is opened.

When exactly do you hear this noise?  The WM8993 driver will not power
up the speaker outputs unless they are in use and there are no audio
paths configured to the speakers by default.  Are you configuring an
audio path in the CODEC at system startup?  Which mode do you have the
WM8993 speaker drivers in - class D or class A/B?

It might be helpful to capture all the register writes done when
bringing up the WM8993.  Also, if you are configuring an audio path from
an analogue input you should check that there is no DC offset present in
the input signal - if there is one then the WM8993 will reproduce it
into the output path, which would result in an audible noise.

> In 53242c68333570631a15a69842851b458eca3d99,
> there was a line:
> +		ret = wm8993_set_fll(codec->dai, 0, wm8993->fll_src,
> +				     fll_fref, fll_fout);
> +

> but in lastest version of wm8993 driver, wm8993_set_fll will do
> nothing we the second parameter(fll_id) is 0,  so, I don't know what
> this function want to do,
> Cound you give me some idea ?

This parameter specifies which of the FLLs/PLLs in the device to
configure.  Since the WM8993 has only one FLL it just ignores this
parameter, other devices with multiple FLLs such as the WM8994 need this
to select between the FLLs.

More information about the Alsa-devel mailing list