Also using a Lenovo X1 7th generation. I can confirm that everything
works using 5.3.0-20. I suspect that I've compared to Joel above me,
taken a few extra steps:

* Added snd_hda_intel and snd_soc_skl to /etc/modprobe/blacklist.conf

* Added the alsa-ucm files from [1] to /usr/share/alsa/ucm/sof-
skl_hda_card

* Added this sof topology file [2] from a Lenovo employee to
/usr/lib/firmware/intel/sof-tplg

I have the following devices displayed using `arecord -l`

card 0: sofsklhdacard [sof-skl_hda_card], device 0: HDA Analog (*) []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: sofsklhdacard [sof-skl_hda_card], device 1: HDA Digital (*) []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: sofsklhdacard [sof-skl_hda_card], device 6: DMIC32 (*) []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: sofsklhdacard [sof-skl_hda_card], device 7: DMIC16 (*) []
  Subdevices: 1/1
  Subdevice #0: subdevice #0

In pulseaudio I have the following sources

    index: 4
        name: 
<alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_0_5__sink.monitor>
        driver: <module-alsa-card.c>
        flags: DECIBEL_VOLUME LATENCY DYNAMIC_LATENCY
        state: SUSPENDED
        suspend cause: IDLE
        priority: 1030
        volume: front-left: 65536 / 100% / 0,00 dB,   front-right: 65536 / 100% 
/ 0,00 dB
                balance 0,00
        base volume: 65536 / 100% / 0,00 dB
        volume steps: 65537
        muted: no
        current latency: 0,00 ms
        max rewind: 0 KiB
        sample spec: s16le 2ch 48000Hz
        channel map: front-left,front-right
                     Stereo
        used by: 0
        linked by: 0
        configured latency: 0,00 ms; range is 0,50 .. 341,00 ms
        monitor_of: 2
        card: 2 <alsa_card.pci-0000_00_1f.3-platform-skl_hda_dsp_generic>
        module: 9
        properties:
                device.description = "Monitor of Cannon Point-LP High 
Definition Audio Controller HDMI3/DP3 Output"
                device.class = "monitor"
                alsa.card = "0"
                alsa.card_name = "sof-skl_hda_card"
                alsa.long_card_name = 
"LENOVO-20QDS0A600-ThinkPadX1Carbon7th-20QDS0A600"
                alsa.driver_name = "snd_soc_skl_hda_dsp"
                device.bus_path = 
"pci-0000:00:1f.3-platform-skl_hda_dsp_generic"
                sysfs.path = 
"/devices/pci0000:00/0000:00:1f.3/skl_hda_dsp_generic/sound/card0"
                device.bus = "pci"
                device.vendor.id = "8086"
                device.vendor.name = "Intel Corporation"
                device.product.id = "9dc8"
                device.product.name = "Cannon Point-LP High Definition Audio 
Controller"
                device.string = "0"
                module-udev-detect.discovered = "1"
                device.icon_name = "audio-card-pci"
    index: 5
        name: 
<alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_0_4__sink.monitor>
        driver: <module-alsa-card.c>
        flags: DECIBEL_VOLUME LATENCY DYNAMIC_LATENCY
        state: SUSPENDED
        suspend cause: IDLE
        priority: 1030
        volume: front-left: 65536 / 100% / 0,00 dB,   front-right: 65536 / 100% 
/ 0,00 dB
                balance 0,00
        base volume: 65536 / 100% / 0,00 dB
        volume steps: 65537
        muted: no
        current latency: 0,00 ms
        max rewind: 0 KiB
        sample spec: s16le 2ch 48000Hz
        channel map: front-left,front-right
                     Stereo
        used by: 0
        linked by: 0
        configured latency: 0,00 ms; range is 0,50 .. 341,00 ms
        monitor_of: 3
        card: 2 <alsa_card.pci-0000_00_1f.3-platform-skl_hda_dsp_generic>
        module: 9
        properties:
                device.description = "Monitor of Cannon Point-LP High 
Definition Audio Controller HDMI2/DP2 Output"
                device.class = "monitor"
                alsa.card = "0"
                alsa.card_name = "sof-skl_hda_card"
                alsa.long_card_name = 
"LENOVO-20QDS0A600-ThinkPadX1Carbon7th-20QDS0A600"
                alsa.driver_name = "snd_soc_skl_hda_dsp"
                device.bus_path = 
"pci-0000:00:1f.3-platform-skl_hda_dsp_generic"
                sysfs.path = 
