Any way of making this Intel SoC sound cluster work?
Pierre-Louis Bossart
pierre-louis.bossart at linux.intel.com
Wed Jul 21 15:11:16 CEST 2021
> I recently found myself with a rather atypical laptop from a niche Chinese manufacturer (relying on an old J3455 SoC); the `Intel Smart Sound Technology` output does work under Windows with the appropriate drivers, but under GNU/Linux (no matter which distro or release I test: Debian, Ubuntu, ClearLinux,…) no audio output is reportedly available other than HDMI. Lspci does list an “Audio Cluster” [10ec:10fc] and supposedly handles it with snd_hda_intel, but that’s as far as I got.
> This looks to me like a missing firmware issue, but I’ve spent hours trawling the Internets to no avail.
>
> I also tried fiddling with the modules, by either blacklisting snd_hda_intel or loading snd_soc_skl and virtually every other combination I could think of. If there is an arcane option to be passed to snd_hda_intel, I have yet to find which one.
> Attached are the alsa-info output, the verbose lspci output and (just in case) the output of `wmic path win32_pnpentity` on Windows.
>
> If some of you fine alsa-devel experts could give me any pointers, I’d greatly appreciate it!
The PCI ID points to an ApolloLake Intel device [8086:5a98]
{ PCI_DEVICE(0x8086, 0x5a98), /* BXT-P (ApolloLake) */
The audio codec seems to be an ESSX chip
/sys/bus/acpi/devices/ESSX8336:00/status 15
This configuration looks similar to another "Chuwi Hi10x" configuration reported in this issue:
https://github.com/thesofproject/linux/issues/2955
the difference is that configuration was with GeminiLake, which is a more recent versions of SOC but the audio subsystem is identical so the same solution will address both platforms.
Short story: snd-hda-intel is not relevant, it's meant for HDAudio platforms and it would only deal with the HDMI devices - which is what you've observed experimentally. If you want to support the ESSX codec, you have to use a DSP-based driver, which will require a firmware and topology file.
There is a hack suggested at https://github.com/yangxiaohua2009/GLK-ES8336, but if you want upstream support for this configuration there's some work needed.
What is needed is
1) a table entry to provide the firmware and topology file for that configuration. I provided a first suggestion in https://github.com/thesofproject/linux/pull/2962, you could try to build on it to add the information for your device.
2) a machine driver for apl-es8316 and glk-es8336
I suggest we continue the thread on the GitHub issue 2955, it's easier to add information without spamming this list. It shouldn't be too hard to solve this, the main problem is that Intel folks don't have access to the device and that it can be complicated to get information on actual schematics (which SSP is used and connected to which port on the codec, which GPIO is used for jack detection, etc), and getting information on codec settings to generate a UCM file.
Hope this helps
-Pierre
More information about the Alsa-devel
mailing list