[Sound-open-firmware] SoF support for 8086:9d71?

Pierre-Louis Bossart pierre-louis.bossart at linux.intel.com
Tue Dec 15 18:21:19 CET 2020



On 12/14/20 9:54 PM, Kai-Heng Feng wrote:
> 
> 
> On Mon, Dec 14, 2020 at 13:33, Pierre-Louis Bossart 
> <pierre-louis.bossart at linux.intel.com> wrote:
>>
>>> On more recent kernels legacy HDA stops working for device 8086:9d71:
>>> [   47.211381] snd_hda_intel 0000:00:1f.3: DSP detected with PCI 
>>> class/subclass/prog-if info 0x040100
>>> [   47.211383] snd_hda_intel 0000:00:1f.3: Digital mics found on 
>>> Skylake+ platform, using SST driver
>>>
>>> However, only legacy HDA supports it:
>>> 00:1f.3 Multimedia audio controller [0401]: Intel Corporation 
>>> Sunrise Point-LP HD Audio [8086:9d71] (rev 21)
>>> ..
>>>      Kernel modules: snd_hda_intel
>>>
>>> Ubuntu kernel doesn't select SND_SOC_INTEL_SKYLAKE, which builds 
>>> snd-soc-skl, because based on the Kconfig description SOF should 
>>> support it.
>>>
>>> I wonder if SND_SOC_INTEL_SKYLAKE should be select again?
>>
>> SOF does not support Skylake and Kabylake, and only the Up2 board for 
>> APL. I am not sure what you mean by 'recent' kernels since this 
>> dynamic selection has been in place for a year now?
> 
> Ubuntu kernel only changed this in 20.10 release.
> 
>>
>> At any rate, to make this work again:
>>
>> 1. You can select SND_SOC_INTEL_SKYLAKE or alternatively to be more 
>> accurate:
>>
>> SND_SOC_INTEL_SKL
>> SND_SOC_INTEL_APL
>> SND_SOC_INTEL_KBL
>>
>> There are known issues with Conexant codecs, typically on HP devices, 
>> only Realtek codecs are supported.
> 
> Right, so we can't really enable this for generic distros like Ubuntu.
> 
> Let me think of a more generic solution.

Re-thinking about this, I actually don't know how this problem occurred:
the tables are conditionally built so you would only select SST if you 
had the drivers compiled in.

see sound/hda/intel-dsp-config.c:

/* Kabylake-LP */
#if IS_ENABLED(CONFIG_SND_SOC_INTEL_KBL)
	{
		.flags = FLAG_SST,
		.device = 0x9d71,
		.dmi_table = (const struct dmi_system_id []) {
			{
				.ident = "Google Chromebooks",
				.matches = {
					DMI_MATCH(DMI_SYS_VENDOR, "Google"),
				}
			},
			{}
		}
	},
	{
		.flags = FLAG_SST | FLAG_SST_ONLY_IF_DMIC,
		.device = 0x9d71,
	},
#endif

Something's not adding up here.


More information about the Sound-open-firmware mailing list