"/devices/pci0000:00/0000:00:1f.3/skl_hda_dsp_generic/sound/card0"
                device.bus = "pci"
                device.vendor.id = "8086"
                device.vendor.name = "Intel Corporation"
                device.product.id = "9dc8"
                device.product.name = "Cannon Point-LP High Definition Audio 
Controller"
                device.string = "0"
                module-udev-detect.discovered = "1"
                device.icon_name = "audio-card-pci"
    index: 6
        name: 
<alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_0_3__sink.monitor>
        driver: <module-alsa-card.c>
        flags: DECIBEL_VOLUME LATENCY DYNAMIC_LATENCY
        state: SUSPENDED
        suspend cause: IDLE
        priority: 1030
        volume: front-left: 65536 / 100% / 0,00 dB,   front-right: 65536 / 100% 
/ 0,00 dB
                balance 0,00
        base volume: 65536 / 100% / 0,00 dB
        volume steps: 65537
        muted: no
        current latency: 0,00 ms
        max rewind: 0 KiB
        sample spec: s16le 2ch 48000Hz
        channel map: front-left,front-right
                     Stereo
        used by: 0
        linked by: 0
        configured latency: 0,00 ms; range is 0,50 .. 341,00 ms
        monitor_of: 4
        card: 2 <alsa_card.pci-0000_00_1f.3-platform-skl_hda_dsp_generic>
        module: 9
        properties:
                device.description = "Monitor of Cannon Point-LP High 
Definition Audio Controller HDMI1/DP1 Output"
                device.class = "monitor"
                alsa.card = "0"
                alsa.card_name = "sof-skl_hda_card"
                alsa.long_card_name = 
"LENOVO-20QDS0A600-ThinkPadX1Carbon7th-20QDS0A600"
                alsa.driver_name = "snd_soc_skl_hda_dsp"
                device.bus_path = 
"pci-0000:00:1f.3-platform-skl_hda_dsp_generic"
                sysfs.path = 
"/devices/pci0000:00/0000:00:1f.3/skl_hda_dsp_generic/sound/card0"
                device.bus = "pci"
                device.vendor.id = "8086"
                device.vendor.name = "Intel Corporation"
                device.product.id = "9dc8"
                device.product.name = "Cannon Point-LP High Definition Audio 
Controller"
                device.string = "0"
                module-udev-detect.discovered = "1"
                device.icon_name = "audio-card-pci"
    index: 7
        name: 
<alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofsklhdacard_0__sink.monitor>
        driver: <module-alsa-card.c>
        flags: DECIBEL_VOLUME LATENCY DYNAMIC_LATENCY
        state: SUSPENDED
        suspend cause: IDLE
        priority: 1030
        volume: front-left: 65536 / 100% / 0,00 dB,   front-right: 65536 / 100% 
/ 0,00 dB
                balance 0,00
        base volume: 65536 / 100% / 0,00 dB
        volume steps: 65537
        muted: no
        current latency: 0,00 ms
        max rewind: 0 KiB
        sample spec: s16le 2ch 48000Hz
        channel map: front-left,front-right
                     Stereo
        used by: 0
        linked by: 0
        configured latency: 0,00 ms; range is 0,50 .. 341,00 ms
        monitor_of: 5
        card: 2 <alsa_card.pci-0000_00_1f.3-platform-skl_hda_dsp_generic>
        module: 9
        properties:
                device.description = "Monitor of Cannon Point-LP High 
Definition Audio Controller Speaker + Headphone"
                device.class = "monitor"
                alsa.card = "0"
                alsa.card_name = "sof-skl_hda_card"
                alsa.long_card_name = 
"LENOVO-20QDS0A600-ThinkPadX1Carbon7th-20QDS0A600"
                alsa.driver_name = "snd_soc_skl_hda_dsp"
                device.bus_path = 
"pci-0000:00:1f.3-platform-skl_hda_dsp_generic"
                sysfs.path = 
"/devices/pci0000:00/0000:00:1f.3/skl_hda_dsp_generic/sound/card0"
                device.bus = "pci"
                device.vendor.id = "8086"
                device.vendor.name = "Intel Corporation"
                device.product.id = "9dc8"
                device.product.name = "Cannon Point-LP High Definition Audio 
Controller"
                device.string = "0"
                module-udev-detect.discovered = "1"
                device.icon_name = "audio-card-pci"
  * index: 8
        name: 
<alsa_input.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_0_6__source>
        driver: <module-alsa-card.c>
        flags: HARDWARE DECIBEL_VOLUME LATENCY DYNAMIC_LATENCY
        state: SUSPENDED
        suspend cause: IDLE
        priority: 9030
        volume: front-left: 65536 / 100% / 0,00 dB,   front-right: 65536 / 100% 
