At Thu, 10 Jan 2013 08:41:13 +0800, Raymond Yau wrote:
This patch extends the capability of the auto-mic feature. Instead of limiting the automatic input-source selection only to the mics (internal, external and dock mics), allow it for generic inputs, e.g. switching between the rear line-in and the front mic.
The logic is to check the attribute and location of input pins, and enable the automatic selection feature only if all such pins are in different locations (e.g. internal, front, rear, etc) and line-in or mic pins. That is, if multiple input pins are assigned to a single location, the feature isn't enabled because we don't know the priority.
(You may wonder why this restriction doesn't exist for the headphone automute. The reason is that the output case is different from the input: the input source is an exclusive selection while the output can be multiplexed.)
Note that, for avoiding regressions, the line-in auto switching feature isn't activated as default. It has to be set explicitly via spec->line_in_auto_switch flag in a fixup code.
Is this feature automatically disabled when rear Mic or line in Jack is retasked as output ?
Does it mean that multi channel capture will not be implemented since it is conflict with both dynamic adc switching and auto Mic selection ?
The recent jack detection codes (at least the code in test/hda-gen-parser branch) checks the direction of the pinctl. If a multi-io pin is configured as output, the mic autoswitch will ignore this pin. Vice versa for the auto-mute and headphone-as-mic case.
Takashi