diff options
-rw-r--r-- | board/coachz/board.c | 1 | ||||
-rw-r--r-- | common/peripheral_charger.c | 7 | ||||
-rw-r--r-- | include/ec_commands.h | 3 | ||||
-rw-r--r-- | include/peripheral_charger.h | 2 |
4 files changed, 12 insertions, 1 deletions
diff --git a/board/coachz/board.c b/board/coachz/board.c index 6ebf0c4ab3..a6673b401b 100644 --- a/board/coachz/board.c +++ b/board/coachz/board.c @@ -58,6 +58,7 @@ struct pchg pchgs[] = { .drv = &ctn730_drv, .i2c_port = I2C_PORT_WLC, .irq_pin = GPIO_WLC_IRQ_CONN, + .full_percent = 96, }, .events = QUEUE_NULL(PCHG_EVENT_QUEUE_SIZE, enum pchg_event), }, diff --git a/common/peripheral_charger.c b/common/peripheral_charger.c index 131d660d40..85910d4c76 100644 --- a/common/peripheral_charger.c +++ b/common/peripheral_charger.c @@ -414,7 +414,12 @@ static enum ec_status hc_pchg(struct host_cmd_handler_args *args) ctx = &pchgs[port]; - r->state = ctx->state; + if (ctx->state == PCHG_STATE_DETECTED + && ctx->battery_percent >= ctx->cfg->full_percent) + r->state = PCHG_STATE_FULL; + else + r->state = ctx->state; + r->battery_percentage = ctx->battery_percent; r->error = ctx->error; diff --git a/include/ec_commands.h b/include/ec_commands.h index 8f4e313ee4..d1f03e516a 100644 --- a/include/ec_commands.h +++ b/include/ec_commands.h @@ -6811,6 +6811,8 @@ enum pchg_state { PCHG_STATE_DETECTED, /* Device is being charged. */ PCHG_STATE_CHARGING, + /* Device is fully charged. It implies DETECTED (& not charging). */ + PCHG_STATE_FULL, }; #define EC_PCHG_STATE_TEXT { \ @@ -6819,6 +6821,7 @@ enum pchg_state { [PCHG_STATE_ENABLED] = "ENABLED", \ [PCHG_STATE_DETECTED] = "DETECTED", \ [PCHG_STATE_CHARGING] = "CHARGING", \ + [PCHG_STATE_FULL] = "FULL", \ } /*****************************************************************************/ diff --git a/include/peripheral_charger.h b/include/peripheral_charger.h index 1f7b3236f7..2ede2c6f2c 100644 --- a/include/peripheral_charger.h +++ b/include/peripheral_charger.h @@ -109,6 +109,8 @@ struct pchg_config { const int i2c_port; /* GPIO pin used for IRQ */ const enum gpio_signal irq_pin; + /* Full battery percentage */ + const uint8_t full_percent; }; /** |