diff options
author | Takashi Iwai <tiwai@suse.de> | 2024-04-29 17:02:45 +0200 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2024-04-29 17:02:45 +0200 |
commit | 68b6e5e7540ffe4c11bf27c8896685308233ca10 (patch) | |
tree | 40bc4946a95a86e0438324443300532b22d20db3 | |
parent | d765d57fd49eb345e4b20ff6f0915adaabc5abdf (diff) | |
parent | 79ac4c1443eaec0d09355307043a9149287f23c1 (diff) | |
download | sound-68b6e5e7540ffe4c11bf27c8896685308233ca10.tar.gz |
Merge branch 'for-linus'
-rw-r--r-- | sound/hda/intel-dsp-config.c | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/sound/hda/intel-dsp-config.c b/sound/hda/intel-dsp-config.c index 6a384b922e4fa..d1f6cdcf1866e 100644 --- a/sound/hda/intel-dsp-config.c +++ b/sound/hda/intel-dsp-config.c @@ -557,9 +557,32 @@ static const struct config_entry *snd_intel_dsp_find_config if (table->codec_hid) { int i; - for (i = 0; i < table->codec_hid->num_codecs; i++) - if (acpi_dev_present(table->codec_hid->codecs[i], NULL, -1)) + for (i = 0; i < table->codec_hid->num_codecs; i++) { + struct nhlt_acpi_table *nhlt; + bool ssp_found = false; + + if (!acpi_dev_present(table->codec_hid->codecs[i], NULL, -1)) + continue; + + nhlt = intel_nhlt_init(&pci->dev); + if (!nhlt) { + dev_warn(&pci->dev, "%s: NHLT table not found, skipped HID %s\n", + __func__, table->codec_hid->codecs[i]); + continue; + } + + if (intel_nhlt_has_endpoint_type(nhlt, NHLT_LINK_SSP) && + intel_nhlt_ssp_endpoint_mask(nhlt, NHLT_DEVICE_I2S)) + ssp_found = true; + + intel_nhlt_free(nhlt); + + if (ssp_found) break; + + dev_warn(&pci->dev, "%s: no valid SSP found for HID %s, skipped\n", + __func__, table->codec_hid->codecs[i]); + } if (i == table->codec_hid->num_codecs) continue; } |