coreboot-gerrit
Threads by month
- ----- 2026 -----
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
June 2017
- 1 participants
- 2269 discussions
Change in coreboot[master]: elog: Update for EC Device Events
by build bot (Jenkins) (Code Review) June 30, 2017
by build bot (Jenkins) (Code Review) June 30, 2017
June 30, 2017
build bot (Jenkins) has posted comments on this change. ( https://review.coreboot.org/20427 )
Change subject: elog: Update for EC Device Events
......................................................................
Patch Set 1: Verified+1
Build Successful
https://qa.coreboot.org/job/coreboot-gerrit/56447/ : SUCCESS
https://qa.coreboot.org/job/coreboot-checkpatch/12036/ : SUCCESS
--
To view, visit https://review.coreboot.org/20427
To unsubscribe, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I1f3aeedb87c2aad29a0a67b5c50c29a6961fb45f
Gerrit-Change-Number: 20427
Gerrit-PatchSet: 1
Gerrit-Owner: Duncan Laurie <dlaurie(a)chromium.org>
Gerrit-Reviewer: build bot (Jenkins) <no-reply(a)coreboot.org>
Gerrit-Comment-Date: Fri, 30 Jun 2017 07:09:53 +0000
Gerrit-HasComments: No
1
0
Change in coreboot[master]: mainboards: Remove unused EC event for thermal overload
by build bot (Jenkins) (Code Review) June 30, 2017
by build bot (Jenkins) (Code Review) June 30, 2017
June 30, 2017
build bot (Jenkins) has posted comments on this change. ( https://review.coreboot.org/20424 )
Change subject: mainboards: Remove unused EC event for thermal overload
......................................................................
Patch Set 1: Verified+1
Build Successful
https://qa.coreboot.org/job/coreboot-gerrit/56444/ : SUCCESS
https://qa.coreboot.org/job/coreboot-checkpatch/12033/ : SUCCESS
--
To view, visit https://review.coreboot.org/20424
To unsubscribe, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I6038389ad73cef8a57aec5041bbb9dea98ed2b6e
Gerrit-Change-Number: 20424
Gerrit-PatchSet: 1
Gerrit-Owner: Duncan Laurie <dlaurie(a)chromium.org>
Gerrit-Reviewer: build bot (Jenkins) <no-reply(a)coreboot.org>
Gerrit-Comment-Date: Fri, 30 Jun 2017 07:07:59 +0000
Gerrit-HasComments: No
1
0
Change in coreboot[master]: mb/google/eve: Set TOUCHSCREEN_STOP_L GPIO to input
by Duncan Laurie (Code Review) June 30, 2017
by Duncan Laurie (Code Review) June 30, 2017
June 30, 2017
Duncan Laurie has uploaded this change for review. ( https://review.coreboot.org/20430
Change subject: mb/google/eve: Set TOUCHSCREEN_STOP_L GPIO to input
......................................................................
mb/google/eve: Set TOUCHSCREEN_STOP_L GPIO to input
Make this pin a GPI as it is supposed to be an input from the touch
controller and not driven by the AP.
BUG=b:35581264
TEST=check pin state with a scope
Change-Id: Ife5f84fcc614255b20e44389279d515a12f5751d
Signed-off-by: Duncan Laurie <dlaurie(a)chromium.org>
---
M src/mainboard/google/eve/gpio.h
1 file changed, 1 insertion(+), 1 deletion(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/30/20430/1
diff --git a/src/mainboard/google/eve/gpio.h b/src/mainboard/google/eve/gpio.h
index f174d9c..cd0fe1d 100644
--- a/src/mainboard/google/eve/gpio.h
+++ b/src/mainboard/google/eve/gpio.h
@@ -155,7 +155,7 @@
/* SATALED# */ PAD_CFG_NC(GPP_E8),
/* USB2_OCO# */ PAD_CFG_NF(GPP_E9, NONE, DEEP, NF1), /* USB_C0_OC_ODL */
/* USB2_OC1# */ PAD_CFG_NF(GPP_E10, NONE, DEEP, NF1), /* USB_C1_OC_ODL */
-/* USB2_OC2# */ PAD_CFG_GPO(GPP_E11, 1, DEEP), /* TOUCHSCREEN_STOP_L */
+/* USB2_OC2# */ PAD_CFG_GPI(GPP_E11, NONE, DEEP), /* TOUCHSCREEN_STOP_L */
/* USB2_OC3# */ PAD_CFG_NC(GPP_E12),
/* DDPB_HPD0 */ PAD_CFG_NF(GPP_E13, 20K_PD, DEEP, NF1), /* USB_C0_DP_HPD */
/* DDPC_HPD1 */ PAD_CFG_NF(GPP_E14, 20K_PD, DEEP, NF1), /* USB_C1_DP_HPD */
--
To view, visit https://review.coreboot.org/20430
To unsubscribe, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ife5f84fcc614255b20e44389279d515a12f5751d
Gerrit-Change-Number: 20430
Gerrit-PatchSet: 1
Gerrit-Owner: Duncan Laurie <dlaurie(a)chromium.org>
1
0
Change in coreboot[master]: mb/google/eve: Do not limit memory speed on new SKU 5 boards
by Duncan Laurie (Code Review) June 30, 2017
by Duncan Laurie (Code Review) June 30, 2017
June 30, 2017
Duncan Laurie has uploaded this change for review. ( https://review.coreboot.org/20429
Change subject: mb/google/eve: Do not limit memory speed on new SKU 5 boards
......................................................................
mb/google/eve: Do not limit memory speed on new SKU 5 boards
Board changes in rev6+ have a fix to VDDQ that should fix the issue
that was being seen with this SKU, so only lower the memory speed on
older boards.
BUG=b:37172778
TEST=memory stress testing on rev6 boards
Change-Id: I6d6fe730cabd74af23eab3f02feef9da01a35fd4
Signed-off-by: Duncan Laurie <dlaurie(a)chromium.org>
---
M src/mainboard/google/eve/romstage.c
1 file changed, 2 insertions(+), 1 deletion(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/29/20429/1
diff --git a/src/mainboard/google/eve/romstage.c b/src/mainboard/google/eve/romstage.c
index cd8fa08..6f8ff0f 100644
--- a/src/mainboard/google/eve/romstage.c
+++ b/src/mainboard/google/eve/romstage.c
@@ -14,6 +14,7 @@
* GNU General Public License for more details.
*/
+#include <boardid.h>
#include <string.h>
#include <stddef.h>
#include <fsp/soc_binding.h>
@@ -49,7 +50,7 @@
mem_cfg->MemorySpdDataLen = SPD_LEN;
/* Limit K4EBE304EB-EGCF memory to 1600MHz for stability */
- if (mainboard_get_spd_index() == 5) {
+ if (board_id() < 6 && mainboard_get_spd_index() == 5) {
printk(BIOS_WARNING, "Limiting memory to 1600MHz\n");
mem_cfg->DdrFreqLimit = 1600;
}
--
To view, visit https://review.coreboot.org/20429
To unsubscribe, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I6d6fe730cabd74af23eab3f02feef9da01a35fd4
Gerrit-Change-Number: 20429
Gerrit-PatchSet: 1
Gerrit-Owner: Duncan Laurie <dlaurie(a)chromium.org>
1
0
Change in coreboot[master]: mb/google/eve: Implement EC device events for S3 wake
by Duncan Laurie (Code Review) June 30, 2017
by Duncan Laurie (Code Review) June 30, 2017
June 30, 2017
Duncan Laurie has uploaded this change for review. ( https://review.coreboot.org/20428
Change subject: mb/google/eve: Implement EC device events for S3 wake
......................................................................
mb/google/eve: Implement EC device events for S3 wake
Add support for waking from and logging device events that
originate in the Embedded Controller. As this device uses
Deep S3 it relies on the EC to wake the AP from the trackpad
and DSP wake sources.
BUG=b:30624430
TEST=manual testing on Eve: wake from Deep S3 via trackpad and
DSP and verify the event log contains the expected device event.
Change-Id: I0d6a9c5bfd4cea85e13446ffaa6fe3dab0db96a2
Signed-off-by: Duncan Laurie <dlaurie(a)chromium.org>
---
M src/mainboard/google/eve/ec.c
M src/mainboard/google/eve/ec.h
M src/mainboard/google/eve/smihandler.c
3 files changed, 12 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/28/20428/1
diff --git a/src/mainboard/google/eve/ec.c b/src/mainboard/google/eve/ec.c
index 868714a..d5710f3 100644
--- a/src/mainboard/google/eve/ec.c
+++ b/src/mainboard/google/eve/ec.c
@@ -24,6 +24,10 @@
google_chromeec_log_events(MAINBOARD_EC_LOG_EVENTS |
MAINBOARD_EC_S3_WAKE_EVENTS);
+ /* Log and clear device events that may wake the system */
+ google_chromeec_log_device_events(
+ MAINBOARD_EC_S3_DEVICE_EVENTS);
+
/* Disable SMI and wake events */
google_chromeec_set_smi_mask(0);
diff --git a/src/mainboard/google/eve/ec.h b/src/mainboard/google/eve/ec.h
index fa0dc21..81d591c 100644
--- a/src/mainboard/google/eve/ec.h
+++ b/src/mainboard/google/eve/ec.h
@@ -48,6 +48,7 @@
/* EC can wake from S3 with lid or power button or key press */
#define MAINBOARD_EC_S3_WAKE_EVENTS \
(MAINBOARD_EC_S5_WAKE_EVENTS |\
+ EC_HOST_EVENT_MASK(EC_HOST_EVENT_DEVICE) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_KEY_PRESSED))
/* Log EC wake events plus EC shutdown events */
@@ -56,6 +57,11 @@
EC_HOST_EVENT_MASK(EC_HOST_EVENT_BATTERY_SHUTDOWN) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_PANIC))
+/* EC device events to enable and log in S3 */
+#define MAINBOARD_EC_S3_DEVICE_EVENTS \
+ (EC_DEVICE_EVENT_MASK(EC_DEVICE_EVENT_TRACKPAD) |\
+ EC_DEVICE_EVENT_MASK(EC_DEVICE_EVENT_DSP))
+
/*
* ACPI related definitions for ASL code.
*/
diff --git a/src/mainboard/google/eve/smihandler.c b/src/mainboard/google/eve/smihandler.c
index 493a334..f51248c 100644
--- a/src/mainboard/google/eve/smihandler.c
+++ b/src/mainboard/google/eve/smihandler.c
@@ -36,6 +36,8 @@
{
chromeec_smi_sleep(slp_typ, MAINBOARD_EC_S3_WAKE_EVENTS,
MAINBOARD_EC_S5_WAKE_EVENTS);
+ chromeec_smi_device_event_sleep(slp_typ,
+ MAINBOARD_EC_S3_DEVICE_EVENTS, 0);
mainboard_gpio_smi_sleep(slp_typ);
}
--
To view, visit https://review.coreboot.org/20428
To unsubscribe, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I0d6a9c5bfd4cea85e13446ffaa6fe3dab0db96a2
Gerrit-Change-Number: 20428
Gerrit-PatchSet: 1
Gerrit-Owner: Duncan Laurie <dlaurie(a)chromium.org>
1
0
Change in coreboot[master]: elog: Update for EC Device Events
by Duncan Laurie (Code Review) June 30, 2017
by Duncan Laurie (Code Review) June 30, 2017
June 30, 2017
Duncan Laurie has uploaded this change for review. ( https://review.coreboot.org/20427
Change subject: elog: Update for EC Device Events
......................................................................
elog: Update for EC Device Events
Replace the unused "thermal overload" event with the new
"device event" and define the first few device events that are
supported by the Chromium EC.
BUG=b:30624430
TEST=build for google/* mainboards
Change-Id: I1f3aeedb87c2aad29a0a67b5c50c29a6961fb45f
Signed-off-by: Duncan Laurie <dlaurie(a)chromium.org>
---
M src/include/elog.h
1 file changed, 7 insertions(+), 1 deletion(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/27/20427/1
diff --git a/src/include/elog.h b/src/include/elog.h
index ecda87d..c960186 100644
--- a/src/include/elog.h
+++ b/src/include/elog.h
@@ -73,7 +73,7 @@
#define EC_EVENT_BATTERY_CRITICAL 0x07
#define EC_EVENT_BATTERY 0x08
#define EC_EVENT_THERMAL_THRESHOLD 0x09
-#define EC_EVENT_THERMAL_OVERLOAD 0x0a
+#define EC_EVENT_DEVICE_EVENT 0x0a
#define EC_EVENT_THERMAL 0x0b
#define EC_EVENT_USB_CHARGER 0x0c
#define EC_EVENT_KEY_PRESSED 0x0d
@@ -206,6 +206,12 @@
/* Deep Sx wake variant */
#define ELOG_TYPE_ACPI_DEEP_WAKE 0xad
+/* EC Device Event */
+#define ELOG_TYPE_EC_DEVICE_EVENT 0xae
+#define ELOG_EC_DEVICE_EVENT_TRACKPAD 0x01
+#define ELOG_EC_DEVICE_EVENT_DSP 0x02
+#define ELOG_EC_DEVICE_EVENT_WIFI 0x03
+
#if CONFIG_ELOG
/* Eventlog backing storage must be initialized before calling elog_init(). */
extern int elog_init(void);
--
To view, visit https://review.coreboot.org/20427
To unsubscribe, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I1f3aeedb87c2aad29a0a67b5c50c29a6961fb45f
Gerrit-Change-Number: 20427
Gerrit-PatchSet: 1
Gerrit-Owner: Duncan Laurie <dlaurie(a)chromium.org>
1
0
Change in coreboot[master]: ec/google/chromeec: Add support for EC device events
by Duncan Laurie (Code Review) June 30, 2017
by Duncan Laurie (Code Review) June 30, 2017
June 30, 2017
Duncan Laurie has uploaded this change for review. ( https://review.coreboot.org/20426
Change subject: ec/google/chromeec: Add support for EC device events
......................................................................
ec/google/chromeec: Add support for EC device events
Add support for the new EC device event interface which is used to
report events from devices that are connected behind the EC.
This can be used to differentiate wake sources from the EC in the case
that the EC has the wake pins from various devices.
This can be used in case the AP is unable to directly wake from the
device itself, for example when using the Deep S3 state on Intel
platforms only a few pins can directly wake the AP.
BUG=b:30624430
TEST=build google/* boards that use chrome EC. Feature is used and
tested further in a subsequent commit.
Change-Id: I5126c6d6ffb6b0ef6e8db8dcd5aec62db925a371
Signed-off-by: Duncan Laurie <dlaurie(a)chromium.org>
---
M src/ec/google/chromeec/ec.c
M src/ec/google/chromeec/ec.h
M src/ec/google/chromeec/smihandler.c
M src/ec/google/chromeec/smm.h
4 files changed, 112 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/26/20426/1
diff --git a/src/ec/google/chromeec/ec.c b/src/ec/google/chromeec/ec.c
index de17495..062e42f 100644
--- a/src/ec/google/chromeec/ec.c
+++ b/src/ec/google/chromeec/ec.c
@@ -161,6 +161,87 @@
EC_CMD_HOST_EVENT_CLEAR_B, mask);
}
+/* Get the current device event mask */
+uint32_t google_chromeec_get_device_enabled_events(void)
+{
+ struct ec_params_device_event req;
+ struct ec_response_device_event rsp;
+ struct chromeec_command cmd;
+
+ req.param = EC_DEVICE_EVENT_PARAM_GET_ENABLED_EVENTS;
+ cmd.cmd_code = EC_CMD_DEVICE_EVENT;
+ cmd.cmd_version = 0;
+ cmd.cmd_data_in = &req;
+ cmd.cmd_size_in = sizeof(req);
+ cmd.cmd_data_out = &rsp;
+ cmd.cmd_size_out = sizeof(rsp);
+ cmd.cmd_dev_index = 0;
+
+ if (google_chromeec_command(&cmd) == 0)
+ return rsp.event_mask;
+ return 0;
+}
+
+/* Set the current device event mask */
+int google_chromeec_set_device_enabled_events(uint32_t mask)
+{
+ struct ec_params_device_event req;
+ struct ec_response_device_event rsp;
+ struct chromeec_command cmd;
+
+ req.event_mask = mask;
+ req.param = EC_DEVICE_EVENT_PARAM_SET_ENABLED_EVENTS;
+ cmd.cmd_code = EC_CMD_DEVICE_EVENT;
+ cmd.cmd_version = 0;
+ cmd.cmd_data_in = &req;
+ cmd.cmd_size_in = sizeof(req);
+ cmd.cmd_data_out = &rsp;
+ cmd.cmd_size_out = sizeof(rsp);
+ cmd.cmd_dev_index = 0;
+
+ return google_chromeec_command(&cmd);
+}
+
+/* Read and clear pending device events */
+uint32_t google_chromeec_get_device_current_events(void)
+{
+ struct ec_params_device_event req;
+ struct ec_response_device_event rsp;
+ struct chromeec_command cmd;
+
+ req.param = EC_DEVICE_EVENT_PARAM_GET_CURRENT_EVENTS;
+ cmd.cmd_code = EC_CMD_DEVICE_EVENT;
+ cmd.cmd_version = 0;
+ cmd.cmd_data_in = &req;
+ cmd.cmd_size_in = sizeof(req);
+ cmd.cmd_data_out = &rsp;
+ cmd.cmd_size_out = sizeof(rsp);
+ cmd.cmd_dev_index = 0;
+
+ if (google_chromeec_command(&cmd) == 0)
+ return rsp.event_mask;
+ return 0;
+}
+
+void google_chromeec_log_device_events(uint32_t mask)
+{
+#if CONFIG_ELOG
+ uint32_t events;
+ int i;
+
+ if (google_chromeec_check_feature(EC_FEATURE_DEVICE_EVENT) != 1)
+ return;
+
+ events = google_chromeec_get_device_current_events() & mask;
+ printk(BIOS_INFO, "EC Device Events: 0x%08x\n", events);
+
+ for (i = 0; i < sizeof(events)*4; i++) {
+ if (EC_DEVICE_EVENT_MASK(i) & events)
+ elog_add_event_byte(ELOG_TYPE_EC_DEVICE_EVENT, i);
+ }
+#endif
+}
+
int google_chromeec_check_feature(int feature)
{
struct chromeec_command cmd;
diff --git a/src/ec/google/chromeec/ec.h b/src/ec/google/chromeec/ec.h
index 4a45f7f..b2b63e8 100644
--- a/src/ec/google/chromeec/ec.h
+++ b/src/ec/google/chromeec/ec.h
@@ -34,6 +34,12 @@
int google_ec_running_ro(void);
void google_chromeec_init(void);
+/* Device events */
+uint32_t google_chromeec_get_device_enabled_events(void);
+int google_chromeec_set_device_enabled_events(uint32_t mask);
+uint32_t google_chromeec_get_device_current_events(void);
+void google_chromeec_log_device_events(uint32_t mask);
+
/* If recovery mode is enabled and EC is not running RO firmware reboot. */
void google_chromeec_early_init(void);
/* Reboot if EC firmware is not expected type. */
diff --git a/src/ec/google/chromeec/smihandler.c b/src/ec/google/chromeec/smihandler.c
index 75636ea..379ff68 100644
--- a/src/ec/google/chromeec/smihandler.c
+++ b/src/ec/google/chromeec/smihandler.c
@@ -73,6 +73,24 @@
clear_pending_events();
}
+void chromeec_smi_device_event_sleep(int slp_type, uint32_t s3_mask,
+ uint32_t s5_mask)
+{
+ switch (slp_type) {
+ case ACPI_S3:
+ /* Enable device wake events */
+ google_chromeec_set_device_enabled_events(s3_mask);
+ break;
+ case ACPI_S5:
+ /* Enable device wake events */
+ google_chromeec_set_device_enabled_events(s5_mask);
+ break;
+ }
+
+ /* Read and clear pending events that may trigger immediate wake */
+ google_chromeec_get_device_current_events();
+}
+
void chromeec_smi_apmc(int apmc, uint32_t sci_mask, uint32_t smi_mask)
{
switch (apmc) {
diff --git a/src/ec/google/chromeec/smm.h b/src/ec/google/chromeec/smm.h
index 03d6e00..8265cdd 100644
--- a/src/ec/google/chromeec/smm.h
+++ b/src/ec/google/chromeec/smm.h
@@ -28,6 +28,13 @@
void chromeec_smi_sleep(int slp_type, uint32_t s3_mask, uint32_t s5_mask);
/*
+ * Set device event masks according to sleep type,
+ * and clear any pending device events.
+ */
+void chromeec_smi_device_event_sleep(int slp_type, uint32_t s3_mask,
+ uint32_t s5_mask);
+
+/*
* Provided the APMC command do the following while clearing pending events.
* APM_CNT_ACPI_ENABLE: clear SMI mask. set SCI mask.
* APM_CNT_ACPI_DISABLE: clear SCI mask. set SMI mask.
--
To view, visit https://review.coreboot.org/20426
To unsubscribe, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I5126c6d6ffb6b0ef6e8db8dcd5aec62db925a371
Gerrit-Change-Number: 20426
Gerrit-PatchSet: 1
Gerrit-Owner: Duncan Laurie <dlaurie(a)chromium.org>
1
0
Change in coreboot[master]: ec/google/chromeec: Sync header with Chromium EC codebase
by Duncan Laurie (Code Review) June 30, 2017
by Duncan Laurie (Code Review) June 30, 2017
June 30, 2017
Duncan Laurie has uploaded this change for review. ( https://review.coreboot.org/20425
Change subject: ec/google/chromeec: Sync header with Chromium EC codebase
......................................................................
ec/google/chromeec: Sync header with Chromium EC codebase
Update this header from the upstream source so new host
commands can be used in coreboot.
BUG=b:30624430
TEST=build google/* and intel* boards
Change-Id: I56c9f891262d8984b6a9a69d96752c2dd6bb2371
Signed-off-by: Duncan Laurie <dlaurie(a)chromium.org>
---
M src/ec/google/chromeec/ec_commands.h
1 file changed, 1,218 insertions(+), 566 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/25/20425/1
diff --git a/src/ec/google/chromeec/ec_commands.h b/src/ec/google/chromeec/ec_commands.h
index ec404f0..3e093f6 100644
--- a/src/ec/google/chromeec/ec_commands.h
+++ b/src/ec/google/chromeec/ec_commands.h
@@ -31,6 +31,19 @@
#ifndef __CROS_EC_EC_COMMANDS_H
#define __CROS_EC_EC_COMMANDS_H
+#ifndef __ACPI__
+#include <stdint.h>
+#endif
+
+/*
+ * Include common.h for CONFIG_HOSTCMD_ALIGNED, if it's defined. This
+ * generates more efficient code for accessing request/response structures on
+ * ARM Cortex-M if the structures are guaranteed 32-bit aligned.
+ */
+#ifdef CHROMIUM_EC
+#include "common.h"
+#endif
+
/*
* Current version of this protocol
*
@@ -219,7 +232,7 @@
* - Wait for EC_LPC_CMDR_DATA bit to set
* - Read value from EC_LPC_ADDR_ACPI_DATA
*/
-#define EC_CMD_ACPI_READ 0x80
+#define EC_CMD_ACPI_READ 0x0080
/*
* ACPI Write Embedded Controller
@@ -234,7 +247,7 @@
* - Wait for EC_LPC_CMDR_PENDING bit to clear
* - Write value to EC_LPC_ADDR_ACPI_DATA
*/
-#define EC_CMD_ACPI_WRITE 0x81
+#define EC_CMD_ACPI_WRITE 0x0081
/*
* ACPI Burst Enable Embedded Controller
@@ -243,7 +256,7 @@
* commands back-to-back. While in this mode, writes to mapped multi-byte
* data are locked out to ensure data consistency.
*/
-#define EC_CMD_ACPI_BURST_ENABLE 0x82
+#define EC_CMD_ACPI_BURST_ENABLE 0x0082
/*
* ACPI Burst Disable Embedded Controller
@@ -251,7 +264,7 @@
* This disables burst mode on the EC and stops preventing EC writes to mapped
* multi-byte data.
*/
-#define EC_CMD_ACPI_BURST_DISABLE 0x83
+#define EC_CMD_ACPI_BURST_DISABLE 0x0083
/*
* ACPI Query Embedded Controller
@@ -260,7 +273,7 @@
* sets the result code to the 1-based index of the bit (event 0x00000001 = 1,
* event 0x80000000 = 32), or 0 if no event was pending.
*/
-#define EC_CMD_ACPI_QUERY_EVENT 0x84
+#define EC_CMD_ACPI_QUERY_EVENT 0x0084
/* Valid addresses in ACPI memory space, for read/write commands */
@@ -327,12 +340,13 @@
#define EC_ACPI_MEM_CHARGING_LIMIT_STEP_MA 64
/* Value to disable DPTF battery charging limit */
#define EC_ACPI_MEM_CHARGING_LIMIT_DISABLED 0xff
+
/*
* Report device orientation
- * bit 0 device is tablet mode
+ * bit 0 device is tablet mode
*/
-#define EC_ACPI_MEM_DEVICE_ORIENTATION 0x09
-#define EC_ACPI_MEM_DEVICE_TABLET_MODE 0x01
+#define EC_ACPI_MEM_DEVICE_ORIENTATION 0x09
+#define EC_ACPI_MEM_DEVICE_TABLET_MODE 0x01
/*
* ACPI addresses 0x20 - 0xff map to EC_MEMMAP offset 0x00 - 0xdf. This data
@@ -352,8 +366,6 @@
*/
#ifndef __ACPI__
-#include <stdint.h>
-
/*
* Define __packed if someone hasn't beat us to it. Linux kernel style
* checking prefers __packed over __attribute__((packed)).
@@ -361,6 +373,92 @@
#ifndef __packed
#define __packed __attribute__((packed))
#endif
+
+#ifndef __aligned
+#define __aligned(x) __attribute__((aligned(x)))
+#endif
+
+/*
+ * Attributes for EC request and response packets. Just defining __packed
+ * results in inefficient assembly code on ARM, if the structure is actually
+ * 32-bit aligned, as it should be for all buffers.
+ *
+ * Be very careful when adding these to existing structures. They will round
+ * up the structure size to the specified boundary.
+ *
+ * Also be very careful to make that if a structure is included in some other
+ * parent structure that the alignment will still be true given the packing of
+ * the parent structure. This is particularly important if the sub-structure
+ * will be passed as a pointer to another function, since that function will
+ * not know about the misaligment caused by the parent structure's packing.
+ *
+ * Also be very careful using __packed - particularly when nesting non-packed
+ * structures inside packed ones. In fact, DO NOT use __packed directly;
+ * always use one of these attributes.
+ *
+ * Once everything is annotated properly, the following search strings should
+ * not return ANY matches in this file other than right here:
+ *
+ * "__packed" - generates inefficient code; all sub-structs must also be packed
+ *
+ * "struct [^_]" - all structs should be annotated, except for structs that are
+ * members of other structs/unions (and their original declarations should be
+ * annotated).
+ */
+#ifdef CONFIG_HOSTCMD_ALIGNED
+
+/*
+ * Packed structures where offset and size are always aligned to 1, 2, or 4
+ * byte boundary.
+ */
+#define __ec_align1 __packed
+#define __ec_align2 __packed __aligned(2)
+#define __ec_align4 __packed __aligned(4)
+
+/*
+ * Packed structure which must be under-aligned, because its size is not a
+ * 4-byte multiple. This is sub-optimal because it forces byte-wise access
+ * of all multi-byte fields in it, even though they are themselves aligned.
+ *
+ * In theory, we could duplicate the structure with __aligned(4) for accessing
+ * its members, but use the __packed version for sizeof().
+ */
+#define __ec_align_size1 __packed
+
+/*
+ * Packed structure which must be under-aligned, because its offset inside a
+ * parent structure is not a 4-byte multiple.
+ */
+#define __ec_align_offset1 __packed
+#define __ec_align_offset2 __packed __aligned(2)
+
+/*
+ * Structures which are complicated enough that I'm skipping them on the first
+ * pass. They are effectively unchanged from their previous definitions.
+ *
+ * TODO(rspangler): Figure out what to do with these. It's likely necessary
+ * to work out the size and offset of each member and add explicit padding to
+ * maintain those.
+ */
+#define __ec_todo_packed __packed
+#define __ec_todo_unpacked
+
+#else /* !CONFIG_HOSTCMD_ALIGNED */
+
+/*
+ * Packed structures make no assumption about alignment, so they do inefficient
+ * byte-wise reads.
+ */
+#define __ec_align1 __packed
+#define __ec_align2 __packed
+#define __ec_align4 __packed
+#define __ec_align_size1 __packed
+#define __ec_align_offset1 __packed
+#define __ec_align_offset2 __packed
+#define __ec_todo_packed __packed
+#define __ec_todo_unpacked
+
+#endif /* !CONFIG_HOSTCMD_ALIGNED */
/* LPC command status byte masks */
/* EC has written a byte in the data register and host hasn't read it yet */
@@ -387,7 +485,9 @@
#define EC_LPC_STATUS_BUSY_MASK \
(EC_LPC_STATUS_FROM_HOST | EC_LPC_STATUS_PROCESSING)
-/* Host command response codes */
+/* Host command response codes (16-bit). Note that response codes should be
+ * stored in a uint16_t rather than directly in a value of this type.
+ */
enum ec_status {
EC_RES_SUCCESS = 0,
EC_RES_INVALID_COMMAND = 1,
@@ -404,8 +504,8 @@
EC_RES_INVALID_HEADER = 12, /* Header contains invalid data */
EC_RES_REQUEST_TRUNCATED = 13, /* Didn't get the entire request */
EC_RES_RESPONSE_TOO_BIG = 14, /* Response was too big to handle */
- EC_RES_BUS_ERROR = 15, /* Communications bus error */
- EC_RES_BUSY = 16 /* Up but too busy. Should retry */
+ EC_RES_BUS_ERROR = 15, /* Communications bus error */
+ EC_RES_BUSY = 16 /* Up but too busy. Should retry */
};
/*
@@ -425,7 +525,8 @@
EC_HOST_EVENT_BATTERY_CRITICAL = 7,
EC_HOST_EVENT_BATTERY = 8,
EC_HOST_EVENT_THERMAL_THRESHOLD = 9,
- EC_HOST_EVENT_THERMAL_OVERLOAD = 10,
+ /* Event generated by a device attached to the EC */
+ EC_HOST_EVENT_DEVICE = 10,
EC_HOST_EVENT_THERMAL = 11,
EC_HOST_EVENT_USB_CHARGER = 12,
EC_HOST_EVENT_KEY_PRESSED = 13,
@@ -499,7 +600,7 @@
#define EC_HOST_EVENT_MASK(event_code) (1UL << ((event_code) - 1))
/* Arguments at EC_LPC_ADDR_HOST_ARGS */
-struct ec_lpc_host_args {
+struct __ec_align4 ec_lpc_host_args {
uint8_t flags;
uint8_t command_version;
uint8_t data_size;
@@ -508,7 +609,7 @@
* all params/response data bytes.
*/
uint8_t checksum;
-} __packed;
+};
/* Flags for ec_lpc_host_args.flags */
/*
@@ -518,7 +619,7 @@
* If EC gets a command and this flag is not set, this is an old-style command.
* Command version is 0 and params from host are at EC_LPC_ADDR_OLD_PARAM with
* unknown length. EC must respond with an old-style response (that is,
- * withouth setting EC_HOST_ARGS_FLAG_TO_HOST).
+ * without setting EC_HOST_ARGS_FLAG_TO_HOST).
*/
#define EC_HOST_ARGS_FLAG_FROM_HOST 0x01
/*
@@ -661,8 +762,8 @@
#define EC_HOST_REQUEST_VERSION 3
/* Version 3 request from host */
-struct ec_host_request {
- /* Struct version (=3)
+struct __ec_align4 ec_host_request {
+ /* Structure version (=3)
*
* EC will return EC_RES_INVALID_HEADER if it receives a header with a
* version it doesn't know how to parse.
@@ -686,13 +787,13 @@
/* Length of data which follows this header */
uint16_t data_len;
-} __packed;
+};
#define EC_HOST_RESPONSE_VERSION 3
/* Version 3 response from EC */
-struct ec_host_response {
- /* Struct version (=3) */
+struct __ec_align4 ec_host_response {
+ /* Structure version (=3) */
uint8_t struct_version;
/*
@@ -709,18 +810,21 @@
/* Unused bytes in current protocol version; set to 0 */
uint16_t reserved;
-} __packed;
+};
/*****************************************************************************/
/*
* Notes on commands:
*
* Each command is an 16-bit command value. Commands which take params or
- * return response data specify structs for that data. If no struct is
+ * return response data specify structures for that data. If no structure is
* specified, the command does not input or output data, respectively.
* Parameter/response length is implicit in the structs. Some underlying
* communication protocols (I2C, SPI) may add length or checksum headers, but
* those are implementation-dependent and not defined here.
+ *
+ * All commands MUST be #defined to be 4-digit UPPER CASE hex values
+ * (e.g., 0x00AB, not 0xab) for CONFIG_HOSTCMD_SECTION_SORTED to work.
*/
/*****************************************************************************/
@@ -730,28 +834,28 @@
* Get protocol version, used to deal with non-backward compatible protocol
* changes.
*/
-#define EC_CMD_PROTO_VERSION 0x00
+#define EC_CMD_PROTO_VERSION 0x0000
-struct ec_response_proto_version {
+struct __ec_align4 ec_response_proto_version {
uint32_t version;
-} __packed;
+};
/*
* Hello. This is a simple command to test the EC is responsive to
* commands.
*/
-#define EC_CMD_HELLO 0x01
+#define EC_CMD_HELLO 0x0001
-struct ec_params_hello {
+struct __ec_align4 ec_params_hello {
uint32_t in_data; /* Pass anything here */
-} __packed;
+};
-struct ec_response_hello {
+struct __ec_align4 ec_response_hello {
uint32_t out_data; /* Output will be in_data + 0x01020304 */
-} __packed;
+};
/* Get version number */
-#define EC_CMD_GET_VERSION 0x02
+#define EC_CMD_GET_VERSION 0x0002
enum ec_current_image {
EC_IMAGE_UNKNOWN = 0,
@@ -759,49 +863,49 @@
EC_IMAGE_RW
};
-struct ec_response_get_version {
+struct __ec_align4 ec_response_get_version {
/* Null-terminated version strings for RO, RW */
char version_string_ro[32];
char version_string_rw[32];
char reserved[32]; /* Was previously RW-B string */
uint32_t current_image; /* One of ec_current_image */
-} __packed;
+};
/* Read test */
-#define EC_CMD_READ_TEST 0x03
+#define EC_CMD_READ_TEST 0x0003
-struct ec_params_read_test {
+struct __ec_align4 ec_params_read_test {
uint32_t offset; /* Starting value for read buffer */
uint32_t size; /* Size to read in bytes */
-} __packed;
+};
-struct ec_response_read_test {
+struct __ec_align4 ec_response_read_test {
uint32_t data[32];
-} __packed;
+};
/*
* Get build information
*
* Response is null-terminated string.
*/
-#define EC_CMD_GET_BUILD_INFO 0x04
+#define EC_CMD_GET_BUILD_INFO 0x0004
/* Get chip info */
-#define EC_CMD_GET_CHIP_INFO 0x05
+#define EC_CMD_GET_CHIP_INFO 0x0005
-struct ec_response_get_chip_info {
+struct __ec_align4 ec_response_get_chip_info {
/* Null-terminated strings */
char vendor[32];
char name[32];
char revision[32]; /* Mask version */
-} __packed;
+};
/* Get board HW version */
-#define EC_CMD_GET_BOARD_VERSION 0x06
+#define EC_CMD_GET_BOARD_VERSION 0x0006
-struct ec_response_board_version {
+struct __ec_align2 ec_response_board_version {
uint16_t board_version; /* A monotonously incrementing number. */
-} __packed;
+};
/*
* Read memory-mapped data.
@@ -811,73 +915,73 @@
*
* Response is params.size bytes of data.
*/
-#define EC_CMD_READ_MEMMAP 0x07
+#define EC_CMD_READ_MEMMAP 0x0007
-struct ec_params_read_memmap {
+struct __ec_align1 ec_params_read_memmap {
uint8_t offset; /* Offset in memmap (EC_MEMMAP_*) */
uint8_t size; /* Size to read in bytes */
-} __packed;
+};
/* Read versions supported for a command */
-#define EC_CMD_GET_CMD_VERSIONS 0x08
+#define EC_CMD_GET_CMD_VERSIONS 0x0008
-struct ec_params_get_cmd_versions {
+struct __ec_align1 ec_params_get_cmd_versions {
uint8_t cmd; /* Command to check */
-} __packed;
+};
-struct ec_params_get_cmd_versions_v1 {
+struct __ec_align2 ec_params_get_cmd_versions_v1 {
uint16_t cmd; /* Command to check */
-} __packed;
+};
-struct ec_response_get_cmd_versions {
+struct __ec_align4 ec_response_get_cmd_versions {
/*
* Mask of supported versions; use EC_VER_MASK() to compare with a
* desired version.
*/
uint32_t version_mask;
-} __packed;
+};
/*
- * Check EC communcations status (busy). This is needed on i2c/spi but not
+ * Check EC communications status (busy). This is needed on i2c/spi but not
* on lpc since it has its own out-of-band busy indicator.
*
* lpc must read the status from the command register. Attempting this on
* lpc will overwrite the args/parameter space and corrupt its data.
*/
-#define EC_CMD_GET_COMMS_STATUS 0x09
+#define EC_CMD_GET_COMMS_STATUS 0x0009
/* Avoid using ec_status which is for return values */
enum ec_comms_status {
EC_COMMS_STATUS_PROCESSING = 1 << 0, /* Processing cmd */
};
-struct ec_response_get_comms_status {
+struct __ec_align4 ec_response_get_comms_status {
uint32_t flags; /* Mask of enum ec_comms_status */
-} __packed;
+};
/* Fake a variety of responses, purely for testing purposes. */
-#define EC_CMD_TEST_PROTOCOL 0x0a
+#define EC_CMD_TEST_PROTOCOL 0x000A
/* Tell the EC what to send back to us. */
-struct ec_params_test_protocol {
+struct __ec_align4 ec_params_test_protocol {
uint32_t ec_result;
uint32_t ret_len;
uint8_t buf[32];
-} __packed;
+};
/* Here it comes... */
-struct ec_response_test_protocol {
+struct __ec_align4 ec_response_test_protocol {
uint8_t buf[32];
-} __packed;
+};
-/* Get prococol information */
-#define EC_CMD_GET_PROTOCOL_INFO 0x0b
+/* Get protocol information */
+#define EC_CMD_GET_PROTOCOL_INFO 0x000B
/* Flags for ec_response_get_protocol_info.flags */
/* EC_RES_IN_PROGRESS may be returned if a command is slow */
#define EC_PROTOCOL_INFO_IN_PROGRESS_SUPPORTED (1 << 0)
-struct ec_response_get_protocol_info {
+struct __ec_align4 ec_response_get_protocol_info {
/* Fields which exist if at least protocol version 3 supported */
/* Bitmask of protocol versions supported (1 << n means version n)*/
@@ -891,7 +995,7 @@
/* Flags; see EC_PROTOCOL_INFO_* */
uint32_t flags;
-} __packed;
+};
/*****************************************************************************/
@@ -904,22 +1008,22 @@
meaning for an individual command. */
#define EC_GSV_PARAM_MASK 0x00ffffff
-struct ec_params_get_set_value {
+struct __ec_align4 ec_params_get_set_value {
uint32_t flags;
uint32_t value;
-} __packed;
+};
-struct ec_response_get_set_value {
+struct __ec_align4 ec_response_get_set_value {
uint32_t flags;
uint32_t value;
-} __packed;
+};
/* More than one command can use these structs to get/set parameters. */
-#define EC_CMD_GSV_PAUSE_IN_S5 0x0c
+#define EC_CMD_GSV_PAUSE_IN_S5 0x000C
/*****************************************************************************/
/* List the features supported by the firmware */
-#define EC_CMD_GET_FEATURES 0x0d
+#define EC_CMD_GET_FEATURES 0x000D
/* Supported features */
enum ec_feature_code {
@@ -982,7 +1086,7 @@
* (Common Smart Battery System Interface Specification)
*/
EC_FEATURE_SMART_BATTERY = 18,
- /* EC can dectect when the host hangs. */
+ /* EC can detect when the host hangs. */
EC_FEATURE_HANG_DETECT = 19,
/* Report power information, for pit only */
EC_FEATURE_PMU = 20,
@@ -996,22 +1100,35 @@
EC_FEATURE_MOTION_SENSE_FIFO = 24,
/* Support temporary secure vstore */
EC_FEATURE_VSTORE = 25,
+ /* EC decides on USB-C SS mux state, muxes configured by host */
+ EC_FEATURE_USBC_SS_MUX_VIRTUAL = 26,
+ /* EC has RTC feature that can be controlled by host commands */
+ EC_FEATURE_RTC = 27,
+ /* The MCU exposes a Fingerprint sensor */
+ EC_FEATURE_FINGERPRINT = 28,
+ /* The MCU exposes a Touchpad */
+ EC_FEATURE_TOUCHPAD = 29,
+ /* The MCU has RWSIG task enabled */
+ EC_FEATURE_RWSIG = 30,
+ /* EC has device events support */
+ EC_FEATURE_DEVICE_EVENT = 31,
};
#define EC_FEATURE_MASK_0(event_code) (1UL << (event_code % 32))
#define EC_FEATURE_MASK_1(event_code) (1UL << (event_code - 32))
-struct ec_response_get_features {
+struct __ec_align4 ec_response_get_features {
uint32_t flags[2];
-} __packed;
+};
/*****************************************************************************/
/* Flash commands */
/* Get flash info */
-#define EC_CMD_FLASH_INFO 0x10
+#define EC_CMD_FLASH_INFO 0x0010
+#define EC_VER_FLASH_INFO 2
/* Version 0 returns these fields */
-struct ec_response_flash_info {
+struct __ec_align4 ec_response_flash_info {
/* Usable flash size, in bytes */
uint32_t flash_size;
/*
@@ -1029,7 +1146,7 @@
* multiple of this.
*/
uint32_t protect_block_size;
-} __packed;
+};
/* Flags for version 1+ flash info command */
/* EC flash erases bits to 0 instead of 1 */
@@ -1040,9 +1157,16 @@
* fields following.
*
* gcc anonymous structs don't seem to get along with the __packed directive;
- * if they did we'd define the version 0 struct as a sub-struct of this one.
+ * if they did we'd define the version 0 structure as a sub-structure of this
+ * one.
+ *
+ * Version 2 supports flash banks of different sizes:
+ * The caller specified the number of banks it has preallocated
+ * (num_banks_desc)
+ * The EC returns the number of banks describing the flash memory.
+ * It adds banks descriptions up to num_banks_desc.
*/
-struct ec_response_flash_info_1 {
+struct __ec_align4 ec_response_flash_info_1 {
/* Version 0 fields; see above for description */
uint32_t flash_size;
uint32_t write_block_size;
@@ -1060,40 +1184,112 @@
/* Flags; see EC_FLASH_INFO_* */
uint32_t flags;
-} __packed;
+};
+
+struct __ec_align4 ec_params_flash_info_2 {
+ /* Number of banks to describe */
+ uint16_t num_banks_desc;
+ /* Reserved; set 0; ignore on read */
+ uint8_t reserved[2];
+};
+
+struct ec_flash_bank {
+ /* Number of sector is in this bank. */
+ uint16_t count;
+ /* Size in power of 2 of each sector (8 --> 256 bytes) */
+ uint8_t size_exp;
+ /* Minimal write size for the sectors in this bank */
+ uint8_t write_size_exp;
+ /* Erase size for the sectors in this bank */
+ uint8_t erase_size_exp;
+ /* Size for write protection, usually identical to erase size. */
+ uint8_t protect_size_exp;
+ /* Reserved; set 0; ignore on read */
+ uint8_t reserved[2];
+};
+
+struct __ec_align4 ec_response_flash_info_2 {
+ /* Total flash in the EC. */
+ uint32_t flash_size;
+ /* Flags; see EC_FLASH_INFO_* */
+ uint32_t flags;
+ /* Maximum size to use to send data to write to the EC. */
+ uint32_t write_ideal_size;
+ /* Number of banks present in the EC. */
+ uint16_t num_banks_total;
+ /* Number of banks described in banks array. */
+ uint16_t num_banks_desc;
+ struct ec_flash_bank banks[0];
+};
/*
* Read flash
*
* Response is params.size bytes of data.
*/
-#define EC_CMD_FLASH_READ 0x11
+#define EC_CMD_FLASH_READ 0x0011
-struct ec_params_flash_read {
+struct __ec_align4 ec_params_flash_read {
uint32_t offset; /* Byte offset to read */
uint32_t size; /* Size to read in bytes */
-} __packed;
+};
/* Write flash */
-#define EC_CMD_FLASH_WRITE 0x12
+#define EC_CMD_FLASH_WRITE 0x0012
#define EC_VER_FLASH_WRITE 1
/* Version 0 of the flash command supported only 64 bytes of data */
#define EC_FLASH_WRITE_VER0_SIZE 64
-struct ec_params_flash_write {
+struct __ec_align4 ec_params_flash_write {
uint32_t offset; /* Byte offset to write */
uint32_t size; /* Size to write in bytes */
/* Followed by data to write */
-} __packed;
+};
/* Erase flash */
-#define EC_CMD_FLASH_ERASE 0x13
+#define EC_CMD_FLASH_ERASE 0x0013
-struct ec_params_flash_erase {
+/* v0 */
+struct __ec_align4 ec_params_flash_erase {
uint32_t offset; /* Byte offset to erase */
uint32_t size; /* Size to erase in bytes */
-} __packed;
+};
+
+
+#define EC_VER_FLASH_WRITE 1
+/* v1 add async erase:
+ * subcommands can returns:
+ * EC_RES_SUCCESS : erased (see ERASE_SECTOR_ASYNC case below).
+ * EC_RES_INVALID_PARAM : offset/size are not aligned on a erase boundary.
+ * EC_RES_ERROR : other errors.
+ * EC_RES_BUSY : an existing erase operation is in progress.
+ * EC_RES_ACCESS_DENIED: Trying to erase running image.
+ *
+ * When ERASE_SECTOR_ASYNC returns EC_RES_SUCCESS, the operation is just
+ * properly queued. The user must call ERASE_GET_RESULT subcommand to get
+ * the proper result.
+ * When ERASE_GET_RESULT returns EC_RES_BUSY, the caller must wait and send
+ * ERASE_GET_RESULT again to get the result of ERASE_SECTOR_ASYNC.
+ * ERASE_GET_RESULT command may timeout on EC where flash access is not
+ * permitted while erasing. (For instance, STM32F4).
+ */
+enum ec_flash_erase_cmd {
+ FLASH_ERASE_SECTOR, /* Erase and wait for result */
+ FLASH_ERASE_SECTOR_ASYNC, /* Erase and return immediately. */
+ FLASH_ERASE_GET_RESULT, /* Ask for last erase result */
+};
+
+struct __ec_align4 ec_params_flash_erase_v1 {
+ /* One of ec_flash_erase_cmd. */
+ uint8_t cmd;
+ /* Pad byte; currently always contains 0 */
+ uint8_t reserved;
+ /* No flags defined yet; set to 0 */
+ uint16_t flag;
+ /* Same as v0 parameters. */
+ struct ec_params_flash_erase params;
+};
/*
* Get/set flash protection.
@@ -1105,7 +1301,7 @@
*
* If mask=0, simply returns the current flags state.
*/
-#define EC_CMD_FLASH_PROTECT 0x15
+#define EC_CMD_FLASH_PROTECT 0x0015
#define EC_VER_FLASH_PROTECT 1 /* Command version 1 */
/* Flags for flash protection */
@@ -1130,13 +1326,21 @@
#define EC_FLASH_PROTECT_ERROR_INCONSISTENT (1 << 5)
/* Entire flash code protected when the EC boots */
#define EC_FLASH_PROTECT_ALL_AT_BOOT (1 << 6)
+/* RW flash code protected when the EC boots */
+#define EC_FLASH_PROTECT_RW_AT_BOOT (1 << 7)
+/* RW flash code protected now. */
+#define EC_FLASH_PROTECT_RW_NOW (1 << 8)
+/* Rollback information flash region protected when the EC boots */
+#define EC_FLASH_PROTECT_ROLLBACK_AT_BOOT (1 << 9)
+/* Rollback information flash region protected now */
+#define EC_FLASH_PROTECT_ROLLBACK_NOW (1 << 10)
-struct ec_params_flash_protect {
+struct __ec_align4 ec_params_flash_protect {
uint32_t mask; /* Bits in flags to apply */
uint32_t flags; /* New flags to apply */
-} __packed;
+};
-struct ec_response_flash_protect {
+struct __ec_align4 ec_response_flash_protect {
/* Current value of flash protect flags */
uint32_t flags;
/*
@@ -1147,7 +1351,7 @@
uint32_t valid_flags;
/* Flags which can be changed given the current protection state */
uint32_t writable_flags;
-} __packed;
+};
/*
* Note: commands 0x14 - 0x19 version 0 were old commands to get/set flash
@@ -1155,7 +1359,7 @@
*/
/* Get the region offset/size */
-#define EC_CMD_FLASH_REGION_INFO 0x16
+#define EC_CMD_FLASH_REGION_INFO 0x0016
#define EC_VER_FLASH_REGION_INFO 1
enum ec_flash_region {
@@ -1172,17 +1376,17 @@
EC_FLASH_REGION_COUNT,
};
-struct ec_params_flash_region_info {
+struct __ec_align4 ec_params_flash_region_info {
uint32_t region; /* enum ec_flash_region */
-} __packed;
+};
-struct ec_response_flash_region_info {
+struct __ec_align4 ec_response_flash_region_info {
uint32_t offset;
uint32_t size;
-} __packed;
+};
/* Read/write VbNvContext */
-#define EC_CMD_VBNV_CONTEXT 0x17
+#define EC_CMD_VBNV_CONTEXT 0x0017
#define EC_VER_VBNV_CONTEXT 1
#define EC_VBNV_BLOCK_SIZE 16
@@ -1191,71 +1395,89 @@
EC_VBNV_CONTEXT_OP_WRITE,
};
-struct ec_params_vbnvcontext {
+struct __ec_align4 ec_params_vbnvcontext {
uint32_t op;
uint8_t block[EC_VBNV_BLOCK_SIZE];
-} __packed;
+};
-struct ec_response_vbnvcontext {
+struct __ec_align4 ec_response_vbnvcontext {
uint8_t block[EC_VBNV_BLOCK_SIZE];
-} __packed;
+};
+
+
+/* Get SPI flash information */
+#define EC_CMD_FLASH_SPI_INFO 0x0018
+
+struct __ec_align1 ec_response_flash_spi_info {
+ /* JEDEC info from command 0x9F (manufacturer, memory type, size) */
+ uint8_t jedec[3];
+
+ /* Pad byte; currently always contains 0 */
+ uint8_t reserved0;
+
+ /* Manufacturer / device ID from command 0x90 */
+ uint8_t mfr_dev_id[2];
+
+ /* Status registers from command 0x05 and 0x35 */
+ uint8_t sr1, sr2;
+};
/*****************************************************************************/
/* PWM commands */
/* Get fan target RPM */
-#define EC_CMD_PWM_GET_FAN_TARGET_RPM 0x20
+#define EC_CMD_PWM_GET_FAN_TARGET_RPM 0x0020
-struct ec_response_pwm_get_fan_rpm {
+struct __ec_align4 ec_response_pwm_get_fan_rpm {
uint32_t rpm;
-} __packed;
+};
/* Set target fan RPM */
-#define EC_CMD_PWM_SET_FAN_TARGET_RPM 0x21
+#define EC_CMD_PWM_SET_FAN_TARGET_RPM 0x0021
/* Version 0 of input params */
-struct ec_params_pwm_set_fan_target_rpm_v0 {
+struct __ec_align4 ec_params_pwm_set_fan_target_rpm_v0 {
uint32_t rpm;
-} __packed;
+};
/* Version 1 of input params */
-struct ec_params_pwm_set_fan_target_rpm_v1 {
+struct __ec_align_size1 ec_params_pwm_set_fan_target_rpm_v1 {
uint32_t rpm;
uint8_t fan_idx;
-} __packed;
+};
/* Get keyboard backlight */
/* OBSOLETE - Use EC_CMD_PWM_SET_DUTY */
-#define EC_CMD_PWM_GET_KEYBOARD_BACKLIGHT 0x22
+#define EC_CMD_PWM_GET_KEYBOARD_BACKLIGHT 0x0022
-struct ec_response_pwm_get_keyboard_backlight {
+struct __ec_align1 ec_response_pwm_get_keyboard_backlight {
uint8_t percent;
uint8_t enabled;
-} __packed;
+};
/* Set keyboard backlight */
/* OBSOLETE - Use EC_CMD_PWM_SET_DUTY */
-#define EC_CMD_PWM_SET_KEYBOARD_BACKLIGHT 0x23
+#define EC_CMD_PWM_SET_KEYBOARD_BACKLIGHT 0x0023
-struct ec_params_pwm_set_keyboard_backlight {
+struct __ec_align1 ec_params_pwm_set_keyboard_backlight {
uint8_t percent;
-} __packed;
+};
/* Set target fan PWM duty cycle */
-#define EC_CMD_PWM_SET_FAN_DUTY 0x24
+#define EC_CMD_PWM_SET_FAN_DUTY 0x0024
/* Version 0 of input params */
-struct ec_params_pwm_set_fan_duty_v0 {
+struct __ec_align4 ec_params_pwm_set_fan_duty_v0 {
uint32_t percent;
-} __packed;
+};
/* Version 1 of input params */
-struct ec_params_pwm_set_fan_duty_v1 {
+struct __ec_align_size1 ec_params_pwm_set_fan_duty_v1 {
uint32_t percent;
uint8_t fan_idx;
-} __packed;
+};
-#define EC_CMD_PWM_SET_DUTY 0x25
+#define EC_CMD_PWM_SET_DUTY 0x0025
/* 16 bit duty cycle, 0xffff = 100% */
#define EC_PWM_MAX_DUTY 0xffff
@@ -1269,22 +1491,22 @@
EC_PWM_TYPE_COUNT,
};
-struct ec_params_pwm_set_duty {
+struct __ec_align4 ec_params_pwm_set_duty {
uint16_t duty; /* Duty cycle, EC_PWM_MAX_DUTY = 100% */
uint8_t pwm_type; /* ec_pwm_type */
uint8_t index; /* Type-specific index, or 0 if unique */
-} __packed;
+};
-#define EC_CMD_PWM_GET_DUTY 0x26
+#define EC_CMD_PWM_GET_DUTY 0x0026
-struct ec_params_pwm_get_duty {
+struct __ec_align1 ec_params_pwm_get_duty {
uint8_t pwm_type; /* ec_pwm_type */
uint8_t index; /* Type-specific index, or 0 if unique */
-} __packed;
+};
-struct ec_response_pwm_get_duty {
+struct __ec_align2 ec_response_pwm_get_duty {
uint16_t duty; /* Duty cycle, EC_PWM_MAX_DUTY = 100% */
-} __packed;
+};
/*****************************************************************************/
/*
@@ -1293,9 +1515,9 @@
* into a subcommand. We'll make separate structs for subcommands with
* different input args, so that we know how much to expect.
*/
-#define EC_CMD_LIGHTBAR_CMD 0x28
+#define EC_CMD_LIGHTBAR_CMD 0x0028
-struct rgb_s {
+struct __ec_todo_unpacked rgb_s {
uint8_t r, g, b;
};
@@ -1303,7 +1525,7 @@
/* List of tweakable parameters. NOTE: It's __packed so it can be sent in a
* host command, but the alignment is the same regardless. Keep it that way.
*/
-struct lightbar_params_v0 {
+struct __ec_todo_packed lightbar_params_v0 {
/* Timing */
int32_t google_ramp_up;
int32_t google_ramp_down;
@@ -1335,9 +1557,9 @@
/* Color palette */
struct rgb_s color[8]; /* 0-3 are Google colors */
-} __packed;
+};
-struct lightbar_params_v1 {
+struct __ec_todo_packed lightbar_params_v1 {
/* Timing */
int32_t google_ramp_up;
int32_t google_ramp_down;
@@ -1384,7 +1606,7 @@
/* Color palette */
struct rgb_s color[8]; /* 0-3 are Google colors */
-} __packed;
+};
/* Lightbar command params v2
* crbug.com/467716
@@ -1395,7 +1617,7 @@
* NOTE: Each of these groups must be less than 120 bytes.
*/
-struct lightbar_params_v2_timing {
+struct __ec_todo_packed lightbar_params_v2_timing {
/* Timing */
int32_t google_ramp_up;
int32_t google_ramp_down;
@@ -1411,9 +1633,9 @@
int32_t tap_tick_delay;
int32_t tap_gate_delay;
int32_t tap_display_time;
-} __packed;
+};
-struct lightbar_params_v2_tap {
+struct __ec_todo_packed lightbar_params_v2_tap {
/* Tap-for-battery params */
uint8_t tap_pct_red;
uint8_t tap_pct_green;
@@ -1421,28 +1643,28 @@
uint8_t tap_seg_max_on;
uint8_t tap_seg_osc;
uint8_t tap_idx[3];
-} __packed;
+};
-struct lightbar_params_v2_oscillation {
+struct __ec_todo_packed lightbar_params_v2_oscillation {
/* Oscillation */
uint8_t osc_min[2]; /* AC=0/1 */
uint8_t osc_max[2]; /* AC=0/1 */
uint8_t w_ofs[2]; /* AC=0/1 */
-} __packed;
+};
-struct lightbar_params_v2_brightness {
+struct __ec_todo_packed lightbar_params_v2_brightness {
/* Brightness limits based on the backlight and AC. */
uint8_t bright_bl_off_fixed[2]; /* AC=0/1 */
uint8_t bright_bl_on_min[2]; /* AC=0/1 */
uint8_t bright_bl_on_max[2]; /* AC=0/1 */
-} __packed;
+};
-struct lightbar_params_v2_thresholds {
+struct __ec_todo_packed lightbar_params_v2_thresholds {
/* Battery level thresholds */
uint8_t battery_threshold[LB_BATTERY_LEVELS - 1];
-} __packed;
+};
-struct lightbar_params_v2_colors {
+struct __ec_todo_packed lightbar_params_v2_colors {
/* Map [AC][battery_level] to color index */
uint8_t s0_idx[2][LB_BATTERY_LEVELS]; /* AP is running */
uint8_t s3_idx[2][LB_BATTERY_LEVELS]; /* AP is sleeping */
@@ -1452,19 +1674,19 @@
/* Color palette */
struct rgb_s color[8]; /* 0-3 are Google colors */
-} __packed;
+};
/* Lightbyte program. */
#define EC_LB_PROG_LEN 192
-struct lightbar_program {
+struct __ec_todo_unpacked lightbar_program {
uint8_t size;
uint8_t data[EC_LB_PROG_LEN];
};
-struct ec_params_lightbar {
+struct __ec_todo_packed ec_params_lightbar {
uint8_t cmd; /* Command (see enum lightbar_command) */
union {
- struct {
+ struct __ec_todo_unpacked {
/* no args */
} dump, off, on, init, get_seq, get_params_v0, get_params_v1,
version, get_brightness, get_demo, suspend, resume,
@@ -1472,23 +1694,23 @@
get_params_v2_osc, get_params_v2_bright,
get_params_v2_thlds, get_params_v2_colors;
- struct {
+ struct __ec_todo_unpacked {
uint8_t num;
} set_brightness, seq, demo;
- struct {
+ struct __ec_todo_unpacked {
uint8_t ctrl, reg, value;
} reg;
- struct {
+ struct __ec_todo_unpacked {
uint8_t led, red, green, blue;
} set_rgb;
- struct {
+ struct __ec_todo_unpacked {
uint8_t led;
} get_rgb;
- struct {
+ struct __ec_todo_unpacked {
uint8_t enable;
} manual_suspend_ctrl;
@@ -1504,19 +1726,19 @@
struct lightbar_program set_program;
};
-} __packed;
+};
-struct ec_response_lightbar {
+struct __ec_todo_packed ec_response_lightbar {
union {
- struct {
- struct {
+ struct __ec_todo_unpacked {
+ struct __ec_todo_unpacked {
uint8_t reg;
uint8_t ic0;
uint8_t ic1;
} vals[23];
} dump;
- struct {
+ struct __ec_todo_unpacked {
uint8_t num;
} get_seq, get_brightness, get_demo;
@@ -1531,16 +1753,16 @@
struct lightbar_params_v2_thresholds get_params_v2_thlds;
struct lightbar_params_v2_colors get_params_v2_colors;
- struct {
+ struct __ec_todo_unpacked {
uint32_t num;
uint32_t flags;
} version;
- struct {
+ struct __ec_todo_unpacked {
uint8_t red, green, blue;
} get_rgb;
- struct {
+ struct __ec_todo_unpacked {
/* no return params */
} off, on, init, set_brightness, seq, reg, set_rgb,
demo, set_params_v0, set_params_v1,
@@ -1549,7 +1771,7 @@
set_v2par_osc, set_v2par_bright, set_v2par_thlds,
set_v2par_colors;
};
-} __packed;
+};
/* Lightbar commands */
enum lightbar_command {
@@ -1593,7 +1815,7 @@
/*****************************************************************************/
/* LED control commands */
-#define EC_CMD_LED_CONTROL 0x29
+#define EC_CMD_LED_CONTROL 0x0029
enum ec_led_id {
/* LED to indicate battery state of charge */
@@ -1605,6 +1827,14 @@
EC_LED_ID_POWER_LED,
/* LED on power adapter or its plug */
EC_LED_ID_ADAPTER_LED,
+ /* LED to indicate left side */
+ EC_LED_ID_LEFT_LED,
+ /* LED to indicate right side */
+ EC_LED_ID_RIGHT_LED,
+ /* LED to indicate recovery mode with HW_REINIT */
+ EC_LED_ID_RECOVERY_HW_REINIT_LED,
+ /* LED to indicate sysrq debug mode. */
+ EC_LED_ID_SYSRQ_DEBUG_LED,
EC_LED_ID_COUNT
};
@@ -1624,14 +1854,14 @@
EC_LED_COLOR_COUNT
};
-struct ec_params_led_control {
+struct __ec_align1 ec_params_led_control {
uint8_t led_id; /* Which LED to control */
uint8_t flags; /* Control flags */
uint8_t brightness[EC_LED_COLOR_COUNT];
-} __packed;
+};
-struct ec_response_led_control {
+struct __ec_align1 ec_response_led_control {
/*
* Available brightness value range.
*
@@ -1640,7 +1870,7 @@
* Other values means the LED is control by PWM.
*/
uint8_t brightness_range[EC_LED_COLOR_COUNT];
-} __packed;
+};
/*****************************************************************************/
/* Verified boot commands */
@@ -1651,9 +1881,9 @@
*/
/* Verified boot hash command */
-#define EC_CMD_VBOOT_HASH 0x2a
+#define EC_CMD_VBOOT_HASH 0x002A
-struct ec_params_vboot_hash {
+struct __ec_align4 ec_params_vboot_hash {
uint8_t cmd; /* enum ec_vboot_hash_cmd */
uint8_t hash_type; /* enum ec_vboot_hash_type */
uint8_t nonce_size; /* Nonce size; may be 0 */
@@ -1661,9 +1891,9 @@
uint32_t offset; /* Offset in flash to hash */
uint32_t size; /* Number of bytes to hash */
uint8_t nonce_data[64]; /* Nonce data; ignored if nonce_size=0 */
-} __packed;
+};
-struct ec_response_vboot_hash {
+struct __ec_align4 ec_response_vboot_hash {
uint8_t status; /* enum ec_vboot_hash_status */
uint8_t hash_type; /* enum ec_vboot_hash_type */
uint8_t digest_size; /* Size of hash digest in bytes */
@@ -1671,7 +1901,7 @@
uint32_t offset; /* Offset in flash which was hashed */
uint32_t size; /* Number of bytes hashed */
uint8_t hash_digest[64]; /* Hash digest data */
-} __packed;
+};
enum ec_vboot_hash_cmd {
EC_VBOOT_HASH_GET = 0, /* Get current hash status */
@@ -1703,7 +1933,7 @@
* Motion sense commands. We'll make separate structs for sub-commands with
* different input args, so that we know how much to expect.
*/
-#define EC_CMD_MOTION_SENSE_CMD 0x2b
+#define EC_CMD_MOTION_SENSE_CMD 0x002B
/* Motion sense commands */
enum motionsense_command {
@@ -1805,6 +2035,19 @@
*/
MOTIONSENSE_CMD_LID_ANGLE = 14,
+ /*
+ * Allow the FIFO to trigger interrupt via MKBP events.
+ * By default the FIFO does not send interrupt to process the FIFO
+ * until the AP is ready or it is coming from a wakeup sensor.
+ */
+ MOTIONSENSE_CMD_FIFO_INT_ENABLE = 15,
+
+ /*
+ * Spoof the readings of the sensors. The spoofed readings can be set
+ * to arbitrary values, or will lock to the last read actual values.
+ */
+ MOTIONSENSE_CMD_SPOOF = 16,
+
/* Number of motionsense sub-commands. */
MOTIONSENSE_NUM_CMDS
};
@@ -1817,6 +2060,7 @@
MOTIONSENSE_TYPE_PROX = 3,
MOTIONSENSE_TYPE_LIGHT = 4,
MOTIONSENSE_TYPE_ACTIVITY = 5,
+ MOTIONSENSE_TYPE_BARO = 6,
MOTIONSENSE_TYPE_MAX,
};
@@ -1838,9 +2082,11 @@
MOTIONSENSE_CHIP_KX022 = 6,
MOTIONSENSE_CHIP_L3GD20H = 7,
MOTIONSENSE_CHIP_BMA255 = 8,
+ MOTIONSENSE_CHIP_BMP280 = 9,
+ MOTIONSENSE_CHIP_OPT3001 = 10,
};
-struct ec_response_motion_sensor_data {
+struct __ec_todo_packed ec_response_motion_sensor_data {
/* Flags for each sensor. */
uint8_t flags;
/* sensor number the data comes from */
@@ -1848,35 +2094,36 @@
/* Each sensor is up to 3-axis. */
union {
int16_t data[3];
- struct {
- uint16_t rsvd;
+ struct __ec_todo_packed {
+ uint16_t reserved;
uint32_t timestamp;
- } __packed;
- struct {
+ };
+ struct __ec_todo_unpacked {
uint8_t activity; /* motionsensor_activity */
uint8_t state;
int16_t add_info[2];
};
};
-} __packed;
+};
-struct ec_response_motion_sense_fifo_info {
+/* Note: used in ec_response_get_next_data */
+struct __ec_todo_packed ec_response_motion_sense_fifo_info {
/* Size of the fifo */
uint16_t size;
/* Amount of space used in the fifo */
uint16_t count;
- /* TImestamp recorded in us */
+ /* Timestamp recorded in us */
uint32_t timestamp;
/* Total amount of vector lost */
uint16_t total_lost;
/* Lost events since the last fifo_info, per sensors */
uint16_t lost[0];
-} __packed;
+};
-struct ec_response_motion_sense_fifo_data {
+struct __ec_todo_packed ec_response_motion_sense_fifo_data {
uint32_t number_data;
struct ec_response_motion_sensor_data data[0];
-} __packed;
+};
/* List supported activity recognition */
enum motionsensor_activity {
@@ -1885,7 +2132,7 @@
MOTIONSENSE_ACTIVITY_DOUBLE_TAP = 2,
};
-struct ec_motion_sense_activity {
+struct __ec_todo_unpacked ec_motion_sense_activity {
uint8_t sensor_num;
uint8_t activity; /* one of enum motionsensor_activity */
uint8_t enable; /* 1: enable, 0: disable */
@@ -1900,12 +2147,13 @@
#define MOTIONSENSE_SENSOR_FLAG_PRESENT (1<<0)
/*
- * Flush entry for synchronisation.
+ * Flush entry for synchronization.
* data contains time stamp
*/
#define MOTIONSENSE_SENSOR_FLAG_FLUSH (1<<0)
#define MOTIONSENSE_SENSOR_FLAG_TIMESTAMP (1<<1)
#define MOTIONSENSE_SENSOR_FLAG_WAKEUP (1<<2)
+#define MOTIONSENSE_SENSOR_FLAG_TABLET_MODE (1<<3)
/*
* Send this value for the data element to only perform a read. If you
@@ -1922,11 +2170,25 @@
#define LID_ANGLE_UNRELIABLE 500
-struct ec_params_motion_sense {
+enum motionsense_spoof_mode {
+ /* Disable spoof mode. */
+ MOTIONSENSE_SPOOF_MODE_DISABLE = 0,
+
+ /* Enable spoof mode, but use provided component values. */
+ MOTIONSENSE_SPOOF_MODE_CUSTOM,
+
+ /* Enable spoof mode, but use the current sensor values. */
+ MOTIONSENSE_SPOOF_MODE_LOCK_CURRENT,
+
+ /* Query the current spoof mode status for the sensor. */
+ MOTIONSENSE_SPOOF_MODE_QUERY,
+};
+
+struct __ec_todo_packed ec_params_motion_sense {
uint8_t cmd;
union {
/* Used for MOTIONSENSE_CMD_DUMP */
- struct {
+ struct __ec_todo_unpacked {
/*
* Maximal number of sensor the host is expecting.
* 0 means the host is only interested in the number
@@ -1938,7 +2200,7 @@
/*
* Used for MOTIONSENSE_CMD_KB_WAKE_ANGLE.
*/
- struct {
+ struct __ec_todo_unpacked {
/* Data to set or EC_MOTION_SENSE_NO_VALUE to read.
* kb_wake_angle: angle to wakup AP.
*/
@@ -1947,15 +2209,16 @@
/* Used for MOTIONSENSE_CMD_INFO, MOTIONSENSE_CMD_DATA
* and MOTIONSENSE_CMD_PERFORM_CALIB. */
- struct {
+ struct __ec_todo_unpacked {
uint8_t sensor_num;
- } info, data, fifo_flush, perform_calib, list_activities;
+ } info, info_3, data, fifo_flush, perform_calib,
+ list_activities;
/*
* Used for MOTIONSENSE_CMD_EC_RATE, MOTIONSENSE_CMD_SENSOR_ODR
* and MOTIONSENSE_CMD_SENSOR_RANGE.
*/
- struct {
+ struct __ec_todo_unpacked {
uint8_t sensor_num;
/* Rounding flag, true for round-up, false for down. */
@@ -1968,7 +2231,7 @@
} ec_rate, sensor_odr, sensor_range;
/* Used for MOTIONSENSE_CMD_SENSOR_OFFSET */
- struct {
+ struct __ec_todo_packed {
uint8_t sensor_num;
/*
@@ -1994,14 +2257,14 @@
* Compass: 1/16 uT
*/
int16_t offset[3];
- } __packed sensor_offset;
+ } sensor_offset;
/* Used for MOTIONSENSE_CMD_FIFO_INFO */
- struct {
+ struct __ec_todo_unpacked {
} fifo_info;
/* Used for MOTIONSENSE_CMD_FIFO_READ */
- struct {
+ struct __ec_todo_unpacked {
/*
* Number of expected vector to return.
* EC may return less or 0 if none available.
@@ -2012,15 +2275,38 @@
struct ec_motion_sense_activity set_activity;
/* Used for MOTIONSENSE_CMD_LID_ANGLE */
- struct {
+ struct __ec_todo_unpacked {
} lid_angle;
- };
-} __packed;
-struct ec_response_motion_sense {
+ /* Used for MOTIONSENSE_CMD_FIFO_INT_ENABLE */
+ struct __ec_todo_unpacked {
+ /*
+ * 1: enable, 0 disable fifo,
+ * EC_MOTION_SENSE_NO_VALUE return value.
+ */
+ int8_t enable;
+ } fifo_int_enable;
+
+ /* Used for MOTIONSENSE_CMD_SPOOF */
+ struct __ec_todo_packed {
+ uint8_t sensor_id;
+
+ /* See enum motionsense_spoof_mode. */
+ uint8_t spoof_enable;
+
+ /* Ignored, used for alignment. */
+ uint8_t reserved;
+
+ /* Individual component values to spoof. */
+ int16_t components[3];
+ } spoof;
+ };
+};
+
+struct __ec_todo_packed ec_response_motion_sense {
union {
/* Used for MOTIONSENSE_CMD_DUMP */
- struct {
+ struct __ec_todo_unpacked {
/* Flags representing the motion sensor module. */
uint8_t module_flags;
@@ -2035,7 +2321,7 @@
} dump;
/* Used for MOTIONSENSE_CMD_INFO. */
- struct {
+ struct __ec_todo_unpacked {
/* Should be element of enum motionsensor_type. */
uint8_t type;
@@ -2046,21 +2332,45 @@
uint8_t chip;
} info;
+ /* Used for MOTIONSENSE_CMD_INFO version 3 */
+ struct __ec_todo_unpacked {
+ /* Should be element of enum motionsensor_type. */
+ uint8_t type;
+
+ /* Should be element of enum motionsensor_location. */
+ uint8_t location;
+
+ /* Should be element of enum motionsensor_chip. */
+ uint8_t chip;
+
+ /* Minimum sensor sampling frequency */
+ uint32_t min_frequency;
+
+ /* Maximum sensor sampling frequency */
+ uint32_t max_frequency;
+
+ /* Max number of sensor events that could be in fifo */
+ uint32_t fifo_max_event_count;
+ } info_3;
+
/* Used for MOTIONSENSE_CMD_DATA */
struct ec_response_motion_sensor_data data;
/*
* Used for MOTIONSENSE_CMD_EC_RATE, MOTIONSENSE_CMD_SENSOR_ODR,
- * MOTIONSENSE_CMD_SENSOR_RANGE, and
- * MOTIONSENSE_CMD_KB_WAKE_ANGLE.
+ * MOTIONSENSE_CMD_SENSOR_RANGE,
+ * MOTIONSENSE_CMD_KB_WAKE_ANGLE,
+ * MOTIONSENSE_CMD_FIFO_INT_ENABLE and
+ * MOTIONSENSE_CMD_SPOOF.
*/
- struct {
+ struct __ec_todo_unpacked {
/* Current value of the parameter queried. */
int32_t ret;
- } ec_rate, sensor_odr, sensor_range, kb_wake_angle;
+ } ec_rate, sensor_odr, sensor_range, kb_wake_angle,
+ fifo_int_enable, spoof;
/* Used for MOTIONSENSE_CMD_SENSOR_OFFSET */
- struct {
+ struct __ec_todo_unpacked {
int16_t temp;
int16_t offset[3];
} sensor_offset, perform_calib;
@@ -2069,18 +2379,17 @@
struct ec_response_motion_sense_fifo_data fifo_read;
- struct {
+ struct __ec_todo_packed {
uint16_t reserved;
uint32_t enabled;
uint32_t disabled;
- } __packed list_activities;
+ } list_activities;
- struct {
+ struct __ec_todo_unpacked {
} set_activity;
-
/* Used for MOTIONSENSE_CMD_LID_ANGLE */
- struct {
+ struct __ec_todo_unpacked {
/*
* Angle between 0 and 360 degree if available,
* LID_ANGLE_UNRELIABLE otherwise.
@@ -2088,28 +2397,42 @@
uint16_t value;
} lid_angle;
};
-} __packed;
+};
/*****************************************************************************/
/* Force lid open command */
/* Make lid event always open */
-#define EC_CMD_FORCE_LID_OPEN 0x2c
+#define EC_CMD_FORCE_LID_OPEN 0x002C
-struct ec_params_force_lid_open {
+struct __ec_align1 ec_params_force_lid_open {
uint8_t enabled;
-} __packed;
+};
+
+/*****************************************************************************/
+/* Configure the behavior of the power button */
+#define EC_CMD_CONFIG_POWER_BUTTON 0x002D
+
+enum ec_config_power_button_flags {
+ /* Enable/Disable power button pulses for x86 devices */
+ EC_POWER_BUTTON_ENABLE_PULSE = (1 << 0),
+};
+
+struct __ec_align1 ec_params_config_power_button {
+ /* See enum ec_config_power_button_flags */
+ uint8_t flags;
+};
/*****************************************************************************/
/* USB charging control commands */
/* Set USB port charging mode */
-#define EC_CMD_USB_CHARGE_SET_MODE 0x30
+#define EC_CMD_USB_CHARGE_SET_MODE 0x0030
-struct ec_params_usb_charge_set_mode {
+struct __ec_align1 ec_params_usb_charge_set_mode {
uint8_t usb_port_id;
uint8_t mode;
-} __packed;
+};
/*****************************************************************************/
/* Persistent storage for host */
@@ -2118,55 +2441,58 @@
#define EC_PSTORE_SIZE_MAX 64
/* Get persistent storage info */
-#define EC_CMD_PSTORE_INFO 0x40
+#define EC_CMD_PSTORE_INFO 0x0040
-struct ec_response_pstore_info {
+struct __ec_align4 ec_response_pstore_info {
/* Persistent storage size, in bytes */
uint32_t pstore_size;
/* Access size; read/write offset and size must be a multiple of this */
uint32_t access_size;
-} __packed;
+};
/*
* Read persistent storage
*
* Response is params.size bytes of data.
*/
-#define EC_CMD_PSTORE_READ 0x41
+#define EC_CMD_PSTORE_READ 0x0041
-struct ec_params_pstore_read {
+struct __ec_align4 ec_params_pstore_read {
uint32_t offset; /* Byte offset to read */
uint32_t size; /* Size to read in bytes */
-} __packed;
+};
/* Write persistent storage */
-#define EC_CMD_PSTORE_WRITE 0x42
+#define EC_CMD_PSTORE_WRITE 0x0042
-struct ec_params_pstore_write {
+struct __ec_align4 ec_params_pstore_write {
uint32_t offset; /* Byte offset to write */
uint32_t size; /* Size to write in bytes */
uint8_t data[EC_PSTORE_SIZE_MAX];
-} __packed;
+};
/*****************************************************************************/
/* Real-time clock */
/* RTC params and response structures */
-struct ec_params_rtc {
+struct __ec_align4 ec_params_rtc {
uint32_t time;
-} __packed;
+};
-struct ec_response_rtc {
+struct __ec_align4 ec_response_rtc {
uint32_t time;
-} __packed;
+};
/* These use ec_response_rtc */
-#define EC_CMD_RTC_GET_VALUE 0x44
-#define EC_CMD_RTC_GET_ALARM 0x45
+#define EC_CMD_RTC_GET_VALUE 0x0044
+#define EC_CMD_RTC_GET_ALARM 0x0045
/* These all use ec_params_rtc */
-#define EC_CMD_RTC_SET_VALUE 0x46
-#define EC_CMD_RTC_SET_ALARM 0x47
+#define EC_CMD_RTC_SET_VALUE 0x0046
+#define EC_CMD_RTC_SET_ALARM 0x0047
+
+/* Pass as time param to SET_ALARM to clear the current alarm */
+#define EC_RTC_ALARM_CLEAR 0
/*****************************************************************************/
/* Port80 log access */
@@ -2175,40 +2501,40 @@
#define EC_PORT80_SIZE_MAX 32
/* Get last port80 code from previous boot */
-#define EC_CMD_PORT80_LAST_BOOT 0x48
-#define EC_CMD_PORT80_READ 0x48
+#define EC_CMD_PORT80_LAST_BOOT 0x0048
+#define EC_CMD_PORT80_READ 0x0048
enum ec_port80_subcmd {
EC_PORT80_GET_INFO = 0,
EC_PORT80_READ_BUFFER,
};
-struct ec_params_port80_read {
+struct __ec_todo_packed ec_params_port80_read {
uint16_t subcmd;
union {
- struct {
+ struct __ec_todo_unpacked {
uint32_t offset;
uint32_t num_entries;
} read_buffer;
};
-} __packed;
+};
-struct ec_response_port80_read {
+struct __ec_todo_packed ec_response_port80_read {
union {
- struct {
+ struct __ec_todo_unpacked {
uint32_t writes;
uint32_t history_size;
uint32_t last_boot;
} get_info;
- struct {
+ struct __ec_todo_unpacked {
uint16_t codes[EC_PORT80_SIZE_MAX];
} data;
};
-} __packed;
+};
-struct ec_response_port80_last_boot {
+struct __ec_align2 ec_response_port80_last_boot {
uint16_t code;
-} __packed;
+};
/*****************************************************************************/
/* Temporary secure storage for host verified boot use */
@@ -2220,39 +2546,38 @@
#define EC_VSTORE_SLOT_MAX 32
/* Get persistent storage info */
-#define EC_CMD_VSTORE_INFO 0x49
-
-struct ec_response_vstore_info {
+#define EC_CMD_VSTORE_INFO 0x0049
+struct __ec_align_size1 ec_response_vstore_info {
/* Indicates which slots are locked */
uint32_t slot_locked;
/* Total number of slots available */
uint8_t slot_count;
-} __packed;
+};
/*
* Read temporary secure storage
*
* Response is EC_VSTORE_SLOT_SIZE bytes of data.
*/
-#define EC_CMD_VSTORE_READ 0x4a
+#define EC_CMD_VSTORE_READ 0x004A
-struct ec_params_vstore_read {
+struct __ec_align1 ec_params_vstore_read {
uint8_t slot; /* Slot to read from */
-} __packed;
+};
-struct ec_response_vstore_read {
+struct __ec_align1 ec_response_vstore_read {
uint8_t data[EC_VSTORE_SLOT_SIZE];
-} __packed;
+};
/*
* Write temporary secure storage and lock it.
*/
-#define EC_CMD_VSTORE_WRITE 0x4b
+#define EC_CMD_VSTORE_WRITE 0x004B
-struct ec_params_vstore_write {
+struct __ec_align1 ec_params_vstore_write {
uint8_t slot; /* Slot to write to */
uint8_t data[EC_VSTORE_SLOT_SIZE];
-} __packed;
+};
/*****************************************************************************/
/* Thermal engine commands. Note that there are two implementations. We'll
@@ -2261,29 +2586,29 @@
* Version 1 separates the CPU thermal limits from the fan control.
*/
-#define EC_CMD_THERMAL_SET_THRESHOLD 0x50
-#define EC_CMD_THERMAL_GET_THRESHOLD 0x51
+#define EC_CMD_THERMAL_SET_THRESHOLD 0x0050
+#define EC_CMD_THERMAL_GET_THRESHOLD 0x0051
/* The version 0 structs are opaque. You have to know what they are for
* the get/set commands to make any sense.
*/
/* Version 0 - set */
-struct ec_params_thermal_set_threshold {
+struct __ec_align2 ec_params_thermal_set_threshold {
uint8_t sensor_type;
uint8_t threshold_id;
uint16_t value;
-} __packed;
+};
/* Version 0 - get */
-struct ec_params_thermal_get_threshold {
+struct __ec_align1 ec_params_thermal_get_threshold {
uint8_t sensor_type;
uint8_t threshold_id;
-} __packed;
+};
-struct ec_response_thermal_get_threshold {
+struct __ec_align2 ec_response_thermal_get_threshold {
uint16_t value;
-} __packed;
+};
/* The version 1 structs are visible. */
@@ -2295,42 +2620,46 @@
EC_TEMP_THRESH_COUNT
};
-/* Thermal configuration for one temperature sensor. Temps are in degrees K.
+/*
+ * Thermal configuration for one temperature sensor. Temps are in degrees K.
* Zero values will be silently ignored by the thermal task.
+ *
+ * Note that this structure is a sub-structure of
+ * ec_params_thermal_set_threshold_v1, but maintains its alignment there.
*/
-struct ec_thermal_config {
+struct __ec_align4 ec_thermal_config {
uint32_t temp_host[EC_TEMP_THRESH_COUNT]; /* levels of hotness */
uint32_t temp_fan_off; /* no active cooling needed */
uint32_t temp_fan_max; /* max active cooling needed */
-} __packed;
+};
/* Version 1 - get config for one sensor. */
-struct ec_params_thermal_get_threshold_v1 {
+struct __ec_align4 ec_params_thermal_get_threshold_v1 {
uint32_t sensor_num;
-} __packed;
+};
/* This returns a struct ec_thermal_config */
/* Version 1 - set config for one sensor.
* Use read-modify-write for best results! */
-struct ec_params_thermal_set_threshold_v1 {
+struct __ec_align4 ec_params_thermal_set_threshold_v1 {
uint32_t sensor_num;
struct ec_thermal_config cfg;
-} __packed;
+};
/* This returns no data */
/****************************************************************************/
/* Toggle automatic fan control */
-#define EC_CMD_THERMAL_AUTO_FAN_CTRL 0x52
+#define EC_CMD_THERMAL_AUTO_FAN_CTRL 0x0052
/* Version 1 of input params */
-struct ec_params_auto_fan_ctrl_v1 {
+struct __ec_align1 ec_params_auto_fan_ctrl_v1 {
uint8_t fan_idx;
-} __packed;
+};
/* Get/Set TMP006 calibration data */
-#define EC_CMD_TMP006_GET_CALIBRATION 0x53
-#define EC_CMD_TMP006_SET_CALIBRATION 0x54
+#define EC_CMD_TMP006_GET_CALIBRATION 0x0053
+#define EC_CMD_TMP006_SET_CALIBRATION 0x0054
/*
* The original TMP006 calibration only needed four params, but now we need
@@ -2342,52 +2671,52 @@
*/
/* This is the same struct for both v0 and v1. */
-struct ec_params_tmp006_get_calibration {
+struct __ec_align1 ec_params_tmp006_get_calibration {
uint8_t index;
-} __packed;
+};
/* Version 0 */
-struct ec_response_tmp006_get_calibration_v0 {
+struct __ec_align4 ec_response_tmp006_get_calibration_v0 {
float s0;
float b0;
float b1;
float b2;
-} __packed;
+};
-struct ec_params_tmp006_set_calibration_v0 {
+struct __ec_align4 ec_params_tmp006_set_calibration_v0 {
uint8_t index;
uint8_t reserved[3];
float s0;
float b0;
float b1;
float b2;
-} __packed;
+};
/* Version 1 */
-struct ec_response_tmp006_get_calibration_v1 {
+struct __ec_align4 ec_response_tmp006_get_calibration_v1 {
uint8_t algorithm;
uint8_t num_params;
uint8_t reserved[2];
float val[0];
-} __packed;
+};
-struct ec_params_tmp006_set_calibration_v1 {
+struct __ec_align4 ec_params_tmp006_set_calibration_v1 {
uint8_t index;
uint8_t algorithm;
uint8_t num_params;
uint8_t reserved;
float val[0];
-} __packed;
+};
/* Read raw TMP006 data */
-#define EC_CMD_TMP006_GET_RAW 0x55
+#define EC_CMD_TMP006_GET_RAW 0x0055
-struct ec_params_tmp006_get_raw {
+struct __ec_align1 ec_params_tmp006_get_raw {
uint8_t index;
-} __packed;
+};
-struct ec_response_tmp006_get_raw {
+struct __ec_align4 ec_response_tmp006_get_raw {
int32_t t; /* In 1/100 K */
int32_t v; /* In nV */
};
@@ -2400,30 +2729,81 @@
*
* Returns raw data for keyboard cols; see ec_response_mkbp_info.cols for
* expected response size.
+ *
+ * NOTE: This has been superseded by EC_CMD_MKBP_GET_NEXT_EVENT. If you wish
+ * to obtain the instantaneous state, use EC_CMD_MKBP_INFO with the type
+ * EC_MKBP_INFO_CURRENT and event EC_MKBP_EVENT_KEY_MATRIX.
*/
-#define EC_CMD_MKBP_STATE 0x60
+#define EC_CMD_MKBP_STATE 0x0060
-/* Provide information about the matrix : number of rows and columns */
-#define EC_CMD_MKBP_INFO 0x61
+/*
+ * Provide information about various MKBP things. See enum ec_mkbp_info_type.
+ */
+#define EC_CMD_MKBP_INFO 0x0061
-struct ec_response_mkbp_info {
+struct __ec_align_size1 ec_response_mkbp_info {
uint32_t rows;
uint32_t cols;
- uint8_t switches;
-} __packed;
+ /* Formerly "switches", which was 0. */
+ uint8_t reserved;
+};
+
+struct __ec_align1 ec_params_mkbp_info {
+ uint8_t info_type;
+ uint8_t event_type;
+};
+
+enum ec_mkbp_info_type {
+ /*
+ * Info about the keyboard matrix: number of rows and columns.
+ *
+ * Returns struct ec_response_mkbp_info.
+ */
+ EC_MKBP_INFO_KBD = 0,
+
+ /*
+ * For buttons and switches, info about which specifically are
+ * supported. event_type must be set to one of the values in enum
+ * ec_mkbp_event.
+ *
+ * For EC_MKBP_EVENT_BUTTON and EC_MKBP_EVENT_SWITCH, returns a 4 byte
+ * bitmask indicating which buttons or switches are present. See the
+ * bit inidices below.
+ */
+ EC_MKBP_INFO_SUPPORTED = 1,
+
+ /*
+ * Instantaneous state of buttons and switches.
+ *
+ * event_type must be set to one of the values in enum ec_mkbp_event.
+ *
+ * For EC_MKBP_EVENT_KEY_MATRIX, returns uint8_t key_matrix[13]
+ * indicating the current state of the keyboard matrix.
+ *
+ * For EC_MKBP_EVENT_HOST_EVENT, return uint32_t host_event, the raw
+ * event state.
+ *
+ * For EC_MKBP_EVENT_BUTTON, returns uint32_t buttons, indicating the
+ * state of supported buttons.
+ *
+ * For EC_MKBP_EVENT_SWITCH, returns uint32_t switches, indicating the
+ * state of supported switches.
+ */
+ EC_MKBP_INFO_CURRENT = 2,
+};
/* Simulate key press */
-#define EC_CMD_MKBP_SIMULATE_KEY 0x62
+#define EC_CMD_MKBP_SIMULATE_KEY 0x0062
-struct ec_params_mkbp_simulate_key {
+struct __ec_align1 ec_params_mkbp_simulate_key {
uint8_t col;
uint8_t row;
uint8_t pressed;
-} __packed;
+};
/* Configure keyboard scanning */
-#define EC_CMD_MKBP_SET_CONFIG 0x64
-#define EC_CMD_MKBP_GET_CONFIG 0x65
+#define EC_CMD_MKBP_SET_CONFIG 0x0064
+#define EC_CMD_MKBP_GET_CONFIG 0x0065
/* flags */
enum mkbp_config_flags {
@@ -2440,8 +2820,13 @@
EC_MKBP_VALID_FIFO_MAX_DEPTH = 1 << 7,
};
-/* Configuration for our key scanning algorithm */
-struct ec_mkbp_config {
+/*
+ * Configuration for our key scanning algorithm.
+ *
+ * Note that this is used as a sub-structure of
+ * ec_{params/response}_mkbp_get_config.
+ */
+struct __ec_align_size1 ec_mkbp_config {
uint32_t valid_mask; /* valid fields */
uint8_t flags; /* some flags (enum mkbp_config_flags) */
uint8_t valid_flags; /* which flags are valid */
@@ -2460,18 +2845,18 @@
uint16_t debounce_up_us; /* time for debounce on key up */
/* maximum depth to allow for fifo (0 = no keyscan output) */
uint8_t fifo_max_depth;
-} __packed;
+};
-struct ec_params_mkbp_set_config {
+struct __ec_align_size1 ec_params_mkbp_set_config {
struct ec_mkbp_config config;
-} __packed;
+};
-struct ec_response_mkbp_get_config {
+struct __ec_align_size1 ec_response_mkbp_get_config {
struct ec_mkbp_config config;
-} __packed;
+};
/* Run the key scan emulation */
-#define EC_CMD_KEYSCAN_SEQ_CTRL 0x66
+#define EC_CMD_KEYSCAN_SEQ_CTRL 0x0066
enum ec_keyscan_seq_cmd {
EC_KEYSCAN_SEQ_STATUS = 0, /* Get status information */
@@ -2489,20 +2874,20 @@
EC_KEYSCAN_SEQ_FLAG_DONE = 1 << 0,
};
-struct ec_collect_item {
+struct __ec_align1 ec_collect_item {
uint8_t flags; /* some flags (enum ec_collect_flags) */
};
-struct ec_params_keyscan_seq_ctrl {
+struct __ec_todo_packed ec_params_keyscan_seq_ctrl {
uint8_t cmd; /* Command to send (enum ec_keyscan_seq_cmd) */
union {
- struct {
+ struct __ec_align1 {
uint8_t active; /* still active */
uint8_t num_items; /* number of items */
/* Current item being presented */
uint8_t cur_item;
} status;
- struct {
+ struct __ec_todo_unpacked {
/*
* Absolute time for this scan, measured from the
* start of the sequence.
@@ -2510,29 +2895,29 @@
uint32_t time_us;
uint8_t scan[0]; /* keyscan data */
} add;
- struct {
+ struct __ec_align1 {
uint8_t start_item; /* First item to return */
uint8_t num_items; /* Number of items to return */
} collect;
};
-} __packed;
+};
-struct ec_result_keyscan_seq_ctrl {
+struct __ec_todo_packed ec_result_keyscan_seq_ctrl {
union {
- struct {
+ struct __ec_todo_unpacked {
uint8_t num_items; /* Number of items */
/* Data for each item */
struct ec_collect_item item[0];
} collect;
};
-} __packed;
+};
/*
* Get the next pending MKBP event.
*
* Returns EC_RES_UNAVAILABLE if there is no event pending.
*/
-#define EC_CMD_GET_NEXT_EVENT 0x67
+#define EC_CMD_GET_NEXT_EVENT 0x0067
enum ec_mkbp_event {
/* Keyboard matrix changed. The event data is the new matrix state. */
@@ -2544,50 +2929,89 @@
/* New Sensor FIFO data. The event data is fifo_info structure. */
EC_MKBP_EVENT_SENSOR_FIFO = 2,
+ /* The state of the non-matrixed buttons have changed. */
+ EC_MKBP_EVENT_BUTTON = 3,
+
+ /* The state of the switches have changed. */
+ EC_MKBP_EVENT_SWITCH = 4,
+
+ /* New Fingerprint sensor event, the event data is fp_events bitmap. */
+ EC_MKBP_EVENT_FINGERPRINT = 5,
+
+ /*
+ * Sysrq event: send emulated sysrq. The event data is sysrq,
+ * corresponding to the key to be pressed.
+ */
+ EC_MKBP_EVENT_SYSRQ = 6,
+
/* Number of MKBP events */
EC_MKBP_EVENT_COUNT,
};
-union ec_response_get_next_data {
- uint8_t key_matrix[13];
+union __ec_align_offset1 ec_response_get_next_data {
+ uint8_t key_matrix[13];
/* Unaligned */
- uint32_t host_event;
+ uint32_t host_event;
- struct {
+ struct __ec_todo_unpacked {
/* For aligning the fifo_info */
- uint8_t rsvd[3];
+ uint8_t reserved[3];
struct ec_response_motion_sense_fifo_info info;
- } sensor_fifo;
-} __packed;
+ } sensor_fifo;
-struct ec_response_get_next_event {
+ uint32_t buttons;
+
+ uint32_t switches;
+
+ uint32_t fp_events;
+
+ uint32_t sysrq;
+};
+
+struct __ec_align1 ec_response_get_next_event {
uint8_t event_type;
/* Followed by event data if any */
union ec_response_get_next_data data;
-} __packed;
+};
+
+/* Bit indices for buttons and switches.*/
+/* Buttons */
+#define EC_MKBP_POWER_BUTTON 0
+#define EC_MKBP_VOL_UP 1
+#define EC_MKBP_VOL_DOWN 2
+
+/* Switches */
+#define EC_MKBP_LID_OPEN 0
+#define EC_MKBP_TABLET_MODE 1
/* Run keyboard factory test scanning */
-#define EC_CMD_KEYBOARD_FACTORY_TEST 0x68
+#define EC_CMD_KEYBOARD_FACTORY_TEST 0x0068
-struct ec_response_keyboard_factory_test {
+struct __ec_align2 ec_response_keyboard_factory_test {
uint16_t shorted; /* Keyboard pins are shorted */
-} __packed;
+};
+
+/* Fingerprint events in 'fp_events' for EC_MKBP_EVENT_FINGERPRINT */
+#define EC_MKBP_FP_RAW_EVENT(fp_events) ((fp_events) & 0x00FFFFFF)
+#define EC_MKBP_FP_FINGER_DOWN (1 << 29)
+#define EC_MKBP_FP_FINGER_UP (1 << 30)
+#define EC_MKBP_FP_IMAGE_READY (1 << 31)
/*****************************************************************************/
/* Temperature sensor commands */
/* Read temperature sensor info */
-#define EC_CMD_TEMP_SENSOR_GET_INFO 0x70
+#define EC_CMD_TEMP_SENSOR_GET_INFO 0x0070
-struct ec_params_temp_sensor_get_info {
+struct __ec_align1 ec_params_temp_sensor_get_info {
uint8_t id;
-} __packed;
+};
-struct ec_response_temp_sensor_get_info {
+struct __ec_align1 ec_response_temp_sensor_get_info {
char sensor_name[32];
uint8_t sensor_type;
-} __packed;
+};
/*****************************************************************************/
@@ -2604,48 +3028,48 @@
* Host event mask params and response structures, shared by all of the host
* event commands below.
*/
-struct ec_params_host_event_mask {
+struct __ec_align4 ec_params_host_event_mask {
uint32_t mask;
-} __packed;
+};
-struct ec_response_host_event_mask {
+struct __ec_align4 ec_response_host_event_mask {
uint32_t mask;
-} __packed;
+};
/* These all use ec_response_host_event_mask */
-#define EC_CMD_HOST_EVENT_GET_B 0x87
-#define EC_CMD_HOST_EVENT_GET_SMI_MASK 0x88
-#define EC_CMD_HOST_EVENT_GET_SCI_MASK 0x89
-#define EC_CMD_HOST_EVENT_GET_WAKE_MASK 0x8d
+#define EC_CMD_HOST_EVENT_GET_B 0x0087
+#define EC_CMD_HOST_EVENT_GET_SMI_MASK 0x0088
+#define EC_CMD_HOST_EVENT_GET_SCI_MASK 0x0089
+#define EC_CMD_HOST_EVENT_GET_WAKE_MASK 0x008D
/* These all use ec_params_host_event_mask */
-#define EC_CMD_HOST_EVENT_SET_SMI_MASK 0x8a
-#define EC_CMD_HOST_EVENT_SET_SCI_MASK 0x8b
-#define EC_CMD_HOST_EVENT_CLEAR 0x8c
-#define EC_CMD_HOST_EVENT_SET_WAKE_MASK 0x8e
-#define EC_CMD_HOST_EVENT_CLEAR_B 0x8f
+#define EC_CMD_HOST_EVENT_SET_SMI_MASK 0x008A
+#define EC_CMD_HOST_EVENT_SET_SCI_MASK 0x008B
+#define EC_CMD_HOST_EVENT_CLEAR 0x008C
+#define EC_CMD_HOST_EVENT_SET_WAKE_MASK 0x008E
+#define EC_CMD_HOST_EVENT_CLEAR_B 0x008F
/*****************************************************************************/
/* Switch commands */
/* Enable/disable LCD backlight */
-#define EC_CMD_SWITCH_ENABLE_BKLIGHT 0x90
+#define EC_CMD_SWITCH_ENABLE_BKLIGHT 0x0090
-struct ec_params_switch_enable_backlight {
+struct __ec_align1 ec_params_switch_enable_backlight {
uint8_t enabled;
-} __packed;
+};
/* Enable/disable WLAN/Bluetooth */
-#define EC_CMD_SWITCH_ENABLE_WIRELESS 0x91
+#define EC_CMD_SWITCH_ENABLE_WIRELESS 0x0091
#define EC_VER_SWITCH_ENABLE_WIRELESS 1
/* Version 0 params; no response */
-struct ec_params_switch_enable_wireless_v0 {
+struct __ec_align1 ec_params_switch_enable_wireless_v0 {
uint8_t enabled;
-} __packed;
+};
/* Version 1 params */
-struct ec_params_switch_enable_wireless_v1 {
+struct __ec_align1 ec_params_switch_enable_wireless_v1 {
/* Flags to enable now */
uint8_t now_flags;
@@ -2661,64 +3085,65 @@
/* Which flags to copy from suspend_flags */
uint8_t suspend_mask;
-} __packed;
+};
/* Version 1 response */
-struct ec_response_switch_enable_wireless_v1 {
+struct __ec_align1 ec_response_switch_enable_wireless_v1 {
/* Flags to enable now */
uint8_t now_flags;
/* Flags to leave enabled in S3 */
uint8_t suspend_flags;
-} __packed;
+};
/*****************************************************************************/
/* GPIO commands. Only available on EC if write protect has been disabled. */
/* Set GPIO output value */
-#define EC_CMD_GPIO_SET 0x92
+#define EC_CMD_GPIO_SET 0x0092
-struct ec_params_gpio_set {
+struct __ec_align1 ec_params_gpio_set {
char name[32];
uint8_t val;
-} __packed;
+};
/* Get GPIO value */
-#define EC_CMD_GPIO_GET 0x93
+#define EC_CMD_GPIO_GET 0x0093
/* Version 0 of input params and response */
-struct ec_params_gpio_get {
+struct __ec_align1 ec_params_gpio_get {
char name[32];
-} __packed;
-struct ec_response_gpio_get {
+};
+
+struct __ec_align1 ec_response_gpio_get {
uint8_t val;
-} __packed;
+};
/* Version 1 of input params and response */
-struct ec_params_gpio_get_v1 {
+struct __ec_align1 ec_params_gpio_get_v1 {
uint8_t subcmd;
union {
- struct {
+ struct __ec_align1 {
char name[32];
} get_value_by_name;
- struct {
+ struct __ec_align1 {
uint8_t index;
} get_info;
};
-} __packed;
+};
-struct ec_response_gpio_get_v1 {
+struct __ec_todo_packed ec_response_gpio_get_v1 {
union {
- struct {
+ struct __ec_align1 {
uint8_t val;
} get_value_by_name, get_count;
- struct {
+ struct __ec_todo_unpacked {
uint8_t val;
char name[32];
uint32_t flags;
} get_info;
};
-} __packed;
+};
enum gpio_get_subcmd {
EC_GPIO_GET_BY_NAME = 0,
@@ -2730,33 +3155,36 @@
/* I2C commands. Only available when flash write protect is unlocked. */
/*
- * TODO(crosbug.com/p/23570): These commands are deprecated, and will be
- * removed soon. Use EC_CMD_I2C_PASSTHRU instead.
+ * CAUTION: These commands are deprecated, and are not supported anymore in EC
+ * builds >= 8398.0.0 (see crosbug.com/p/23570)
+ *
+ * Use EC_CMD_I2C_PASSTHRU instead.
*/
/* Read I2C bus */
-#define EC_CMD_I2C_READ 0x94
+#define EC_CMD_I2C_READ 0x0094
-struct ec_params_i2c_read {
+struct __ec_align_size1 ec_params_i2c_read {
uint16_t addr; /* 8-bit address (7-bit shifted << 1) */
uint8_t read_size; /* Either 8 or 16. */
uint8_t port;
uint8_t offset;
-} __packed;
-struct ec_response_i2c_read {
+};
+
+struct __ec_align2 ec_response_i2c_read {
uint16_t data;
-} __packed;
+};
/* Write I2C bus */
-#define EC_CMD_I2C_WRITE 0x95
+#define EC_CMD_I2C_WRITE 0x0095
-struct ec_params_i2c_write {
+struct __ec_align_size1 ec_params_i2c_write {
uint16_t data;
uint16_t addr; /* 8-bit address (7-bit shifted << 1) */
uint8_t write_size; /* Either 8 or 16. */
uint8_t port;
uint8_t offset;
-} __packed;
+};
/*****************************************************************************/
/* Charge state commands. Only available when flash write protect unlocked. */
@@ -2764,7 +3192,7 @@
/* Force charge state machine to stop charging the battery or force it to
* discharge the battery.
*/
-#define EC_CMD_CHARGE_CONTROL 0x96
+#define EC_CMD_CHARGE_CONTROL 0x0096
#define EC_VER_CHARGE_CONTROL 1
enum ec_charge_control_mode {
@@ -2773,15 +3201,15 @@
CHARGE_CONTROL_DISCHARGE,
};
-struct ec_params_charge_control {
+struct __ec_align4 ec_params_charge_control {
uint32_t mode; /* enum charge_control_mode */
-} __packed;
+};
/*****************************************************************************/
/* Console commands. Only available when flash write protect is unlocked. */
/* Snapshot console output buffer for use by EC_CMD_CONSOLE_READ. */
-#define EC_CMD_CONSOLE_SNAPSHOT 0x97
+#define EC_CMD_CONSOLE_SNAPSHOT 0x0097
/*
* Read data from the saved snapshot. If the subcmd parameter is
@@ -2795,16 +3223,16 @@
* Response is null-terminated string. Empty string, if there is no more
* remaining output.
*/
-#define EC_CMD_CONSOLE_READ 0x98
+#define EC_CMD_CONSOLE_READ 0x0098
enum ec_console_read_subcmd {
CONSOLE_READ_NEXT = 0,
CONSOLE_READ_RECENT
};
-struct ec_params_console_read_v1 {
+struct __ec_align1 ec_params_console_read_v1 {
uint8_t subcmd; /* enum ec_console_read_subcmd */
-} __packed;
+};
/*****************************************************************************/
@@ -2815,13 +3243,13 @@
* EC_RES_SUCCESS if the command was successful.
* EC_RES_ERROR if the cut off command failed.
*/
-#define EC_CMD_BATTERY_CUT_OFF 0x99
+#define EC_CMD_BATTERY_CUT_OFF 0x0099
#define EC_BATTERY_CUTOFF_FLAG_AT_SHUTDOWN (1 << 0)
-struct ec_params_battery_cutoff {
+struct __ec_align1 ec_params_battery_cutoff {
uint8_t flags;
-} __packed;
+};
/*****************************************************************************/
/* USB port mux control. */
@@ -2829,11 +3257,11 @@
/*
* Switch USB mux or return to automatic switching.
*/
-#define EC_CMD_USB_MUX 0x9a
+#define EC_CMD_USB_MUX 0x009A
-struct ec_params_usb_mux {
+struct __ec_align1 ec_params_usb_mux {
uint8_t mux;
-} __packed;
+};
/*****************************************************************************/
/* LDOs / FETs control. */
@@ -2846,25 +3274,25 @@
/*
* Switch on/off a LDO.
*/
-#define EC_CMD_LDO_SET 0x9b
+#define EC_CMD_LDO_SET 0x009B
-struct ec_params_ldo_set {
+struct __ec_align1 ec_params_ldo_set {
uint8_t index;
uint8_t state;
-} __packed;
+};
/*
* Get LDO state.
*/
-#define EC_CMD_LDO_GET 0x9c
+#define EC_CMD_LDO_GET 0x009C
-struct ec_params_ldo_get {
+struct __ec_align1 ec_params_ldo_get {
uint8_t index;
-} __packed;
+};
-struct ec_response_ldo_get {
+struct __ec_align1 ec_response_ldo_get {
uint8_t state;
-} __packed;
+};
/*****************************************************************************/
/* Power info. */
@@ -2872,20 +3300,20 @@
/*
* Get power info.
*/
-#define EC_CMD_POWER_INFO 0x9d
+#define EC_CMD_POWER_INFO 0x009D
-struct ec_response_power_info {
+struct __ec_align4 ec_response_power_info {
uint32_t usb_dev_type;
uint16_t voltage_ac;
uint16_t voltage_system;
uint16_t current_system;
uint16_t usb_current_limit;
-} __packed;
+};
/*****************************************************************************/
/* I2C passthru command */
-#define EC_CMD_I2C_PASSTHRU 0x9e
+#define EC_CMD_I2C_PASSTHRU 0x009E
/* Read data; if not present, message is a write */
#define EC_I2C_FLAG_READ (1 << 15)
@@ -2899,28 +3327,28 @@
/* Any error */
#define EC_I2C_STATUS_ERROR (EC_I2C_STATUS_NAK | EC_I2C_STATUS_TIMEOUT)
-struct ec_params_i2c_passthru_msg {
+struct __ec_align2 ec_params_i2c_passthru_msg {
uint16_t addr_flags; /* I2C slave address (7 or 10 bits) and flags */
uint16_t len; /* Number of bytes to read or write */
-} __packed;
+};
-struct ec_params_i2c_passthru {
+struct __ec_align2 ec_params_i2c_passthru {
uint8_t port; /* I2C port number */
uint8_t num_msgs; /* Number of messages */
struct ec_params_i2c_passthru_msg msg[];
/* Data to write for all messages is concatenated here */
-} __packed;
+};
-struct ec_response_i2c_passthru {
+struct __ec_align1 ec_response_i2c_passthru {
uint8_t i2c_status; /* Status flags (EC_I2C_STATUS_...) */
uint8_t num_msgs; /* Number of messages processed */
uint8_t data[]; /* Data read by messages concatenated here */
-} __packed;
+};
/*****************************************************************************/
/* Power button hang detect */
-#define EC_CMD_HANG_DETECT 0x9f
+#define EC_CMD_HANG_DETECT 0x009F
/* Reasons to start hang detection timer */
/* Power button pressed */
@@ -2961,7 +3389,7 @@
*/
#define EC_HANG_STOP_NOW (1 << 31)
-struct ec_params_hang_detect {
+struct __ec_align4 ec_params_hang_detect {
/* Flags; see EC_HANG_* */
uint32_t flags;
@@ -2970,7 +3398,7 @@
/* Timeout in msec before generating warm reboot, if enabled */
uint16_t warm_reboot_timeout_msec;
-} __packed;
+};
/*****************************************************************************/
/* Commands for battery charging */
@@ -2979,7 +3407,7 @@
* This is the single catch-all host command to exchange data regarding the
* charge state machine (v2 and up).
*/
-#define EC_CMD_CHARGE_STATE 0xa0
+#define EC_CMD_CHARGE_STATE 0x00A0
/* Subcommands for this host command */
enum charge_state_command {
@@ -3014,27 +3442,27 @@
/* Other custom param ranges go here... */
};
-struct ec_params_charge_state {
+struct __ec_todo_packed ec_params_charge_state {
uint8_t cmd; /* enum charge_state_command */
union {
- struct {
+ struct __ec_align1 {
/* no args */
} get_state;
- struct {
+ struct __ec_todo_unpacked {
uint32_t param; /* enum charge_state_param */
} get_param;
- struct {
+ struct __ec_todo_unpacked {
uint32_t param; /* param to set */
uint32_t value; /* value to set */
} set_param;
};
-} __packed;
+};
-struct ec_response_charge_state {
+struct __ec_align4 ec_response_charge_state {
union {
- struct {
+ struct __ec_align4 {
int ac;
int chg_voltage;
int chg_current;
@@ -3042,35 +3470,35 @@
int batt_state_of_charge;
} get_state;
- struct {
+ struct __ec_align4 {
uint32_t value;
} get_param;
- struct {
+ struct __ec_align4 {
/* no return values */
} set_param;
};
-} __packed;
+};
/*
* Set maximum battery charging current.
*/
-#define EC_CMD_CHARGE_CURRENT_LIMIT 0xa1
+#define EC_CMD_CHARGE_CURRENT_LIMIT 0x00A1
-struct ec_params_current_limit {
+struct __ec_align4 ec_params_current_limit {
uint32_t limit; /* in mA */
-} __packed;
+};
/*
* Set maximum external voltage / current.
*/
-#define EC_CMD_EXTERNAL_POWER_LIMIT 0xa2
+#define EC_CMD_EXTERNAL_POWER_LIMIT 0x00A2
/* Command v0 is used only on Spring and is obsolete + unsupported */
-struct ec_params_external_power_limit_v1 {
+struct __ec_align2 ec_params_external_power_limit_v1 {
uint16_t current_lim; /* in mA, or EC_POWER_LIMIT_NONE to clear limit */
uint16_t voltage_lim; /* in mV, or EC_POWER_LIMIT_NONE to clear limit */
-} __packed;
+};
#define EC_POWER_LIMIT_NONE 0xffff
@@ -3078,9 +3506,9 @@
/* Hibernate/Deep Sleep Commands */
/* Set the delay before going into hibernation. */
-#define EC_CMD_HIBERNATION_DELAY 0xa8
+#define EC_CMD_HIBERNATION_DELAY 0x00A8
-struct ec_params_hibernation_delay {
+struct __ec_align4 ec_params_hibernation_delay {
/*
* Seconds to wait in G3 before hibernate. Pass in 0 to read the
* current settings without changing them.
@@ -3088,7 +3516,7 @@
uint32_t seconds;
};
-struct ec_response_hibernation_delay {
+struct __ec_align4 ec_response_hibernation_delay {
/*
* The current time in seconds in which the system has been in the G3
* state. This value is reset if the EC transitions out of G3.
@@ -3108,42 +3536,84 @@
uint32_t hibernate_delay;
};
+/* Inform the EC when entering a sleep state */
+#define EC_CMD_HOST_SLEEP_EVENT 0x00A9
+
+enum host_sleep_event {
+ HOST_SLEEP_EVENT_S3_SUSPEND = 1,
+ HOST_SLEEP_EVENT_S3_RESUME = 2,
+ HOST_SLEEP_EVENT_S0IX_SUSPEND = 3,
+ HOST_SLEEP_EVENT_S0IX_RESUME = 4
+};
+
+struct __ec_align1 ec_params_host_sleep_event {
+ uint8_t sleep_event;
+};
+
+/*****************************************************************************/
+/* Device events */
+#define EC_CMD_DEVICE_EVENT 0x00AA
+
+enum ec_device_event {
+ EC_DEVICE_EVENT_TRACKPAD,
+ EC_DEVICE_EVENT_DSP,
+ EC_DEVICE_EVENT_WIFI,
+};
+
+enum ec_device_event_param {
+ /* Get and clear pending device events */
+ EC_DEVICE_EVENT_PARAM_GET_CURRENT_EVENTS,
+ /* Get device event mask */
+ EC_DEVICE_EVENT_PARAM_GET_ENABLED_EVENTS,
+ /* Set device event mask */
+ EC_DEVICE_EVENT_PARAM_SET_ENABLED_EVENTS,
+};
+
+#define EC_DEVICE_EVENT_MASK(event_code) (1UL << (event_code % 32))
+
+struct __ec_align_size1 ec_params_device_event {
+ uint32_t event_mask;
+ uint8_t param;
+};
+
+struct __ec_align4 ec_response_device_event {
+ uint32_t event_mask;
+};
/*****************************************************************************/
/* Smart battery pass-through */
/* Get / Set 16-bit smart battery registers */
-#define EC_CMD_SB_READ_WORD 0xb0
-#define EC_CMD_SB_WRITE_WORD 0xb1
+#define EC_CMD_SB_READ_WORD 0x00B0
+#define EC_CMD_SB_WRITE_WORD 0x00B1
/* Get / Set string smart battery parameters
* formatted as SMBUS "block".
*/
-#define EC_CMD_SB_READ_BLOCK 0xb2
-#define EC_CMD_SB_WRITE_BLOCK 0xb3
+#define EC_CMD_SB_READ_BLOCK 0x00B2
+#define EC_CMD_SB_WRITE_BLOCK 0x00B3
-struct ec_params_sb_rd {
+struct __ec_align1 ec_params_sb_rd {
uint8_t reg;
-} __packed;
+};
-struct ec_response_sb_rd_word {
+struct __ec_align2 ec_response_sb_rd_word {
uint16_t value;
-} __packed;
+};
-struct ec_params_sb_wr_word {
+struct __ec_align1 ec_params_sb_wr_word {
uint8_t reg;
uint16_t value;
-} __packed;
+};
-struct ec_response_sb_rd_block {
+struct __ec_align1 ec_response_sb_rd_block {
uint8_t data[32];
-} __packed;
+};
-struct ec_params_sb_wr_block {
+struct __ec_align1 ec_params_sb_wr_block {
uint8_t reg;
uint16_t data[32];
-} __packed;
-
+};
/*****************************************************************************/
/* Battery vendor parameters
@@ -3154,28 +3624,28 @@
* requested value.
*/
-#define EC_CMD_BATTERY_VENDOR_PARAM 0xb4
+#define EC_CMD_BATTERY_VENDOR_PARAM 0x00B4
enum ec_battery_vendor_param_mode {
BATTERY_VENDOR_PARAM_MODE_GET = 0,
BATTERY_VENDOR_PARAM_MODE_SET,
};
-struct ec_params_battery_vendor_param {
+struct __ec_align_size1 ec_params_battery_vendor_param {
uint32_t param;
uint32_t value;
uint8_t mode;
-} __packed;
+};
-struct ec_response_battery_vendor_param {
+struct __ec_align4 ec_response_battery_vendor_param {
uint32_t value;
-} __packed;
+};
/*****************************************************************************/
/*
* Smart Battery Firmware Update Commands
*/
-#define EC_CMD_SB_FW_UPDATE 0xb5
+#define EC_CMD_SB_FW_UPDATE 0x00B5
enum ec_sb_fw_update_subcmd {
EC_SB_FW_UPDATE_PREPARE = 0x0,
@@ -3192,12 +3662,12 @@
#define SB_FW_UPDATE_CMD_STATUS_SIZE 2
#define SB_FW_UPDATE_CMD_INFO_SIZE 8
-struct ec_sb_fw_update_header {
+struct __ec_align4 ec_sb_fw_update_header {
uint16_t subcmd; /* enum ec_sb_fw_update_subcmd */
uint16_t fw_id; /* firmware id */
-} __packed;
+};
-struct ec_params_sb_fw_update {
+struct __ec_align4 ec_params_sb_fw_update {
struct ec_sb_fw_update_header hdr;
union {
/* EC_SB_FW_UPDATE_PREPARE = 0x0 */
@@ -3206,41 +3676,41 @@
/* EC_SB_FW_UPDATE_END = 0x4 */
/* EC_SB_FW_UPDATE_STATUS = 0x5 */
/* EC_SB_FW_UPDATE_PROTECT = 0x6 */
- struct {
+ struct __ec_align4 {
/* no args */
} dummy;
/* EC_SB_FW_UPDATE_WRITE = 0x3 */
- struct {
+ struct __ec_align4 {
uint8_t data[SB_FW_UPDATE_CMD_WRITE_BLOCK_SIZE];
} write;
};
-} __packed;
+};
-struct ec_response_sb_fw_update {
+struct __ec_align1 ec_response_sb_fw_update {
union {
/* EC_SB_FW_UPDATE_INFO = 0x1 */
- struct {
+ struct __ec_align1 {
uint8_t data[SB_FW_UPDATE_CMD_INFO_SIZE];
} info;
/* EC_SB_FW_UPDATE_STATUS = 0x5 */
- struct {
+ struct __ec_align1 {
uint8_t data[SB_FW_UPDATE_CMD_STATUS_SIZE];
} status;
};
-} __packed;
+};
/*
* Entering Verified Boot Mode Command
* Default mode is VBOOT_MODE_NORMAL if EC did not receive this command.
* Valid Modes are: normal, developer, and recovery.
*/
-#define EC_CMD_ENTERING_MODE 0xb6
+#define EC_CMD_ENTERING_MODE 0x00B6
-struct ec_params_entering_mode {
+struct __ec_align4 ec_params_entering_mode {
int vboot_mode;
-} __packed;
+};
#define VBOOT_MODE_NORMAL 0
#define VBOOT_MODE_DEVELOPER 1
@@ -3251,21 +3721,21 @@
* I2C passthru protection command: Protects I2C tunnels against access on
* certain addresses (board-specific).
*/
-#define EC_CMD_I2C_PASSTHRU_PROTECT 0xb7
+#define EC_CMD_I2C_PASSTHRU_PROTECT 0x00B7
enum ec_i2c_passthru_protect_subcmd {
EC_CMD_I2C_PASSTHRU_PROTECT_STATUS = 0x0,
EC_CMD_I2C_PASSTHRU_PROTECT_ENABLE = 0x1,
};
-struct ec_params_i2c_passthru_protect {
+struct __ec_align1 ec_params_i2c_passthru_protect {
uint8_t subcmd;
uint8_t port; /* I2C port number */
-} __packed;
+};
-struct ec_response_i2c_passthru_protect {
+struct __ec_align1 ec_response_i2c_passthru_protect {
uint8_t status; /* Status flags (0: unlocked, 1: locked) */
-} __packed;
+};
/*****************************************************************************/
/* System commands */
@@ -3274,7 +3744,7 @@
* TODO(crosbug.com/p/23747): This is a confusing name, since it doesn't
* necessarily reboot the EC. Rename to "image" or something similar?
*/
-#define EC_CMD_REBOOT_EC 0xd2
+#define EC_CMD_REBOOT_EC 0x00D2
/* Command */
enum ec_reboot_cmd {
@@ -3291,10 +3761,10 @@
#define EC_REBOOT_FLAG_RESERVED0 (1 << 0) /* Was recovery request */
#define EC_REBOOT_FLAG_ON_AP_SHUTDOWN (1 << 1) /* Reboot after AP shutdown */
-struct ec_params_reboot_ec {
+struct __ec_align1 ec_params_reboot_ec {
uint8_t cmd; /* enum ec_reboot_cmd */
uint8_t flags; /* See EC_REBOOT_FLAG_* */
-} __packed;
+};
/*
* Get information on last EC panic.
@@ -3302,7 +3772,7 @@
* Returns variable-length platform-dependent panic information. See panic.h
* for details.
*/
-#define EC_CMD_GET_PANIC_INFO 0xd3
+#define EC_CMD_GET_PANIC_INFO 0x00D3
/*****************************************************************************/
/*
@@ -3321,7 +3791,7 @@
*
* Use EC_CMD_REBOOT_EC to reboot the EC more politely.
*/
-#define EC_CMD_REBOOT 0xd1 /* Think "die" */
+#define EC_CMD_REBOOT 0x00D1 /* Think "die" */
/*
* Resend last response (not supported on LPC).
@@ -3330,7 +3800,7 @@
* there was no previous command, or the previous command's response was too
* big to save.
*/
-#define EC_CMD_RESEND_RESPONSE 0xdb
+#define EC_CMD_RESEND_RESPONSE 0x00DB
/*
* This header byte on a command indicate version 0. Any header byte less
@@ -3342,7 +3812,7 @@
*
* The old EC interface must not use commands 0xdc or higher.
*/
-#define EC_CMD_VERSION0 0xdc
+#define EC_CMD_VERSION0 0x00DC
/*****************************************************************************/
/*
@@ -3352,7 +3822,7 @@
*/
/* EC to PD MCU exchange status command */
-#define EC_CMD_PD_EXCHANGE_STATUS 0x100
+#define EC_CMD_PD_EXCHANGE_STATUS 0x0100
#define EC_VER_PD_EXCHANGE_STATUS 2
enum pd_charge_state {
@@ -3365,11 +3835,11 @@
/* Status of EC being sent to PD */
#define EC_STATUS_HIBERNATING (1 << 0)
-struct ec_params_pd_status {
+struct __ec_align1 ec_params_pd_status {
uint8_t status; /* EC status */
int8_t batt_soc; /* battery state of charge */
uint8_t charge_state; /* charging state (from enum pd_charge_state) */
-} __packed;
+};
/* Status of PD being sent back to EC */
#define PD_STATUS_HOST_EVENT (1 << 0) /* Forward host event to AP */
@@ -3382,26 +3852,26 @@
#define PD_STATUS_EC_INT_ACTIVE (PD_STATUS_TCPC_ALERT_0 | \
PD_STATUS_TCPC_ALERT_1 | \
PD_STATUS_HOST_EVENT)
-struct ec_response_pd_status {
+struct __ec_align_size1 ec_response_pd_status {
uint32_t curr_lim_ma; /* input current limit */
uint16_t status; /* PD MCU status */
int8_t active_charge_port; /* active charging port */
-} __packed;
+};
/* AP to PD MCU host event status command, cleared on read */
-#define EC_CMD_PD_HOST_EVENT_STATUS 0x104
+#define EC_CMD_PD_HOST_EVENT_STATUS 0x0104
/* PD MCU host event status bits */
#define PD_EVENT_UPDATE_DEVICE (1 << 0)
#define PD_EVENT_POWER_CHANGE (1 << 1)
#define PD_EVENT_IDENTITY_RECEIVED (1 << 2)
#define PD_EVENT_DATA_SWAP (1 << 3)
-struct ec_response_host_event_status {
+struct __ec_align4 ec_response_host_event_status {
uint32_t status; /* PD MCU host event status */
-} __packed;
+};
/* Set USB type-C port role and muxes */
-#define EC_CMD_USB_PD_CONTROL 0x101
+#define EC_CMD_USB_PD_CONTROL 0x0101
enum usb_pd_control_role {
USB_PD_CTRL_ROLE_NO_CHANGE = 0,
@@ -3430,12 +3900,12 @@
USB_PD_CTRL_SWAP_COUNT
};
-struct ec_params_usb_pd_control {
+struct __ec_align1 ec_params_usb_pd_control {
uint8_t port;
uint8_t role;
uint8_t mux;
uint8_t swap;
-} __packed;
+};
#define PD_CTRL_RESP_ENABLED_COMMS (1 << 0) /* Communication enabled */
#define PD_CTRL_RESP_ENABLED_CONNECTED (1 << 1) /* Device connected */
@@ -3449,32 +3919,32 @@
#define PD_CTRL_RESP_ROLE_USB_COMM (1 << 5) /* Partner USB comm capable */
#define PD_CTRL_RESP_ROLE_EXT_POWERED (1 << 6) /* Partner externally powerd */
-struct ec_response_usb_pd_control {
+struct __ec_align1 ec_response_usb_pd_control {
uint8_t enabled;
uint8_t role;
uint8_t polarity;
uint8_t state;
-} __packed;
+};
-struct ec_response_usb_pd_control_v1 {
+struct __ec_align1 ec_response_usb_pd_control_v1 {
uint8_t enabled;
uint8_t role;
uint8_t polarity;
char state[32];
-} __packed;
+};
-#define EC_CMD_USB_PD_PORTS 0x102
+#define EC_CMD_USB_PD_PORTS 0x0102
-struct ec_response_usb_pd_ports {
+struct __ec_align1 ec_response_usb_pd_ports {
uint8_t num_ports;
-} __packed;
+};
-#define EC_CMD_USB_PD_POWER_INFO 0x103
+#define EC_CMD_USB_PD_POWER_INFO 0x0103
#define PD_POWER_CHARGING_PORT 0xff
-struct ec_params_usb_pd_power_info {
+struct __ec_align1 ec_params_usb_pd_power_info {
uint8_t port;
-} __packed;
+};
enum usb_chg_type {
USB_CHG_TYPE_NONE,
@@ -3495,24 +3965,24 @@
USB_PD_PORT_POWER_SINK_NOT_CHARGING,
};
-struct usb_chg_measures {
+struct __ec_align2 usb_chg_measures {
uint16_t voltage_max;
uint16_t voltage_now;
uint16_t current_max;
uint16_t current_lim;
-} __packed;
+};
-struct ec_response_usb_pd_power_info {
+struct __ec_align4 ec_response_usb_pd_power_info {
uint8_t role;
uint8_t type;
uint8_t dualrole;
uint8_t reserved1;
struct usb_chg_measures meas;
uint32_t max_power;
-} __packed;
+};
/* Write USB-PD device FW */
-#define EC_CMD_USB_PD_FW_UPDATE 0x110
+#define EC_CMD_USB_PD_FW_UPDATE 0x0110
enum usb_pd_fw_update_cmds {
USB_PD_FW_REBOOT,
@@ -3521,42 +3991,44 @@
USB_PD_FW_ERASE_SIG,
};
-struct ec_params_usb_pd_fw_update {
+struct __ec_align4 ec_params_usb_pd_fw_update {
uint16_t dev_id;
uint8_t cmd;
uint8_t port;
uint32_t size; /* Size to write in bytes */
/* Followed by data to write */
-} __packed;
+};
/* Write USB-PD Accessory RW_HASH table entry */
-#define EC_CMD_USB_PD_RW_HASH_ENTRY 0x111
+#define EC_CMD_USB_PD_RW_HASH_ENTRY 0x0111
/* RW hash is first 20 bytes of SHA-256 of RW section */
#define PD_RW_HASH_SIZE 20
-struct ec_params_usb_pd_rw_hash_entry {
+struct __ec_align1 ec_params_usb_pd_rw_hash_entry {
uint16_t dev_id;
uint8_t dev_rw_hash[PD_RW_HASH_SIZE];
- uint8_t reserved; /* For alignment of current_image */
+ uint8_t reserved; /* For alignment of current_image
+ * TODO(rspangler) but it's not aligned!
+ * Should have been reserved[2]. */
uint32_t current_image; /* One of ec_current_image */
-} __packed;
+};
/* Read USB-PD Accessory info */
-#define EC_CMD_USB_PD_DEV_INFO 0x112
+#define EC_CMD_USB_PD_DEV_INFO 0x0112
-struct ec_params_usb_pd_info_request {
+struct __ec_align1 ec_params_usb_pd_info_request {
uint8_t port;
-} __packed;
+};
/* Read USB-PD Device discovery info */
-#define EC_CMD_USB_PD_DISCOVERY 0x113
-struct ec_params_usb_pd_discovery_entry {
+#define EC_CMD_USB_PD_DISCOVERY 0x0113
+struct __ec_align_size1 ec_params_usb_pd_discovery_entry {
uint16_t vid; /* USB-IF VID */
uint16_t pid; /* USB-IF PID */
uint8_t ptype; /* product type (hub,periph,cable,ama) */
-} __packed;
+};
/* Override default charge behavior */
-#define EC_CMD_PD_CHARGE_PORT_OVERRIDE 0x114
+#define EC_CMD_PD_CHARGE_PORT_OVERRIDE 0x0114
/* Negative port parameters have special meaning */
enum usb_pd_override_ports {
@@ -3565,20 +4037,20 @@
/* [0, CONFIG_USB_PD_PORT_COUNT): Port# */
};
-struct ec_params_charge_port_override {
+struct __ec_align2 ec_params_charge_port_override {
int16_t override_port; /* Override port# */
-} __packed;
+};
/* Read (and delete) one entry of PD event log */
-#define EC_CMD_PD_GET_LOG_ENTRY 0x115
+#define EC_CMD_PD_GET_LOG_ENTRY 0x0115
-struct ec_response_pd_log {
+struct __ec_align4 ec_response_pd_log {
uint32_t timestamp; /* relative timestamp in milliseconds */
uint8_t type; /* event type : see PD_EVENT_xx below */
uint8_t size_port; /* [7:5] port number [4:0] payload size in bytes */
uint16_t data; /* type-defined data payload */
uint8_t payload[0]; /* optional additional data payload: 0..16 bytes */
-} __packed;
+};
/* The timestamp is the microsecond counter shifted to get about a ms. */
@@ -3641,37 +4113,37 @@
/*
* PD_EVENT_VIDEO_CODEC payload is "struct mcdp_info".
*/
-struct mcdp_version {
+struct __ec_align4 mcdp_version {
uint8_t major;
uint8_t minor;
uint16_t build;
-} __packed;
+};
-struct mcdp_info {
+struct __ec_align4 mcdp_info {
uint8_t family[2];
uint8_t chipid[2];
struct mcdp_version irom;
struct mcdp_version fw;
-} __packed;
+};
/* struct mcdp_info field decoding */
#define MCDP_CHIPID(chipid) ((chipid[0] << 8) | chipid[1])
#define MCDP_FAMILY(family) ((family[0] << 8) | family[1])
/* Get/Set USB-PD Alternate mode info */
-#define EC_CMD_USB_PD_GET_AMODE 0x116
-struct ec_params_usb_pd_get_mode_request {
+#define EC_CMD_USB_PD_GET_AMODE 0x0116
+struct __ec_align_size1 ec_params_usb_pd_get_mode_request {
uint16_t svid_idx; /* SVID index to get */
uint8_t port; /* port */
-} __packed;
+};
-struct ec_params_usb_pd_get_mode_response {
+struct __ec_align4 ec_params_usb_pd_get_mode_response {
uint16_t svid; /* SVID */
uint16_t opos; /* Object Position */
uint32_t vdo[6]; /* Mode VDOs */
-} __packed;
+};
-#define EC_CMD_USB_PD_SET_AMODE 0x117
+#define EC_CMD_USB_PD_SET_AMODE 0x0117
enum pd_mode_cmd {
PD_EXIT_MODE = 0,
@@ -3680,24 +4152,24 @@
PD_MODE_CMD_COUNT,
};
-struct ec_params_usb_pd_set_mode_request {
+struct __ec_align4 ec_params_usb_pd_set_mode_request {
uint32_t cmd; /* enum pd_mode_cmd */
uint16_t svid; /* SVID to set */
uint8_t opos; /* Object Position */
uint8_t port; /* port */
-} __packed;
+};
/* Ask the PD MCU to record a log of a requested type */
-#define EC_CMD_PD_WRITE_LOG_ENTRY 0x118
+#define EC_CMD_PD_WRITE_LOG_ENTRY 0x0118
-struct ec_params_pd_write_log_entry {
+struct __ec_align1 ec_params_pd_write_log_entry {
uint8_t type; /* event type : see PD_EVENT_xx above */
uint8_t port; /* port#, or 0 for events unrelated to a given port */
-} __packed;
+};
/* Control USB-PD chip */
-#define EC_CMD_PD_CONTROL 0x119
+#define EC_CMD_PD_CONTROL 0x0119
enum ec_pd_control_cmd {
PD_SUSPEND = 0, /* Suspend the PD chip (EC: stop talking to PD) */
@@ -3706,19 +4178,178 @@
PD_CONTROL_DISABLE /* Disable further calls to this command */
};
-struct ec_params_pd_control {
+struct __ec_align1 ec_params_pd_control {
uint8_t chip; /* chip id (should be 0) */
uint8_t subcmd;
-} __packed;
+};
-#endif /* !__ACPI__ */
+/* Get info about USB-C SS muxes */
+#define EC_CMD_USB_PD_MUX_INFO 0x011A
+
+struct __ec_align1 ec_params_usb_pd_mux_info {
+ uint8_t port; /* USB-C port number */
+};
+
+/* Flags representing mux state */
+#define USB_PD_MUX_USB_ENABLED (1 << 0)
+#define USB_PD_MUX_DP_ENABLED (1 << 1)
+#define USB_PD_MUX_POLARITY_INVERTED (1 << 2)
+#define USB_PD_MUX_HPD_IRQ (1 << 3)
+
+struct __ec_align1 ec_response_usb_pd_mux_info {
+ uint8_t flags; /* USB_PD_MUX_*-encoded USB mux state */
+};
+
+#define EC_CMD_PD_CHIP_INFO 0x011B
+
+struct __ec_align1 ec_params_pd_chip_info {
+ uint8_t port; /* USB-C port number */
+ uint8_t renew; /* Force renewal */
+};
+
+struct __ec_align2 ec_response_pd_chip_info {
+ uint16_t vendor_id;
+ uint16_t product_id;
+ uint16_t device_id;
+ union {
+ uint8_t fw_version_string[8];
+ uint64_t fw_version_number;
+ };
+};
+
+/* Run RW signature verification and get status */
+#define EC_CMD_RWSIG_CHECK_STATUS 0x011C
+
+struct __ec_align4 ec_response_rwsig_check_status {
+ uint32_t status;
+};
+
+/* For controlling RWSIG task */
+#define EC_CMD_RWSIG_ACTION 0x011D
+
+enum rwsig_action {
+ RWSIG_ACTION_ABORT = 0, /* Abort RWSIG and prevent jumping */
+ RWSIG_ACTION_CONTINUE = 1, /* Jump to RW immediately */
+};
+
+struct __ec_align4 ec_params_rwsig_action {
+ uint32_t action;
+};
+
+/*****************************************************************************/
+/* The command range 0x200-0x2FF is reserved for Rotor. */
/*****************************************************************************/
/*
- * Blob commands are just opaque chunks of data, sent with proto v3.
- * params is struct ec_host_request, response is struct ec_host_response.
+ * Reserve a range of host commands for the CR51 firmware.
*/
-#define EC_CMD_BLOB 0x200
+#define EC_CMD_CR51_BASE 0x0300
+#define EC_CMD_CR51_LAST 0x03FF
+
+/*****************************************************************************/
+/* Fingerprint MCU commands: range 0x0400-0x040x */
+
+/* Fingerprint SPI sensor passthru command: prototyping ONLY */
+#define EC_CMD_FP_PASSTHRU 0x0400
+
+#define EC_FP_FLAG_NOT_COMPLETE 0x1
+
+struct __ec_align2 ec_params_fp_passthru {
+ uint16_t len; /* Number of bytes to write then read */
+ uint16_t flags; /* EC_FP_FLAG_xxx */
+ uint8_t data[]; /* Data to send */
+};
+
+/* Fingerprint sensor configuration command: prototyping ONLY */
+#define EC_CMD_FP_SENSOR_CONFIG 0x0401
+
+#define EC_FP_SENSOR_CONFIG_MAX_REGS 16
+
+struct __ec_align2 ec_params_fp_sensor_config {
+ uint8_t count; /* Number of setup registers */
+ /*
+ * the value to send to each of the 'count' setup registers
+ * is stored in the 'data' array for 'len' bytes just after
+ * the previous one.
+ */
+ uint8_t len[EC_FP_SENSOR_CONFIG_MAX_REGS];
+ uint8_t data[];
+};
+
+/* Configure the Fingerprint MCU behavior */
+#define EC_CMD_FP_MODE 0x0402
+
+/* Put the sensor in its lowest power mode */
+#define FP_MODE_DEEPSLEEP (1<<0)
+/* Wait to see a finger on the sensor */
+#define FP_MODE_FINGER_DOWN (1<<1)
+/* Poll until the finger has left the sensor */
+#define FP_MODE_FINGER_UP (1<<2)
+/* Capture the current finger image */
+#define FP_MODE_CAPTURE (1<<3)
+/* special value: don't change anything just read back current mode */
+#define FP_MODE_DONT_CHANGE (1<<31)
+
+struct __ec_align4 ec_params_fp_mode {
+ uint32_t mode; /* as defined by FP_MODE_ constants */
+ /* TBD */
+};
+
+struct __ec_align4 ec_response_fp_mode {
+ uint32_t mode; /* as defined by FP_MODE_ constants */
+ /* TBD */
+};
+
+/* Retrieve Fingerprint sensor information */
+#define EC_CMD_FP_INFO 0x0403
+
+struct __ec_align2 ec_response_fp_info {
+ /* Sensor identification */
+ uint32_t vendor_id;
+ uint32_t product_id;
+ uint32_t model_id;
+ uint32_t version;
+ /* Image frame characteristics */
+ uint32_t frame_size;
+ uint32_t pixel_format; /* using V4L2_PIX_FMT_ */
+ uint16_t width;
+ uint16_t height;
+ uint16_t bpp;
+};
+
+/* Get the last captured finger frame: TODO: will be AES-encrypted */
+#define EC_CMD_FP_FRAME 0x0404
+
+struct __ec_align4 ec_params_fp_frame {
+ uint32_t offset;
+ uint32_t size;
+};
+
+/*****************************************************************************/
+/* Touchpad MCU commands: range 0x0500-0x05FF */
+
+/* Perform touchpad self test */
+#define EC_CMD_TP_SELF_TEST 0x0500
+
+/* Get number of frame types, and the size of each type */
+#define EC_CMD_TP_FRAME_INFO 0x0501
+
+struct __ec_align4 ec_response_tp_frame_info {
+ uint32_t n_frames;
+ uint32_t frame_sizes[0];
+};
+
+/* Create a snapshot of current frame readings */
+#define EC_CMD_TP_FRAME_SNAPSHOT 0x0502
+
+/* Read the frame */
+#define EC_CMD_TP_FRAME_GET 0x0503
+
+struct __ec_align4 ec_params_tp_frame_get {
+ uint32_t frame_index;
+ uint32_t offset;
+ uint32_t size;
+};
/*****************************************************************************/
/*
@@ -3728,14 +4359,33 @@
* CAUTION: Don't go nuts with this. Shipping products should document ALL
* their EC commands for easier development, testing, debugging, and support.
*
+ * All commands MUST be #defined to be 4-digit UPPER CASE hex values
+ * (e.g., 0x00AB, not 0xab) for CONFIG_HOSTCMD_SECTION_SORTED to work.
+ *
* In your experimental code, you may want to do something like this:
*
- * #define EC_CMD_MAGIC_FOO (EC_CMD_BOARD_SPECIFIC_BASE + 0x000)
- * #define EC_CMD_MAGIC_BAR (EC_CMD_BOARD_SPECIFIC_BASE + 0x001)
- * #define EC_CMD_MAGIC_HEY (EC_CMD_BOARD_SPECIFIC_BASE + 0x002)
+ * #define EC_CMD_MAGIC_FOO 0x0000
+ * #define EC_CMD_MAGIC_BAR 0x0001
+ * #define EC_CMD_MAGIC_HEY 0x0002
+ *
+ * DECLARE_PRIVATE_HOST_COMMAND(EC_CMD_MAGIC_FOO, magic_foo_handler,
+ * EC_VER_MASK(0);
+ *
+ * DECLARE_PRIVATE_HOST_COMMAND(EC_CMD_MAGIC_BAR, magic_bar_handler,
+ * EC_VER_MASK(0);
+ *
+ * DECLARE_PRIVATE_HOST_COMMAND(EC_CMD_MAGIC_HEY, magic_hey_handler,
+ * EC_VER_MASK(0);
*/
#define EC_CMD_BOARD_SPECIFIC_BASE 0x3E00
#define EC_CMD_BOARD_SPECIFIC_LAST 0x3FFF
+
+/*
+ * Given the private host command offset, calculate the true private host
+ * command value.
+ */
+#define EC_PRIVATE_HOST_COMMAND_VALUE(command) \
+ (EC_CMD_BOARD_SPECIFIC_BASE + (command))
/*****************************************************************************/
/*
@@ -3775,4 +4425,6 @@
#define EC_LPC_ADDR_OLD_PARAM EC_HOST_CMD_REGION1
#define EC_OLD_PARAM_SIZE EC_HOST_CMD_REGION_SIZE
+#endif /* !__ACPI__ */
+
#endif /* __CROS_EC_EC_COMMANDS_H */
--
To view, visit https://review.coreboot.org/20425
To unsubscribe, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I56c9f891262d8984b6a9a69d96752c2dd6bb2371
Gerrit-Change-Number: 20425
Gerrit-PatchSet: 1
Gerrit-Owner: Duncan Laurie <dlaurie(a)chromium.org>
1
0
Change in coreboot[master]: mainboards: Remove unused EC event for thermal overload
by Duncan Laurie (Code Review) June 30, 2017
by Duncan Laurie (Code Review) June 30, 2017
June 30, 2017
Duncan Laurie has uploaded this change for review. ( https://review.coreboot.org/20424
Change subject: mainboards: Remove unused EC event for thermal overload
......................................................................
mainboards: Remove unused EC event for thermal overload
The Chrome EC event for "thermal overload" was never implemented and
is being repurposed as the EC event mask is out of free bits.
Remove this from the boards that were enabling it.
BUG=b:36024430
TEST=build coreboot for affected boards
Change-Id: I6038389ad73cef8a57aec5041bbb9dea98ed2b6e
Signed-off-by: Duncan Laurie <dlaurie(a)chromium.org>
---
M src/mainboard/google/auron/ec.h
M src/mainboard/google/chell/ec.h
M src/mainboard/google/cyan/ec.h
M src/mainboard/google/eve/ec.h
M src/mainboard/google/fizz/ec.h
M src/mainboard/google/glados/ec.h
M src/mainboard/google/lars/ec.h
M src/mainboard/google/link/ec.h
M src/mainboard/google/poppy/variants/baseboard/include/baseboard/ec.h
M src/mainboard/google/rambi/ec.h
M src/mainboard/google/reef/variants/baseboard/include/baseboard/ec.h
M src/mainboard/google/reef/variants/sand/include/variant/ec.h
M src/mainboard/google/slippy/ec.h
M src/mainboard/intel/kblrvp/ec.h
M src/mainboard/intel/kunimitsu/ec.h
M src/mainboard/intel/strago/ec.h
16 files changed, 0 insertions(+), 16 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/24/20424/1
diff --git a/src/mainboard/google/auron/ec.h b/src/mainboard/google/auron/ec.h
index ef81d0c..d1a54a9 100644
--- a/src/mainboard/google/auron/ec.h
+++ b/src/mainboard/google/auron/ec.h
@@ -32,7 +32,6 @@
EC_HOST_EVENT_MASK(EC_HOST_EVENT_BATTERY) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_BATTERY_STATUS) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_THERMAL_THRESHOLD) |\
- EC_HOST_EVENT_MASK(EC_HOST_EVENT_THERMAL_OVERLOAD) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_THROTTLE_START) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_THROTTLE_STOP) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_USB_CHARGER) |\
diff --git a/src/mainboard/google/chell/ec.h b/src/mainboard/google/chell/ec.h
index ba9a450..fcb0a70 100644
--- a/src/mainboard/google/chell/ec.h
+++ b/src/mainboard/google/chell/ec.h
@@ -30,7 +30,6 @@
EC_HOST_EVENT_MASK(EC_HOST_EVENT_BATTERY) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_BATTERY_STATUS) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_THERMAL_THRESHOLD) |\
- EC_HOST_EVENT_MASK(EC_HOST_EVENT_THERMAL_OVERLOAD) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_THROTTLE_START) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_THROTTLE_STOP) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_USB_CHARGER) |\
diff --git a/src/mainboard/google/cyan/ec.h b/src/mainboard/google/cyan/ec.h
index 4e35ac9..1092977 100644
--- a/src/mainboard/google/cyan/ec.h
+++ b/src/mainboard/google/cyan/ec.h
@@ -35,7 +35,6 @@
EC_HOST_EVENT_MASK(EC_HOST_EVENT_BATTERY) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_BATTERY_STATUS) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_THERMAL_THRESHOLD) |\
- EC_HOST_EVENT_MASK(EC_HOST_EVENT_THERMAL_OVERLOAD) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_THROTTLE_START) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_THROTTLE_STOP) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_USB_CHARGER) |\
diff --git a/src/mainboard/google/eve/ec.h b/src/mainboard/google/eve/ec.h
index 0969da17..fa0dc21 100644
--- a/src/mainboard/google/eve/ec.h
+++ b/src/mainboard/google/eve/ec.h
@@ -31,7 +31,6 @@
EC_HOST_EVENT_MASK(EC_HOST_EVENT_BATTERY) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_BATTERY_STATUS) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_THERMAL_THRESHOLD) |\
- EC_HOST_EVENT_MASK(EC_HOST_EVENT_THERMAL_OVERLOAD) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_THROTTLE_START) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_THROTTLE_STOP) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_MKBP) |\
diff --git a/src/mainboard/google/fizz/ec.h b/src/mainboard/google/fizz/ec.h
index 5a91713..b95a772 100644
--- a/src/mainboard/google/fizz/ec.h
+++ b/src/mainboard/google/fizz/ec.h
@@ -29,7 +29,6 @@
EC_HOST_EVENT_MASK(EC_HOST_EVENT_BATTERY) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_BATTERY_STATUS) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_THERMAL_THRESHOLD) |\
- EC_HOST_EVENT_MASK(EC_HOST_EVENT_THERMAL_OVERLOAD) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_THROTTLE_START) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_THROTTLE_STOP))
diff --git a/src/mainboard/google/glados/ec.h b/src/mainboard/google/glados/ec.h
index ba9a450..fcb0a70 100644
--- a/src/mainboard/google/glados/ec.h
+++ b/src/mainboard/google/glados/ec.h
@@ -30,7 +30,6 @@
EC_HOST_EVENT_MASK(EC_HOST_EVENT_BATTERY) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_BATTERY_STATUS) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_THERMAL_THRESHOLD) |\
- EC_HOST_EVENT_MASK(EC_HOST_EVENT_THERMAL_OVERLOAD) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_THROTTLE_START) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_THROTTLE_STOP) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_USB_CHARGER) |\
diff --git a/src/mainboard/google/lars/ec.h b/src/mainboard/google/lars/ec.h
index ba9a450..fcb0a70 100644
--- a/src/mainboard/google/lars/ec.h
+++ b/src/mainboard/google/lars/ec.h
@@ -30,7 +30,6 @@
EC_HOST_EVENT_MASK(EC_HOST_EVENT_BATTERY) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_BATTERY_STATUS) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_THERMAL_THRESHOLD) |\
- EC_HOST_EVENT_MASK(EC_HOST_EVENT_THERMAL_OVERLOAD) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_THROTTLE_START) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_THROTTLE_STOP) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_USB_CHARGER) |\
diff --git a/src/mainboard/google/link/ec.h b/src/mainboard/google/link/ec.h
index af06772..1235d58 100644
--- a/src/mainboard/google/link/ec.h
+++ b/src/mainboard/google/link/ec.h
@@ -30,7 +30,6 @@
EC_HOST_EVENT_MASK(EC_HOST_EVENT_BATTERY_CRITICAL) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_BATTERY) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_THERMAL_THRESHOLD) |\
- EC_HOST_EVENT_MASK(EC_HOST_EVENT_THERMAL_OVERLOAD) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_USB_CHARGER))
#define LINK_EC_SMI_EVENTS \
diff --git a/src/mainboard/google/poppy/variants/baseboard/include/baseboard/ec.h b/src/mainboard/google/poppy/variants/baseboard/include/baseboard/ec.h
index 5d6cf4c..1312f63 100644
--- a/src/mainboard/google/poppy/variants/baseboard/include/baseboard/ec.h
+++ b/src/mainboard/google/poppy/variants/baseboard/include/baseboard/ec.h
@@ -31,7 +31,6 @@
EC_HOST_EVENT_MASK(EC_HOST_EVENT_BATTERY) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_BATTERY_STATUS) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_THERMAL_THRESHOLD) |\
- EC_HOST_EVENT_MASK(EC_HOST_EVENT_THERMAL_OVERLOAD) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_THROTTLE_START) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_THROTTLE_STOP) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_PD_MCU) |\
diff --git a/src/mainboard/google/rambi/ec.h b/src/mainboard/google/rambi/ec.h
index 6340b69..4eda997 100644
--- a/src/mainboard/google/rambi/ec.h
+++ b/src/mainboard/google/rambi/ec.h
@@ -33,7 +33,6 @@
EC_HOST_EVENT_MASK(EC_HOST_EVENT_BATTERY_CRITICAL) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_BATTERY) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_THERMAL_THRESHOLD) |\
- EC_HOST_EVENT_MASK(EC_HOST_EVENT_THERMAL_OVERLOAD) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_THROTTLE_START) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_THROTTLE_STOP) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_USB_CHARGER) |\
diff --git a/src/mainboard/google/reef/variants/baseboard/include/baseboard/ec.h b/src/mainboard/google/reef/variants/baseboard/include/baseboard/ec.h
index 47b193f..ad01519 100644
--- a/src/mainboard/google/reef/variants/baseboard/include/baseboard/ec.h
+++ b/src/mainboard/google/reef/variants/baseboard/include/baseboard/ec.h
@@ -29,7 +29,6 @@
EC_HOST_EVENT_MASK(EC_HOST_EVENT_BATTERY) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_BATTERY_STATUS) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_THERMAL_THRESHOLD) |\
- EC_HOST_EVENT_MASK(EC_HOST_EVENT_THERMAL_OVERLOAD) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_THROTTLE_START) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_THROTTLE_STOP) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_USB_CHARGER) |\
diff --git a/src/mainboard/google/reef/variants/sand/include/variant/ec.h b/src/mainboard/google/reef/variants/sand/include/variant/ec.h
index e4377c8..11232fe 100644
--- a/src/mainboard/google/reef/variants/sand/include/variant/ec.h
+++ b/src/mainboard/google/reef/variants/sand/include/variant/ec.h
@@ -29,7 +29,6 @@
EC_HOST_EVENT_MASK(EC_HOST_EVENT_BATTERY) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_BATTERY_STATUS) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_THERMAL_THRESHOLD) |\
- EC_HOST_EVENT_MASK(EC_HOST_EVENT_THERMAL_OVERLOAD) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_THROTTLE_START) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_THROTTLE_STOP) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_USB_CHARGER) |\
diff --git a/src/mainboard/google/slippy/ec.h b/src/mainboard/google/slippy/ec.h
index 22942ee..ae947a1 100644
--- a/src/mainboard/google/slippy/ec.h
+++ b/src/mainboard/google/slippy/ec.h
@@ -31,7 +31,6 @@
EC_HOST_EVENT_MASK(EC_HOST_EVENT_BATTERY_CRITICAL) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_BATTERY) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_THERMAL_THRESHOLD) |\
- EC_HOST_EVENT_MASK(EC_HOST_EVENT_THERMAL_OVERLOAD) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_USB_CHARGER))
#define MAINBOARD_EC_SMI_EVENTS \
diff --git a/src/mainboard/intel/kblrvp/ec.h b/src/mainboard/intel/kblrvp/ec.h
index ff5533c..2498244 100644
--- a/src/mainboard/intel/kblrvp/ec.h
+++ b/src/mainboard/intel/kblrvp/ec.h
@@ -30,7 +30,6 @@
EC_HOST_EVENT_MASK(EC_HOST_EVENT_BATTERY) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_BATTERY_STATUS) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_THERMAL_THRESHOLD) |\
- EC_HOST_EVENT_MASK(EC_HOST_EVENT_THERMAL_OVERLOAD) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_THROTTLE_START) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_THROTTLE_STOP) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_USB_CHARGER) |\
diff --git a/src/mainboard/intel/kunimitsu/ec.h b/src/mainboard/intel/kunimitsu/ec.h
index ba9a450..fcb0a70 100644
--- a/src/mainboard/intel/kunimitsu/ec.h
+++ b/src/mainboard/intel/kunimitsu/ec.h
@@ -30,7 +30,6 @@
EC_HOST_EVENT_MASK(EC_HOST_EVENT_BATTERY) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_BATTERY_STATUS) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_THERMAL_THRESHOLD) |\
- EC_HOST_EVENT_MASK(EC_HOST_EVENT_THERMAL_OVERLOAD) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_THROTTLE_START) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_THROTTLE_STOP) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_USB_CHARGER) |\
diff --git a/src/mainboard/intel/strago/ec.h b/src/mainboard/intel/strago/ec.h
index 4e35ac9..1092977 100644
--- a/src/mainboard/intel/strago/ec.h
+++ b/src/mainboard/intel/strago/ec.h
@@ -35,7 +35,6 @@
EC_HOST_EVENT_MASK(EC_HOST_EVENT_BATTERY) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_BATTERY_STATUS) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_THERMAL_THRESHOLD) |\
- EC_HOST_EVENT_MASK(EC_HOST_EVENT_THERMAL_OVERLOAD) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_THROTTLE_START) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_THROTTLE_STOP) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_USB_CHARGER) |\
--
To view, visit https://review.coreboot.org/20424
To unsubscribe, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I6038389ad73cef8a57aec5041bbb9dea98ed2b6e
Gerrit-Change-Number: 20424
Gerrit-PatchSet: 1
Gerrit-Owner: Duncan Laurie <dlaurie(a)chromium.org>
1
0
Change in coreboot[master]: vendorcode/amd/pi: Update AGESA_CFLAGS
by build bot (Jenkins) (Code Review) June 30, 2017
by build bot (Jenkins) (Code Review) June 30, 2017
June 30, 2017
build bot (Jenkins) has posted comments on this change. ( https://review.coreboot.org/20423 )
Change subject: vendorcode/amd/pi: Update AGESA_CFLAGS
......................................................................
Patch Set 1: Verified+1
Build Successful
https://qa.coreboot.org/job/coreboot-gerrit/56443/ : SUCCESS
https://qa.coreboot.org/job/coreboot-checkpatch/12032/ : SUCCESS
--
To view, visit https://review.coreboot.org/20423
To unsubscribe, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I2a64414491130275ba06e5bd76e0b01e450174e8
Gerrit-Change-Number: 20423
Gerrit-PatchSet: 1
Gerrit-Owner: Martin Roth <martinroth(a)google.com>
Gerrit-Reviewer: Marc Jones <marc(a)marcjonesconsulting.com>
Gerrit-Reviewer: Marshall Dawson <marshalldawson3rd(a)gmail.com>
Gerrit-Reviewer: build bot (Jenkins) <no-reply(a)coreboot.org>
Gerrit-Comment-Date: Fri, 30 Jun 2017 03:47:35 +0000
Gerrit-HasComments: No
1
0