Bug 200963 - no sound on ASUS Chromebook Flip C302CA
Summary: no sound on ASUS Chromebook Flip C302CA
Status: NEW
Alias: None
Product: Drivers
Classification: Unclassified
Component: Sound(ALSA) (show other bugs)
Hardware: Intel Linux
: P1 normal
Assignee: Jaroslav Kysela
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2018-08-28 17:54 UTC by hayato
Modified: 2019-07-12 05:45 UTC (History)
3 users (show)

See Also:
Kernel Version: 4.18.5
Tree: Mainline
Regression: No


Attachments
full dmesg on ArchLinux (44.86 KB, text/plain)
2018-08-28 17:54 UTC, hayato
Details
topology file for skl (24.61 KB, application/octet-stream)
2019-05-08 12:08 UTC, Amadeusz Sławiński
Details
topology file for skl v2 (21.25 KB, application/octet-stream)
2019-05-08 13:55 UTC, Amadeusz Sławiński
Details
topology file from ChromeOS (157.68 KB, application/octet-stream)
2019-05-08 22:34 UTC, hayato
Details
test tplg 1 (35.90 KB, application/octet-stream)
2019-05-09 12:18 UTC, Amadeusz Sławiński
Details
test tplg 2 (39.23 KB, application/octet-stream)
2019-05-09 12:19 UTC, Amadeusz Sławiński
Details
test tplg 3 (39.23 KB, application/octet-stream)
2019-05-10 08:56 UTC, Amadeusz Sławiński
Details
Hacked-together sklnau8825max HiFi.conf (1.80 KB, text/plain)
2019-05-14 05:25 UTC, Joseph Long
Details
ChromeOS HiFi.conf (2.22 KB, text/plain)
2019-05-22 23:35 UTC, Joseph Long
Details
dmesg with dyndbg and fw v969 (203.33 KB, text/plain)
2019-05-30 22:49 UTC, Joseph Long
Details
dmesg with dyndbg and fw v3402 (203.98 KB, text/plain)
2019-05-30 22:49 UTC, Joseph Long
Details
skl topology (42.16 KB, application/octet-stream)
2019-06-12 14:04 UTC, Amadeusz Sławiński
Details
dmesg with dyndbg and fw v3402 (updated tplg) (193.67 KB, text/plain)
2019-06-12 15:41 UTC, Joseph Long
Details

Description hayato 2018-08-28 17:54:52 UTC
Created attachment 278175 [details]
full dmesg on ArchLinux

Hi, I'm using ArchLinux with kernel 4.18.5-arch1-1-ARCH on ASUS Chromebook Flip C302CA and I got no sound. 

I believe the problem is very similar to https://bugzilla.kernel.org/show_bug.cgi?id=195593 
however, C302CA uses a different audio chip and the topology.conf for HP Chromebook 13 G1 does not work.

Some info that may help:

 dmesg | grep snd
[    5.040661] snd_soc_skl 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])
[    5.413668] snd_soc_skl 0000:00:1f.3: Direct firmware load for 9d70-CORE-COREBOOT-0-tplg.bin failed with error -2
[    5.413679] snd_soc_skl 0000:00:1f.3: tplg fw 9d70-CORE-COREBOOT-0-tplg.bin load failed with -2, falling back to dfw_sst.bin
[    5.413747] snd_soc_skl 0000:00:1f.3: Direct firmware load for dfw_sst.bin failed with error -2
[    5.413754] snd_soc_skl 0000:00:1f.3: Fallback tplg fw dfw_sst.bin load failed with -2
[    5.417061] snd_soc_skl 0000:00:1f.3: Failed to init topology!
[    5.419954] snd_soc_skl 0000:00:1f.3: ASoC: failed to probe component -2


 lsmod | grep snd
