Unverified Commit 4095cf87 authored by Venkata Prasad Potturu's avatar Venkata Prasad Potturu Committed by Mark Brown
Browse files

ASoC: amd: yc: Fix for enabling DMIC on acp6x via _DSD entry



Add condition check to register ACP PDM sound card by reading
_WOV acpi entry.

Fixes: 5426f506 ("ASoC: amd: Add support for enabling DMIC on acp6x via _DSD")

Signed-off-by: default avatarVenkata Prasad Potturu <venkataprasad.potturu@amd.com>
Link: https://patch.msgid.link/20241127112227.227106-1-venkataprasad.potturu@amd.com


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent cbc86dd0
Loading
Loading
Loading
Loading
+17 −1
Original line number Diff line number Diff line
@@ -551,8 +551,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) {
@@ -560,9 +566,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)