Commit a7b75a11 authored by Takashi Iwai's avatar Takashi Iwai
Browse files

Merge tag 'asoc-fix-v7.1-rc1' of...

Merge tag 'asoc-fix-v7.1-rc1' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus

ASoC: Fixes for v7.1

We've had quite a lot of fixes come in this past week, all driver stuff
rather than any broad systematic issue.  All quite routine stuff.
parents 6e7247d8 03dcb5b6
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -174,7 +174,7 @@ static int acp_asoc_probe(struct platform_device *pdev)
		acp_card_drvdata->acp_rev = mach->mach_params.subsystem_rev;

	dmi_id = dmi_first_match(acp_quirk_table);
	if (dmi_id && dmi_id->driver_data)
	if (dmi_id && dmi_id->driver_data == (void *)QUIRK_TDM_MODE_ENABLE)
		acp_card_drvdata->tdm_mode = dmi_id->driver_data;

	ret = acp_legacy_dai_links_create(card);
+19 −3
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@
#include <sound/soc.h>
#include <linux/input.h>
#include <linux/module.h>
#include <linux/dmi.h>

#include "../../codecs/rt5682.h"
#include "../../codecs/rt1019.h"
@@ -37,15 +38,21 @@
#define NAU8821_FREQ_OUT	12288000
#define MAX98388_CODEC_DAI	"max98388-aif1"

#define TDM_MODE_ENABLE 1

const struct dmi_system_id acp_quirk_table[] = {
	{
		/* Google skyrim proto-0 */
		.matches = {
			DMI_EXACT_MATCH(DMI_PRODUCT_FAMILY, "Google_Skyrim"),
		},
		.driver_data = (void *)TDM_MODE_ENABLE,
		.driver_data = (void *)QUIRK_TDM_MODE_ENABLE,
	},
	{
		/* Valve Steam Deck OLED */
		.matches = {
			DMI_MATCH(DMI_SYS_VENDOR, "Valve"),
			DMI_MATCH(DMI_PRODUCT_NAME, "Galileo"),
		},
		.driver_data = (void *)QUIRK_REMAP_DMIC_BT,
	},
	{}
};
@@ -1401,6 +1408,7 @@ int acp_sofdsp_dai_links_create(struct snd_soc_card *card)
	struct snd_soc_dai_link *links;
	struct device *dev = card->dev;
	struct acp_card_drvdata *drv_data = card->drvdata;
	const struct dmi_system_id *dmi_id = dmi_first_match(acp_quirk_table);
	int i = 0, num_links = 0;

	if (drv_data->hs_cpu_id)
@@ -1572,6 +1580,9 @@ int acp_sofdsp_dai_links_create(struct snd_soc_card *card)
			links[i].codecs = &snd_soc_dummy_dlc;
			links[i].num_codecs = 1;
		}

		if (dmi_id && dmi_id->driver_data == (void *)QUIRK_REMAP_DMIC_BT)
			links[i].id = DMIC_BE_ID;
		i++;
	}

@@ -1587,6 +1598,11 @@ int acp_sofdsp_dai_links_create(struct snd_soc_card *card)
		links[i].capture_only = 1;
		links[i].nonatomic = true;
		links[i].no_pcm = 1;

		if (dmi_id && dmi_id->driver_data == (void *)QUIRK_REMAP_DMIC_BT) {
			links[i].id = BT_BE_ID;
			dev_dbg(dev, "quirk REMAP_DMIC_BT enabled\n");
		}
	}

	card->dai_link = links;
+4 −0
Original line number Diff line number Diff line
@@ -26,6 +26,10 @@

#define acp_get_drvdata(card) ((struct acp_card_drvdata *)(card)->drvdata)

/* List of DMI quirks - check acp-mach-common.c for usage. */
#define QUIRK_TDM_MODE_ENABLE 1
#define QUIRK_REMAP_DMIC_BT 2

enum be_id {
	HEADSET_BE_ID = 0,
	AMP_BE_ID,
+1 −1
Original line number Diff line number Diff line
@@ -110,7 +110,7 @@ static int acp_sof_probe(struct platform_device *pdev)

	acp_card_drvdata = card->drvdata;
	dmi_id = dmi_first_match(acp_quirk_table);
	if (dmi_id && dmi_id->driver_data)
	if (dmi_id && dmi_id->driver_data == (void *)QUIRK_TDM_MODE_ENABLE)
		acp_card_drvdata->tdm_mode = dmi_id->driver_data;

	acp_card_drvdata->acp_rev = mach->mach_params.subsystem_rev;
+3 −3
Original line number Diff line number Diff line
@@ -2496,13 +2496,13 @@ static int ab8500_codec_probe(struct snd_soc_component *component)
		return status;
	}
	fc = (struct filter_control *)
		&ab8500_filter_controls[AB8500_FILTER_ANC_FIR].private_value;
		ab8500_filter_controls[AB8500_FILTER_ANC_FIR].private_value;
	drvdata->anc_fir_values = (long *)fc->value;
	fc = (struct filter_control *)
		&ab8500_filter_controls[AB8500_FILTER_ANC_IIR].private_value;
		ab8500_filter_controls[AB8500_FILTER_ANC_IIR].private_value;
	drvdata->anc_iir_values = (long *)fc->value;
	fc = (struct filter_control *)
		&ab8500_filter_controls[AB8500_FILTER_SID_FIR].private_value;
		ab8500_filter_controls[AB8500_FILTER_SID_FIR].private_value;
	drvdata->sid_fir_values = (long *)fc->value;

	snd_soc_dapm_disable_pin(dapm, "ANC Configure Input");
Loading