snd_skl_nau88l25_max98357a    24576  0
snd_soc_hdac_hdmi      32768  1 snd_skl_nau88l25_max98357a
snd_soc_dmic           16384  0
snd_soc_skl_ssp_clk    16384  0
snd_soc_skl           118784  1 snd_soc_skl_ssp_clk
snd_soc_skl_ipc        73728  1 snd_soc_skl
snd_soc_sst_ipc        16384  1 snd_soc_skl_ipc
snd_soc_sst_dsp        36864  1 snd_soc_skl_ipc
snd_hda_ext_core       28672  2 snd_soc_hdac_hdmi,snd_soc_skl
snd_soc_acpi           16384  1 snd_soc_skl
snd_soc_nau8825        53248  1 snd_skl_nau88l25_max98357a
snd_hda_core           94208  3 snd_hda_ext_core,snd_soc_hdac_hdmi,snd_soc_skl
snd_soc_max98357a      16384  0
snd_soc_core          270336  6 snd_skl_nau88l25_max98357a,snd_soc_hdac_hdmi,snd_soc_max98357a,snd_soc_skl,snd_soc_dmic,snd_soc_nau8825
snd_compress           24576  1 snd_soc_core
ac97_bus               16384  1 snd_soc_core
snd_pcm_dmaengine      16384  1 snd_soc_core
snd_pcm               131072  8 snd_skl_nau88l25_max98357a,snd_hda_ext_core,snd_soc_hdac_hdmi,snd_soc_core,snd_soc_skl,snd_hda_core,snd_soc_nau8825,snd_pcm_dmaengine
snd_timer              36864  1 snd_pcm
snd                    98304  4 snd_timer,snd_compress,snd_soc_core,snd_pcm
soundcore              16384  1 snd


 lspci -s 00:1f.3 -vv
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 16
	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: 0000000000000000  Data: 0000
	Kernel driver in use: snd_soc_skl
	Kernel modules: snd_hda_intel, snd_soc_skl
Comment 1 Chris Osgood 2019-01-27 21:37:50 UTC
I can get sound working using the HP topology mentioned above. However, it sounds like it is severely over-driving the audio resulting in distortion/clipping. Volume must be kept below 25% and even at low volume it is distorted.

Seems like maybe some minor changes to the topology could get it working. Where can we find the information necessary to do that?

To get it working I used my instructions outlined here:
https://github.com/GalliumOS/galliumos-distro/issues/379#issuecomment-415823541

The firmware used is the same (23120 bytes) for the HP mentioned above. I can also compile it and get the same firmware.

```alsatplg -c SKL_ssm4567_nau8825_topology.conf -o dfw_sst.bin```
Comment 2 Joseph Long 2019-03-13 23:55:59 UTC
I'm also affected by this issue and agree that it appears to be very similar to the bug linked in the parent post. It seems that the issue was ultimately resolved with help from Intel employees, but I'm not sure how to get in touch with the responsible parties today. Probably would be better coming from a kernel developer!

I also came across https://mailman.alsa-project.org/pipermail/alsa-devel/2017-May/120422.html (which appears to be the same "ojab" as in the issue referenced in the original post). If it would be helpful, I can try to extract the topology bin from my Chromebook. It sounds like decompilation never worked successfully, though.
Comment 3 Amadeusz Sławiński 2019-05-08 12:08:37 UTC
Created attachment 282671 [details]
topology file for skl

