summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaisuke Nojiri <dnojiri@chromium.org>2018-05-14 18:38:13 -0700
committerchrome-bot <chrome-bot@chromium.org>2018-05-26 00:21:50 -0700
commit2352723c9f6fa21455e4796db5ca955605aa314f (patch)
tree740996b184910e2780888ea734bb568ed25e5ce9
parent2785d8971694f9415a418c74baa808b775898399 (diff)
downloadchrome-ec-2352723c9f6fa21455e4796db5ca955605aa314f.tar.gz
Nami: Set battery configuration per board
This patch makes EC configure battery parameters differently based on OEM ID. Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> BUG=b:79498660 BRANCH=none TEST=make BOARD=nami Change-Id: I782bd950f086bde13b2bc58656dc96e7c3f2aeb3 Reviewed-on: https://chromium-review.googlesource.com/1058718 Commit-Ready: Daisuke Nojiri <dnojiri@chromium.org> Tested-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-by: Aaron Durbin <adurbin@chromium.org>
-rw-r--r--board/nami/battery.c54
-rw-r--r--board/nami/board.c6
-rw-r--r--board/nami/board.h5
3 files changed, 55 insertions, 10 deletions
diff --git a/board/nami/battery.c b/board/nami/battery.c
index aac280264d..8f936c8510 100644
--- a/board/nami/battery.c
+++ b/board/nami/battery.c
@@ -7,11 +7,13 @@
#include "battery.h"
#include "battery_smart.h"
+#include "board.h"
#include "charge_state.h"
#include "console.h"
#include "ec_commands.h"
#include "extpower.h"
#include "gpio.h"
+#include "hooks.h"
#include "util.h"
static enum battery_present batt_pres_prev = BP_NOT_SURE;
@@ -24,25 +26,63 @@ static enum battery_present batt_pres_prev = BP_NOT_SURE;
#define SB_SHIP_MODE_REG SB_MANUFACTURER_ACCESS
#define SB_SHUTDOWN_DATA 0x0010
-static const struct battery_info info = {
- .voltage_max = 8700,
- .voltage_normal = 7700,
+/* Default, Nami, Vayne */
+static const struct battery_info info_0 = {
+ .voltage_max = 8800,
+ .voltage_normal = 7600,
.voltage_min = 6000,
- /* Pre-charge values. */
- .precharge_current = 152, /* mA */
+ .precharge_current = 256,
+ .start_charging_min_c = 0,
+ .start_charging_max_c = 50,
+ .charging_min_c = 0,
+ .charging_max_c = 60,
+ .discharging_min_c = -20,
+ .discharging_max_c = 70,
+};
+/* Sona */
+static const struct battery_info info_1 = {
+ .voltage_max = 13200,
+ .voltage_normal = 11550,
+ .voltage_min = 9000,
+ .precharge_current = 256,
.start_charging_min_c = 0,
.start_charging_max_c = 45,
.charging_min_c = 0,
- .charging_max_c = 50,
+ .charging_max_c = 45,
+ .discharging_min_c = -10,
+ .discharging_max_c = 60,
+};
+
+/* Pantheon */
+static const struct battery_info info_2 = {
+ .voltage_max = 8700,
+ .voltage_normal = 7500,
+ .voltage_min = 6000,
+ .precharge_current = 373,
+ .start_charging_min_c = 0,
+ .start_charging_max_c = 50,
+ .charging_min_c = 0,
+ .charging_max_c = 60,
.discharging_min_c = -20,
.discharging_max_c = 60,
};
+static const struct battery_info *info = &info_0;
+
const struct battery_info *battery_get_info(void)
{
- return &info;
+ return info;
+}
+
+void board_battery_init(void)
+{
+ if (oem == PROJECT_SONA)
+ info = &info_1;
+ else if (oem == PROJECT_PANTHEON)
+ info = &info_2;
}
+DECLARE_HOOK(HOOK_INIT, board_battery_init, HOOK_PRIO_DEFAULT);
int board_cut_off_battery(void)
{
diff --git a/board/nami/board.c b/board/nami/board.c
index b39ff3c514..afc3d802ed 100644
--- a/board/nami/board.c
+++ b/board/nami/board.c
@@ -67,9 +67,9 @@
#define USB_PD_PORT_PS8751 0
#define USB_PD_PORT_ANX7447 1
-static uint16_t board_version;
-static uint8_t oem = PROJECT_NAMI;
-static uint16_t sku;
+uint16_t board_version;
+uint8_t oem = PROJECT_NAMI;
+uint16_t sku;
static void tcpc_alert_event(enum gpio_signal signal)
{
diff --git a/board/nami/board.h b/board/nami/board.h
index 09068b6b74..f27d32bb12 100644
--- a/board/nami/board.h
+++ b/board/nami/board.h
@@ -299,6 +299,11 @@ void board_set_tcpc_power_mode(int port, int mode);
/* Sensors without hardware FIFO are in forced mode */
#define CONFIG_ACCEL_FORCE_MODE_MASK ((1 << LID_ACCEL) | (1 << LID_ALS))
+/* These should be referenced only after HOOK_INIT:HOOK_PRIO_INIT_I2C+1. */
+extern uint16_t board_version;
+extern uint8_t oem;
+extern uint16_t sku;
+
#endif /* !__ASSEMBLER__ */
#endif /* __CROS_EC_BOARD_H */