[coreboot-gerrit] Patch set updated for coreboot: gma ACPI: Do not overwrite backlight configuration

Nico Huber (nico.h@gmx.de) gerrit at coreboot.org
Sun Oct 11 16:55:14 CEST 2015


Nico Huber (nico.h at gmx.de) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/11704

-gerrit

commit d67e0b7aefdc7e6d9f0d11c841f1c38856e67aba
Author: Nico Huber <nico.huber at secunet.com>
Date:   Thu Aug 27 13:31:46 2015 +0200

    gma ACPI: Do not overwrite backlight configuration
    
    Changes to CR1 and CR2 were effectively overwriting the backlight
    configuration from the devicetree with static values.
    
    Instead read the maximum brightness value from BCLM (backlight
    modulation frequency) and calculate the target level (Arg0 is the
    target level as percentage).
    
    Turned out that _BQC has to return a value from the list returned by
    _BCL. So XBQC got a little heavier to search for the correct value.
    
    Change-Id: I35419993c8250c95fc69ba4db30db9dba9e6f8ff
    Signed-off-by: Nico Huber <nico.huber at secunet.com>
---
 src/drivers/intel/gma/acpi/brightness_levels.asl | 23 +++++++++++++++++------
 src/drivers/intel/gma/acpi/non-pch.asl           |  2 --
 src/drivers/intel/gma/acpi/pch.asl               |  2 --
 3 files changed, 17 insertions(+), 10 deletions(-)

diff --git a/src/drivers/intel/gma/acpi/brightness_levels.asl b/src/drivers/intel/gma/acpi/brightness_levels.asl
index c186989..d0e70a9 100644
--- a/src/drivers/intel/gma/acpi/brightness_levels.asl
+++ b/src/drivers/intel/gma/acpi/brightness_levels.asl
@@ -22,14 +22,25 @@
 
 	Method (XBCM, 1, NotSerialized)
 	{
-		Store (ShiftLeft (Arg0, 4), BCLV)
-		Store (0x80000000, CR1)
-		Store (0x0610, BCLM)
+		Store (Divide (Multiply (Arg0, BCLM), 100), BCLV)
 	}
 
 	Method (XBQC, 0, NotSerialized)
 	{
-		Store (BCLV, Local0)
-		ShiftRight (Local0, 4, Local0)
-		Return (Local0)
+		/* Find value close to BCLV in BRIG (which must be ordered) */
+		Store (BCLV, Local0)			// Current value
+		Store (BCLM, Local1)			// For calculations
+		Store (2, Local2)			// Loop index
+		While (LLess (Local2, Subtract (SizeOf (BRIG), 1))) {
+			Store (DeRefOf (Index (BRIG, Local2)), Local3)
+			/* Use same calculation as XBCM, to get exact matches */
+			Store (Divide (Multiply (Local3, Local1), 100), Local3)
+
+			If (LLessEqual (Local0, Local3)) {
+				Return (DeRefOf (Index (BRIG, Local2)))
+			}
+			Add (Local2, 1, Local2)
+		}
+		/* Didn't find greater/equal value: use the last */
+		Return (DeRefOf (Index (BRIG, Local2)))
 	}
diff --git a/src/drivers/intel/gma/acpi/non-pch.asl b/src/drivers/intel/gma/acpi/non-pch.asl
index c445c97..0e15627 100644
--- a/src/drivers/intel/gma/acpi/non-pch.asl
+++ b/src/drivers/intel/gma/acpi/non-pch.asl
@@ -32,8 +32,6 @@ Device (GFX0)
 	OperationRegion (GFRG, SystemMemory, And (BAR0, 0xfffffffffffffff0), 0x400000)
 	Field (GFRG, DWordAcc, NoLock, Preserve)
 	{
-		Offset (0x61250),
-		CR1, 32,
 		Offset (0x61254),
 		BCLV, 16,
 		BCLM, 16,
diff --git a/src/drivers/intel/gma/acpi/pch.asl b/src/drivers/intel/gma/acpi/pch.asl
index 0a6b583..98746e8 100644
--- a/src/drivers/intel/gma/acpi/pch.asl
+++ b/src/drivers/intel/gma/acpi/pch.asl
@@ -34,8 +34,6 @@ Device (GFX0)
 	{
 		Offset (0x48254),
 		BCLV, 16,
-		Offset (0xc8250),
-		CR1, 32,
 		Offset (0xc8256),
 		BCLM, 16
 	}



More information about the coreboot-gerrit mailing list