Hi,
can you check what happens with attached topology file?
Comment 4 hayato 2019-05-08 13:31:12 UTC
(In reply to Amadeusz Sławiński from comment #3)
> Created attachment 282671 [details]
> topology file for skl
> 
> Hi,
> can you check what happens with attached topology file?

The topology file does not seem to work. I see errors like

skl_n88l25_m98357a skl_n88l25_m98357a: ASoC: Failed to add route iDisp3_out -> direct -> iDisp3 Tx
...
snd_soc_skl 0000:00:1f.3: ASoC: can't open interface DMIC Pin: -22
...
snd_soc_skl 0000:00:1f.3: ASoC: can't open interface DMIC Pin: -16

from demsg

Here is the complete output from alsa-info.sh
http://alsa-project.org/db/?f=9b86058c3e1dc345ec203ce8e13dbc428d3d0b04
Comment 5 Amadeusz Sławiński 2019-05-08 13:55:41 UTC
Created attachment 282673 [details]
topology file for skl v2

I removed dmic entries for now, can you try with attached file.

From link you provided I can see that aplay has playback interface, have you tried if it works? Although I'm wondering if you really tested with topology I provided, as there is no "Wake on Voice" in the one I provided...

Topology file needs to be copied either to /lib/firmware/9d70-CORE-COREBOOT-0-tplg.bin or /lib/firmware/dfw_sst.bin (fallback location).
Comment 6 hayato 2019-05-08 22:04:56 UTC
New output from alsa-info.sh with topology file for skl v2

http://alsa-project.org/db/?f=2c23e6a9d964e960ea046bd3d0d19b7e235bdf83

There is an output device in pulseaudio this time but the audio is completely distorted and it sounds like white noise.
Comment 7 hayato 2019-05-08 22:34:00 UTC
Created attachment 282677 [details]
topology file from ChromeOS

There is really no publicly available topology file for this particular device, other than the one shipped with ChromeOS and the ones you just provided. The topology file from ChromeOS used to work perfectly with mainline kernel after this was committed
https://github.com/torvalds/linux/commit/ac9391daac004e12dc4e4c62e130b09f245ece2b
but for some reason it stopped working after kernel 5.0.10.

alsa-info.sh output with the topology file from ChromeOS on kernel 5.0.12
http://alsa-project.org/db/?f=dbde7965e46d54c314108dcf111184f4a84b5d45
Comment 8 Amadeusz Sławiński 2019-05-09 08:11:18 UTC
Do I understand correctly that it worked for you with chrome topology at some point in time? Any chance you could git bisect it to identify when it broke?
Comment 9 Amadeusz Sławiński 2019-05-09 12:18:28 UTC
Created attachment 282693 [details]
test tplg 1
Comment 10 Amadeusz Sławiński 2019-05-09 12:19:18 UTC
Created attachment 282695 [details]
test tplg 2

I added 2 topologies, can you also test with them?
Comment 11 hayato 2019-05-10 00:38:22 UTC
Unfortunately none of the test tplgs work
test tplg 1
http://alsa-project.org/db/?f=7f639738e4f35436281495c01f62266042d101fc

test tplg 2
http://alsa-project.org/db/?f=8b8c163ce94e99d17616b8a397d606c0c10af90f

I need more time to figure out the last kernel version that worked with chrome topology.
Comment 12 Amadeusz Sławiński 2019-05-10 08:56:09 UTC
Created attachment 282709 [details]
test tplg 3

Overall they seem to work good, ie no failures. As I understand you have no sound with them?
I attached one more topology, can you try with it?

As for bisect, did I understand correctly that it worked after https://github.com/torvalds/linux/commit/ac9391daac004e12dc4e4c62e130b09f245ece2b , you can just use this commit as a starting point and then current linux tree as reference. (Just make sure first that both of them behave as expected, first one working and second not working).
Comment 13 Joseph Long 2019-05-13 16:40:04 UTC
I had some time this weekend to set up Arch and compile 5.1.0 from git as a prelude to bisection. I tried placing both Amadeusz' 3rd topology and the ChromeOS original topology in /lib/firmware/dfw_sst.bin, but I don't get messages in dmesg indicating it's trying to load the topology so I can't confirm whether it works or doesn't. (It looks like snd_soc_skl is being loaded, so I'm not sure what else I need to do to make the kernel see it...)

http://alsa-project.org/db/?f=66ff2bfab8ef045f05e247f20daf265b12d51258

dmesg says:

    $ dmesg | grep snd
    [    3.804261] snd_hda_intel 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])
    

lsmod says:

    
    $ lsmod | grep snd
    snd_hda_codec_hdmi     69632  1
    snd_soc_skl           118784  0
    snd_soc_hdac_hda       24576  1 snd_soc_skl
    snd_hda_ext_core       36864  2 snd_soc_hdac_hda,snd_soc_skl
    snd_soc_skl_ipc        69632  1 snd_soc_skl
    snd_soc_sst_dsp        40960  1 snd_soc_skl_ipc
    snd_soc_sst_ipc        20480  1 snd_soc_skl_ipc
    snd_soc_acpi_intel_match    28672  1 snd_soc_skl
    snd_soc_acpi           16384  2 snd_soc_acpi_intel_match,snd_soc_skl
    snd_hda_intel          49152  1
    snd_soc_nau8825        61440  0
    snd_hda_codec         155648  3 snd_hda_codec_hdmi,snd_hda_intel,snd_soc_hdac_hda
    snd_soc_max98357a      16384  0
    snd_soc_core          258048  4 snd_soc_hdac_hda,snd_soc_max98357a,snd_soc_skl,snd_soc_nau8825
    snd_hwdep              16384  1 snd_hda_codec
    snd_hda_core          102400  6 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_ext_core,snd_hda_codec,snd_soc_hdac_hda,snd_soc_skl
    snd_pcm               131072  8 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_ext_core,snd_hda_codec,snd_soc_core,snd_soc_skl,snd_hda_core,snd_soc_nau8825
    snd_timer              40960  1 snd_pcm
    snd                   102400  9 snd_hda_codec_hdmi,snd_hwdep,snd_hda_intel,snd_hda_codec,snd_timer,snd_soc_core,snd_pcm
    soundcore              16384  1 snd
