This patchset adds a number of improvements for ES8336-based Intel platforms, which are not well supported at all in Linux. Since Christmas 2021, we've seen dozens of reports of broken audio [1].
The fundamental problem is that those platforms were built for Windows but using an I2S codec - instead of the HDaudio traditional solution. As a result, we are missing all the usual information needed to configure the audio card (which I2S, what configuration, DMICs or not, etc). The situation is similar to Baytrail with all possible permutations enabled.
Some of the information can be discovered by checking the contents of the 'NHLT' ACPI table. This helps discover at run-time which SSP to use, and the number of microphones present. This NHLT-based solution helps remove quirks that were added earlier.
Unfortunately, there are still a number of platform properties that are not described by ACPI, just as GPIOs used for speakers, jack detection inversion, etc. For some case, quirks are still provided in the machine drivers.
Additional work will likely be needed, e.g. to detect which MCLK needs to be used, refine the UCM settings, add the ES8326 codec driver, but this is a first-step towards an 'out of the box' experience on Intel platforms.
This patchset touches the sound/hda/intel-nhlt parts but should IMHO be merged in the ASoC tree.
I would like to acknowledge the help of Nikolai Kostrigin, Mauro Carvalho Chehab, Huajun Li, David Yang (@yangxiaohua2009) and other GitHub testers.
[1] https://github.com/thesofproject/linux/issues?q=is%3Aissue+is%3Aopen+label%3...
Nikolai Kostrigin (1): ASoC: Intel: soc-acpi: add ESSX8336 support on Cannon Lake machines
Pierre-Louis Bossart (19): ASoC: soc-acpi: fix kernel-doc descriptor ASoC: soc-acpi: add information on I2S/TDM link mask ASoC: SOF: Intel: hda: retrieve DMIC number for I2S boards ALSA: intel-nhlt: add helper to detect SSP link mask ASoC: SOF: Intel: hda: report SSP link mask to machine driver ASoC: Intel: soc-acpi: quirk topology filename dynamically ALSA: intel-dsp-config: add more ACPI HIDs for ES83x6 devices ASoC: Intel: soc-acpi: add more ACPI HIDs for ES83x6 devices ALSA: intel-dspconfig: add ES8336 support for CNL ASoC: Intel: sof_es8336: make gpio optional ASoC: Intel: sof_es8336: get codec device with ACPI instead of bus search ASoC: Intel: Revert "ASoC: Intel: sof_es8336: add quirk for Huawei D15 2021" ASoC: Intel: sof_es8336: use NHLT information to set dmic and SSP ASoC: Intel: sof_es8336: log all quirks ASoC: Intel: sof_es8336: move comment to the right place ASoC: Intel: sof_es8336: add support for JD inverted quirk ASoC: Intel: sof_es8336: extend machine driver to support ES8326 codec ASoC: Intel: sof_es8336: add cfg-dmics component for UCM support ASoC: Intel: bytcht_es8316: move comment to the right place
include/sound/intel-nhlt.h | 22 ++- include/sound/soc-acpi.h | 27 +++- sound/hda/intel-dsp-config.c | 36 +++-- sound/hda/intel-nhlt.c | 22 +++ sound/soc/intel/boards/Kconfig | 3 +- sound/soc/intel/boards/bytcht_es8316.c | 2 +- sound/soc/intel/boards/sof_es8336.c | 142 +++++++++++++----- .../intel/common/soc-acpi-intel-bxt-match.c | 12 +- .../intel/common/soc-acpi-intel-cml-match.c | 12 +- .../intel/common/soc-acpi-intel-cnl-match.c | 14 ++ .../intel/common/soc-acpi-intel-glk-match.c | 12 +- .../intel/common/soc-acpi-intel-jsl-match.c | 12 +- .../intel/common/soc-acpi-intel-tgl-match.c | 12 +- sound/soc/sof/intel/hda.c | 120 ++++++++++++--- 14 files changed, 360 insertions(+), 88 deletions(-)
base-commit: 0b7daa6bd0a4cab3b0c6f266a8cb1344ce14ef19