/ 0,00 dB
                balance 0,00
        base volume: 65536 / 100% / 0,00 dB
        volume steps: 65537
        muted: no
        current latency: 0,00 ms
        max rewind: 0 KiB
        sample spec: s16le 2ch 48000Hz
        channel map: front-left,front-right
                     Stereo
        used by: 0
        linked by: 0
        configured latency: 0,00 ms; range is 0,50 .. 341,00 ms
        card: 2 <alsa_card.pci-0000_00_1f.3-platform-skl_hda_dsp_generic>
        module: 9
        properties:
                alsa.resolution_bits = "16"
                device.api = "alsa"
                device.class = "sound"
                alsa.class = "generic"
                alsa.subclass = "generic-mix"
                alsa.name = ""
                alsa.id = "DMIC32 (*)"
                alsa.subdevice = "0"
                alsa.subdevice_name = "subdevice #0"
                alsa.device = "6"
                alsa.card = "0"
                alsa.card_name = "sof-skl_hda_card"
                alsa.long_card_name = 
"LENOVO-20QDS0A600-ThinkPadX1Carbon7th-20QDS0A600"
                alsa.driver_name = "snd_soc_skl_hda_dsp"
                device.bus_path = 
"pci-0000:00:1f.3-platform-skl_hda_dsp_generic"
                sysfs.path = 
"/devices/pci0000:00/0000:00:1f.3/skl_hda_dsp_generic/sound/card0"
                device.bus = "pci"
                device.vendor.id = "8086"
                device.vendor.name = "Intel Corporation"
                device.product.id = "9dc8"
                device.product.name = "Cannon Point-LP High Definition Audio 
Controller"
                device.string = "hw:0,6"
                device.buffering.buffer_size = "65472"
                device.buffering.fragment_size = "16320"
                device.access_mode = "mmap+timer"
                device.profile.name = "HiFi: hw:0,6: source"
                device.profile.description = "DMIC Stereo"
                device.description = "Cannon Point-LP High Definition Audio 
Controller DMIC Stereo"
                module-udev-detect.discovered = "1"
                device.icon_name = "audio-card-pci"
        ports:
                [In] Dmic: DMIC Stereo (priority 100, latency offset 0 usec, 
available: unknown)
                        properties:
                                
        active port: <[In] Dmic>
    index: 9
        name: 
<alsa_input.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_0_0__source>
        driver: <module-alsa-card.c>
        flags: HARDWARE DECIBEL_VOLUME LATENCY DYNAMIC_LATENCY
        state: SUSPENDED
        suspend cause: IDLE
        priority: 9030
        volume: front-left: 61681 /  94% / -1,58 dB,   front-right: 61681 /  
94% / -1,58 dB
                balance 0,00
        base volume: 65536 / 100% / 0,00 dB
        volume steps: 65537
        muted: no
        current latency: 0,00 ms
        max rewind: 0 KiB
        sample spec: s16le 2ch 48000Hz
        channel map: front-left,front-right
                     Stereo
        used by: 0
        linked by: 0
        configured latency: 0,00 ms; range is 0,50 .. 341,00 ms
        card: 2 <alsa_card.pci-0000_00_1f.3-platform-skl_hda_dsp_generic>
        module: 9
        properties:
                alsa.resolution_bits = "16"
                device.api = "alsa"
                device.class = "sound"
                alsa.class = "generic"
                alsa.subclass = "generic-mix"
                alsa.name = ""
                alsa.id = "HDA Analog (*)"
                alsa.subdevice = "0"
                alsa.subdevice_name = "subdevice #0"
                alsa.device = "0"
                alsa.card = "0"
                alsa.card_name = "sof-skl_hda_card"
                alsa.long_card_name = 
"LENOVO-20QDS0A600-ThinkPadX1Carbon7th-20QDS0A600"
                alsa.driver_name = "snd_soc_skl_hda_dsp"
                device.bus_path = 
"pci-0000:00:1f.3-platform-skl_hda_dsp_generic"
                sysfs.path = 
"/devices/pci0000:00/0000:00:1f.3/skl_hda_dsp_generic/sound/card0"
                device.bus = "pci"
                device.vendor.id = "8086"
                device.vendor.name = "Intel Corporation"
                device.product.id = "9dc8"
                device.product.name = "Cannon Point-LP High Definition Audio 
Controller"
                device.string = "hw:0,0"
                device.buffering.buffer_size = "65472"
                device.buffering.fragment_size = "16320"
                device.access_mode = "mmap+timer"
                device.profile.name = "HiFi: hw:0,0: source"
                device.profile.description = "Headset Mic"
                device.description = "Cannon Point-LP High Definition Audio 
