diff options
author | Vincent Palatin <vpalatin@chromium.org> | 2015-01-09 10:29:53 -0800 |
---|---|---|
committer | ChromeOS Commit Bot <chromeos-commit-bot@chromium.org> | 2015-01-30 03:28:15 +0000 |
commit | 83e4e71ad34628d49146a7cbbbeef574f6b6e365 (patch) | |
tree | 1506859efa061d6778bef0cc00a1080cd9709559 | |
parent | 1aef41d57744d75e029c5300b905ae884e8ea9df (diff) | |
download | chrome-ec-83e4e71ad34628d49146a7cbbbeef574f6b6e365.tar.gz |
pd: log important events for accessories
Record in the PD log when we fail to verify the RW signature and when
the RW partition is erased.
Also log the faults on the power supplies.
Signed-off-by: Vincent Palatin <vpalatin@chromium.org>
BRANCH=samus
BUG=chrome-os-partner:32785
TEST=flash a bad rw on Zinger.
Original-Change-Id: Ib62dcb0d407867151af0aaecc405533e894d773e
Reviewed-on: https://chromium-review.googlesource.com/239913
Reviewed-by: Alec Berg <alecaberg@chromium.org>
Commit-Queue: Vincent Palatin <vpalatin@chromium.org>
Trybot-Ready: Vincent Palatin <vpalatin@chromium.org>
Tested-by: Vincent Palatin <vpalatin@chromium.org>
(cherry picked from commit 64ada6e3d8220e51a64b30ff15878f1abff11a47)
Reviewed-on: https://chromium-review.googlesource.com/240839
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
(cherry picked from commit e5bffd3453b807556307c76bddf5ff52b3cd2208)
Signed-off-by: Todd Broch <tbroch@chromium.org>
Change-Id: Ie2322d4e9a3caa38786ff7194b7b2ce553695a6b
Reviewed-on: https://chromium-review.googlesource.com/244224
Reviewed-by: Alec Berg <alecaberg@chromium.org>
Tested-by: Todd Broch <tbroch@chromium.org>
Commit-Queue: Todd Broch <tbroch@chromium.org>
-rw-r--r-- | board/zinger/board.c | 2 | ||||
-rw-r--r-- | board/zinger/usb_pd_policy.c | 8 | ||||
-rw-r--r-- | common/rwsig.c | 3 | ||||
-rw-r--r-- | common/usb_pd_policy.c | 1 | ||||
-rw-r--r-- | include/ec_commands.h | 12 |
5 files changed, 22 insertions, 4 deletions
diff --git a/board/zinger/board.c b/board/zinger/board.c index cf703296a7..7130f68572 100644 --- a/board/zinger/board.c +++ b/board/zinger/board.c @@ -6,6 +6,7 @@ #include "common.h" #include "debug.h" +#include "ec_commands.h" #include "registers.h" #include "rsa.h" #include "sha256.h" @@ -65,6 +66,7 @@ static int check_rw_valid(void *rw_hash) good = rsa_verify(&pkey, (void *)rw_sig, rw_hash, rsa_workbuf); if (!good) { debug_printf("RSA FAILED\n"); + pd_log_event(PD_EVENT_ACC_RW_FAIL, 0, 0, NULL); return 0; } diff --git a/board/zinger/usb_pd_policy.c b/board/zinger/usb_pd_policy.c index d61023a13a..018f7477f7 100644 --- a/board/zinger/usb_pd_policy.c +++ b/board/zinger/usb_pd_policy.c @@ -7,6 +7,7 @@ #include "common.h" #include "console.h" #include "debug.h" +#include "ec_commands.h" #include "hooks.h" #include "registers.h" #include "system.h" @@ -340,6 +341,7 @@ int pd_board_checks(void) if (fault == FAULT_FAST_OCP) { debug_printf("Fast OCP\n"); + pd_log_event(PD_EVENT_PS_FAULT, 0, PS_FAULT_FAST_OCP, NULL); fault = FAULT_OCP; /* reset over-current after 1 second */ fault_deadline.val = get_time().val + OCP_TIMEOUT; @@ -357,6 +359,7 @@ int pd_board_checks(void) debug_printf("OCP %d mA\n", vbus_amp * VDDA_MV / CURR_GAIN * 1000 / R_SENSE / ADC_SCALE); + pd_log_event(PD_EVENT_PS_FAULT, 0, PS_FAULT_OCP, NULL); fault = FAULT_OCP; /* reset over-current after 1 second */ fault_deadline.val = get_time().val + OCP_TIMEOUT; @@ -383,9 +386,11 @@ int pd_board_checks(void) if ((output_is_enabled() && (vbus_volt > voltages[ovp_idx].ovp)) || (fault && (vbus_volt > voltages[ovp_idx].ovp_rec))) { - if (!fault) + if (!fault) { debug_printf("OVP %d mV\n", ADC_TO_VOLT_MV(vbus_volt)); + pd_log_event(PD_EVENT_PS_FAULT, 0, PS_FAULT_OVP, NULL); + } fault = FAULT_OVP; /* no timeout */ fault_deadline.val = get_time().val; @@ -404,6 +409,7 @@ int pd_board_checks(void) adc_enable_watchdog(ADC_CH_A_SENSE, MAX_CURRENT_FAST, 0); debug_printf("Disch FAIL %d mV\n", ADC_TO_VOLT_MV(vbus_volt)); + pd_log_event(PD_EVENT_PS_FAULT, 0, PS_FAULT_DISCH, NULL); fault = FAULT_DISCHARGE; /* reset it after 1 second */ fault_deadline.val = get_time().val + OCP_TIMEOUT; diff --git a/common/rwsig.c b/common/rwsig.c index 92b8d1838c..2065a3d215 100644 --- a/common/rwsig.c +++ b/common/rwsig.c @@ -8,10 +8,12 @@ */ #include "console.h" +#include "ec_commands.h" #include "rsa.h" #include "sha256.h" #include "shared_mem.h" #include "system.h" +#include "usb_pd.h" #include "util.h" /* Console output macros */ @@ -64,6 +66,7 @@ void check_rw_signature(void) system_run_image_copy(SYSTEM_IMAGE_RW); } else { CPRINTS("RSA verify FAILED\n"); + pd_log_event(PD_EVENT_ACC_RW_FAIL, 0, 0, NULL); /* RW firmware is invalid : do not jump there */ if (system_is_locked()) system_disable_jump(); diff --git a/common/usb_pd_policy.c b/common/usb_pd_policy.c index f555288267..519d72787d 100644 --- a/common/usb_pd_policy.c +++ b/common/usb_pd_policy.c @@ -665,6 +665,7 @@ int pd_custom_flash_vdm(int port, int cnt, uint32_t *payload) /* do not kill the code under our feet */ if (system_get_image_copy() != SYSTEM_IMAGE_RO) break; + pd_log_event(PD_EVENT_ACC_RW_ERASE, 0, 0, NULL); flash_offset = CONFIG_FW_RW_OFF; flash_physical_erase(CONFIG_FW_RW_OFF, CONFIG_FW_RW_SIZE); rw_flash_changed = 1; diff --git a/include/ec_commands.h b/include/ec_commands.h index 954a423f5d..357c1de432 100644 --- a/include/ec_commands.h +++ b/include/ec_commands.h @@ -2889,9 +2889,7 @@ struct ec_response_pd_log { #define PD_EVENT_ACC_GFU_ENTER (PD_EVENT_ACC_BASE+2) /* PD power supply events */ #define PD_EVENT_PS_BASE 0x40 -#define PD_EVENT_PS_OCP (PD_EVENT_PS_BASE+0) -#define PD_EVENT_PS_OVP (PD_EVENT_PS_BASE+1) -#define PD_EVENT_PS_TEMP (PD_EVENT_PS_BASE+2) +#define PD_EVENT_PS_FAULT (PD_EVENT_PS_BASE+0) /* PD video dongles events */ #define PD_EVENT_VIDEO_BASE 0x60 /* Returned in the "type" field, when there is no entry available */ @@ -2914,6 +2912,14 @@ struct ec_response_pd_log { /* Power delivery role */ #define CHARGE_FLAGS_ROLE_MASK (7 << 0) +/* + * PD_EVENT_PS_FAULT data field flags definition : + */ +#define PS_FAULT_OCP 1 +#define PS_FAULT_FAST_OCP 2 +#define PS_FAULT_OVP 3 +#define PS_FAULT_DISCH 4 + #endif /* !__ACPI__ */ /*****************************************************************************/ |