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

ASoC: amd: ps: Fix for enabling DMIC on acp63 platform via _DSD entry



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

Fixes: 0386d765 ("ASoC: amd: ps: refactor acp device configuration read logic")

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


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 78d4f34e
Loading
Loading
Loading
Loading
+16 −1
Original line number Diff line number Diff line
@@ -375,11 +375,18 @@ static int get_acp63_device_config(struct pci_dev *pci, struct acp63_dev_data *a
{
	struct acpi_device *pdm_dev;
	const union acpi_object *obj;
	acpi_handle handle;
	acpi_integer dmic_status;
	u32 config;
	bool is_dmic_dev = false;
	bool is_sdw_dev = false;
	bool wov_en, dmic_en;
	int ret;

	/* IF WOV entry not found, enable dmic based on acp-audio-device-type entry*/
	wov_en = true;
	dmic_en = false;

	config = readl(acp_data->acp63_base + ACP_PIN_CONFIG);
	switch (config) {
	case ACP_CONFIG_4:
@@ -412,10 +419,18 @@ static int get_acp63_device_config(struct pci_dev *pci, struct acp63_dev_data *a
			if (!acpi_dev_get_property(pdm_dev, "acp-audio-device-type",
						   ACPI_TYPE_INTEGER, &obj) &&
						   obj->integer.value == ACP_DMIC_DEV)
				is_dmic_dev = true;
				dmic_en = true;
		}

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

	if (dmic_en && wov_en)
		is_dmic_dev = true;

	if (acp_data->is_sdw_config) {
		ret = acp_scan_sdw_devices(&pci->dev, ACP63_SDW_ADDR);
		if (!ret && acp_data->info.link_mask)