Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ASoC: Intel: sof_sdw: Add quirking for Asus Zenbooks with SSID 0x10431e13 #5301

Merged
merged 2 commits into from
Jan 21, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 25 additions & 6 deletions sound/soc/intel/boards/sof_sdw.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
#include <linux/soundwire/sdw.h>
#include <linux/soundwire/sdw_type.h>
#include <linux/soundwire/sdw_intel.h>
#include <sound/core.h>
#include <sound/soc-acpi.h>
#include "sof_sdw_common.h"
#include "../../codecs/rt711.h"
Expand Down Expand Up @@ -770,6 +771,23 @@ static const struct dmi_system_id sof_sdw_quirk_table[] = {
{}
};

static const struct snd_pci_quirk sof_sdw_ssid_quirk_table[] = {
SND_PCI_QUIRK(0x1043, 0x1e13, "ASUS Zenbook S14", SOC_SDW_CODEC_MIC),
{}
};

static void sof_sdw_check_ssid_quirk(const struct snd_soc_acpi_mach *mach)
{
const struct snd_pci_quirk *quirk_entry;

quirk_entry = snd_pci_quirk_lookup_id(mach->mach_params.subsystem_vendor,
mach->mach_params.subsystem_device,
sof_sdw_ssid_quirk_table);

if (quirk_entry)
sof_sdw_quirk = quirk_entry->value;
}

static struct snd_soc_dai_link_component platform_component[] = {
{
/* name might be overridden during probe */
Expand Down Expand Up @@ -1297,6 +1315,13 @@ static int mc_probe(struct platform_device *pdev)

snd_soc_card_set_drvdata(card, ctx);

if (mach->mach_params.subsystem_id_set) {
snd_soc_card_set_pci_ssid(card,
mach->mach_params.subsystem_vendor,
mach->mach_params.subsystem_device);
sof_sdw_check_ssid_quirk(mach);
}

dmi_check_system(sof_sdw_quirk_table);

if (quirk_override != -1) {
Expand All @@ -1312,12 +1337,6 @@ static int mc_probe(struct platform_device *pdev)
for (i = 0; i < ctx->codec_info_list_count; i++)
codec_info_list[i].amp_num = 0;

if (mach->mach_params.subsystem_id_set) {
snd_soc_card_set_pci_ssid(card,
mach->mach_params.subsystem_vendor,
mach->mach_params.subsystem_device);
}

ret = sof_card_dai_links_create(card);
if (ret < 0)
return ret;
Expand Down
Loading