From e98f6af77bbd2060f01833559034f28b8b88abfe Mon Sep 17 00:00:00 2001 From: Nico Huber Date: Sat, 21 Mar 2020 18:40:03 +0100 Subject: drivers/intel/gma/acpi: Reduce display switching stubs _DCS, _DGS and _DSS are required by specification. However, we never implemented them properly, and no OS driver com- plained yet. So we stub them out and keep the traditional behavior in case an OS driver checks for their existence. The old implementations also only returned static values as there never was any write to their GNVS variables. The TRAP() that was called in one place is actually implemented by some ThinkPad's SMI handler as docking event. However, as the call precedes these SMI handlers in coreboot history, it's most likely an accident. Change-Id: Ib0b9fcdd58df254d3b2290900e3bc206a7abd92d Signed-off-by: Nico Huber Reviewed-on: https://review.coreboot.org/c/coreboot/+/39726 Tested-by: build bot (Jenkins) Reviewed-by: HAOUAS Elyes --- src/drivers/intel/gma/acpi.c | 41 +++++++++++++++++------------------ src/drivers/intel/gma/acpi/common.asl | 35 ------------------------------ 2 files changed, 20 insertions(+), 56 deletions(-) (limited to 'src/drivers/intel') diff --git a/src/drivers/intel/gma/acpi.c b/src/drivers/intel/gma/acpi.c index 3f71a5ea84..d3fb69dec8 100644 --- a/src/drivers/intel/gma/acpi.c +++ b/src/drivers/intel/gma/acpi.c @@ -102,39 +102,38 @@ drivers_intel_gma_displays_ssdt_generate(const struct i915_gpu_controller_info * } /* - Method(_DCS, 0) - { - Return (^^XDCS()) - } + * _DCS, _DGS and _DSS are required by specification. However, + * we never implemented them properly, and no OS driver com- + * plained yet. So we stub them out and keep the traditional + * behavior in case an OS driver checks for their existence. + */ + + /* + Method(_DCS, 0) + { + Return (0x1d) + } */ acpigen_write_method("_DCS", 0); - acpigen_emit_byte(0xa4); /* ReturnOp. */ - acpigen_emit_namestring("^^XDCS"); - acpigen_write_byte(i); + acpigen_write_return_integer(0x1d); acpigen_pop_len(); /* - Method(_DGS, 0) - { - Return (^^XDGS()) - } + Method(_DGS, 0) + { + Return (0) + } */ acpigen_write_method("_DGS", 0); - acpigen_emit_byte(0xa4); /* ReturnOp. */ - acpigen_emit_namestring("^^XDGS"); - acpigen_write_byte(i); + acpigen_write_return_integer(0); acpigen_pop_len(); /* - Method(_DSS, 1) - { - ^^XDSS(0x5a, Arg0) - } + Method(_DSS, 1) + { + } */ acpigen_write_method("_DSS", 1); - acpigen_emit_namestring("^^XDSS"); - acpigen_write_byte(i); - acpigen_emit_byte(0x68); /* Arg0Op. */ acpigen_pop_len(); acpigen_pop_len(); diff --git a/src/drivers/intel/gma/acpi/common.asl b/src/drivers/intel/gma/acpi/common.asl index 3932a88e87..09d48a20e0 100644 --- a/src/drivers/intel/gma/acpi/common.asl +++ b/src/drivers/intel/gma/acpi/common.asl @@ -35,11 +35,6 @@ /* Display Output Switching */ Method (_DOS, 1) { - /* Windows 2000 and Windows XP call _DOS to enable/disable - * Display Output Switching during init and while a switch - * is already active - */ - Store (And(Arg0, 7), DSEN) } /* @@ -80,33 +75,3 @@ XBCM (DerefOf (Index (BRIG, Local0))) } } - - /* Device Current Status */ - Method(XDCS, 1) - { - TRAP(1) - If (And(CSTE, ShiftLeft (1, Arg0))) { - Return (0x1f) - } - Return(0x1d) - } - - /* Query Device Graphics State */ - Method(XDGS, 1) - { - If (And(NSTE, ShiftLeft (1, Arg0))) { - Return(1) - } - Return(0) - } - - /* Device Set State */ - Method(XDSS, 1) - { - /* If Parameter Arg0 is (1 << 31) | (1 << 30), the - * display switch was completed - */ - If (LEqual(And(Arg0, 0xc0000000), 0xc0000000)) { - Store (NSTE, CSTE) - } - } -- cgit v1.2.3