Comment 14 Joseph Long 2019-05-13 18:17:37 UTC
For anyone following along at home:

When trying to build ac9391daac004e12dc4e4c62e130b09f245ece2b I found I needed the patch from https://lore.kernel.org/selinux/20190225005528.28371-1-paulo@paulo.ac/ to avoid "#error New address family defined, please update secclass_map."
Comment 15 Joseph Long 2019-05-13 23:06:26 UTC
I was unable to confirm that the ChromeOS-provided topology worked at commit ac9391da, but it might have been user error on my part.

I followed the instructions from the GalliumOS bug linked above to create ALSA config files for this particular device, then copied in the third topology posted by Amadeusz. There are now new devices in alsamixer, but I cannot play audio.

alsa-info.sh:

http://alsa-project.org/db/?f=692a04914c6f6d3e5c2f999ab755168e3aee21c2

$ dmesg | grep -Pi "(skl|snd|alsa|asoc)"
[    3.544352] snd_soc_skl 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if info 0x040100
[    3.904253] [drm] Finished loading DMC firmware i915/skl_dmc_ver1_27.bin (v1.27)
[    3.928217] snd_soc_skl 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])
[    4.251769] snd_soc_skl 0000:00:1f.3: ASoC: no complete mixer IO handler for media0_in pcm cfg type (g,p,i) 259:259:4 at 0x1894
[    4.251887] snd_soc_skl 0000:00:1f.3: ASoC: no complete mixer IO handler for dmic01_hifi_in pcm cfg type (g,p,i) 259:259:4 at 0x1f7c
[    4.251970] snd_soc_skl 0000:00:1f.3: ASoC: no complete mixer IO handler for media0_out pcm cfg type (g,p,i) 259:259:4 at 0x2664
[    4.252050] snd_soc_skl 0000:00:1f.3: ASoC: no complete mixer IO handler for hdmi1_out pcm cfg type (g,p,i) 259:259:4 at 0x2d4c
[    4.252128] snd_soc_skl 0000:00:1f.3: ASoC: no complete mixer IO handler for hdmi2_out pcm cfg type (g,p,i) 259:259:4 at 0x3434
[    4.252206] snd_soc_skl 0000:00:1f.3: ASoC: no complete mixer IO handler for hdmi3_out pcm cfg type (g,p,i) 259:259:4 at 0x3b1c
[    4.252420] snd_soc_skl 0000:00:1f.3: ASoC: Parent card not yet available, widget card binding deferred
[    4.268677] skl_n88l25_m98357a skl_n88l25_m98357a: snd-soc-dummy-dai <-> System Pin mapping ok
[    4.269117] skl_n88l25_m98357a skl_n88l25_m98357a: snd-soc-dummy-dai <-> System Pin mapping ok
[    4.269602] skl_n88l25_m98357a skl_n88l25_m98357a: snd-soc-dummy-dai <-> Reference Pin mapping ok
[    4.269966] skl_n88l25_m98357a skl_n88l25_m98357a: snd-soc-dummy-dai <-> DMIC Pin mapping ok
[    4.270328] skl_n88l25_m98357a skl_n88l25_m98357a: snd-soc-dummy-dai <-> HDMI1 Pin mapping ok
[    4.272150] skl_n88l25_m98357a skl_n88l25_m98357a: snd-soc-dummy-dai <-> HDMI2 Pin mapping ok
[    4.272552] skl_n88l25_m98357a skl_n88l25_m98357a: snd-soc-dummy-dai <-> HDMI3 Pin mapping ok
[    4.272570] skl_n88l25_m98357a skl_n88l25_m98357a: HiFi <-> SSP0 Pin mapping ok
[    4.273205] skl_n88l25_m98357a skl_n88l25_m98357a: nau8825-hifi <-> SSP1 Pin mapping ok
[    4.273221] skl_n88l25_m98357a skl_n88l25_m98357a: dmic-hifi <-> DMIC01 Pin mapping ok
[    4.273240] skl_n88l25_m98357a skl_n88l25_m98357a: intel-hdmi-hifi1 <-> iDisp1 Pin mapping ok
[    4.273630] skl_n88l25_m98357a skl_n88l25_m98357a: intel-hdmi-hifi2 <-> iDisp2 Pin mapping ok
[    4.273647] skl_n88l25_m98357a skl_n88l25_m98357a: intel-hdmi-hifi3 <-> iDisp3 Pin mapping ok
[    4.273788] skl_n88l25_m98357a skl_n88l25_m98357a: ASoC: source widget Capture overwritten
[    4.276963] input: sklnau8825max Headset Jack as /devices/platform/skl_n88l25_m98357a/sound/card0/input8
[    4.277263] input: sklnau8825max HDMI/DP, pcm=4 Jack as /devices/platform/skl_n88l25_m98357a/sound/card0/input9
[    4.277556] input: sklnau8825max HDMI/DP, pcm=5 Jack as /devices/platform/skl_n88l25_m98357a/sound/card0/input10
[    4.277856] input: sklnau8825max HDMI/DP, pcm=6 Jack as /devices/platform/skl_n88l25_m98357a/sound/card0/input11
[   15.574714]  Skl Audio Port: ASoC: no backend DAIs enabled for Skl Audio Port
[   15.574759]  Skl Audio Port: ASoC: no backend DAIs enabled for Skl Audio Port


