ec/lenovo/h8/smm: Support USB always on AC only

Add support for UAO AC only mode.
Needs tests on all platforms.

Change-Id: Ib52aab427ff687b00129024cde65b78060d21e32
Signed-off-by: Patrick Rudolph <siro@das-labor.org>
Reviewed-on: https://review.coreboot.org/20450
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Philipp Deppenwiese <zaolin.daisuki@gmail.com>
This commit is contained in:
Patrick Rudolph
2017-07-01 17:37:06 +02:00
committed by Martin Roth
parent f8574bf4a7
commit b21f5d708a
3 changed files with 17 additions and 3 deletions

View File

@@ -18,18 +18,30 @@
#include "h8.h" #include "h8.h"
enum usb_always_on {
UAO_OFF = 0,
UAO_AC_AND_BATTERY,
UAO_AC_ONLY
};
void h8_usb_always_on(void) void h8_usb_always_on(void)
{ {
u8 val; enum usb_always_on val;
u8 reg; u8 reg;
if (get_option(&val, "usb_always_on") != CB_SUCCESS) if (get_option(&val, "usb_always_on") != CB_SUCCESS)
val = 0; val = UAO_OFF;
if (val) { if (val == UAO_AC_AND_BATTERY) {
reg = ec_read(H8_USB_ALWAYS_ON); reg = ec_read(H8_USB_ALWAYS_ON);
reg &= ~H8_USB_ALWAYS_ON_AC_ONLY; reg &= ~H8_USB_ALWAYS_ON_AC_ONLY;
reg |= H8_USB_ALWAYS_ON_ENABLE; reg |= H8_USB_ALWAYS_ON_ENABLE;
ec_write(H8_USB_ALWAYS_ON, reg); ec_write(H8_USB_ALWAYS_ON, reg);
} else if (val == UAO_AC_ONLY) {
reg = ec_read(H8_USB_ALWAYS_ON);
reg |= H8_USB_ALWAYS_ON_AC_ONLY;
reg |= H8_USB_ALWAYS_ON_ENABLE;
ec_write(H8_USB_ALWAYS_ON, reg);
ec_set_bit(0x2, 3);
} }
} }

View File

@@ -125,6 +125,7 @@ enumerations
10 6 160M 10 6 160M
11 0 Disable 11 0 Disable
11 1 AC and battery 11 1 AC and battery
11 2 AC only
# ----------------------------------------------------------------- # -----------------------------------------------------------------
checksums checksums

View File

@@ -136,6 +136,7 @@ enumerations
11 6 224M 11 6 224M
12 0 Disable 12 0 Disable
12 1 AC and battery 12 1 AC and battery
12 2 AC only
# ----------------------------------------------------------------- # -----------------------------------------------------------------
checksums checksums