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@secunet.com>
Reviewed-on: http://review.coreboot.org/11704
Tested-by: build bot (Jenkins)
Reviewed-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Reviewed-by: Vladimir Serbinenko <phcoder@gmail.com>
This commit is contained in:
Nico Huber 2015-08-27 13:31:46 +02:00 committed by Nico Huber
parent d5842f5b5f
commit deeec18520
3 changed files with 17 additions and 10 deletions

View File

@ -22,14 +22,25 @@
Method (XBCM, 1, NotSerialized) Method (XBCM, 1, NotSerialized)
{ {
Store (ShiftLeft (Arg0, 4), BCLV) Store (Divide (Multiply (Arg0, BCLM), 100), BCLV)
Store (0x80000000, CR1)
Store (0x0610, BCLM)
} }
Method (XBQC, 0, NotSerialized) Method (XBQC, 0, NotSerialized)
{ {
Store (BCLV, Local0) /* Find value close to BCLV in BRIG (which must be ordered) */
ShiftRight (Local0, 4, Local0) Store (BCLV, Local0) // Current value
Return (Local0) 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)))
} }

View File

@ -32,8 +32,6 @@ Device (GFX0)
OperationRegion (GFRG, SystemMemory, And (BAR0, 0xfffffffffffffff0), 0x400000) OperationRegion (GFRG, SystemMemory, And (BAR0, 0xfffffffffffffff0), 0x400000)
Field (GFRG, DWordAcc, NoLock, Preserve) Field (GFRG, DWordAcc, NoLock, Preserve)
{ {
Offset (0x61250),
CR1, 32,
Offset (0x61254), Offset (0x61254),
BCLV, 16, BCLV, 16,
BCLM, 16, BCLM, 16,

View File

@ -34,8 +34,6 @@ Device (GFX0)
{ {
Offset (0x48254), Offset (0x48254),
BCLV, 16, BCLV, 16,
Offset (0xc8250),
CR1, 32,
Offset (0xc8256), Offset (0xc8256),
BCLM, 16 BCLM, 16
} }