That last line is repeated many more times.
Comment 16 Joseph Long 2019-05-13 23:35:27 UTC
I just realized there were more files posted to try. The previous message is using the file from Comment #12, attachment #282709 [details] --- not the third file posted.
Comment 17 Joseph Long 2019-05-14 05:25:59 UTC
Created attachment 282755 [details]
Hacked-together sklnau8825max HiFi.conf

This is the HiFi.conf I'm using, after following the steps in the GalliumOS comments (reproduced below). Is it possible that this needs to be changed for this board as well?

wget http://apt.galliumos.org/pool/main/g/galliumos-skylake/galliumos-skylake_2.9902_all.deb
mkdir galliumos-stuff
cd galliumos-stuff
7z x -so ../galliumos-skylake_2.9902_all.deb | tar xvf -
# (switch to root or use sudo)
cp etc/modprobe.d/snd-hda-intel.conf /etc/modprobe.d/
cp lib/firmware/dfw_sst.bin /lib/firmware/
cp -r usr/share/alsa/ucm/sklnau8825adi /usr/share/alsa/ucm/sklnau8825max
mv /usr/share/alsa/ucm/sklnau8825max/sklnau8825adi.conf /usr/share/alsa/ucm/sklnau8825max/sklnau8825max.conf
sed -i 's/adi/max/g' /usr/share/alsa/ucm/sklnau8825max/HiFi.conf
mkdir /usr/share/alsa/ucm/Google-Cave-1.0-Cave
ln -s /usr/share/alsa/ucm/sklnau8825max/sklnau8825max.conf /usr/share/alsa/ucm/Google-Cave-1.0-Cave/Google-Cave-1.0-Cave.conf
Comment 18 Amadeusz Sławiński 2019-05-14 08:55:05 UTC
Can you change:

Simple mixer control 'codec0_out mo media0_in mi',0
  Capabilities: pswitch pswitch-joined
  Playback channels: Mono
  Mono: Playback [off]
Simple mixer control 'codec1_out mo media0_in mi',0
  Capabilities: pswitch pswitch-joined
  Playback channels: Mono
  Mono: Playback [off]
(...)
Simple mixer control 'media0_out mo codec0_in mi',0
  Capabilities: pswitch pswitch-joined
  Playback channels: Mono
  Mono: Playback [off]

to [on]?

You can do this with:
amixer sset 'codec0_out mo media0_in mi' on
amixer sset 'codec1_out mo media0_in mi' on
amixer sset 'media0_out mo codec0_in mi' on

and try playing again?
Comment 19 Joseph Long 2019-05-14 15:48:17 UTC
Now speaker-test -c 2 will execute, but no audio comes out...

Only new dmesg output:

