2011/6/22 Mark Brown broonie@opensource.wolfsonmicro.com:
On Wed, Jun 22, 2011 at 04:56:26PM +0900, Adam Jiang wrote:
2011/6/21 Mark Brown broonie@opensource.wolfsonmicro.com:
On Mon, Jun 20, 2011 at 04:15:38PM +0900, Adam Jiang wrote:
If the hardware does not physically support mute then this should be emulated in software. ?In the case of the WM8903 the device does not have a specific capture mute control, though extremely low gains are supported for the Capture Volume control which function as a mute so you could also set minimum Capture Volume.
I got the idea about software emulation for mute. Would you please point me to an example about device/driver where hardware capture switch is supported?
grep "Capture Switch" sound/soc/codecs/*.c
I got wm8904 as an example. In the driver of wm8904, there is a control defined as
SOC_DOUBLE_R("Capture Switch", WM8904_ANALOGUE_LEFT_INPUT_0, WM8904_ANALOGUE_RIGHT_INPUT_0, 7, 1, 0),
And, there is also its peer in wm8903 defined as
SOC_SINGLE("Left Input PGA Switch", WM8903_ANALOGUE_LEFT_INPUT_0, 7, 1, 1),
I checked their datasheet and I found there is no difference between the registers of ANALOGUE_LEFT_INPUT_0. Both of them have one bit for mute/unmute analog input path. Comparing SOC_SINGLE and SOC_DOUBLE macro, one snd_soc_control structure is missing in former. What is exactly the difference between the two definitions. Is there any docs to describe how could I use these macros in soc.h?