Created attachment 256097 [details] full dmesg I've installed Fedora Workstation 26 alpha on HP Chromebook 13 G1 and sound input/output doesn't work. Kernel is actually distro kernel 4.11.0-0.rc7.git0.1.fc26.x86_64, soundcard is: [ojab@localhost ~]$ sudo lspci -s 00:1f.3 -vvv 00:1f.3 Multimedia audio controller: Intel Corporation Sunrise Point-LP HD Audio (rev 21) Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+ Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 64, Cache Line Size: 64 bytes Interrupt: pin A routed to IRQ 275 Region 0: Memory at d112c000 (64-bit, non-prefetchable) [size=16K] Region 4: Memory at d1110000 (64-bit, non-prefetchable) [size=64K] Capabilities: [50] Power Management version 3 Flags: PMEClk- DSI- D1- D2- AuxCurrent=55mA PME(D0-,D1-,D2-,D3hot+,D3cold+) Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME- Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit+ Address: 00000000fee0f00c Data: 4172 Kernel driver in use: snd_hda_intel Kernel modules: snd_hda_intel, snd_soc_skl There is a warning is dmesg, I think it's relevant: snd_hda_intel 0000:00:1f.3: no codecs initialized Sound is obviously works fine in ChromeOS.
Try to blacklist snd-hda-intel and try snd-soc-skl instead. Any difference?
Created attachment 256099 [details] full dmesg with blacklisted snd_hda_intel Still nothing, in dmesg: [ 5.028077] snd_soc_skl 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915]) [ 5.190002] snd_soc_skl 0000:00:1f.3: Direct firmware load for 9d70-CORE-COREBOOT-0-tplg.bin failed with error -2 [ 5.190006] snd_soc_skl 0000:00:1f.3: tplg fw 9d70-CORE-COREBOOT-0-tplg.bin load failed with -2 [ 5.193593] snd_soc_skl 0000:00:1f.3: Direct firmware load for dfw_sst.bin failed with error -2 [ 5.193596] snd_soc_skl 0000:00:1f.3: Fallback tplg fw dfw_sst.bin load failed with -2 [ 5.193650] snd_soc_skl 0000:00:1f.3: Failed to init topology! [ 5.193687] snd_soc_skl 0000:00:1f.3: ASoC: failed to probe component -2 [ 5.193750] skl_n88l25_s4567 skl_n88l25_s4567: ASoC: failed to instantiate card -2 [ 5.193851] skl_n88l25_s4567: probe of skl_n88l25_s4567 failed with error -2
hmm, I assume that -2 is ENOENT and snd_soc_skl tries to load some firmware that's shipped with CheomeOS? If needed, I can try to reinstall ChromeOS, fetch firmware there and copy it into Fedora.
...and there is no 9d70-CORE-COREBOOT-0-tplg.bin file in ChromeOS, only dfw_sst.bin. With it copied there still no audio and dmesg says: [ 3107.406418] snd_soc_skl 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915]) [ 3107.421789] skl_n88l25_s4567 skl_n88l25_s4567: ASoC: CPU DAI System Pin not registered [ 3107.427870] HDMI HDA Codec ehdaudio1D2: Max dais supported: 3 [ 3107.428417] skl_n88l25_s4567 skl_n88l25_s4567: ASoC: CODEC DAI intel-hdmi-hifi1 not registered
Note that, though it uses request_firmware(), it's not looking for a firmware file. It's the Skylake audio "topology" file, and it seems to be model-specific.
Yes, it's a model-specific, but a kind of firmware file, after all. It renders the audio topology matching with the hardware implementation. Vinod, Liam, how is the upstreaming status of this stuff?
(In reply to Takashi Iwai from comment #6) > Yes, it's a model-specific, but a kind of firmware file, after all. It > renders the audio topology matching with the hardware implementation. > > Vinod, Liam, how is the upstreaming status of this stuff? the base skl tppology which we use on ref boards is already upstream. I can ask and find the topology file and send for testing
oja can you send outputs of below: lsmod |grep snd make sure SND_SOC_INTEL_SKL_NAU88L25_SSM4567_MACH and SND_SOC_INTEL_SKL_NAU88L25_MAX98357A_MACH are enabled. SKL chromebooks have these two variants, so we need to find the right one here :) Also $ ls /sys/bus/acpi/devices/ would help too
Created attachment 256101 [details] topology bin
Created attachment 256103 [details] UCM file
base don log provided (thanks) was able to figure out the machine is skl_n88l25_s4567. So uploaded the topology bin and ucm file, please install the bin to /lib/firmware/ and reboot. Card should get created. Let me know how it goes and we can upstream this file as well
Created attachment 256121 [details] Topology bin from ChromeOS Still no luck with provided topology bin, no cards are created with snd_hda_intel blacklisted or not. Attaching dfw_sst.bin from ChromeOS for the reference. AFAIU UCM file should be placed somewhere into /usr/share/alsa/ucm, if it's missing (or has wrong name/etc) and topology bin is exist in /lib/firmware -- sound card w/ outputs still should be created or not?
Created attachment 256123 [details] HiFi.conf from ChromeOS
UCM config from ChromeOS: $ cat /mnt/chromeos/usr/share/alsa/ucm/sklnau8825adi/sklnau8825adi.conf Comment "Glados internal card" SectionUseCase."HiFi" { File "HiFi.conf" Comment "Default" } I'm not sure that it's proper file, since "Glados" is the codename of another chromebook, but cdev is the same as in your HiFi.conf, so I assume it's the same sound part of soc. I've tested all combinations of dfw_sst.bin/HiFi.conf (from ChromeOS/from bugzilla) and it doesn't work.
(In reply to ojab from comment #12) > Created attachment 256121 [details] > Topology bin from ChromeOS > > Still no luck with provided topology bin, no cards are created with > snd_hda_intel blacklisted or not. Can you provide me with the log with this binary installed > > Attaching dfw_sst.bin from ChromeOS for the reference. Did you try using it, if so please do provide the log > > AFAIU UCM file should be placed somewhere into /usr/share/alsa/ucm, if it's > missing (or has wrong name/etc) and topology bin is exist in /lib/firmware > -- sound card w/ outputs still should be created or not? UCM is for configuration of playback patch for rendering audio, so that partwill come later after card is created
After some more experiments ALSA now shows "HDA Intel PCH" card with "Intel Skylake HDMI" chip and 5 * S/PDIF outputs even with dfw_sst.bin removed, but still no sound in speakers/headphones. Will attach dmesg with not blacklisted snd_hda_intel shortly.
Created attachment 256125 [details] dmesg with topology bin from ChromeOS
Created attachment 256127 [details] dmesg with topology bin from bugzilla
Created attachment 256129 [details] dmesg with /lib/firmware/dfw_sst.bin removed Looks like topology bin is cached somewhere or something like that, I see no difference between all three cases :/
hi looks like the blacklisting is not done properly as snd_hda_intel is getting loaded, can you check [ 5.219307] input: HDA Intel PCH HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:1f.3/sound/card0/input5 [ 5.219387] input: HDA Intel PCH HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:1f.3/sound/card0/input6 [ 5.219460] input: HDA Intel PCH HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:1f.3/sound/card0/input7 [ 5.219523] input: HDA Intel PCH HDMI/DP,pcm=9 as /devices/pci0000:00/0000:00:1f.3/sound/card0/input8 [ 5.219596] input: HDA Intel PCH HDMI/DP,pcm=10 as /devices/pci0000:00/0000:00:1f.3/sound/card0/input9 this is trace from snd_hda_intel
oh, snd_hda_intel should still be blacklisted. Will provide proper dmesg in a minute.
Created attachment 256131 [details] dmesg with topology bin from ChromeOS
Created attachment 256133 [details] dmesg with topology bin from bugzilla
If (with ChromeOS topology) I `modprobe snd-soc-skl_nau88l25_ssm4567` (which should provide missing "CODEC DAI ssm4567-hifi", I assume) and then `rmmod && modprobe snd_soc_skl`, I'm getting: [ 55.548596] snd_soc_skl 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915]) [ 55.562667] skl_n88l25_s4567 skl_n88l25_s4567: ASoC: CPU DAI System Pin not registered [ 55.562837] skl_n88l25_s4567 skl_n88l25_s4567: ASoC: CPU DAI System Pin not registered [ 55.568191] HDMI HDA Codec ehdaudio1D2: Max dais supported: 3 [ 55.568222] skl_n88l25_s4567 skl_n88l25_s4567: ASoC: CODEC DAI intel-hdmi-hifi1 not registered [ 55.568364] skl_n88l25_s4567 skl_n88l25_s4567: ASoC: CODEC DAI intel-hdmi-hifi1 not registered
(In reply to ojab from comment #24) > If (with ChromeOS topology) I `modprobe snd-soc-skl_nau88l25_ssm4567` (which > should provide missing "CODEC DAI ssm4567-hifi", I assume) and then `rmmod > && modprobe snd_soc_skl`, I'm getting: > > [ 55.548596] snd_soc_skl 0000:00:1f.3: bound 0000:00:02.0 (ops > i915_audio_component_bind_ops [i915]) > [ 55.562667] skl_n88l25_s4567 skl_n88l25_s4567: ASoC: CPU DAI System Pin > not registered > [ 55.562837] skl_n88l25_s4567 skl_n88l25_s4567: ASoC: CPU DAI System Pin > not registered > [ 55.568191] HDMI HDA Codec ehdaudio1D2: Max dais supported: 3 > [ 55.568222] skl_n88l25_s4567 skl_n88l25_s4567: ASoC: CODEC DAI > intel-hdmi-hifi1 not registered > [ 55.568364] skl_n88l25_s4567 skl_n88l25_s4567: ASoC: CODEC DAI > intel-hdmi-hifi1 not registered With both binaries it is loading ChromeOS binary, please make sure you remove that before trying the one I provided.
Both files are named dfw_sst.bin, so it's impossible to have it both installed. Also logs is different for different binaries.
Meanwhile I've built/installed vanilla kernel 4.11-rc8, logs are the same.
Freshly compiled ChromiumOS also has no sound, the error is the same as in comment#24 :/ Unfortunately I can't figure out how can I boot Fedora using kernel from ChromiumOS checkout so far and AFAIU I can't boot anything but ChromeOS using kernel from ChromeOS (due to signature verification), so I'm going to try to compile ChromiumOS with the same kernel commit as ChromeOS using,
Created attachment 256187 [details] dmesg from ChromeOS with working sound
Vinod, could you provide me with topology.conf from which your topology bin was generated?
Created attachment 256353 [details] topology binary topology binary
Created attachment 256355 [details] UCM file
Still >[ 20.481573] snd_soc_skl 0000:00:1f.3: ASoC: invalid manifest size with latest binary. I assume that loading of topology v4 is broken, so you'll have to use alsa-1.1.3 for generating topology v5 that can be loaded with current kernels.
Created attachment 256357 [details] Corresponding conf file
(and I'm not sure that generated v5 topology bin will be correct, see http://mailman.alsa-project.org/pipermail/alsa-devel/2017-May/120422.html)
(In reply to ojab from comment #35) > (and I'm not sure that generated v5 topology bin will be correct, see > http://mailman.alsa-project.org/pipermail/alsa-devel/2017-May/120422.html) This command should work. #alsatplg -c <attached-conf> -o tplg.bin Copy the generated topology binary to /lib/firmware/dfw_sst.bin
Created attachment 256359 [details] working HiFi.conf AH, missed conf file. Thanks! With topology generated using alsa-{lib,util}-1.1.3 sound is working on vanill-4.11.0 yay! UCM file a bit off (version that works is attached, sound is played using output with highest PlaybackPriority) and I can't get sound switching from Speakers to Headphones if headphones is attached so far, but overall it works!
(In reply to ojab from comment #37) > Created attachment 256359 [details] > working HiFi.conf > > AH, missed conf file. Thanks! > With topology generated using alsa-{lib,util}-1.1.3 sound is working on > vanill-4.11.0 yay! > > UCM file a bit off (version that works is attached, sound is played using > output with highest PlaybackPriority) and I can't get sound switching from > Speakers to Headphones if headphones is attached so far, but overall it > works! Does the playback work on Headphone as well? If it works fine, I can send the topology conf upstream.
Yeah, Headphone also works.
(In reply to ojab from comment #37) > > AH, missed conf file. Thanks! > With topology generated using alsa-{lib,util}-1.1.3 sound is working on > vanill-4.11.0 yay! Can you share the procedure how you get the sound working? Other than generated topology binary (@Subhransu), what else has it to be done?