diff --git a/src/soc/amd/common/block/graphics/Kconfig b/src/soc/amd/common/block/graphics/Kconfig index 75b4013138..ce00f1821d 100644 --- a/src/soc/amd/common/block/graphics/Kconfig +++ b/src/soc/amd/common/block/graphics/Kconfig @@ -26,3 +26,10 @@ config USE_SELECTIVE_GOP_INIT Select this option to only run the FSP GOP driver when needed for pre-OS display init (eg, Recovery and Developer Modes). Otherwise, use cached VBIOS/ATOMBIOS tables. Selecting this option will save approx. 130ms boot time on the normal boot path. + +config SOC_AMD_COMMON_BLOCK_GRAPHICS_ACP + bool + depends on SOC_AMD_COMMON_BLOCK_GRAPHICS + help + Select this option to provide Audio CoProcessor ACPI device for pre-Ryzen APUs for + use by custom Windows drivers. diff --git a/src/soc/amd/common/block/graphics/graphics.c b/src/soc/amd/common/block/graphics/graphics.c index 9dff18dd73..ea7308a850 100644 --- a/src/soc/amd/common/block/graphics/graphics.c +++ b/src/soc/amd/common/block/graphics/graphics.c @@ -114,6 +114,18 @@ static void generate_atif(const struct device *dev) acpigen_pop_len(); /* Scope */ } +static void generate_acp(const struct device *dev) +{ + /* Scope (\_SB.PCI0.IGFX) */ + acpigen_write_scope(acpi_device_path(dev)); + acpigen_write_device("ACP"); + + acpigen_write_name_string("_HID", "BOOT0003"); + + acpigen_pop_len(); /* Device */ + acpigen_pop_len(); /* Scope */ +} + static void graphics_fill_ssdt(const struct device *dev) { acpi_device_write_pci_dev(dev); @@ -124,6 +136,9 @@ static void graphics_fill_ssdt(const struct device *dev) if (CONFIG(SOC_AMD_COMMON_BLOCK_GRAPHICS_ATIF)) generate_atif(dev); + + if (CONFIG(SOC_AMD_COMMON_BLOCK_GRAPHICS_ACP)) + generate_acp(dev); } static const char *graphics_acpi_name(const struct device *dev)