summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce <Bruce.Wan@quantatw.com>2015-10-02 18:04:26 +0800
committerChromeOS bot <3su6n15k.default@developer.gserviceaccount.com>2015-10-07 06:20:24 +0000
commit0988d6395f0d06646c23a69c7a87b88cb3570c66 (patch)
tree75871696fad045b19ba2592073908146f49b1570
parentf1acc5f40bd48c4ace2d32db339049c7630f24d4 (diff)
downloadchrome-ec-0988d6395f0d06646c23a69c7a87b88cb3570c66.tar.gz
Reks: add firmware for shipping mode follow battery spec.
add firmware for shipping mode follow battery spec. BUG=chrome-os-partner:45572 BRANCH=reks TEST=make buildall Change-Id: I02d621e3c4127fdb593ca41ed1c16d6dfe56a98a Signed-off-by: Bruce.Wan <Bruce.Wan@quantatw.com> Reviewed-on: https://chromium-review.googlesource.com/303644 Reviewed-by: Shawn N <shawnn@chromium.org>
-rw-r--r--board/reks/battery.c65
1 files changed, 54 insertions, 11 deletions
diff --git a/board/reks/battery.c b/board/reks/battery.c
index 43fa956ced..b8b19f3f39 100644
--- a/board/reks/battery.c
+++ b/board/reks/battery.c
@@ -7,19 +7,37 @@
#include "battery.h"
#include "battery_smart.h"
+#include "console.h"
+#include "extpower.h"
+#include "gpio.h"
+#include "hooks.h"
+#include "host_command.h"
+#include "system.h"
+#include "util.h"
-/* Shutdown mode parameter to write to manufacturer access register */
-#define SB_SHUTDOWN_DATA 0x0010
+/* FET ON/OFF cammand write to fet off register */
+#define SB_FET_OFF 0x34
+#define SB_FETOFF_DATA1 0x0000
+#define SB_FETOFF_DATA2 0x1000
+#define SB_FETON_DATA1 0x2000
+#define SB_FETON_DATA2 0x4000
+#define BATTERY_FETOFF 0x0100
+
+/*
+ * Green book support parameter
+ * Enable this will make battery meet JEITA standard
+ */
+#define GREEN_BOOK_SUPPORT (1 << 2)
static const struct battery_info info = {
- .voltage_max = 8700,/* mV */
- .voltage_normal = 7600,
- .voltage_min = 6000,
- .precharge_current = 150,/* mA */
+ .voltage_max = 12600,/* mV */
+ .voltage_normal = 11100,
+ .voltage_min = 9000,
+ .precharge_current = 204,/* mA */
.start_charging_min_c = 0,
- .start_charging_max_c = 45,
+ .start_charging_max_c = 60,
.charging_min_c = 0,
- .charging_max_c = 45,
+ .charging_max_c = 60,
.discharging_min_c = -20,
.discharging_max_c = 60,
};
@@ -29,15 +47,40 @@ const struct battery_info *battery_get_info(void)
return &info;
}
-int board_cut_off_battery(void)
+static void battery_init(void)
+{
+ int d, rv;
+ int mode;
+
+ /* Add Green Book support */
+ rv = sb_read(SB_BATTERY_MODE, &mode);
+ if (rv == EC_SUCCESS) {
+ mode |= GREEN_BOOK_SUPPORT;
+ sb_write(SB_BATTERY_MODE, mode);
+ }
+
+ rv = sb_read(SB_FET_OFF, &d);
+ if (rv == EC_SUCCESS && extpower_is_present() && BATTERY_FETOFF == d) {
+ sb_write(SB_FET_OFF, SB_FETON_DATA1);
+ sb_write(SB_FET_OFF, SB_FETON_DATA2);
+ }
+}
+DECLARE_HOOK(HOOK_INIT, battery_init, HOOK_PRIO_DEFAULT);
+
+static int cutoff(void)
{
int rv;
/* Ship mode command must be sent twice to take effect */
- rv = sb_write(SB_MANUFACTURER_ACCESS, SB_SHUTDOWN_DATA);
+ rv = sb_write(SB_FET_OFF, SB_FETOFF_DATA1);
if (rv != EC_SUCCESS)
return rv;
- return sb_write(SB_MANUFACTURER_ACCESS, SB_SHUTDOWN_DATA);
+ return sb_write(SB_FET_OFF, SB_FETOFF_DATA2);
+}
+
+int board_cut_off_battery(void)
+{
+ return cutoff();
}