]> Git Repo - linux.git/commitdiff
platform/chrome: Update binary interface for EC-based charge control
authorThomas Weißschuh <[email protected]>
Sun, 30 Jun 2024 20:54:09 +0000 (22:54 +0200)
committerTzung-Bi Shih <[email protected]>
Mon, 1 Jul 2024 13:22:19 +0000 (21:22 +0800)
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: Thomas Weißschuh <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Tzung-Bi Shih <[email protected]>
include/linux/platform_data/cros_ec_commands.h

index ec598057d1dab529d612a43e886be42045380441..e574b790be6fbc1fca47df05eb3232edec93e6bc 100644 (file)
@@ -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;
 
 /*****************************************************************************/
This page took 0.074049 seconds and 4 git commands to generate.