diff options
-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__ */ /*****************************************************************************/ |