<p>Duncan Laurie has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/29123">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">ec/google/wilco: Add ACPI battery and AC objects<br><br>Add the expected objects (_BST, _BIF, _BIX) for reading battery<br>information and status from the embedded controller, and the<br>expected objects for reporting AC power status.<br><br>The battery was tested by booting with a battery attached and checking<br>that it is present in /sys/class/power_supply/BAT0 and that the values<br>are consistent and within expected ranges.<br><br>The AC device was tested by checking the AC status in sysfs when AC<br>is inserted or removed while the system is running.<br><br>Change-Id: Ie996891c383c9e990736690aef9795512ad6d35a<br>Signed-off-by: Duncan Laurie <dlaurie@google.com><br>---<br>A src/ec/google/wilco/acpi/ac.asl<br>A src/ec/google/wilco/acpi/battery.asl<br>M src/ec/google/wilco/acpi/ec.asl<br>3 files changed, 391 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/coreboot refs/changes/23/29123/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/ec/google/wilco/acpi/ac.asl b/src/ec/google/wilco/acpi/ac.asl</span><br><span>new file mode 100644</span><br><span>index 0000000..5d51ce4</span><br><span>--- /dev/null</span><br><span>+++ b/src/ec/google/wilco/acpi/ac.asl</span><br><span>@@ -0,0 +1,32 @@</span><br><span style="color: hsl(120, 100%, 40%);">+/*</span><br><span style="color: hsl(120, 100%, 40%);">+ * This file is part of the coreboot project.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * Copyright 2018 Google LLC</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is free software; you can redistribute it and/or</span><br><span style="color: hsl(120, 100%, 40%);">+ * modify it under the terms of the GNU General Public License as</span><br><span style="color: hsl(120, 100%, 40%);">+ * published by the Free Software Foundation; version 2 of</span><br><span style="color: hsl(120, 100%, 40%);">+ * the License.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is distributed in the hope that it will be useful,</span><br><span style="color: hsl(120, 100%, 40%);">+ * but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br><span style="color: hsl(120, 100%, 40%);">+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span><br><span style="color: hsl(120, 100%, 40%);">+ * GNU General Public License for more details.</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Device (AC)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+        Name (_HID, "ACPI0003")</span><br><span style="color: hsl(120, 100%, 40%);">+     Name (_UID, 1)</span><br><span style="color: hsl(120, 100%, 40%);">+        Name (_PCL, Package () { \_SB, BAT0, BAT1 })</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        Method (_STA)</span><br><span style="color: hsl(120, 100%, 40%);">+ {</span><br><span style="color: hsl(120, 100%, 40%);">+             Return (0xf)</span><br><span style="color: hsl(120, 100%, 40%);">+  }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   Method (_PSR)</span><br><span style="color: hsl(120, 100%, 40%);">+ {</span><br><span style="color: hsl(120, 100%, 40%);">+             Return (R (ACEX))</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span>diff --git a/src/ec/google/wilco/acpi/battery.asl b/src/ec/google/wilco/acpi/battery.asl</span><br><span>new file mode 100644</span><br><span>index 0000000..dd1f69a</span><br><span>--- /dev/null</span><br><span>+++ b/src/ec/google/wilco/acpi/battery.asl</span><br><span>@@ -0,0 +1,357 @@</span><br><span style="color: hsl(120, 100%, 40%);">+/*</span><br><span style="color: hsl(120, 100%, 40%);">+ * This file is part of the coreboot project.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * Copyright 2018 Google LLC</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is free software; you can redistribute it and/or</span><br><span style="color: hsl(120, 100%, 40%);">+ * modify it under the terms of the GNU General Public License as</span><br><span style="color: hsl(120, 100%, 40%);">+ * published by the Free Software Foundation; version 2 of</span><br><span style="color: hsl(120, 100%, 40%);">+ * the License.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is distributed in the hope that it will be useful,</span><br><span style="color: hsl(120, 100%, 40%);">+ * but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br><span style="color: hsl(120, 100%, 40%);">+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span><br><span style="color: hsl(120, 100%, 40%);">+ * GNU General Public License for more details.</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Mutex (BATM, 0)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Method (ESTA, 1, Serialized)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+  /* Check battery presence */</span><br><span style="color: hsl(120, 100%, 40%);">+  If (Arg0 == 1) {</span><br><span style="color: hsl(120, 100%, 40%);">+              Local0 = R (BTEX)</span><br><span style="color: hsl(120, 100%, 40%);">+     } ElseIf (Arg0 == 2) {</span><br><span style="color: hsl(120, 100%, 40%);">+                Local0 = R (P3B2)</span><br><span style="color: hsl(120, 100%, 40%);">+     } Else {</span><br><span style="color: hsl(120, 100%, 40%);">+              Local0 = Zero</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   /* Indicate battery is present */</span><br><span style="color: hsl(120, 100%, 40%);">+     If (Local0) {</span><br><span style="color: hsl(120, 100%, 40%);">+         Return (0x1f)</span><br><span style="color: hsl(120, 100%, 40%);">+ } Else {</span><br><span style="color: hsl(120, 100%, 40%);">+              Return (0xf)</span><br><span style="color: hsl(120, 100%, 40%);">+  }</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Name (BSTM, 0x01)       /* Battery Model String */</span><br><span style="color: hsl(120, 100%, 40%);">+Name (BSTC, 0x02)   /* Battery Chemistry String */</span><br><span style="color: hsl(120, 100%, 40%);">+Name (BSTG, 0x03)       /* Battery Manufacturer String */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/*</span><br><span style="color: hsl(120, 100%, 40%);">+ * Read a battery string from the EC</span><br><span style="color: hsl(120, 100%, 40%);">+ *  Arg0 = Battery String ID</span><br><span style="color: hsl(120, 100%, 40%);">+ *         BSTM = Model</span><br><span style="color: hsl(120, 100%, 40%);">+ *         BSTC = Chemical</span><br><span style="color: hsl(120, 100%, 40%);">+ *         BSTG = Manufacturer</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+Method (BSTR, 1, Serialized)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+        /* Max string length */</span><br><span style="color: hsl(120, 100%, 40%);">+       Local0 = 32</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Select battery string */</span><br><span style="color: hsl(120, 100%, 40%);">+   W (SSEL, Arg0)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      /* Fill buffer until NUL or max string length is read */</span><br><span style="color: hsl(120, 100%, 40%);">+      Name (IBUF, Buffer (Local0 + One) {})</span><br><span style="color: hsl(120, 100%, 40%);">+ For (Local1 = Zero, Local1 < Local0, Local1++) {</span><br><span style="color: hsl(120, 100%, 40%);">+           Local2 = R (BSBS)</span><br><span style="color: hsl(120, 100%, 40%);">+             If (!Local2) {</span><br><span style="color: hsl(120, 100%, 40%);">+                        Break</span><br><span style="color: hsl(120, 100%, 40%);">+         }</span><br><span style="color: hsl(120, 100%, 40%);">+             IBUF[Local1] = Local2</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   /* Truncate and NUL terminate */</span><br><span style="color: hsl(120, 100%, 40%);">+      Local1++</span><br><span style="color: hsl(120, 100%, 40%);">+      Name (OBUF, Buffer (Local1) {})</span><br><span style="color: hsl(120, 100%, 40%);">+       OBUF = Concatenate (IBUF, Zero)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     Return (OBUF)</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/*</span><br><span style="color: hsl(120, 100%, 40%);">+ * Handle Battery Status</span><br><span style="color: hsl(120, 100%, 40%);">+ *  Arg0 = Battery Number</span><br><span style="color: hsl(120, 100%, 40%);">+ *  Arg1 = _BST package</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+Method (EBST, 2, Serialized)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+    If (Acquire (BATM, 1000)) {</span><br><span style="color: hsl(120, 100%, 40%);">+           Return (Arg1)</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   /* Select battery */</span><br><span style="color: hsl(120, 100%, 40%);">+  W (BSEL, Arg0)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      /* 0: Battery State */</span><br><span style="color: hsl(120, 100%, 40%);">+        Arg1[0] = R (BCST)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  /* 1: Battery Present Rate */</span><br><span style="color: hsl(120, 100%, 40%);">+ Local0 = R (BCCL)</span><br><span style="color: hsl(120, 100%, 40%);">+     If (!Local0) {</span><br><span style="color: hsl(120, 100%, 40%);">+                Local0++</span><br><span style="color: hsl(120, 100%, 40%);">+      } ElseIf (R (ACEX)) {</span><br><span style="color: hsl(120, 100%, 40%);">+         If (Local0 & 0x8000) {</span><br><span style="color: hsl(120, 100%, 40%);">+                    Local0 = Ones</span><br><span style="color: hsl(120, 100%, 40%);">+         }</span><br><span style="color: hsl(120, 100%, 40%);">+     } Else {</span><br><span style="color: hsl(120, 100%, 40%);">+              If (Local0 & 0x8000) {</span><br><span style="color: hsl(120, 100%, 40%);">+                    Local0 = 0 - Local0</span><br><span style="color: hsl(120, 100%, 40%);">+                   Local0 &= 0xffff</span><br><span style="color: hsl(120, 100%, 40%);">+          } Else {</span><br><span style="color: hsl(120, 100%, 40%);">+                      Local0 = Ones</span><br><span style="color: hsl(120, 100%, 40%);">+         }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+     Arg1[1] = Local0</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    /* 2: Battery Remaining Capacity */</span><br><span style="color: hsl(120, 100%, 40%);">+   Arg1[2] = R (BCYL)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  /* 3: Battery Present Voltage */</span><br><span style="color: hsl(120, 100%, 40%);">+      Arg1[3] = R (BCVL)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  Release (BATM)</span><br><span style="color: hsl(120, 100%, 40%);">+        Return (Arg1)</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/*</span><br><span style="color: hsl(120, 100%, 40%);">+ * Handle Battery Info</span><br><span style="color: hsl(120, 100%, 40%);">+ *  Arg0 = Battery Number</span><br><span style="color: hsl(120, 100%, 40%);">+ *  Arg1 = _BIF package</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+Method (EBIF, 2, Serialized)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+      If (Acquire (BATM, 1000)) {</span><br><span style="color: hsl(120, 100%, 40%);">+           Return (Arg1)</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   /* Select battery */</span><br><span style="color: hsl(120, 100%, 40%);">+  W (BSEL, Arg0)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      /* Design Capacity */</span><br><span style="color: hsl(120, 100%, 40%);">+ Local0 = R (BSCL)</span><br><span style="color: hsl(120, 100%, 40%);">+     Arg1[1] = Local0</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    /* Last Full Charge Capacity */</span><br><span style="color: hsl(120, 100%, 40%);">+       Arg1[2] = R (BSFL)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  /* Design Voltage */</span><br><span style="color: hsl(120, 100%, 40%);">+  Arg1[4] = R (BSVL)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  /* Design Warning Capacity */</span><br><span style="color: hsl(120, 100%, 40%);">+ Arg1[5] = (Local0 * 10) / 100</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       /* Design Low Capacity */</span><br><span style="color: hsl(120, 100%, 40%);">+     Arg1[6] = (Local0 * 33) / 100</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       /* Granularity */</span><br><span style="color: hsl(120, 100%, 40%);">+     Arg1[7] = Local0 / 100</span><br><span style="color: hsl(120, 100%, 40%);">+        Arg1[8] = Local0 / 100</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      /* Battery Model Number */</span><br><span style="color: hsl(120, 100%, 40%);">+    Arg1[9] = BSTR (BSTM)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       /* Battery Serial Number */</span><br><span style="color: hsl(120, 100%, 40%);">+   Arg1[10] = ToDecimalString (R (BSSL))</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       /* Battery Type */</span><br><span style="color: hsl(120, 100%, 40%);">+    Arg1[11] = BSTR (BSTC)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      /* Battery Manufacturer Name */</span><br><span style="color: hsl(120, 100%, 40%);">+       Arg1[12] = BSTR (BSTG)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      Release (BATM)</span><br><span style="color: hsl(120, 100%, 40%);">+        Return (Arg1)</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/*</span><br><span style="color: hsl(120, 100%, 40%);">+ * Handle Battery Info Extended</span><br><span style="color: hsl(120, 100%, 40%);">+ *  Arg0 = Battery Number</span><br><span style="color: hsl(120, 100%, 40%);">+ *  Arg1 = _BIX package</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+Method (EBIX, 2, Serialized)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+     If (Acquire (BATM, 1000)) {</span><br><span style="color: hsl(120, 100%, 40%);">+           Return (Arg1)</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   /* Select battery */</span><br><span style="color: hsl(120, 100%, 40%);">+  W (BSEL, Arg0)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      /* Design Capacity */</span><br><span style="color: hsl(120, 100%, 40%);">+ Local0 = R (BSCL)</span><br><span style="color: hsl(120, 100%, 40%);">+     Arg1[2] = Local0</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    /* Last Full Charge Capacity */</span><br><span style="color: hsl(120, 100%, 40%);">+       Arg1[3] = R (BSFL)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  /* Design Voltage */</span><br><span style="color: hsl(120, 100%, 40%);">+  Arg1[5] = R (BSVL)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  /* Design Warning Capacity */</span><br><span style="color: hsl(120, 100%, 40%);">+ Arg1[6] = (Local0 * 10) / 100</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       /* Design Low Capacity */</span><br><span style="color: hsl(120, 100%, 40%);">+     Arg1[7] = (Local0 * 33) / 100</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       /* Cycle Count */</span><br><span style="color: hsl(120, 100%, 40%);">+     Arg1[8] = R (BCCY)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  /* Granularity */</span><br><span style="color: hsl(120, 100%, 40%);">+     Arg1[14] = Local0 / 100</span><br><span style="color: hsl(120, 100%, 40%);">+       Arg1[15] = Local0 / 100</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     /* Battery Model Number */</span><br><span style="color: hsl(120, 100%, 40%);">+    Arg1[16] = BSTR (BSTM)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      /* Battery Serial Number */</span><br><span style="color: hsl(120, 100%, 40%);">+   Arg1[17] = ToDecimalString (R (BSSL))</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       /* Battery Type */</span><br><span style="color: hsl(120, 100%, 40%);">+    Arg1[18] = BSTR (BSTC)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      /* Battery Manufacturer Name */</span><br><span style="color: hsl(120, 100%, 40%);">+       Arg1[19] = BSTR (BSTG)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      Release (BATM)</span><br><span style="color: hsl(120, 100%, 40%);">+        Return (Arg1)</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Device (BAT0)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+  Name (_HID, EisaId ("PNP0C0A"))</span><br><span style="color: hsl(120, 100%, 40%);">+     Name (_UID, 1)</span><br><span style="color: hsl(120, 100%, 40%);">+        Name (_PCL, Package () { \_SB })</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    Name (PBIF, Package () {</span><br><span style="color: hsl(120, 100%, 40%);">+              0x00000001,     /* 0x00: Power Unit: mAh */</span><br><span style="color: hsl(120, 100%, 40%);">+           0xFFFFFFFF,     /* 0x01: Design Capacity */</span><br><span style="color: hsl(120, 100%, 40%);">+           0xFFFFFFFF,     /* 0x02: Last Full Charge Capacity */</span><br><span style="color: hsl(120, 100%, 40%);">+         0x00000001,     /* 0x03: Battery Technology: Rechargeable */</span><br><span style="color: hsl(120, 100%, 40%);">+          0xFFFFFFFF,     /* 0x04: Design Voltage */</span><br><span style="color: hsl(120, 100%, 40%);">+            0x00000003,     /* 0x05: Design Capacity of Warning */</span><br><span style="color: hsl(120, 100%, 40%);">+                0xFFFFFFFF,     /* 0x06: Design Capacity of Low */</span><br><span style="color: hsl(120, 100%, 40%);">+            0x00000001,     /* 0x07: Capacity Granularity 1 */</span><br><span style="color: hsl(120, 100%, 40%);">+            0x00000001,     /* 0x08: Capacity Granularity 2 */</span><br><span style="color: hsl(120, 100%, 40%);">+            "",           /* 0x09: Model Number */</span><br><span style="color: hsl(120, 100%, 40%);">+              "",           /* 0x0a: Serial Number */</span><br><span style="color: hsl(120, 100%, 40%);">+             "LION",               /* 0x0b: Battery Type */</span><br><span style="color: hsl(120, 100%, 40%);">+              ""            /* 0x0c: OEM Information */</span><br><span style="color: hsl(120, 100%, 40%);">+   })</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  Name (PBIX, Package () {</span><br><span style="color: hsl(120, 100%, 40%);">+              0x00000000,     /* 0x00: Revision */</span><br><span style="color: hsl(120, 100%, 40%);">+          0x00000001,     /* 0x01: Power Unit: mAh */</span><br><span style="color: hsl(120, 100%, 40%);">+           0xFFFFFFFF,     /* 0x02: Design Capacity */</span><br><span style="color: hsl(120, 100%, 40%);">+           0xFFFFFFFF,     /* 0x03: Last Full Charge Capacity */</span><br><span style="color: hsl(120, 100%, 40%);">+         0x00000001,     /* 0x04: Battery Technology: Rechargeable */</span><br><span style="color: hsl(120, 100%, 40%);">+          0xFFFFFFFF,     /* 0x05: Design Voltage */</span><br><span style="color: hsl(120, 100%, 40%);">+            0x00000003,     /* 0x06: Design Capacity of Warning */</span><br><span style="color: hsl(120, 100%, 40%);">+                0xFFFFFFFF,     /* 0x07: Design Capacity of Low */</span><br><span style="color: hsl(120, 100%, 40%);">+            0x00000000,     /* 0x08: Cycle Count */</span><br><span style="color: hsl(120, 100%, 40%);">+               0x00018000,     /* 0x09: Measurement Accuracy (98.3%?) */</span><br><span style="color: hsl(120, 100%, 40%);">+             0x000001F4,     /* 0x0a: Max Sampling Time (500ms) */</span><br><span style="color: hsl(120, 100%, 40%);">+         0x0000000a,     /* 0x0b: Min Sampling Time (10ms) */</span><br><span style="color: hsl(120, 100%, 40%);">+          0xFFFFFFFF,     /* 0x0c: Max Averaging Interval */</span><br><span style="color: hsl(120, 100%, 40%);">+            0xFFFFFFFF,     /* 0x0d: Min Averaging Interval */</span><br><span style="color: hsl(120, 100%, 40%);">+            0x00000001,     /* 0x0e: Capacity Granularity 1 */</span><br><span style="color: hsl(120, 100%, 40%);">+            0x00000001,     /* 0x0f: Capacity Granularity 2 */</span><br><span style="color: hsl(120, 100%, 40%);">+            "",           /* 0x10 Model Number */</span><br><span style="color: hsl(120, 100%, 40%);">+               "",           /* 0x11: Serial Number */</span><br><span style="color: hsl(120, 100%, 40%);">+             "LION",               /* 0x12: Battery Type */</span><br><span style="color: hsl(120, 100%, 40%);">+              ""            /* 0x13: OEM Information */</span><br><span style="color: hsl(120, 100%, 40%);">+   })</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  Name (PBST, Package () {</span><br><span style="color: hsl(120, 100%, 40%);">+              0x00000000,     /* 0x00: Battery State */</span><br><span style="color: hsl(120, 100%, 40%);">+             0xFFFFFFFF,     /* 0x01: Battery Present Rate */</span><br><span style="color: hsl(120, 100%, 40%);">+              0xFFFFFFFF,     /* 0x02: Battery Remaining Capacity */</span><br><span style="color: hsl(120, 100%, 40%);">+                0xFFFFFFFF,     /* 0x03: Battery Present Voltage */</span><br><span style="color: hsl(120, 100%, 40%);">+   })</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  Method (_STA, 0, Serialized)</span><br><span style="color: hsl(120, 100%, 40%);">+  {</span><br><span style="color: hsl(120, 100%, 40%);">+             Return (ESTA (_UID))</span><br><span style="color: hsl(120, 100%, 40%);">+  }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   Method (_BST, 0, Serialized)</span><br><span style="color: hsl(120, 100%, 40%);">+  {</span><br><span style="color: hsl(120, 100%, 40%);">+             Return (EBST (_UID, PBST))</span><br><span style="color: hsl(120, 100%, 40%);">+    }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   Method (_BIF, 0, Serialized)</span><br><span style="color: hsl(120, 100%, 40%);">+  {</span><br><span style="color: hsl(120, 100%, 40%);">+             Return (EBIF (_UID, PBIF))</span><br><span style="color: hsl(120, 100%, 40%);">+    }</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Device (BAT1)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+      Name (_HID, EisaId ("PNP0C0A"))</span><br><span style="color: hsl(120, 100%, 40%);">+     Name (_UID, 2)</span><br><span style="color: hsl(120, 100%, 40%);">+        Name (_PCL, Package () { \_SB })</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    Name (PBIF, Package () {</span><br><span style="color: hsl(120, 100%, 40%);">+              0x00000001,     /* 0x00: Power Unit: mAh */</span><br><span style="color: hsl(120, 100%, 40%);">+           0xFFFFFFFF,     /* 0x01: Design Capacity */</span><br><span style="color: hsl(120, 100%, 40%);">+           0xFFFFFFFF,     /* 0x02: Last Full Charge Capacity */</span><br><span style="color: hsl(120, 100%, 40%);">+         0x00000001,     /* 0x03: Battery Technology: Rechargeable */</span><br><span style="color: hsl(120, 100%, 40%);">+          0xFFFFFFFF,     /* 0x04: Design Voltage */</span><br><span style="color: hsl(120, 100%, 40%);">+            0x00000003,     /* 0x05: Design Capacity of Warning */</span><br><span style="color: hsl(120, 100%, 40%);">+                0xFFFFFFFF,     /* 0x06: Design Capacity of Low */</span><br><span style="color: hsl(120, 100%, 40%);">+            0x00000001,     /* 0x07: Capacity Granularity 1 */</span><br><span style="color: hsl(120, 100%, 40%);">+            0x00000001,     /* 0x08: Capacity Granularity 2 */</span><br><span style="color: hsl(120, 100%, 40%);">+            "",           /* 0x09: Model Number */</span><br><span style="color: hsl(120, 100%, 40%);">+              "",           /* 0x0a: Serial Number */</span><br><span style="color: hsl(120, 100%, 40%);">+             "LION",               /* 0x0b: Battery Type */</span><br><span style="color: hsl(120, 100%, 40%);">+              ""            /* 0x0c: OEM Information */</span><br><span style="color: hsl(120, 100%, 40%);">+   })</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  Name (PBIX, Package () {</span><br><span style="color: hsl(120, 100%, 40%);">+              0x00000000,     /* 0x00: Revision */</span><br><span style="color: hsl(120, 100%, 40%);">+          0x00000001,     /* 0x01: Power Unit: mAh */</span><br><span style="color: hsl(120, 100%, 40%);">+           0xFFFFFFFF,     /* 0x02: Design Capacity */</span><br><span style="color: hsl(120, 100%, 40%);">+           0xFFFFFFFF,     /* 0x03: Last Full Charge Capacity */</span><br><span style="color: hsl(120, 100%, 40%);">+         0x00000001,     /* 0x04: Battery Technology: Rechargeable */</span><br><span style="color: hsl(120, 100%, 40%);">+          0xFFFFFFFF,     /* 0x05: Design Voltage */</span><br><span style="color: hsl(120, 100%, 40%);">+            0x00000003,     /* 0x06: Design Capacity of Warning */</span><br><span style="color: hsl(120, 100%, 40%);">+                0xFFFFFFFF,     /* 0x07: Design Capacity of Low */</span><br><span style="color: hsl(120, 100%, 40%);">+            0x00000000,     /* 0x08: Cycle Count */</span><br><span style="color: hsl(120, 100%, 40%);">+               0x00018000,     /* 0x09: Measurement Accuracy (98.3%?) */</span><br><span style="color: hsl(120, 100%, 40%);">+             0x000001F4,     /* 0x0a: Max Sampling Time (500ms) */</span><br><span style="color: hsl(120, 100%, 40%);">+         0x0000000a,     /* 0x0b: Min Sampling Time (10ms) */</span><br><span style="color: hsl(120, 100%, 40%);">+          0xFFFFFFFF,     /* 0x0c: Max Averaging Interval */</span><br><span style="color: hsl(120, 100%, 40%);">+            0xFFFFFFFF,     /* 0x0d: Min Averaging Interval */</span><br><span style="color: hsl(120, 100%, 40%);">+            0x00000001,     /* 0x0e: Capacity Granularity 1 */</span><br><span style="color: hsl(120, 100%, 40%);">+            0x00000001,     /* 0x0f: Capacity Granularity 2 */</span><br><span style="color: hsl(120, 100%, 40%);">+            "",           /* 0x10 Model Number */</span><br><span style="color: hsl(120, 100%, 40%);">+               "",           /* 0x11: Serial Number */</span><br><span style="color: hsl(120, 100%, 40%);">+             "LION",               /* 0x12: Battery Type */</span><br><span style="color: hsl(120, 100%, 40%);">+              ""            /* 0x13: OEM Information */</span><br><span style="color: hsl(120, 100%, 40%);">+   })</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  Name (PBST, Package () {</span><br><span style="color: hsl(120, 100%, 40%);">+              0x00000000,     /* 0x00: Battery State */</span><br><span style="color: hsl(120, 100%, 40%);">+             0xFFFFFFFF,     /* 0x01: Battery Present Rate */</span><br><span style="color: hsl(120, 100%, 40%);">+              0xFFFFFFFF,     /* 0x02: Battery Remaining Capacity */</span><br><span style="color: hsl(120, 100%, 40%);">+                0xFFFFFFFF,     /* 0x03: Battery Present Voltage */</span><br><span style="color: hsl(120, 100%, 40%);">+   })</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  Method (_STA, 0, Serialized)</span><br><span style="color: hsl(120, 100%, 40%);">+  {</span><br><span style="color: hsl(120, 100%, 40%);">+             Return (ESTA (^_UID))</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   Method (_BST, 0, Serialized)</span><br><span style="color: hsl(120, 100%, 40%);">+  {</span><br><span style="color: hsl(120, 100%, 40%);">+             Return (EBST (^_UID, PBST))</span><br><span style="color: hsl(120, 100%, 40%);">+   }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   Method (_BIF, 0, Serialized)</span><br><span style="color: hsl(120, 100%, 40%);">+  {</span><br><span style="color: hsl(120, 100%, 40%);">+             Return (EBIF (^_UID, PBIF))</span><br><span style="color: hsl(120, 100%, 40%);">+   }</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span>diff --git a/src/ec/google/wilco/acpi/ec.asl b/src/ec/google/wilco/acpi/ec.asl</span><br><span>index 8197c54..d669854 100644</span><br><span>--- a/src/ec/google/wilco/acpi/ec.asl</span><br><span>+++ b/src/ec/google/wilco/acpi/ec.asl</span><br><span>@@ -132,6 +132,8 @@</span><br><span> </span><br><span>      #include "ec_dev.asl"</span><br><span>      #include "ec_ram.asl"</span><br><span style="color: hsl(120, 100%, 40%);">+       #include "ac.asl"</span><br><span style="color: hsl(120, 100%, 40%);">+   #include "battery.asl"</span><br><span>     #include "lid.asl"</span><br><span>         #include "platform.asl"</span><br><span> }</span><br><span></span><br></pre><p>To view, visit <a href="https://review.coreboot.org/29123">change 29123</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://review.coreboot.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://review.coreboot.org/29123"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: coreboot </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: Ie996891c383c9e990736690aef9795512ad6d35a </div>
<div style="display:none"> Gerrit-Change-Number: 29123 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Duncan Laurie <dlaurie@chromium.org> </div>