Hi,
while debugging a problem reported by a Thinkpad user, we found that there are fundamental problems in the current Conexant auto-parser code.
1. EAPDs on older chips don't correspond to the pin as 1:1.
A single EAPD can influence on the whole outputs, so we can't turn it off simply even when the assigned pin isn't used.
2. There is only a single input-amp in audio-in widgets.
This is contradicting against what I was informed before. There is only one capture level in each audio-in widget no matter how many sources are connected to it. For example, if an ADC has the connection to an internal mic and an external mic, the volume in ADC is only one, no individual amp per connection, unlike other widgets.
For the first issue, a fix is just keep EAPD turned on for such chips. This simplifies the previous David's fix.
About the second part, I'm not 100% sure whether it's correct to all Conexant chips. But this sounds more natural, and I always wondered about the old implementation.
Can anyone confirm that the patches work properly? The initial test was done with a machine with cx20549, so tests with other codecs like cx20551, cx20561, and cx2058x would be appreciated.
After applying the patch, load snd-hda-intel with model=auto option. You'll have a single "Capture" volume (or two capture volumes like "Mic" and "Internal Mic", which correspond to different ADCs). Check the different recording source and whether the capture volume(s) really changes the recording level properly.
thanks,
Takashi