summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--board/zinger/board.c2
-rw-r--r--board/zinger/usb_pd_policy.c8
-rw-r--r--common/rwsig.c3
-rw-r--r--common/usb_pd_policy.c1
-rw-r--r--include/ec_commands.h12
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__ */
/*****************************************************************************/