<p>Patrick Georgi <strong>merged</strong> this change.</p><p><a href="https://review.coreboot.org/c/coreboot/+/29565">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  build bot (Jenkins): Verified
  Philipp Deppenwiese: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">lenovo/h8,thinkpads: Re-do USB Always On<br><br>Re-write the UAO handling code as it had stopped working (#171)<br>  (the flag was not getting read from the RTC properly in SMM)<br><br>Remove the SMM code as it's not needed (but EC flag won't be set<br>  upon entering S3 now)<br>Set the EC flags on boot the same way other flags are set<br>Document bitwise operators for clarity<br>Propagate changes to other Thinkpads<br>  (updated X201 to have 2 bits for the flag as it only had 1)<br><br>Per Nicola Corna's previous commits, 0x0d is set for "AC only"<br>  "AC only" does exhibit different behaviour - the USB port is<br>  turned on a few seconds after entering S3, rather than < 1 sec,<br>  regardless of AC status<br><br>Tested on X220<br><br>Change-Id: If812cd1ef8fb1a24d7fadbe834f574b40cbcd56a<br>Signed-off-by: Nathaniel Roach <nroach44@gmail.com><br>Reviewed-on: https://review.coreboot.org/c/29565<br>Tested-by: build bot (Jenkins) <no-reply@coreboot.org><br>Reviewed-by: Philipp Deppenwiese <zaolin.daisuki@gmail.com><br>---<br>M src/ec/lenovo/h8/Makefile.inc<br>M src/ec/lenovo/h8/h8.c<br>M src/ec/lenovo/h8/h8.h<br>D src/ec/lenovo/h8/smm.c<br>M src/mainboard/lenovo/l520/smihandler.c<br>M src/mainboard/lenovo/t420/smihandler.c<br>M src/mainboard/lenovo/t420s/smihandler.c<br>M src/mainboard/lenovo/t430/smihandler.c<br>M src/mainboard/lenovo/t430s/smihandler.c<br>M src/mainboard/lenovo/t520/smihandler.c<br>M src/mainboard/lenovo/t530/smihandler.c<br>M src/mainboard/lenovo/x201/cmos.layout<br>M src/mainboard/lenovo/x201/smihandler.c<br>M src/mainboard/lenovo/x220/cmos.layout<br>M src/mainboard/lenovo/x220/smihandler.c<br>M src/mainboard/lenovo/x230/smihandler.c<br>16 files changed, 41 insertions(+), 72 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/ec/lenovo/h8/Makefile.inc b/src/ec/lenovo/h8/Makefile.inc</span><br><span>index e4408f1..ebf6d7d 100644</span><br><span>--- a/src/ec/lenovo/h8/Makefile.inc</span><br><span>+++ b/src/ec/lenovo/h8/Makefile.inc</span><br><span>@@ -9,6 +9,5 @@</span><br><span> ramstage-y += bluetooth.c</span><br><span> ramstage-y += wwan.c</span><br><span> ramstage-$(CONFIG_HAVE_ACPI_TABLES) += ssdt.c</span><br><span style="color: hsl(0, 100%, 40%);">-smm-y += smm.c</span><br><span> </span><br><span> endif</span><br><span>diff --git a/src/ec/lenovo/h8/h8.c b/src/ec/lenovo/h8/h8.c</span><br><span>index 1f1655d..da216ec 100644</span><br><span>--- a/src/ec/lenovo/h8/h8.c</span><br><span>+++ b/src/ec/lenovo/h8/h8.c</span><br><span>@@ -128,6 +128,34 @@</span><br><span> </span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+void h8_usb_always_on_enable(enum usb_always_on on)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+  u8 val;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     switch (on) {</span><br><span style="color: hsl(120, 100%, 40%);">+ case UAO_OFF:</span><br><span style="color: hsl(120, 100%, 40%);">+         val = ec_read(H8_USB_ALWAYS_ON);</span><br><span style="color: hsl(120, 100%, 40%);">+              // Clear bits 0,2,3</span><br><span style="color: hsl(120, 100%, 40%);">+           val &= ~(H8_USB_ALWAYS_ON_ENABLE | H8_USB_ALWAYS_ON_AC_ONLY);</span><br><span style="color: hsl(120, 100%, 40%);">+             ec_write(H8_USB_ALWAYS_ON, val);</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%);">+      case UAO_AC_AND_BATTERY:</span><br><span style="color: hsl(120, 100%, 40%);">+              val = ec_read(H8_USB_ALWAYS_ON);</span><br><span style="color: hsl(120, 100%, 40%);">+              val |= H8_USB_ALWAYS_ON_ENABLE; // Set bit 0</span><br><span style="color: hsl(120, 100%, 40%);">+          val &= ~H8_USB_ALWAYS_ON_AC_ONLY; // Clear bits 2 and 3</span><br><span style="color: hsl(120, 100%, 40%);">+           ec_write(H8_USB_ALWAYS_ON, val);</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%);">+      case UAO_AC_ONLY:</span><br><span style="color: hsl(120, 100%, 40%);">+             val = ec_read(H8_USB_ALWAYS_ON);</span><br><span style="color: hsl(120, 100%, 40%);">+              // Set bits 0,2,3</span><br><span style="color: hsl(120, 100%, 40%);">+             val |= (H8_USB_ALWAYS_ON_ENABLE | H8_USB_ALWAYS_ON_AC_ONLY);</span><br><span style="color: hsl(120, 100%, 40%);">+          ec_write(H8_USB_ALWAYS_ON, val);</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%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> void h8_usb_power_enable(int onoff)</span><br><span> {</span><br><span>   if (onoff)</span><br><span>@@ -270,8 +298,10 @@</span><br><span>    ec_write(0x1f, conf->eventf_enable);</span><br><span> </span><br><span>  ec_write(H8_FAN_CONTROL, H8_FAN_CONTROL_AUTO);</span><br><span style="color: hsl(0, 100%, 40%);">-  ec_write(H8_USB_ALWAYS_ON, ec_read(H8_USB_ALWAYS_ON) &</span><br><span style="color: hsl(0, 100%, 40%);">-                      ~H8_USB_ALWAYS_ON_ENABLE);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  if (get_option(&val, "usb_always_on") != CB_SUCCESS)</span><br><span style="color: hsl(120, 100%, 40%);">+            val = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+      h8_usb_always_on_enable(val);</span><br><span> </span><br><span>    if (get_option(&val, "wlan") != CB_SUCCESS)</span><br><span>            val = 1;</span><br><span>diff --git a/src/ec/lenovo/h8/h8.h b/src/ec/lenovo/h8/h8.h</span><br><span>index 4ac395a..a46ba1f 100644</span><br><span>--- a/src/ec/lenovo/h8/h8.h</span><br><span>+++ b/src/ec/lenovo/h8/h8.h</span><br><span>@@ -19,9 +19,16 @@</span><br><span> #include <stdint.h></span><br><span> #include <device/device.h></span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+enum usb_always_on {</span><br><span style="color: hsl(120, 100%, 40%);">+     UAO_OFF = 0,</span><br><span style="color: hsl(120, 100%, 40%);">+  UAO_AC_AND_BATTERY = 1,</span><br><span style="color: hsl(120, 100%, 40%);">+       UAO_AC_ONLY = 2</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> void h8_trackpoint_enable(int on);</span><br><span> void h8_wlan_enable(int on);</span><br><span> void h8_set_audio_mute(int on);</span><br><span style="color: hsl(120, 100%, 40%);">+void h8_usb_always_on_enable(enum usb_always_on on);</span><br><span> void h8_usb_power_enable(int on);</span><br><span> void h8_enable_event(int event);</span><br><span> void h8_disable_event(int event);</span><br><span>diff --git a/src/ec/lenovo/h8/smm.c b/src/ec/lenovo/h8/smm.c</span><br><span>deleted file mode 100644</span><br><span>index 6005c31..0000000</span><br><span>--- a/src/ec/lenovo/h8/smm.c</span><br><span>+++ /dev/null</span><br><span>@@ -1,47 +0,0 @@</span><br><span style="color: hsl(0, 100%, 40%);">-/*</span><br><span style="color: hsl(0, 100%, 40%);">- * This file is part of the coreboot project.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * Copyright (C) 2016 Nicola Corna <nicola@corna.info></span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * This program is free software; you can redistribute it and/or modify</span><br><span style="color: hsl(0, 100%, 40%);">- * it under the terms of the GNU General Public License as published by</span><br><span style="color: hsl(0, 100%, 40%);">- * the Free Software Foundation; version 2 of the License.</span><br><span style="color: hsl(0, 100%, 40%);">- *</span><br><span style="color: hsl(0, 100%, 40%);">- * This program is distributed in the hope that it will be useful,</span><br><span style="color: hsl(0, 100%, 40%);">- * but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br><span style="color: hsl(0, 100%, 40%);">- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span><br><span style="color: hsl(0, 100%, 40%);">- * GNU General Public License for more details.</span><br><span style="color: hsl(0, 100%, 40%);">- */</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#include <ec/acpi/ec.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include <pc80/mc146818rtc.h></span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-#include "h8.h"</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-enum usb_always_on {</span><br><span style="color: hsl(0, 100%, 40%);">-      UAO_OFF = 0,</span><br><span style="color: hsl(0, 100%, 40%);">-    UAO_AC_AND_BATTERY,</span><br><span style="color: hsl(0, 100%, 40%);">-     UAO_AC_ONLY</span><br><span style="color: hsl(0, 100%, 40%);">-};</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-void h8_usb_always_on(void)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-       enum usb_always_on val;</span><br><span style="color: hsl(0, 100%, 40%);">- u8 reg;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- if (get_option(&val, "usb_always_on") != CB_SUCCESS)</span><br><span style="color: hsl(0, 100%, 40%);">-              val = UAO_OFF;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-  if (val == UAO_AC_AND_BATTERY) {</span><br><span style="color: hsl(0, 100%, 40%);">-                reg = ec_read(H8_USB_ALWAYS_ON);</span><br><span style="color: hsl(0, 100%, 40%);">-                reg &= ~H8_USB_ALWAYS_ON_AC_ONLY;</span><br><span style="color: hsl(0, 100%, 40%);">-           reg |= H8_USB_ALWAYS_ON_ENABLE;</span><br><span style="color: hsl(0, 100%, 40%);">-         ec_write(H8_USB_ALWAYS_ON, reg);</span><br><span style="color: hsl(0, 100%, 40%);">-        } else if (val == UAO_AC_ONLY) {</span><br><span style="color: hsl(0, 100%, 40%);">-                reg = ec_read(H8_USB_ALWAYS_ON);</span><br><span style="color: hsl(0, 100%, 40%);">-                reg |= H8_USB_ALWAYS_ON_AC_ONLY;</span><br><span style="color: hsl(0, 100%, 40%);">-                reg |= H8_USB_ALWAYS_ON_ENABLE;</span><br><span style="color: hsl(0, 100%, 40%);">-         ec_write(H8_USB_ALWAYS_ON, reg);</span><br><span style="color: hsl(0, 100%, 40%);">-                ec_set_bit(0x2, 3);</span><br><span style="color: hsl(0, 100%, 40%);">-     }</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span>diff --git a/src/mainboard/lenovo/l520/smihandler.c b/src/mainboard/lenovo/l520/smihandler.c</span><br><span>index fa038ed..982233d 100644</span><br><span>--- a/src/mainboard/lenovo/l520/smihandler.c</span><br><span>+++ b/src/mainboard/lenovo/l520/smihandler.c</span><br><span>@@ -73,8 +73,6 @@</span><br><span> </span><br><span> void mainboard_smi_sleep(u8 slp_typ)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    h8_usb_always_on();</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>  if (slp_typ == 3) {</span><br><span>          u8 ec_wake = ec_read(0x32);</span><br><span>          /* If EC wake events are enabled, enable wake on EC WAKE GPE.  */</span><br><span>diff --git a/src/mainboard/lenovo/t420/smihandler.c b/src/mainboard/lenovo/t420/smihandler.c</span><br><span>index dd29232..bc92cf1 100644</span><br><span>--- a/src/mainboard/lenovo/t420/smihandler.c</span><br><span>+++ b/src/mainboard/lenovo/t420/smihandler.c</span><br><span>@@ -72,8 +72,6 @@</span><br><span> </span><br><span> void mainboard_smi_sleep(u8 slp_typ)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-     h8_usb_always_on();</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>  if (slp_typ == 3) {</span><br><span>          u8 ec_wake = ec_read(0x32);</span><br><span>          /* If EC wake events are enabled, enable wake on EC WAKE GPE. */</span><br><span>diff --git a/src/mainboard/lenovo/t420s/smihandler.c b/src/mainboard/lenovo/t420s/smihandler.c</span><br><span>index 578aee8..0e8e6d0 100644</span><br><span>--- a/src/mainboard/lenovo/t420s/smihandler.c</span><br><span>+++ b/src/mainboard/lenovo/t420s/smihandler.c</span><br><span>@@ -102,8 +102,6 @@</span><br><span> </span><br><span> void mainboard_smi_sleep(u8 slp_typ)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-        h8_usb_always_on();</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>  if (slp_typ == 3) {</span><br><span>          u8 ec_wake = ec_read(0x32);</span><br><span>          /* If EC wake events are enabled, enable wake on EC WAKE GPE. */</span><br><span>diff --git a/src/mainboard/lenovo/t430/smihandler.c b/src/mainboard/lenovo/t430/smihandler.c</span><br><span>index 910fc1a..9a567ab 100644</span><br><span>--- a/src/mainboard/lenovo/t430/smihandler.c</span><br><span>+++ b/src/mainboard/lenovo/t430/smihandler.c</span><br><span>@@ -72,8 +72,6 @@</span><br><span> </span><br><span> void mainboard_smi_sleep(u8 slp_typ)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-      h8_usb_always_on();</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>  if (slp_typ == 3) {</span><br><span>          u8 ec_wake = ec_read(0x32);</span><br><span>          /* If EC wake events are enabled, enable wake on EC WAKE GPE. */</span><br><span>diff --git a/src/mainboard/lenovo/t430s/smihandler.c b/src/mainboard/lenovo/t430s/smihandler.c</span><br><span>index 79679dc..8831e9d 100644</span><br><span>--- a/src/mainboard/lenovo/t430s/smihandler.c</span><br><span>+++ b/src/mainboard/lenovo/t430s/smihandler.c</span><br><span>@@ -102,8 +102,6 @@</span><br><span> </span><br><span> void mainboard_smi_sleep(u8 slp_typ)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-        h8_usb_always_on();</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>  if (slp_typ == 3) {</span><br><span>          u8 ec_wake = ec_read(0x32);</span><br><span>          /* If EC wake events are enabled, enable wake on EC WAKE GPE. */</span><br><span>diff --git a/src/mainboard/lenovo/t520/smihandler.c b/src/mainboard/lenovo/t520/smihandler.c</span><br><span>index 2c50e23..f8400dd 100644</span><br><span>--- a/src/mainboard/lenovo/t520/smihandler.c</span><br><span>+++ b/src/mainboard/lenovo/t520/smihandler.c</span><br><span>@@ -102,8 +102,6 @@</span><br><span> </span><br><span> void mainboard_smi_sleep(u8 slp_typ)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    h8_usb_always_on();</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>  if (slp_typ == 3) {</span><br><span>          u8 ec_wake = ec_read(0x32);</span><br><span>          /* If EC wake events are enabled, enable wake on EC WAKE GPE. */</span><br><span>diff --git a/src/mainboard/lenovo/t530/smihandler.c b/src/mainboard/lenovo/t530/smihandler.c</span><br><span>index c967e40..150232f 100644</span><br><span>--- a/src/mainboard/lenovo/t530/smihandler.c</span><br><span>+++ b/src/mainboard/lenovo/t530/smihandler.c</span><br><span>@@ -102,8 +102,6 @@</span><br><span> </span><br><span> void mainboard_smi_sleep(u8 slp_typ)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    h8_usb_always_on();</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>  if (slp_typ == 3) {</span><br><span>          u8 ec_wake = ec_read(0x32);</span><br><span>          /* If EC wake events are enabled, enable wake on EC WAKE GPE. */</span><br><span>diff --git a/src/mainboard/lenovo/x201/cmos.layout b/src/mainboard/lenovo/x201/cmos.layout</span><br><span>index d8d8794..0cda679 100644</span><br><span>--- a/src/mainboard/lenovo/x201/cmos.layout</span><br><span>+++ b/src/mainboard/lenovo/x201/cmos.layout</span><br><span>@@ -70,7 +70,7 @@</span><br><span> 419         1       e       1        power_management_beeps</span><br><span> 420         1       e       1        low_battery_beep</span><br><span> 421         1       e       9        sata_mode</span><br><span style="color: hsl(0, 100%, 40%);">-422         1       e       11       usb_always_on</span><br><span style="color: hsl(120, 100%, 40%);">+422         2       e       11       usb_always_on</span><br><span> #423        1       r       1        unused</span><br><span> </span><br><span> # coreboot config options: northbridge</span><br><span>diff --git a/src/mainboard/lenovo/x201/smihandler.c b/src/mainboard/lenovo/x201/smihandler.c</span><br><span>index 10ca4d4..f1e2c3f 100644</span><br><span>--- a/src/mainboard/lenovo/x201/smihandler.c</span><br><span>+++ b/src/mainboard/lenovo/x201/smihandler.c</span><br><span>@@ -178,8 +178,6 @@</span><br><span> </span><br><span> void mainboard_smi_sleep(u8 slp_typ)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-  h8_usb_always_on();</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>  if (slp_typ == 3) {</span><br><span>          u8 ec_wake = ec_read(0x32);</span><br><span>          /* If EC wake events are enabled, enable wake on EC WAKE GPE.  */</span><br><span>diff --git a/src/mainboard/lenovo/x220/cmos.layout b/src/mainboard/lenovo/x220/cmos.layout</span><br><span>index c6e270a..d4a4ed3 100644</span><br><span>--- a/src/mainboard/lenovo/x220/cmos.layout</span><br><span>+++ b/src/mainboard/lenovo/x220/cmos.layout</span><br><span>@@ -69,7 +69,7 @@</span><br><span> 418         1       e       1        sticky_fn</span><br><span> 419         1       e       1        power_management_beeps</span><br><span> 421         1       e       9        sata_mode</span><br><span style="color: hsl(0, 100%, 40%);">-422         1       e       12       usb_always_on</span><br><span style="color: hsl(120, 100%, 40%);">+422         2       e       12       usb_always_on</span><br><span> #423        1       r       1        unused</span><br><span> </span><br><span> # coreboot config options: cpu</span><br><span>diff --git a/src/mainboard/lenovo/x220/smihandler.c b/src/mainboard/lenovo/x220/smihandler.c</span><br><span>index c967e40..150232f 100644</span><br><span>--- a/src/mainboard/lenovo/x220/smihandler.c</span><br><span>+++ b/src/mainboard/lenovo/x220/smihandler.c</span><br><span>@@ -102,8 +102,6 @@</span><br><span> </span><br><span> void mainboard_smi_sleep(u8 slp_typ)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-        h8_usb_always_on();</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>  if (slp_typ == 3) {</span><br><span>          u8 ec_wake = ec_read(0x32);</span><br><span>          /* If EC wake events are enabled, enable wake on EC WAKE GPE. */</span><br><span>diff --git a/src/mainboard/lenovo/x230/smihandler.c b/src/mainboard/lenovo/x230/smihandler.c</span><br><span>index a69b78f..2425927 100644</span><br><span>--- a/src/mainboard/lenovo/x230/smihandler.c</span><br><span>+++ b/src/mainboard/lenovo/x230/smihandler.c</span><br><span>@@ -72,8 +72,6 @@</span><br><span> </span><br><span> void mainboard_smi_sleep(u8 slp_typ)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-      h8_usb_always_on();</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>  if (slp_typ == 3) {</span><br><span>          u8 ec_wake = ec_read(0x32);</span><br><span>          /* If EC wake events are enabled, enable wake on EC WAKE GPE.  */</span><br><span></span><br></pre><p>To view, visit <a href="https://review.coreboot.org/c/coreboot/+/29565">change 29565</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/c/coreboot/+/29565"/><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-Change-Id: If812cd1ef8fb1a24d7fadbe834f574b40cbcd56a </div>
<div style="display:none"> Gerrit-Change-Number: 29565 </div>
<div style="display:none"> Gerrit-PatchSet: 7 </div>
<div style="display:none"> Gerrit-Owner: Nathaniel Roach <nroach44@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: Alexander Couzens <lynxis@fe80.eu> </div>
<div style="display:none"> Gerrit-Reviewer: Angel Pons <th3fanbus@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: Martin Roth <martinroth@google.com> </div>
<div style="display:none"> Gerrit-Reviewer: Nathaniel Roach <nroach44@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: Patrick Georgi <pgeorgi@google.com> </div>
<div style="display:none"> Gerrit-Reviewer: Patrick Rudolph <siro@das-labor.org> </div>
<div style="display:none"> Gerrit-Reviewer: Philipp Deppenwiese <zaolin.daisuki@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: build bot (Jenkins) <no-reply@coreboot.org> </div>
<div style="display:none"> Gerrit-CC: Peter Lemenkov <lemenkov@gmail.com> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>