summaryrefslogtreecommitdiff
path: root/board/zinger
diff options
context:
space:
mode:
authorVincent Palatin <vpalatin@chromium.org>2015-01-09 10:29:53 -0800
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2015-01-15 01:07:14 +0000
commit64ada6e3d8220e51a64b30ff15878f1abff11a47 (patch)
treeb59b0dd7e696a2b0c76fa68b0baa3d3941fcad8f /board/zinger
parentbd85bc46360e43b74aa1864565c5ad49b719a804 (diff)
downloadchrome-ec-64ada6e3d8220e51a64b30ff15878f1abff11a47.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. 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>
Diffstat (limited to 'board/zinger')
-rw-r--r--board/zinger/board.c2
-rw-r--r--board/zinger/usb_pd_policy.c8
2 files changed, 9 insertions, 1 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 a228712290..70258e73a5 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;