aboutsummaryrefslogtreecommitdiff
path: root/src/drivers/intel/gma/acpi/configure_brightness_levels.asl
diff options
context:
space:
mode:
Diffstat (limited to 'src/drivers/intel/gma/acpi/configure_brightness_levels.asl')
-rw-r--r--src/drivers/intel/gma/acpi/configure_brightness_levels.asl24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/drivers/intel/gma/acpi/configure_brightness_levels.asl b/src/drivers/intel/gma/acpi/configure_brightness_levels.asl
new file mode 100644
index 0000000000..38eb116c67
--- /dev/null
+++ b/src/drivers/intel/gma/acpi/configure_brightness_levels.asl
@@ -0,0 +1,24 @@
+ Method (XBCM, 1, NotSerialized)
+ {
+ Store (Divide (Multiply (Arg0, BCLM), 100), BCLV)
+ }
+
+ Method (XBQC, 0, NotSerialized)
+ {
+ /* 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)))
+ }