On 2019/12/17 上午5:00, Jaroslav Kysela wrote:
Dne 16. 12. 19 v 13:51 Hui Wang napsal(a):
On the machines with HDA codec, the sof driver will use the legacy hda codec driver, as a result, most mixer controls are same as before.
There are only 2 difference: - HDMI pcm index is 3, 4 and 5 instead of 3, 7, 8... - dmic is on device 6, 7 instead of 0
After applying this patch, we will get (aplay -L): hdmi:CARD=sofsklhdacard,DEV=0 sof-skl_hda_card, HDMI Audio Output hdmi:CARD=sofsklhdacard,DEV=1 sof-skl_hda_card, HDMI Audio Output hdmi:CARD=sofsklhdacard,DEV=2 sof-skl_hda_card, HDMI Audio Output
and (arecord -L): dmic:CARD=sofsklhdacard,DEV=0 sof-skl_hda_card, Digital Mic connected to the PCH directly dmic:CARD=sofsklhdacard,DEV=1 sof-skl_hda_card, Digital Mic connected to the PCH directly
Then we could add minor changes in the pulseaudio configuration, after that, all output and input devices will work under pulseaudio.
This is a supplement for ucm, the ucm for sof driver has higher priority than this conf, if there is no ucm for sof driver, this conf will take effect.
Exactly. The dmic definitions should not be a standard in my eyes. I would not like to accept this. I can accept the standard definitions for the playback devices for this driver, but UCM will replace everything. It's better to define the special PA config for now until we resolve all the UCM issues like:
http://people.redhat.com/~jkysela/sof/carbon-x1-pulse.tar.gz2
The 2nd PA UCM patchset which is working with the current UCM in ALSA's repos for this hardware:
https://gitlab.freedesktop.org/pulseaudio/pulseaudio/merge_requests/217
But it is just a start. There are plenty unresolved abstraction issues with this.
Yes, ucm is more powerful and should be the default choice for users with sof driver+hda codec. But there are 2 issues:
1. too complicated, not easy to backport all patches to old version linux distribution, like ubuntu 18.04 LTS (with alsa-lib 1.1.3 and PA v11.1)
2. no generic ucm confs for most machines, need to write ucm confs machine by machine (existing PA can runtime decide/build a machine's conf, no need to write conf machine by machine)
After we have sth like below: (if the name dmic is not good, we could change it to be a more reasonable name)
dmic:CARD=sofsklhdacard,DEV=0 sof-skl_hda_card, Digital Mic connected to the PCH directly dmic:CARD=sofsklhdacard,DEV=1 sof-skl_hda_card, Digital Mic connected to the PCH directly
We just need to do a simple change in the PA's conf, the audio basically could work (include the audio-device-selection-popup-dialogue and mic-mute led on Lenovo machine). Of course it doesn't work perfectly so far, because dmic is not connected to the codec, so it is in a standalone source in the PA, we need to write some code to handle it.
This is the simple change in the PA's conf: https://pastebin.ubuntu.com/p/Tnmkr6D2Kv/
Thanks,
Hui.
Jaroslav