Controller Headset Mic"
                module-udev-detect.discovered = "1"
                device.icon_name = "audio-card-pci"
        ports:
                [In] Headset: Headset Mic (priority 300, latency offset 0 usec, 
available: no)
                        properties:
                                
        active port: <[In] Headset>
    index: 10
        name: <alsa_input.hw_0_7>
        driver: <module-alsa-source.c>
        flags: HARDWARE DECIBEL_VOLUME LATENCY DYNAMIC_LATENCY
        state: SUSPENDED
        suspend cause: IDLE
        priority: 9030
        volume: front-left: 65536 / 100% / 0,00 dB,   front-right: 65536 / 100% 
/ 0,00 dB
                balance 0,00
        base volume: 65536 / 100% / 0,00 dB
        volume steps: 65537
        muted: no
        current latency: 0,00 ms
        max rewind: 0 KiB
        sample spec: s16le 2ch 16000Hz
        channel map: front-left,front-right
                     Stereo
        used by: 0
        linked by: 0
        configured latency: 0,00 ms; range is 0,50 .. 1023,00 ms
        module: 26
        properties:
                alsa.resolution_bits = "16"
                device.api = "alsa"
                device.class = "sound"
                alsa.class = "generic"
                alsa.subclass = "generic-mix"
                alsa.name = ""
                alsa.id = "DMIC16 (*)"
                alsa.subdevice = "0"
                alsa.subdevice_name = "subdevice #0"
                alsa.device = "7"
                alsa.card = "0"
                alsa.card_name = "sof-skl_hda_card"
                alsa.long_card_name = 
"LENOVO-20QDS0A600-ThinkPadX1Carbon7th-20QDS0A600"
                alsa.driver_name = "snd_soc_skl_hda_dsp"
                device.bus_path = 
"pci-0000:00:1f.3-platform-skl_hda_dsp_generic"
                sysfs.path = 
"/devices/pci0000:00/0000:00:1f.3/skl_hda_dsp_generic/sound/card0"
                device.bus = "pci"
                device.vendor.id = "8086"
                device.vendor.name = "Intel Corporation"
                device.product.id = "9dc8"
                device.product.name = "Cannon Point-LP High Definition Audio 
Controller"
                device.string = "hw:0,7"
                device.buffering.buffer_size = "65472"
                device.buffering.fragment_size = "16320"
                device.access_mode = "mmap+timer"
                device.description = "Cannon Point-LP High Definition Audio 
Controller"
                device.icon_name = "audio-input-microphone-pci"

I need to select in Pulseaudio the `DMIC stereo` input to get working
microphone. I did have to boost most of the channels in alsamixer record
to get acceptable recording level. If I select the "Cannon Point-LP High
Definition Audio Controller" I get nothing.

I can also list all pulseaudio sinks and alsa playback devices if you
like. Notably all HDMI/DP channels show up.

So once again, both playback and the DMIC work with the 5.3.0-20. But
only if you manual update the ALSA-ucm files, blacklist the modules. It
could be that the Lenovo provided topology file is not required.

[1] 
https://github.com/alsa-project/alsa-ucm-conf/tree/master/ucm/sof-skl_hda_card
[2] 
https://forums.lenovo.com/t5/Ubuntu/Guide-X1-Carbon-7th-Generation-Ubuntu-compatability/m-p/4507050/highlight/true#M2873

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1848490

Title:
  eoan: alsa/sof: Enable SOF_HDA link and codec

Status in linux package in Ubuntu:
  Fix Committed
Status in linux source package in Eoan:
  Fix Committed

Bug description:

  [Impact]
  We tested the EOAN kernel on the LENOVO or Dell machines which have
  dmic directly connnected to PCH, the dmic didn't work.

  [Fix]
  We need to enable SOF_HDA link and codec, then the sof driver
  and Legacy HDA driver work together to make the dmic work.

  [Test Case]
  Install the latest 19.10 image, build a new kernel with this
  patch and replace the existing kernel, After installing the blacklist
  package (blacklist snd_hda_intel and snd_soc_skl) and ucm package,
  the dmic and all output devices (speaker/hdmi) work.

  [Regression Risk]
  Low, these configs are already enabled in the oem-b-osp1 kernel
  for a long time, and we tested it on many lenovo/dell machines witch
  have or have no dmic, all worked well.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1848490/+subscriptions

-- 
Mailing list: https://launchpad.net/~kernel-packages
Post to     : kernel-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kernel-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to