Commit c05cb5bd authored by Thomas Weißschuh's avatar Thomas Weißschuh Committed by Tzung-Bi Shih

platform/chrome: Update binary interface for EC-based charge control

The charge-control command v2/v3 is more featureful than v1, it
additionally supports charge thresholds.

The definitions were imported from ChromeOS EC commit
32870d602317 ("squirtle: modify motionsense rotation matrix")
Signed-off-by: default avatarThomas Weißschuh <linux@weissschuh.net>
Link: https://lore.kernel.org/r/20240630-cros_ec-charge-control-v5-2-8f649d018c52@weissschuh.netSigned-off-by: default avatarTzung-Bi Shih <tzungbi@kernel.org>
parent 2681bbaa
......@@ -3843,16 +3843,61 @@ struct ec_params_i2c_write {
* discharge the battery.
*/
#define EC_CMD_CHARGE_CONTROL 0x0096
#define EC_VER_CHARGE_CONTROL 1
#define EC_VER_CHARGE_CONTROL 3
enum ec_charge_control_mode {
CHARGE_CONTROL_NORMAL = 0,
CHARGE_CONTROL_IDLE,
CHARGE_CONTROL_DISCHARGE,
/* Add no more entry below. */
CHARGE_CONTROL_COUNT,
};
#define EC_CHARGE_MODE_TEXT \
{ \
[CHARGE_CONTROL_NORMAL] = "NORMAL", \
[CHARGE_CONTROL_IDLE] = "IDLE", \
[CHARGE_CONTROL_DISCHARGE] = "DISCHARGE", \
}
enum ec_charge_control_cmd {
EC_CHARGE_CONTROL_CMD_SET = 0,
EC_CHARGE_CONTROL_CMD_GET,
};
enum ec_charge_control_flag {
EC_CHARGE_CONTROL_FLAG_NO_IDLE = BIT(0),
};
struct ec_params_charge_control {
uint32_t mode; /* enum charge_control_mode */
uint32_t mode; /* enum charge_control_mode */
/* Below are the fields added in V2. */
uint8_t cmd; /* enum ec_charge_control_cmd. */
uint8_t flags; /* enum ec_charge_control_flag (v3+) */
/*
* Lower and upper thresholds for battery sustainer. This struct isn't
* named to avoid tainting foreign projects' name spaces.
*
* If charge mode is explicitly set (e.g. DISCHARGE), battery sustainer
* will be disabled. To disable battery sustainer, set mode=NORMAL,
* lower=-1, upper=-1.
*/
struct {
int8_t lower; /* Display SoC in percentage. */
int8_t upper; /* Display SoC in percentage. */
} sustain_soc;
} __ec_align4;
/* Added in v2 */
struct ec_response_charge_control {
uint32_t mode; /* enum charge_control_mode */
struct { /* Battery sustainer thresholds */
int8_t lower;
int8_t upper;
} sustain_soc;
uint8_t flags; /* enum ec_charge_control_flag (v3+) */
uint8_t reserved;
} __ec_align4;
/*****************************************************************************/
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment