summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mainboard/google/brya/acpi/power.asl15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/mainboard/google/brya/acpi/power.asl b/src/mainboard/google/brya/acpi/power.asl
index 55f8dbda8f..618030b4fd 100644
--- a/src/mainboard/google/brya/acpi/power.asl
+++ b/src/mainboard/google/brya/acpi/power.asl
@@ -19,6 +19,9 @@
#define GC6_DEFER_TYPE_EXIT_GC6 3
+/* 250ms in "Timer" units (i.e. 100ns increments) */
+#define MIN_OFF_TIME_TIMERS 2500000
+
/* Optimus Power Control State */
Name (OPCS, OPTIMUS_POWER_CONTROL_DISABLE)
@@ -45,6 +48,8 @@ Name (DFEN, 0)
Name (DFCI, 0)
/* Deferred GC6 Exit control */
Name (DFCO, 0)
+/* GCOFF Timer */
+Name (GCOT, 0)
/* "GC6 In", i.e. GC6 Entry Sequence */
Method (GC6I, 0, Serialized)
@@ -115,6 +120,14 @@ Method (PGON, 0, Serialized)
Return
}
+ Local0 = Timer - GCOT
+ If (Local0 < MIN_OFF_TIME_TIMERS)
+ {
+ Local1 = (MIN_OFF_TIME_TIMERS - Local0) / 10000
+ Printf("Sleeping %o to ensure min GCOFF time", Local1)
+ Sleep (Local1)
+ }
+
/* Assert PERST# */
\_SB.PCI0.CTXS (GPIO_GPU_PERST_L)
@@ -189,6 +202,8 @@ Method (PGOF, 0, Serialized)
\_SB.PCI0.CTXS (GPIO_1V8_PWR_EN)
GPPL (GPIO_1V8_PG, 0, 20)
+ GCOT = Timer
+
GPPS = GPU_POWER_STATE_OFF
Printf ("GPU sequenced off")
}