summaryrefslogtreecommitdiff
path: root/util/ec_sb_firmware_update.c
diff options
context:
space:
mode:
authorTom Hughes <tomhughes@chromium.org>2022-09-21 14:10:01 -0700
committerTom Hughes <tomhughes@chromium.org>2022-09-22 12:49:33 -0700
commit2bcf863b492fe7ed8105c853814dba6ed32ba719 (patch)
treefcf6ce5810f9ff9e3c8cce434812dd75492269ed /util/ec_sb_firmware_update.c
parente5fb0b9ba488614b5684e640530f00821ab7b943 (diff)
parent28712dae9d7ed1e694f7622cc083afa71090d4d5 (diff)
downloadchrome-ec-2bcf863b492fe7ed8105c853814dba6ed32ba719.tar.gz
Merge remote-tracking branch cros/main into firmware-fpmcu-bloonchipper-releasefirmware-fpmcu-bloonchipper-release
Generated by: ./util/update_release_branch.py --board bloonchipper --relevant_paths_file ./util/fingerprint-relevant-paths.txt firmware- fpmcu-bloonchipper-release Relevant changes: git log --oneline e5fb0b9ba4..28712dae9d -- board/hatch_fp board/bloonchipper common/fpsensor docs/fingerprint driver/fingerprint util/getversion.sh ded9307b79 util/getversion.sh: Fix version when not in a git repo 956055e692 board: change Google USB vendor info 71b2ef709d Update license boilerplate text in source code files 33e11afda0 Revert "fpsensor: Build fpsensor source file with C++" c8d0360723 fpsensor: Build fpsensor source file with C++ bc113abd53 fpsensor: Fix g++ compiler error 150a58a0dc fpsensor: Fix fp_set_sensor_mode return type b33b5ce85b fpsensor: Remove nested designators for C++ compatibility 2e864b2539 tree-wide: const-ify argv for console commands 56d8b360f9 test: Add test for get ikm failure when seed not set 3a3d6c3690 test: Add test for fpsensor trivial key failure 233e6bbd08 fpsensor_crypto: Abstract calls to hmac_SHA256 0a041b285b docs/fingerprint: Typo correction c03fab67e2 docs/fingerprint: Fix the path of fputils.py 0b5d4baf5a util/getversion.sh: Fix empty file list handling 6e128fe760 FPMCU dev board environment with Satlab 3eb29b6aa5 builtin: Move ssize_t to sys/types.h 345d62ebd1 docs/fingerprint: Update power numbers for latest dartmonkey release c25ffdb316 common: Conditionally support printf %l and %i modifiers 9a3c514b45 test: Add a test to check if the debugger is connected 54e603413f Move standard library tests to their own file 43fa6b4bf8 docs/fingerprint: Update power numbers for latest bloonchipper release 25536f9a84 driver/fingerprint/fpc/bep/fpc_sensor_spi.c: Format with clang-format 4face99efd driver/fingerprint/fpc/libfp/fpc_sensor_pal.h: Format with clang-format 738de2b575 trng: Rename rand to trng_rand 14b8270edd docs/fingerprint: Update dragonclaw power numbers 0b268f93d1 driver/fingerprint/fpc/libfp/fpc_private.c: Format with clang-format f80da163f2 driver/fingerprint/fpc/libfp/fpc_private.h: Format with clang-format 5e9c85c9b1 driver/fingerprint/fpc/libfp/fpc_sensor_pal.c: Format with clang-format c1f9dd3cf8 driver/fingerprint/fpc/libfp/fpc_bio_algorithm.h: Format with clang-format eb1e1bed8d driver/fingerprint/fpc/libfp/fpc1145_private.h: Format with clang-format 6e7b611821 driver/fingerprint/fpc/bep/fpc_bio_algorithm.h: Format with clang-format e0589cd5e2 driver/fingerprint/fpc/bep/fpc1035_private.h: Format with clang-format 7905e556a0 common/fpsensor/fpsensor_crypto.c: Format with clang-format 21289d170c driver/fingerprint/fpc/bep/fpc1025_private.h: Format with clang-format 98a20f937e common/fpsensor/fpsensor_state.c: Format with clang-format a2d255d8af common/fpsensor/fpsensor.c: Format with clang-format 73055eeb3f driver/fingerprint/fpc/bep/fpc_private.c: Format with clang-format 0f7b5cb509 common/fpsensor/fpsensor_private.h: Format with clang-format 1ceade6e65 driver/fingerprint/fpc/bep/fpc_private.h: Format with clang-format dc3e9008b8 board/hatch_fp/board.h: Format with clang-format dca9d74321 Revert "trng: Rename rand to trng_rand" a6b0b3554f trng: Rename rand to trng_rand 28d0b75b70 third_party/boringssl: Remove unused header BRANCH=None BUG=b:246424843 b:234181908 b:244781166 b:234181908 b:244387210 BUG=b:242720240 chromium:1098010 b:180945056 b:236025198 b:234181908 BUG=b:234181908 b:237344361 b:131913998 b:236386294 b:234143158 BUG=b:234781655 b:215613183 b:242720910 TEST=`make -j buildall` TEST=./test/run_device_tests.py --board bloonchipper Test "aes": PASSED Test "cec": PASSED Test "cortexm_fpu": PASSED Test "crc": PASSED Test "flash_physical": PASSED Test "flash_write_protect": PASSED Test "fpsensor_hw": PASSED Test "fpsensor_spi_ro": PASSED Test "fpsensor_spi_rw": PASSED Test "fpsensor_uart_ro": PASSED Test "fpsensor_uart_rw": PASSED Test "mpu_ro": PASSED Test "mpu_rw": PASSED Test "mutex": PASSED Test "pingpong": PASSED Test "printf": PASSED Test "queue": PASSED Test "rollback_region0": PASSED Test "rollback_region1": PASSED Test "rollback_entropy": PASSED Test "rtc": PASSED Test "sha256": PASSED Test "sha256_unrolled": PASSED Test "static_if": PASSED Test "stdlib": PASSED Test "system_is_locked_wp_on": PASSED Test "system_is_locked_wp_off": PASSED Test "timer_dos": PASSED Test "utils": PASSED Test "utils_str": PASSED Test "stm32f_rtc": PASSED Test "panic_data_bloonchipper_v2.0.4277": PASSED Test "panic_data_bloonchipper_v2.0.5938": PASSED Force-Relevant-Builds: all Signed-off-by: Tom Hughes <tomhughes@chromium.org> Change-Id: I264ad0ffe7afcd507a1e483c6e934a9c4fea47c3
Diffstat (limited to 'util/ec_sb_firmware_update.c')
-rw-r--r--util/ec_sb_firmware_update.c274
1 files changed, 115 insertions, 159 deletions
diff --git a/util/ec_sb_firmware_update.c b/util/ec_sb_firmware_update.c
index a959cd6fe9..a2fb70d2a3 100644
--- a/util/ec_sb_firmware_update.c
+++ b/util/ec_sb_firmware_update.c
@@ -1,4 +1,4 @@
-/* Copyright 2014 The Chromium OS Authors. All rights reserved.
+/* Copyright 2014 The ChromiumOS Authors
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
@@ -21,8 +21,8 @@
/* Subcommands: [check|update] */
enum {
OP_UNKNOWN = 0,
- OP_CHECK = 1,
- OP_UPDATE = 2,
+ OP_CHECK = 1,
+ OP_UPDATE = 2,
};
struct delay_value {
@@ -33,54 +33,50 @@ struct delay_value {
/* Default retry counter on errors */
#define SB_FW_UPDATE_DEFAULT_RETRY_CNT 3
/* Default delay value */
-#define SB_FW_UPDATE_DEFAULT_DELAY 1000
+#define SB_FW_UPDATE_DEFAULT_DELAY 1000
-#define DELAY_US_BEGIN 500000
-#define DELAY_US_END 1000000
-#define DELAY_US_BUSY 1000000
-#define DELAY_US_WRITE_END 50000
+#define DELAY_US_BEGIN 500000
+#define DELAY_US_END 1000000
+#define DELAY_US_BUSY 1000000
+#define DELAY_US_WRITE_END 50000
static struct delay_value sb_delays[] = {
- {1, 100000},
- {2, 9000000},
- {4, 100000},
- {771, 30000},
- {2200, 10000},
- {0xFFFFFF, 50000},
+ { 1, 100000 }, { 2, 9000000 }, { 4, 100000 },
+ { 771, 30000 }, { 2200, 10000 }, { 0xFFFFFF, 50000 },
};
enum fw_update_state {
- S0_READ_STATUS = 0,
- S1_READ_INFO = 1,
+ S0_READ_STATUS = 0,
+ S1_READ_INFO = 1,
S2_WRITE_PREPARE = 2,
- S3_READ_STATUS = 3,
- S4_WRITE_UPDATE = 4,
- S5_READ_STATUS = 5,
- S6_WRITE_BLOCK = 6,
- S7_READ_STATUS = 7,
- S8_WRITE_END = 8,
- S9_READ_STATUS = 9,
- S10_TERMINAL = 10
+ S3_READ_STATUS = 3,
+ S4_WRITE_UPDATE = 4,
+ S5_READ_STATUS = 5,
+ S6_WRITE_BLOCK = 6,
+ S7_READ_STATUS = 7,
+ S8_WRITE_END = 8,
+ S9_READ_STATUS = 9,
+ S10_TERMINAL = 10
};
#define MAX_FW_IMAGE_NAME_SIZE 80
/* Firmware Update Control Flags */
enum {
- F_AC_PRESENT = 0x1, /* AC Present */
+ F_AC_PRESENT = 0x1, /* AC Present */
F_VERSION_CHECK = 0x2, /* do firmware version check */
- F_UPDATE = 0x4, /* do firmware update */
- F_NEED_UPDATE = 0x8, /* need firmware update */
- F_POWERD_DISABLED = 0x10, /* powerd is disabled */
- F_LFCC_ZERO = 0x20, /* last full charge is zero */
- F_BATT_DISCHARGE = 0x40 /* battery discharging */
+ F_UPDATE = 0x4, /* do firmware update */
+ F_NEED_UPDATE = 0x8, /* need firmware update */
+ F_POWERD_DISABLED = 0x10, /* powerd is disabled */
+ F_LFCC_ZERO = 0x20, /* last full charge is zero */
+ F_BATT_DISCHARGE = 0x40 /* battery discharging */
};
struct fw_update_ctrl {
uint32_t flags; /* fw update control flags */
- int size; /* size of battery firmware image */
- char *ptr; /* current read pointer of the firmware image */
- int offset; /* current block write offset */
+ int size; /* size of battery firmware image */
+ char *ptr; /* current read pointer of the firmware image */
+ int offset; /* current block write offset */
struct sb_fw_header *fw_img_hdr; /*pointer to firmware image header*/
struct sb_fw_update_status status;
struct sb_fw_update_info info;
@@ -106,76 +102,59 @@ static uint32_t get_delay_value(uint32_t offset, uint32_t step_size)
if (offset <= sb_delays[i].steps * step_size)
return sb_delays[i].value;
}
- return sb_delays[sz-1].value;
+ return sb_delays[sz - 1].value;
}
-static void print_battery_firmware_image_hdr(
- struct sb_fw_header *hdr)
+static void print_battery_firmware_image_hdr(struct sb_fw_header *hdr)
{
printf("Latest Battery Firmware:\n");
- printf("\t%c%c%c%c hdr_ver:%04x major_minor:%04x\n",
- hdr->signature[0],
- hdr->signature[1],
- hdr->signature[2],
- hdr->signature[3],
- hdr->hdr_version, hdr->pkg_version_major_minor);
+ printf("\t%c%c%c%c hdr_ver:%04x major_minor:%04x\n", hdr->signature[0],
+ hdr->signature[1], hdr->signature[2], hdr->signature[3],
+ hdr->hdr_version, hdr->pkg_version_major_minor);
printf("\tmaker:0x%04x hwid:0x%04x fw_ver:0x%04x tbl_ver:0x%04x\n",
- hdr->vendor_id, hdr->battery_type, hdr->fw_version,
- hdr->data_table_version);
+ hdr->vendor_id, hdr->battery_type, hdr->fw_version,
+ hdr->data_table_version);
printf("\tbinary offset:0x%08x size:0x%08x chk_sum:0x%02x\n",
- hdr->fw_binary_offset, hdr->fw_binary_size, hdr->checksum);
+ hdr->fw_binary_offset, hdr->fw_binary_size, hdr->checksum);
}
static void print_info(struct sb_fw_update_info *info)
{
printf("\nCurrent Battery Firmware:\n");
printf("\tmaker:0x%04x hwid:0x%04x fw_ver:0x%04x tbl_ver:0x%04x\n",
- info->maker_id,
- info->hardware_id,
- info->fw_version,
- info->data_version);
+ info->maker_id, info->hardware_id, info->fw_version,
+ info->data_version);
return;
}
static void print_status(struct sb_fw_update_status *sts)
{
printf("f_maker_id:%d f_hw_id:%d f_fw_ver:%d f_permnent:%d\n",
- sts->v_fail_maker_id,
- sts->v_fail_hw_id,
- sts->v_fail_fw_version,
- sts->v_fail_permanent);
+ sts->v_fail_maker_id, sts->v_fail_hw_id, sts->v_fail_fw_version,
+ sts->v_fail_permanent);
printf("permanent failure:%d abnormal:%d fw_update:%d\n",
- sts->permanent_failure,
- sts->abnormal_condition,
- sts->fw_update_supported);
+ sts->permanent_failure, sts->abnormal_condition,
+ sts->fw_update_supported);
printf("fw_update_mode:%d fw_corrupted:%d cmd_reject:%d\n",
- sts->fw_update_mode,
- sts->fw_corrupted,
- sts->cmd_reject);
+ sts->fw_update_mode, sts->fw_corrupted, sts->cmd_reject);
printf("invliad data:%d fw_fatal_err:%d fec_err:%d busy:%d\n",
- sts->invalid_data,
- sts->fw_fatal_error,
- sts->fec_error,
- sts->busy);
+ sts->invalid_data, sts->fw_fatal_error, sts->fec_error,
+ sts->busy);
printf("\n");
return;
}
/* @return 1 (True) if img signature is valid */
-static int check_battery_firmware_image_signature(
- struct sb_fw_header *hdr)
+static int check_battery_firmware_image_signature(struct sb_fw_header *hdr)
{
- return (hdr->signature[0] == 'B') &&
- (hdr->signature[1] == 'T') &&
- (hdr->signature[2] == 'F') &&
- (hdr->signature[3] == 'W');
+ return (hdr->signature[0] == 'B') && (hdr->signature[1] == 'T') &&
+ (hdr->signature[2] == 'F') && (hdr->signature[3] == 'W');
}
/* @return 1 (True) if img checksum is valid. */
-static int check_battery_firmware_image_checksum(
- struct sb_fw_header *hdr)
+static int check_battery_firmware_image_checksum(struct sb_fw_header *hdr)
{
int i;
uint8_t sum = 0;
@@ -189,22 +168,19 @@ static int check_battery_firmware_image_checksum(
}
/* @return 1 (True) if img versions are ok to update. */
-static int check_battery_firmware_image_version(
- struct sb_fw_header *hdr,
- struct sb_fw_update_info *p)
+static int check_battery_firmware_image_version(struct sb_fw_header *hdr,
+ struct sb_fw_update_info *p)
{
/*
* If the battery firmware has a newer fw version
* or a newer data table version, then it is ok to update.
*/
- return (hdr->fw_version > p->fw_version)
- || (hdr->data_table_version > p->data_version);
+ return (hdr->fw_version > p->fw_version) ||
+ (hdr->data_table_version > p->data_version);
}
-
-static int check_battery_firmware_ids(
- struct sb_fw_header *hdr,
- struct sb_fw_update_info *p)
+static int check_battery_firmware_ids(struct sb_fw_header *hdr,
+ struct sb_fw_update_info *p)
{
return ((hdr->vendor_id == p->maker_id) &&
(hdr->battery_type == p->hardware_id));
@@ -213,33 +189,30 @@ static int check_battery_firmware_ids(
/* check_if_need_update_fw
* @return 1 (true) if need; 0 (false) if not.
*/
-static int check_if_valid_fw(
- struct sb_fw_header *hdr,
- struct sb_fw_update_info *info)
+static int check_if_valid_fw(struct sb_fw_header *hdr,
+ struct sb_fw_update_info *info)
{
- return check_battery_firmware_image_signature(hdr)
- && check_battery_firmware_ids(hdr, info)
- && check_battery_firmware_image_checksum(hdr);
+ return check_battery_firmware_image_signature(hdr) &&
+ check_battery_firmware_ids(hdr, info) &&
+ check_battery_firmware_image_checksum(hdr);
}
/* check_if_need_update_fw
* @return 1 (true) if need; 0 (false) if not.
*/
-static int check_if_need_update_fw(
- struct sb_fw_header *hdr,
- struct sb_fw_update_info *info)
+static int check_if_need_update_fw(struct sb_fw_header *hdr,
+ struct sb_fw_update_info *info)
{
return check_battery_firmware_image_version(hdr, info);
}
static void log_msg(struct fw_update_ctrl *fw_update,
- enum fw_update_state state, const char *msg)
+ enum fw_update_state state, const char *msg)
{
- sprintf(fw_update->msg,
- "Battery Firmware Updater State:%d %s", state, msg);
+ sprintf(fw_update->msg, "Battery Firmware Updater State:%d %s", state,
+ msg);
}
-
static char *read_fw_image(struct fw_update_ctrl *fw_update)
{
int size;
@@ -259,11 +232,11 @@ static char *read_fw_image(struct fw_update_ctrl *fw_update)
print_battery_firmware_image_hdr(fw_update->fw_img_hdr);
if (fw_update->fw_img_hdr->fw_binary_offset >= fw_update->size ||
- fw_update->size < 256) {
+ fw_update->size < 256) {
printf("Load Firmware Image[%s] Error offset:%d size:%d\n",
- fw_update->image_name,
- fw_update->fw_img_hdr->fw_binary_offset,
- fw_update->size);
+ fw_update->image_name,
+ fw_update->fw_img_hdr->fw_binary_offset,
+ fw_update->size);
free(buf);
return NULL;
}
@@ -284,9 +257,9 @@ static int get_status(struct sb_fw_update_status *status)
param->hdr.subcmd = EC_SB_FW_UPDATE_STATUS;
do {
usleep(SB_FW_UPDATE_DEFAULT_DELAY);
- rv = ec_command(EC_CMD_SB_FW_UPDATE, 0,
- param, sizeof(struct ec_sb_fw_update_header),
- resp, SB_FW_UPDATE_CMD_STATUS_SIZE);
+ rv = ec_command(EC_CMD_SB_FW_UPDATE, 0, param,
+ sizeof(struct ec_sb_fw_update_header), resp,
+ SB_FW_UPDATE_CMD_STATUS_SIZE);
} while ((rv < 0) && (cnt++ < SB_FW_UPDATE_DEFAULT_RETRY_CNT));
if (rv < 0) {
@@ -312,9 +285,9 @@ static int get_info(struct sb_fw_update_info *info)
param->hdr.subcmd = EC_SB_FW_UPDATE_INFO;
do {
usleep(SB_FW_UPDATE_DEFAULT_DELAY);
- rv = ec_command(EC_CMD_SB_FW_UPDATE, 0,
- param, sizeof(struct ec_sb_fw_update_header),
- resp, SB_FW_UPDATE_CMD_INFO_SIZE);
+ rv = ec_command(EC_CMD_SB_FW_UPDATE, 0, param,
+ sizeof(struct ec_sb_fw_update_header), resp,
+ SB_FW_UPDATE_CMD_INFO_SIZE);
} while ((rv < 0) && (cnt++ < SB_FW_UPDATE_DEFAULT_RETRY_CNT));
if (rv < 0) {
@@ -334,8 +307,8 @@ static int send_subcmd(int subcmd)
(struct ec_params_sb_fw_update *)ec_outbuf;
param->hdr.subcmd = subcmd;
- rv = ec_command(EC_CMD_SB_FW_UPDATE, 0,
- param, sizeof(struct ec_sb_fw_update_header), NULL, 0);
+ rv = ec_command(EC_CMD_SB_FW_UPDATE, 0, param,
+ sizeof(struct ec_sb_fw_update_header), NULL, 0);
if (rv < 0) {
printf("Firmware Update subcmd:%d Error\n", subcmd);
return -EC_RES_ERROR;
@@ -343,22 +316,21 @@ static int send_subcmd(int subcmd)
return EC_RES_SUCCESS;
}
-static int write_block(struct fw_update_ctrl *fw_update,
- int offset, int bsize)
+static int write_block(struct fw_update_ctrl *fw_update, int offset, int bsize)
{
int rv;
struct ec_params_sb_fw_update *param =
(struct ec_params_sb_fw_update *)ec_outbuf;
- memcpy(param->write.data, fw_update->ptr+offset, bsize);
+ memcpy(param->write.data, fw_update->ptr + offset, bsize);
param->hdr.subcmd = EC_SB_FW_UPDATE_WRITE;
- rv = ec_command(EC_CMD_SB_FW_UPDATE, 0,
- param, sizeof(struct ec_params_sb_fw_update), NULL, 0);
+ rv = ec_command(EC_CMD_SB_FW_UPDATE, 0, param,
+ sizeof(struct ec_params_sb_fw_update), NULL, 0);
if (rv < 0) {
printf("Firmware Update Write Error ptr:%p offset@%x\n",
- fw_update->ptr, offset);
+ fw_update->ptr, offset);
return -EC_RES_ERROR;
}
return EC_RES_SUCCESS;
@@ -373,7 +345,7 @@ static void dump_data(char *data, int offset, int size)
printf("Offset:0x%X\n", offset);
for (i = 0; i < size; i++) {
- if ((i%16) == 0)
+ if ((i % 16) == 0)
printf("\n");
printf("%02X ", data[i]);
}
@@ -397,8 +369,8 @@ static enum fw_update_state s0_read_status(struct fw_update_ctrl *fw_update)
return S10_TERMINAL;
}
- if (!((fw_update->status.abnormal_condition == 0)
- && (fw_update->status.fw_update_supported == 1))) {
+ if (!((fw_update->status.abnormal_condition == 0) &&
+ (fw_update->status.fw_update_supported == 1))) {
return S0_READ_STATUS;
}
@@ -409,8 +381,8 @@ static enum fw_update_state s0_read_status(struct fw_update_ctrl *fw_update)
return S1_READ_INFO;
}
-static enum fw_update_state s1_read_battery_info(
- struct fw_update_ctrl *fw_update)
+static enum fw_update_state
+s1_read_battery_info(struct fw_update_ctrl *fw_update)
{
int rv;
@@ -431,9 +403,8 @@ static enum fw_update_state s1_read_battery_info(
print_info(&fw_update->info);
sprintf(fw_update->image_name,
- "/lib/firmware/battery/maker.%04x.hwid.%04x.bin",
- fw_update->info.maker_id,
- fw_update->info.hardware_id);
+ "/lib/firmware/battery/maker.%04x.hwid.%04x.bin",
+ fw_update->info.maker_id, fw_update->info.hardware_id);
if (NULL == read_fw_image(fw_update)) {
fw_update->rv = 0;
@@ -520,7 +491,6 @@ static enum fw_update_state s3_read_status(struct fw_update_ctrl *fw_update)
return S10_TERMINAL;
}
return S4_WRITE_UPDATE;
-
}
static enum fw_update_state s4_write_update(struct fw_update_ctrl *fw_update)
@@ -589,7 +559,7 @@ static enum fw_update_state s6_write_block(struct fw_update_ctrl *fw_update)
* Add more delays after the last few (3) block writes.
* 3 is chosen based on current test results.
*/
- if ((offset + 3*fw_update->step_size) >= fw_update->size)
+ if ((offset + 3 * fw_update->step_size) >= fw_update->size)
usleep(DELAY_US_WRITE_END);
usleep(get_delay_value(offset, fw_update->step_size));
@@ -609,38 +579,36 @@ static enum fw_update_state s7_read_status(struct fw_update_ctrl *fw_update)
usleep(SB_FW_UPDATE_DEFAULT_DELAY);
rv = get_status(&fw_update->status);
if (rv) {
- dump_data(fw_update->ptr+offset, offset, bsize);
+ dump_data(fw_update->ptr + offset, offset, bsize);
print_status(&fw_update->status);
fw_update->rv = -1;
log_msg(fw_update, S7_READ_STATUS, "Interface Error");
return S10_TERMINAL;
}
} while (fw_update->status.busy &&
- (cnt++ < SB_FW_UPDATE_DEFAULT_RETRY_CNT));
+ (cnt++ < SB_FW_UPDATE_DEFAULT_RETRY_CNT));
if (fw_update->status.fec_error) {
- dump_data(fw_update->ptr+offset, offset, bsize);
+ dump_data(fw_update->ptr + offset, offset, bsize);
print_status(&fw_update->status);
fw_update->rv = 0;
return S6_WRITE_BLOCK;
}
if (fw_update->status.permanent_failure ||
- fw_update->status.v_fail_permanent) {
- dump_data(fw_update->ptr+offset, offset, bsize);
+ fw_update->status.v_fail_permanent) {
+ dump_data(fw_update->ptr + offset, offset, bsize);
print_status(&fw_update->status);
fw_update->rv = -1;
log_msg(fw_update, S7_READ_STATUS, "Battery Permanent Error");
return S8_WRITE_END;
}
if (fw_update->status.v_fail_maker_id ||
- fw_update->status.v_fail_hw_id ||
- fw_update->status.v_fail_fw_version ||
- fw_update->status.fw_corrupted ||
- fw_update->status.cmd_reject ||
- fw_update->status.invalid_data ||
- fw_update->status.fw_fatal_error) {
-
- dump_data(fw_update->ptr+offset, offset, bsize);
+ fw_update->status.v_fail_hw_id ||
+ fw_update->status.v_fail_fw_version ||
+ fw_update->status.fw_corrupted || fw_update->status.cmd_reject ||
+ fw_update->status.invalid_data ||
+ fw_update->status.fw_fatal_error) {
+ dump_data(fw_update->ptr + offset, offset, bsize);
print_status(&fw_update->status);
fw_update->rv = 0;
return S1_READ_INFO;
@@ -651,7 +619,6 @@ static enum fw_update_state s7_read_status(struct fw_update_ctrl *fw_update)
return S6_WRITE_BLOCK;
}
-
static enum fw_update_state s8_write_end(struct fw_update_ctrl *fw_update)
{
int rv;
@@ -686,8 +653,8 @@ static enum fw_update_state s9_read_status(struct fw_update_ctrl *fw_update)
log_msg(fw_update, S9_READ_STATUS, "Interface Error");
return S10_TERMINAL;
}
- if ((fw_update->status.fw_update_mode == 1)
- || (fw_update->status.busy == 1)) {
+ if ((fw_update->status.fw_update_mode == 1) ||
+ (fw_update->status.busy == 1)) {
usleep(SB_FW_UPDATE_DEFAULT_DELAY);
fw_update->busy_retry_cnt--;
return S9_READ_STATUS;
@@ -697,22 +664,13 @@ static enum fw_update_state s9_read_status(struct fw_update_ctrl *fw_update)
return S10_TERMINAL;
}
-
typedef enum fw_update_state (*fw_state_func)(struct fw_update_ctrl *fw_update);
-fw_state_func state_table[] = {
- s0_read_status,
- s1_read_battery_info,
- s2_write_prepare,
- s3_read_status,
- s4_write_update,
- s5_read_status,
- s6_write_block,
- s7_read_status,
- s8_write_end,
- s9_read_status
-};
-
+fw_state_func state_table[] = { s0_read_status, s1_read_battery_info,
+ s2_write_prepare, s3_read_status,
+ s4_write_update, s5_read_status,
+ s6_write_block, s7_read_status,
+ s8_write_end, s9_read_status };
/**
* Update Smart Battery Firmware
@@ -740,13 +698,13 @@ static int ec_sb_firmware_update(struct fw_update_ctrl *fw_update)
return fw_update->rv;
}
-#define GEC_LOCK_TIMEOUT_SECS 30 /* 30 secs */
+#define GEC_LOCK_TIMEOUT_SECS 30 /* 30 secs */
void usage(char *argv[])
{
printf("Usage: %s [check|update]\n"
- " check: check if AC Adaptor is connected.\n"
- " update: trigger battery firmware update.\n",
- argv[0]);
+ " check: check if AC Adaptor is connected.\n"
+ " update: trigger battery firmware update.\n",
+ argv[0]);
}
int main(int argc, char *argv[])
@@ -827,10 +785,8 @@ int main(int argc, char *argv[])
fw_update.flags |= F_VERSION_CHECK;
rv = ec_sb_firmware_update(&fw_update);
- printf("Battery Firmware Update:0x%02x %s\n%s\n",
- fw_update.flags,
- ((rv) ? "FAIL " : " "),
- fw_update.msg);
+ printf("Battery Firmware Update:0x%02x %s\n%s\n", fw_update.flags,
+ ((rv) ? "FAIL " : " "), fw_update.msg);
/* Update battery firmware update interface to be protected */
if (!(fw_update.flags & F_NEED_UPDATE))