soc/amd/common/acp: Populate _WOV ACPI method
In order to support Audio Co-processor (ACP) DMIC hardware runtime detection on the platform, ACPI _WOV method is populated on the concerned ACP device. This method returns the ACPI Integer value as 1 if ACP DMIC exists on the platform. BUG=b:182960979 TEST=Build and boot to OS in guybrush. Ensure that the _WOV ACPI method is populated under the scope of ACP device. Scope (\_SB.PCI0.GP41.ACPD) { Method (_WOV, 0, NotSerialized) { Return (One) } } Change-Id: Ide84f45f5ea2ae42d5efe71ac6d1595886157045 Signed-off-by: Karthikeyan Ramasubramanian <kramasub@google.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/55029 Reviewed-by: Furquan Shaikh <furquan@google.com> Reviewed-by: Raul Rangel <rrangel@chromium.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
parent
6662fe60e1
commit
4ce48b3a37
|
@ -52,6 +52,28 @@ static const char *acp_acpi_name(const struct device *dev)
|
|||
return "ACPD";
|
||||
}
|
||||
|
||||
static void acp_fill_wov_method(const struct device *dev)
|
||||
{
|
||||
const struct soc_amd_common_config *cfg = soc_get_common_config();
|
||||
const char *scope = acpi_device_path(dev);
|
||||
|
||||
if (!cfg->acp_config.dmic_present || !scope)
|
||||
return;
|
||||
|
||||
/* For ACP DMIC hardware runtime detection on the platform, _WOV method is populated. */
|
||||
acpigen_write_scope(scope); /* Scope */
|
||||
acpigen_write_method("_WOV", 0);
|
||||
acpigen_write_return_integer(1);
|
||||
acpigen_write_method_end();
|
||||
acpigen_write_scope_end();
|
||||
}
|
||||
|
||||
static void acp_fill_ssdt(const struct device *dev)
|
||||
{
|
||||
acpi_device_write_pci_dev(dev);
|
||||
acp_fill_wov_method(dev);
|
||||
}
|
||||
|
||||
static struct device_operations acp_ops = {
|
||||
.read_resources = pci_dev_read_resources,
|
||||
.set_resources = pci_dev_set_resources,
|
||||
|
@ -60,7 +82,7 @@ static struct device_operations acp_ops = {
|
|||
.ops_pci = &pci_dev_ops_pci,
|
||||
.scan_bus = scan_static_bus,
|
||||
.acpi_name = acp_acpi_name,
|
||||
.acpi_fill_ssdt = acpi_device_write_pci_dev,
|
||||
.acpi_fill_ssdt = acp_fill_ssdt,
|
||||
};
|
||||
|
||||
static const struct pci_driver acp_driver __pci_driver = {
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
#define AMD_COMMON_ACP_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <types.h>
|
||||
|
||||
struct acp_config {
|
||||
enum {
|
||||
|
@ -19,6 +20,12 @@ struct acp_config {
|
|||
u8 acp_i2s_wake_enable;
|
||||
/* Enable ACP PME (0 = disable, 1 = enable) */
|
||||
u8 acp_pme_enable;
|
||||
|
||||
/*
|
||||
* DMIC present (optional) to support ACP DMIC hardware runtime detection on the
|
||||
* platform. If dmic_present is set to true, it will populate the _WOV ACPI method.
|
||||
*/
|
||||
bool dmic_present;
|
||||
};
|
||||
|
||||
#endif /* AMD_COMMON_ACP_H */
|
||||
|
|
Loading…
Reference in New Issue