summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--board/coachz/board.c1
-rw-r--r--common/peripheral_charger.c7
-rw-r--r--include/ec_commands.h3
-rw-r--r--include/peripheral_charger.h2
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;
};
/**