[36784.513785] nau8825 i2c-10508825:00: No 'mclk' clock found, assume MCLK is managed externally
[36790.075097] nau8825 i2c-10508825:00: Disable clock for power saving when no headset connected

http://alsa-project.org/db/?f=5bebcac35387e0d5d7762b61164a83164a860d14
Comment 20 Amadeusz Sławiński 2019-05-15 10:49:54 UTC
Sadly most I can do at the moment is guess work.

In https://bugzilla.kernel.org/show_bug.cgi?id=200963#c7 hayato mentions that it worked at some point in time, so it would be best starting point to get back to working version and to move from there.

One more thing you can try is build kernel with CONFIG_DYNAMIC_DEBUG enabled and add something like:
snd_soc_skl_ipc.dyndbg="+pfl" snd_soc_sst_ipc.dyndbg="+pfl" snd_soc_sst_dsp.dyndbg="+pfl" snd_soc_core.dyndbg="+pfl" skl_n88l25_m98357a.dyndbg="+pfl" snd_soc_skl.dyndbg="+pfl" snd_hda_core.dyndbg="+pfl" fw_loader.dyndbg="+pfl" dyndbg="file drivers/base/firmware_loader/main.c +p" snd_soc_hdac_hdmi.dyndbg="+pfl"
to your kernel parameters, it should give more logs then.


As for testing playback, I would avoid ucm and pulseaudio for now and go straight with setting things with amixer and playing some file with aplay. And only if this works proceed with creating ucm files.
Comment 21 Amadeusz Sławiński 2019-05-16 10:30:24 UTC
One more thing.
Can you tell me which FW file you use and maybe try ChromeOS topology with older ones? (Preferably one copied from working ChromeOS).

ls -l /lib/firmware/intel/dsp_fw_release*
Comment 22 hayato 2019-05-16 21:18:10 UTC
Thanks for the tip. After switching to an older firmware used by ChromeOS, the ChromeOS topology (and audio output) now works fine on a mainline kernel

$ ls -l dsp_fw_release*
lrwxrwxrwx 1 masaru masaru     23 May  2 06:01 dsp_fw_release.bin -> dsp_fw_release_v969.bin
-rw-r--r-- 1 masaru masaru 233472 May  2 04:26 dsp_fw_release_v827.bin
-rw-r--r-- 1 masaru masaru 233472 May  2 04:26 dsp_fw_release_v869.bin
-rw-r--r-- 1 masaru masaru 221184 May  2 04:26 dsp_fw_release_v948.bin
-rw-r--r-- 1 masaru masaru 221184 May  2 04:26 dsp_fw_release_v951.bin
-rw-r--r-- 1 masaru masaru 221184 May  2 04:26 dsp_fw_release_v958.bin
-rw-r--r-- 1 masaru masaru 221184 May  2 04:26 dsp_fw_release_v969.bin
Comment 23 Amadeusz Sławiński 2019-05-17 07:13:34 UTC
Is this:
dsp_fw_release_v969.bin
the one you are using right now and it works?

Can you give me md5sum of it?

Which one were you using and it didn't work?
Comment 24 hayato 2019-05-17 07:20:19 UTC
ec8d14d090393c6b0ca5257df222b243  dsp_fw_release_v969.bin

previously dsp_fw_release.bin points to dsp_fw_release_v3402.bin
Comment 25 Amadeusz Sławiński 2019-05-17 08:24:47 UTC
Can you enable additional logs:

Build kernel with CONFIG_DYNAMIC_DEBUG enabled and add:

snd_soc_skl_ipc.dyndbg="+pfl" snd_soc_sst_ipc.dyndbg="+pfl" snd_soc_sst_dsp.dyndbg="+pfl" snd_soc_core.dyndbg="+pfl" skl_n88l25_m98357a.dyndbg="+pfl" snd_soc_skl.dyndbg="+pfl" snd_hda_core.dyndbg="+pfl" fw_loader.dyndbg="+pfl" dyndbg="file drivers/base/firmware_loader/main.c +p" snd_soc_hdac_hdmi.dyndbg="+pfl"

to your kernel parameters.

And then try playback with both FW versions (969 and 3402) and give me dmesg for them?
Comment 26 Joseph Long 2019-05-22 22:29:29 UTC
Unfortunately, I cannot make my sound work with v969 firmware and ChromeOS topology file. Hayato, are you using a different HiFi.conf?

