summaryrefslogtreecommitdiff
path: root/src/ec
diff options
context:
space:
mode:
authorDuncan Laurie <dlaurie@chromium.org>2014-09-29 08:32:19 -0700
committerPatrick Georgi <pgeorgi@google.com>2015-04-02 17:27:49 +0200
commitd840118ef59bdd0f89c989c0c1d43d32e13ce9d1 (patch)
tree085f8fe277ed91233e1adfe88221e76f9597fb7f /src/ec
parente383feb7c8e1b46639c32df9a11fac6cf3d62403 (diff)
downloadcoreboot-d840118ef59bdd0f89c989c0c1d43d32e13ce9d1.tar.xz
chromeec: Add battery status event and re-enable _BIX
Add a new host event to send a notify(0x80) to the battery when the EC indicates that battery status has changed. The kernel has fixed the bug with _BIX method so it can be enabled now. BUG=chrome-os-partner:32196 BRANCH=samus TEST=build and boot on samus Change-Id: I1b8068df7abf1c8ebdc3a89602896b863accb7f3 Signed-off-by: Stefan Reinauer <reinauer@chromium.org> Original-Commit-Id: a779fc7f32729adb60d8bc220325444ebc20e0d2 Original-Change-Id: I0ebb17e5441e875875d98168ce3c31486d57330e Original-Signed-off-by: Duncan Laurie <dlaurie@chromium.org> Original-Reviewed-on: https://chromium-review.googlesource.com/220320 Original-Reviewed-by: Aaron Durbin <adurbin@chromium.org> Reviewed-on: http://review.coreboot.org/9212 Tested-by: build bot (Jenkins) Reviewed-by: Patrick Georgi <pgeorgi@google.com>
Diffstat (limited to 'src/ec')
-rw-r--r--src/ec/google/chromeec/acpi/battery.asl4
-rw-r--r--src/ec/google/chromeec/acpi/ec.asl7
-rw-r--r--src/ec/google/chromeec/ec_commands.h15
3 files changed, 22 insertions, 4 deletions
diff --git a/src/ec/google/chromeec/acpi/battery.asl b/src/ec/google/chromeec/acpi/battery.asl
index 2ef1199b52..5591b334e0 100644
--- a/src/ec/google/chromeec/acpi/battery.asl
+++ b/src/ec/google/chromeec/acpi/battery.asl
@@ -126,9 +126,7 @@ Device (BAT0)
Return (PBIF)
}
- // Extended Battery info method is disabled for now due to
- // a bug in the Linux kernel: http://crosbug.com/28747
- Method (XBIX, 0, Serialized)
+ Method (_BIX, 0, Serialized)
{
// Last Full Charge Capacity
Store (BTDF, Index (PBIX, 3))
diff --git a/src/ec/google/chromeec/acpi/ec.asl b/src/ec/google/chromeec/acpi/ec.asl
index 734d22394a..7cd8f75dbf 100644
--- a/src/ec/google/chromeec/acpi/ec.asl
+++ b/src/ec/google/chromeec/acpi/ec.asl
@@ -312,6 +312,13 @@ Device (EC0)
}
#endif
+ // Battery Status
+ Method (_Q17, 0, NotSerialized)
+ {
+ Store ("EC: BATTERY STATUS", Debug)
+ Notify (BAT0, 0x80)
+ }
+
/*
* Dynamic Platform Thermal Framework support
*/
diff --git a/src/ec/google/chromeec/ec_commands.h b/src/ec/google/chromeec/ec_commands.h
index 0687641416..bd94281169 100644
--- a/src/ec/google/chromeec/ec_commands.h
+++ b/src/ec/google/chromeec/ec_commands.h
@@ -275,6 +275,9 @@ enum host_event_code {
/* PD MCU triggering host event */
EC_HOST_EVENT_PD_MCU = 22,
+ /* Battery Status flags have changed */
+ EC_HOST_EVENT_BATTERY_STATUS = 23,
+
/*
* The high bit of the event mask is not used as a host event code. If
* it reads back as set, then the entire event mask should be
@@ -1032,6 +1035,13 @@ struct lightbar_params_v1 {
struct rgb_s color[8]; /* 0-3 are Google colors */
} __packed;
+/* Lightbyte program. */
+#define LB_PROG_LEN 192
+struct lb_program {
+ uint8_t size;
+ uint8_t data[LB_PROG_LEN];
+};
+
struct ec_params_lightbar {
uint8_t cmd; /* Command (see enum lightbar_command) */
union {
@@ -1058,6 +1068,7 @@ struct ec_params_lightbar {
struct lightbar_params_v0 set_params_v0;
struct lightbar_params_v1 set_params_v1;
+ struct lb_program set_program;
};
} __packed;
@@ -1090,7 +1101,8 @@ struct ec_response_lightbar {
struct {
/* no return params */
} off, on, init, set_brightness, seq, reg, set_rgb,
- demo, set_params_v0, set_params_v1;
+ demo, set_params_v0, set_params_v1,
+ set_program;
};
} __packed;
@@ -1114,6 +1126,7 @@ enum lightbar_command {
LIGHTBAR_CMD_GET_DEMO = 15,
LIGHTBAR_CMD_GET_PARAMS_V1 = 16,
LIGHTBAR_CMD_SET_PARAMS_V1 = 17,
+ LIGHTBAR_CMD_SET_PROGRAM = 18,
LIGHTBAR_NUM_CMDS
};