From 67c778d74c376b51614ae40052b2033f73d2e546 Mon Sep 17 00:00:00 2001 From: Tim Wawrzynczak Date: Mon, 29 Nov 2021 13:17:31 -0700 Subject: [PATCH] drivers/gfx/generic: Add optional _HID for gfx devices Some boards may want to use a _HID instead of an _ADR to locate a graphics device. This patch provides that option in the devicetree. BUG=b:206850071 TEST=Add `hid` entry in devicetree, dump SSDT and see _HID instead of _ADR Signed-off-by: Tim Wawrzynczak Change-Id: I32be4abf5c60be1f94aabaa2e9c734215c4e291e Reviewed-on: https://review.coreboot.org/c/coreboot/+/59730 Tested-by: build bot (Jenkins) Reviewed-by: Felix Held --- src/drivers/gfx/generic/chip.h | 2 ++ src/drivers/gfx/generic/generic.c | 6 +++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/drivers/gfx/generic/chip.h b/src/drivers/gfx/generic/chip.h index becc2edaf0..d60082372b 100644 --- a/src/drivers/gfx/generic/chip.h +++ b/src/drivers/gfx/generic/chip.h @@ -29,6 +29,8 @@ struct drivers_gfx_generic_privacy_screen_config { struct drivers_gfx_generic_device_config { /* ACPI device name of the output device */ const char *name; + /* Value to use for _HID Name, will take precedence over _ADR */ + const char *hid; /* The address of the output device. See section A.3.2 */ unsigned int addr; /* Electronic privacy screen specific config */ diff --git a/src/drivers/gfx/generic/generic.c b/src/drivers/gfx/generic/generic.c index 98bde79cdc..7c6076c9f4 100644 --- a/src/drivers/gfx/generic/generic.c +++ b/src/drivers/gfx/generic/generic.c @@ -121,7 +121,11 @@ static void gfx_fill_ssdt_generator(const struct device *dev) for (i = 0; i < config->device_count; i++) { acpigen_write_device(config->device[i].name); - acpigen_write_name_integer("_ADR", config->device[i].addr); + if (config->device[i].hid) + acpigen_write_name_string("_HID", config->device[i].hid); + else + acpigen_write_name_integer("_ADR", config->device[i].addr); + acpigen_write_name_integer("_STA", 0xF); gfx_fill_privacy_screen_dsm(&config->device[i].privacy); acpigen_pop_len(); /* Device */