http://alsa-project.org/db/?f=bb28a507293cd43249156ebdb17e6b9ecbfad06b
---

speaker-test 1.1.8

Playback device is default
Stream parameters are 48000Hz, S16_LE, 2 channels
Using 16 octaves of pink noise
Rate set to 48000Hz (requested 48000Hz)
Buffer size range from 64 to 1048576
Period size range from 32 to 524288
Using max buffer size 1048576
Periods = 4
Unable to set hw params for playback: Invalid argument
Setting of hwparams failed: Invalid argument
---

-rw-r--r-- 1 root root 161468 May 22 15:18 /lib/firmware/9d70-CORE-COREBOOT-0-tplg.bin
ce0e79be27a27c3b95547f3045aacabf  /lib/firmware/9d70-CORE-COREBOOT-0-tplg.bin
lrwxrwxrwx 1 root root 43 May 22 15:17 /lib/firmware/intel/dsp_fw_release.bin -> /lib/firmware/intel/dsp_fw_release_v969.bin
ec8d14d090393c6b0ca5257df222b243  /lib/firmware/intel/dsp_fw_release.bin
---

[    0.394276] ACPI: Added _OSI(Linux-Lenovo-NV-HDMI-Audio)
[    3.781583] snd_soc_skl 0000:00:1f.3: DSP detected with PCI class/subclass/prog-if info 0x040100
[    4.229941] snd_soc_skl 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])
[    4.559471] HDMI HDA Codec ehdaudio0D2: Max dais supported: 3
[    4.571698] snd_soc_skl 0000:00:1f.3: ASoC: invalid manifest size 0
[    4.571702] snd_soc_skl 0000:00:1f.3: ASoC: old version of manifest
[    4.572261] snd_soc_skl 0000:00:1f.3: ASoC: Parent card not yet available, widget card binding deferred
[    4.590906] HDMI HDA Codec ehdaudio0D2: hdac_hdmi_present_sense: disconnect for pin:port 5:0
[    4.591130] HDMI HDA Codec ehdaudio0D2: hdac_hdmi_present_sense: disconnect for pin:port 6:0
[    4.591336] HDMI HDA Codec ehdaudio0D2: hdac_hdmi_present_sense: disconnect for pin:port 7:0
[    4.592438] skl_n88l25_m98357a skl_n88l25_m98357a: snd-soc-dummy-dai <-> System Pin mapping ok
[    4.593283] skl_n88l25_m98357a skl_n88l25_m98357a: snd-soc-dummy-dai <-> System Pin mapping ok
[    4.593996] skl_n88l25_m98357a skl_n88l25_m98357a: snd-soc-dummy-dai <-> Reference Pin mapping ok
[    4.594762] skl_n88l25_m98357a skl_n88l25_m98357a: snd-soc-dummy-dai <-> DMIC Pin mapping ok
[    4.595423] skl_n88l25_m98357a skl_n88l25_m98357a: snd-soc-dummy-dai <-> HDMI1 Pin mapping ok
[    4.596121] skl_n88l25_m98357a skl_n88l25_m98357a: snd-soc-dummy-dai <-> HDMI2 Pin mapping ok
[    4.596790] skl_n88l25_m98357a skl_n88l25_m98357a: snd-soc-dummy-dai <-> HDMI3 Pin mapping ok
[    4.597655] skl_n88l25_m98357a skl_n88l25_m98357a: ASoC: source widget Capture overwritten
[    4.598694] input: sklnau8825max Headset Jack as /devices/platform/skl_n88l25_m98357a/sound/card0/input8
[    4.598915] input: sklnau8825max HDMI/DP, pcm=4 Jack as /devices/platform/skl_n88l25_m98357a/sound/card0/input9
[    4.599086] input: sklnau8825max HDMI/DP, pcm=5 Jack as /devices/platform/skl_n88l25_m98357a/sound/card0/input10
[    4.599387] input: sklnau8825max HDMI/DP, pcm=6 Jack as /devices/platform/skl_n88l25_m98357a/sound/card0/input11
[   27.485451]  Skl Audio Port: ASoC: no backend DAIs enabled for Skl Audio Port
[   27.485496]  Skl Audio Port: ASoC: no backend DAIs enabled for Skl Audio Port
[   27.485541]  Skl Audio Port: ASoC: no backend DAIs enabled for Skl Audio Port
Comment 27 Joseph Long 2019-05-22 23:01:29 UTC
After doing

