summaryrefslogtreecommitdiff
path: root/src/ec
diff options
context:
space:
mode:
authorEmil Lundmark <lndmrk@chromium.org>2018-05-22 19:31:37 +0200
committerPatrick Georgi <pgeorgi@google.com>2018-05-24 09:24:18 +0000
commit9d5f9f2671aa0a27039b0cde674701bcadfa71eb (patch)
treebb05277f5febb59f7d123949a2503f70557ee069 /src/ec
parent5eec229d9686b78abca45415f023283f9e16004c (diff)
downloadcoreboot-9d5f9f2671aa0a27039b0cde674701bcadfa71eb.tar.xz
chromeec: Add support for controlling USB port power
This maps a bit field to the EC (EC_ACPI_MEM_USB_PORT_POWER) that can be used to control the power state of up to 8 individual USB ports. Some Chromeboxes have their GPIO pins for controlling USB port power wired to the EC, so they cannot be accessed directly by coreboot. Change-Id: I6a362c2b868b296031a4170c15e7c0dedbb870b8 Signed-off-by: Emil Lundmark <lndmrk@chromium.org> Reviewed-on: https://review.coreboot.org/26471 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Patrick Georgi <pgeorgi@google.com>
Diffstat (limited to 'src/ec')
-rw-r--r--src/ec/google/chromeec/Kconfig7
-rw-r--r--src/ec/google/chromeec/acpi/ec.asl21
2 files changed, 28 insertions, 0 deletions
diff --git a/src/ec/google/chromeec/Kconfig b/src/ec/google/chromeec/Kconfig
index f05f15749e..1d59f1a982 100644
--- a/src/ec/google/chromeec/Kconfig
+++ b/src/ec/google/chromeec/Kconfig
@@ -11,6 +11,13 @@ config EC_GOOGLE_CHROMEEC_ACPI_MEMMAP
not defined, the memmap data is instead accessed on 900h-9ffh via
the LPC bus.
+config EC_GOOGLE_CHROMEEC_ACPI_USB_PORT_POWER
+ depends on EC_GOOGLE_CHROMEEC
+ def_bool n
+ help
+ Expose methods for enabling and disabling port power on individual USB
+ ports through the EC.
+
config EC_GOOGLE_CHROMEEC_BOARDID
depends on EC_GOOGLE_CHROMEEC
def_bool n
diff --git a/src/ec/google/chromeec/acpi/ec.asl b/src/ec/google/chromeec/acpi/ec.asl
index ac4ceb16c5..dc0f60903e 100644
--- a/src/ec/google/chromeec/acpi/ec.asl
+++ b/src/ec/google/chromeec/acpi/ec.asl
@@ -91,6 +91,7 @@ Device (EC0)
Offset (0x0e),
Offset (0x12),
BTID, 8, // Battery index that host wants to read
+ USPP, 8, // USB Port Power
}
#if IS_ENABLED(CONFIG_EC_GOOGLE_CHROMEEC_ACPI_MEMMAP)
@@ -512,6 +513,26 @@ Device (EC0)
Return (^TBMD)
}
+#if IS_ENABLED(CONFIG_EC_GOOGLE_CHROMEEC_ACPI_USB_PORT_POWER)
+ /*
+ * Enable USB Port Power
+ * Arg0 = USB port ID
+ */
+ Method (UPPS, 1, Serialized)
+ {
+ Or (USPP, ShiftLeft (1, Arg0), USPP)
+ }
+
+ /*
+ * Disable USB Port Power
+ * Arg0 = USB port ID
+ */
+ Method (UPPC, 1, Serialized)
+ {
+ And (USPP, Not (ShiftLeft (1, Arg0)), USPP)
+ }
+#endif
+
#include "ac.asl"
#include "battery.asl"
#include "cros_ec.asl"