Commit 2e5bf5b6 authored by Takashi Iwai's avatar Takashi Iwai
Browse files

Merge tag 'asoc-fix-v6.13-merge-window' of...

Merge tag 'asoc-fix-v6.13-merge-window' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus

ASoC: Fixes for v6.13

A pile of driver specific quirks and fixes that came in since the merge
window.  One of the AMD fixes is a bit broken for some systems, I'm
expecting an incremental change to fix that but it seems better overall
to merge the rest of the fixes.

There's also one small documentation update that seemed sensible to
apply now, pointing to the dapm-graph tool.
parents a7df7f90 b682aa78
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -35,6 +35,9 @@ The graph for the STM32MP1-DK1 sound card is shown in picture:
    :alt:   Example DAPM graph
    :align: center

You can also generate compatible graph for your sound card using
`tools/sound/dapm-graph` utility.

DAPM power domains
==================

+1 −0
Original line number Diff line number Diff line
@@ -163,6 +163,7 @@ config SND_SOC_AMD_SOUNDWIRE
config SND_SOC_AMD_PS
        tristate "AMD Audio Coprocessor-v6.3 Pink Sardine support"
	select SND_SOC_AMD_SOUNDWIRE_LINK_BASELINE
	select SND_SOC_ACPI_AMD_MATCH
        depends on X86 && PCI && ACPI
        help
          This option enables Audio Coprocessor i.e ACP v6.3 support on
+38 −1
Original line number Diff line number Diff line
@@ -220,6 +220,13 @@ static const struct dmi_system_id yc_acp_quirk_table[] = {
			DMI_MATCH(DMI_PRODUCT_NAME, "21J6"),
		}
	},
	{
		.driver_data = &acp6x_card,
		.matches = {
			DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
			DMI_MATCH(DMI_PRODUCT_NAME, "21M1"),
		}
	},
	{
		.driver_data = &acp6x_card,
		.matches = {
@@ -241,6 +248,13 @@ static const struct dmi_system_id yc_acp_quirk_table[] = {
			DMI_MATCH(DMI_PRODUCT_NAME, "21M5"),
		}
	},
	{
		.driver_data = &acp6x_card,
		.matches = {
			DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
			DMI_MATCH(DMI_PRODUCT_NAME, "21ME"),
		}
	},
	{
		.driver_data = &acp6x_card,
		.matches = {
@@ -409,6 +423,13 @@ static const struct dmi_system_id yc_acp_quirk_table[] = {
			DMI_MATCH(DMI_PRODUCT_NAME, "Xiaomi Book Pro 14 2022"),
		}
	},
	{
		.driver_data = &acp6x_card,
		.matches = {
			DMI_MATCH(DMI_BOARD_VENDOR, "TIMI"),
			DMI_MATCH(DMI_PRODUCT_NAME, "Redmi G 2022"),
		}
	},
	{
		.driver_data = &acp6x_card,
		.matches = {
@@ -537,8 +558,14 @@ static int acp6x_probe(struct platform_device *pdev)
	struct acp6x_pdm *machine = NULL;
	struct snd_soc_card *card;
	struct acpi_device *adev;
	acpi_handle handle;
	acpi_integer dmic_status;
	int ret;
	bool is_dmic_enable, wov_en;

	/* IF WOV entry not found, enable dmic based on AcpDmicConnected entry*/
	is_dmic_enable = false;
	wov_en = true;
	/* check the parent device's firmware node has _DSD or not */
	adev = ACPI_COMPANION(pdev->dev.parent);
	if (adev) {
@@ -546,9 +573,19 @@ static int acp6x_probe(struct platform_device *pdev)

		if (!acpi_dev_get_property(adev, "AcpDmicConnected", ACPI_TYPE_INTEGER, &obj) &&
		    obj->integer.value == 1)
			platform_set_drvdata(pdev, &acp6x_card);
			is_dmic_enable = true;
	}

	handle = ACPI_HANDLE(pdev->dev.parent);
	ret = acpi_evaluate_integer(handle, "_WOV", NULL, &dmic_status);
	if (!ACPI_FAILURE(ret))
		wov_en = dmic_status;

	if (is_dmic_enable && wov_en)
		platform_set_drvdata(pdev, &acp6x_card);
	else
		return 0;

	/* check for any DMI overrides */
	dmi_id = dmi_first_match(yc_acp_quirk_table);
	if (dmi_id)
+1 −1
Original line number Diff line number Diff line
@@ -616,7 +616,7 @@ static int mca_fe_hw_params(struct snd_pcm_substream *substream,
			tdm_slot_width = 32;

		if (tdm_slot_width < params_width(params)) {
			dev_err(dev, "TDM slots too narrow (tdm=%d params=%d)\n",
			dev_err(dev, "TDM slots too narrow (tdm=%u params=%d)\n",
				tdm_slot_width, params_width(params));
			return -EINVAL;
		}
+3 −0
Original line number Diff line number Diff line
@@ -274,6 +274,9 @@ static int imx_audmix_probe(struct platform_device *pdev)
		/* Add AUDMIX Backend */
		be_name = devm_kasprintf(&pdev->dev, GFP_KERNEL,
					 "audmix-%d", i);
		if (!be_name)
			return -ENOMEM;

		priv->dai[num_dai + i].cpus	= &dlc[1];
		priv->dai[num_dai + i].codecs	= &snd_soc_dummy_dlc;

Loading