amixer sset 'codec0_out mo media0_in mi' on
amixer sset 'codec1_out mo media0_in mi' on
amixer sset 'media0_out mo codec0_in mi' on

I get a single "pop" from each speaker in speaker-test -c 2. No noise yet though.
Comment 28 Joseph Long 2019-05-22 23:35:33 UTC
Created attachment 282913 [details]
ChromeOS HiFi.conf

I should mention that to get the pops I had to use HiFi.conf from the ChromeOS side (attached).
Comment 29 hayato 2019-05-22 23:56:37 UTC
The HiFi.conf from ChromeOS may not work because if you observe the alsa-info.sh output from both ChromeOS and mainline kernel, some of the controls are renamed in mainline kernel. e.g. 'Pin 5 Mux' becomes 'Pin5-Port0 Mux'. There are also new controls in mainline kernel, e.g. 'hif5-0 Jack Switch'


Here are my alsa ucm configs. I separated headphone and speaker configs to individual files so they work better with pulseaudio.
https://github.com/nebulakl/cave-audio/tree/master/Google-Cave-1.0-Cave
Comment 30 Joseph Long 2019-05-30 22:49:20 UTC
Created attachment 283009 [details]
dmesg with dyndbg and fw v969

Using kernel Linux pixie 4.19.44 #1-NixOS SMP Thu May 16 17:41:32 UTC 2019 x86_64 GNU/Linux.
Comment 31 Joseph Long 2019-05-30 22:49:50 UTC
Created attachment 283011 [details]
dmesg with dyndbg and fw v3402
Comment 32 Amadeusz Sławiński 2019-06-12 14:04:36 UTC
Created attachment 283221 [details]
skl topology

So after some consultations on my side, latest FW version should be used, which will require adaptations to topology.

I attached another topology can you try with it and latest FW with dyndbg enabled?
Comment 33 Joseph Long 2019-06-12 15:41:57 UTC
Created attachment 283227 [details]
dmesg with dyndbg and fw v3402 (updated tplg)

Audio comes out of the speakers with `speaker-test -c 2` when using the topology you just posted alongside firmware v3402.
Comment 34 Joseph Long 2019-06-12 15:45:15 UTC
So, speaker-test fooled me. The only audio I can get to come out is noise. The volume control buttons are back to not working (not changing the output, though button presses do register). If I turn the volume all the way down, it does mute (thankfully).
Comment 35 Amadeusz Sławiński 2019-06-18 12:22:27 UTC
Can you provide me with output of 'amixer' command? Are you using pure alsa or is there pulseaudio running?
Comment 36 Joseph Long 2019-06-18 15:20:12 UTC
Here's the output from alsa-info.sh: http://alsa-project.org/db/?f=79b60672d0fb10e042370b0b7247d8bacd1a917e

(As you can see there, I do have PulseAudio running. But, I did with the working configuration using the old firmware as well.)
Comment 37 Amadeusz Sławiński 2019-06-24 10:30:38 UTC
You seem to be playing on Speakers, is it also not working with headphones?
Comment 38 Joseph Long 2019-07-05 21:58:07 UTC
I was out of town for a bit, so I may have forgotten some step... but it seems like speaker is my only option. I tried connecting some headphones and doing "pactl set-card-profile 0 Headphone" to select headphones but I get "Failure: No such entity"
Comment 39 Joseph Long 2019-07-12 05:45:16 UTC
The plot thickens: absent more things to try, I decided to wipe ChromeOS off this Chromebook and install the EFI payload from https://mrchromebox.tech/#fwscript and set up NixOS with my working configuration using fw v969 + ChromeOS original topology. (They promise ~99% reproducibility for a given configuration file, so I figured it'd be a matter of applying the configuration and rebooting.)

However, when I boot via EFI, the configuration doesn't work. The card isn't detected, 'pactl set-card-profile' says there's no such thing as 'Headphone'.

I just reflashed the original Chromebook boot payload and have working audio via speakers and headphones with the fw v969 + ChromeOS original topology. So... I guess I'll keep using that?

Note You need to log in before you can comment on or make changes to this bug.