summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTing Shen <phoenixshen@google.com>2019-07-31 17:11:22 +0800
committerCommit Bot <commit-bot@chromium.org>2019-08-08 10:45:53 +0000
commit3e6c5b4673228f2c009c5dd9283f9232ef4f9449 (patch)
tree6969fe8a0b109c87eaff4841eb22952fd9986593
parent90b71a9252ad1711dcd73d634a737af862576878 (diff)
downloadchrome-ec-3e6c5b4673228f2c009c5dd9283f9232ef4f9449.tar.gz
baseboard/kukui: refactor smart battery code
- Use common fuel gauge implenentation in battery_fuel_gauge.c for things like cutoff and get_info - Move battery characteristics data into per-board folder, so follower devices can add their own battery. - Move Jacuzzi-only battery_hw_present() into per-board folder BUG=b:136977971 TEST=boot ec, verify that ec console prints 'found batt:PANASONIC' BRANCH=master Change-Id: Ib4d33a2d3b4e1e061b390a000071f805d4780c27 Signed-off-by: Ting Shen <phoenixshen@google.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1728671 Commit-Queue: Ting Shen <phoenixshen@chromium.org> Tested-by: Ting Shen <phoenixshen@chromium.org> Reviewed-by: Ting Shen <phoenixshen@chromium.org> Reviewed-by: Yilun Lin <yllin@chromium.org>
-rw-r--r--baseboard/kukui/baseboard.h1
-rw-r--r--baseboard/kukui/battery_smart.c56
-rw-r--r--board/jacuzzi/battery.c46
-rw-r--r--board/jacuzzi/board.h8
-rw-r--r--board/jacuzzi/build.mk2
5 files changed, 60 insertions, 53 deletions
diff --git a/baseboard/kukui/baseboard.h b/baseboard/kukui/baseboard.h
index a273e9789e..cb9597bcd7 100644
--- a/baseboard/kukui/baseboard.h
+++ b/baseboard/kukui/baseboard.h
@@ -22,6 +22,7 @@
#define CONFIG_BATTERY_MM8013
#elif defined(VARIANT_KUKUI_BATTERY_SMART)
#define CONFIG_BATTERY_SMART
+#define CONFIG_BATTERY_FUEL_GAUGE
#else
#error Must define a VARIANT_KUKUI_BATTERY
#endif /* VARIANT_KUKUI_BATTERY */
diff --git a/baseboard/kukui/battery_smart.c b/baseboard/kukui/battery_smart.c
index 93fa215326..b917ead533 100644
--- a/baseboard/kukui/battery_smart.c
+++ b/baseboard/kukui/battery_smart.c
@@ -6,47 +6,10 @@
*/
#include "battery.h"
-#include "battery_fuel_gauge.h"
#include "battery_smart.h"
-#include "gpio.h"
-#include "system.h"
static enum battery_present batt_pres_prev = BP_NOT_SURE;
-/* Shutdown mode parameter to write to manufacturer access register */
-#define SB_SHIP_MODE_REG SB_MANUFACTURER_ACCESS
-#define SB_SHUTDOWN_DATA 0x0010
-
-static const struct battery_info info = {
- .voltage_max = 13200,
- .voltage_normal = 11580,
- .voltage_min = 9000,
- .precharge_current = 256,
- .start_charging_min_c = 0,
- .start_charging_max_c = 45,
- .charging_min_c = 0,
- .charging_max_c = 60,
- .discharging_min_c = -20,
- .discharging_max_c = 60,
-};
-
-const struct battery_info *battery_get_info(void)
-{
- return &info;
-}
-
-enum battery_disconnect_state battery_get_disconnect_state(void)
-{
- if (battery_is_present() == BP_YES)
- return BATTERY_NOT_DISCONNECTED;
- return BATTERY_DISCONNECTED;
-}
-
-enum battery_present battery_hw_present(void)
-{
- return gpio_get_level(GPIO_EC_BATT_PRES_ODL) ? BP_NO : BP_YES;
-}
-
static int battery_init(void)
{
int batt_status;
@@ -60,16 +23,18 @@ static int battery_init(void)
*/
static enum battery_present battery_check_present_status(void)
{
- enum battery_present batt_pres;
+ enum battery_present batt_pres = BP_NOT_SURE;
+#ifdef CONFIG_BATTERY_HW_PRESENT_CUSTOM
/* Get the physical hardware status */
batt_pres = battery_hw_present();
+#endif
/*
* If the battery is not physically connected, then no need to perform
* any more checks.
*/
- if (batt_pres != BP_YES)
+ if (batt_pres == BP_NO)
return batt_pres;
/*
@@ -97,16 +62,3 @@ enum battery_present battery_is_present(void)
batt_pres_prev = battery_check_present_status();
return batt_pres_prev;
}
-
-int board_cut_off_battery(void)
-{
- int rv;
-
- /* Ship mode command must be sent twice to take effect */
- rv = sb_write(SB_SHIP_MODE_REG, SB_SHUTDOWN_DATA);
-
- if (rv != EC_SUCCESS)
- return rv;
-
- return sb_write(SB_SHIP_MODE_REG, SB_SHUTDOWN_DATA);
-}
diff --git a/board/jacuzzi/battery.c b/board/jacuzzi/battery.c
new file mode 100644
index 0000000000..014a8ae6fc
--- /dev/null
+++ b/board/jacuzzi/battery.c
@@ -0,0 +1,46 @@
+/* Copyright 2019 The Chromium OS Authors. All rights reserved.
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "battery.h"
+#include "battery_fuel_gauge.h"
+#include "gpio.h"
+
+const struct board_batt_params board_battery_info[] = {
+ [BATTERY_PANASONIC_AC15A3J] = {
+ .fuel_gauge = {
+ .manuf_name = "PANASONIC",
+ .device_name = "AC15A3J",
+ .ship_mode = {
+ .reg_addr = 0x3A,
+ .reg_data = { 0xC574, 0xC574 },
+ },
+ .fet = {
+ .reg_addr = 0x0,
+ .reg_mask = 0x4000,
+ .disconnect_val = 0x0,
+ }
+ },
+ .batt_info = {
+ .voltage_max = 13200,
+ .voltage_normal = 11580,
+ .voltage_min = 9000,
+ .precharge_current = 256,
+ .start_charging_min_c = 0,
+ .start_charging_max_c = 45,
+ .charging_min_c = 0,
+ .charging_max_c = 60,
+ .discharging_min_c = -20,
+ .discharging_max_c = 60,
+ },
+ },
+};
+BUILD_ASSERT(ARRAY_SIZE(board_battery_info) == BATTERY_TYPE_COUNT);
+
+const enum battery_type DEFAULT_BATTERY_TYPE = BATTERY_PANASONIC_AC15A3J;
+
+enum battery_present battery_hw_present(void)
+{
+ return gpio_get_level(GPIO_EC_BATT_PRES_ODL) ? BP_NO : BP_YES;
+}
diff --git a/board/jacuzzi/board.h b/board/jacuzzi/board.h
index 63f41047e4..bad56feb97 100644
--- a/board/jacuzzi/board.h
+++ b/board/jacuzzi/board.h
@@ -16,6 +16,8 @@
/* TODO(b:135086465) led implementation */
#undef CONFIG_LED_COMMON
+#define CONFIG_BATTERY_HW_PRESENT_CUSTOM
+
#define CONFIG_CHARGER_PSYS
#define CONFIG_BC12_DETECT_PI3USB9201
@@ -99,6 +101,12 @@ enum sensor_id {
enum charge_port {
CHARGE_PORT_USB_C,
};
+
+enum battery_type {
+ BATTERY_PANASONIC_AC15A3J,
+ BATTERY_TYPE_COUNT,
+};
+
#include "gpio_signal.h"
#include "registers.h"
diff --git a/board/jacuzzi/build.mk b/board/jacuzzi/build.mk
index 5c0560e188..7f9669d7d7 100644
--- a/board/jacuzzi/build.mk
+++ b/board/jacuzzi/build.mk
@@ -12,4 +12,4 @@ CHIP_FAMILY:=stm32f0
CHIP_VARIANT:=stm32f09x
BASEBOARD:=kukui
-board-y=board.o
+board-y=battery.o board.o