diff options
author | Tom Hughes <tomhughes@chromium.org> | 2022-09-21 14:08:36 -0700 |
---|---|---|
committer | Tom Hughes <tomhughes@chromium.org> | 2022-09-22 12:59:38 -0700 |
commit | c453fd704268ef72de871b0c5ac7a989de662334 (patch) | |
tree | fcf6ce5810f9ff9e3c8cce434812dd75492269ed /common/usbc/usb_tc_drp_acc_trysrc_sm.c | |
parent | 6c1587ca70f558b4f96b3f0b18ad8b027d3ba99d (diff) | |
parent | 28712dae9d7ed1e694f7622cc083afa71090d4d5 (diff) | |
download | chrome-ec-firmware-fpmcu-dartmonkey-release.tar.gz |
Merge remote-tracking branch cros/main into firmware-fpmcu-dartmonkey-releasefirmware-fpmcu-dartmonkey-release
Generated by: ./util/update_release_branch.py --board dartmonkey --relevant_paths_file
./util/fingerprint-relevant-paths.txt firmware-fpmcu-dartmonkey-release
Relevant changes:
git log --oneline 6c1587ca70..28712dae9d -- board/nocturne_fp
board/dartmonkey 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
a0751778f4 board/nocturne_fp/ro_workarounds.c: 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
58f0246dbe board/nocturne_fp/board_ro.c: 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
84e53a65da board/nocturne_fp/board.h: 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
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:244387210 b:242720240 b:215613183 b:242720910 b:236386294
BUG=b:234181908 b:244781166 b:234781655 b:234143158 b:234181908
BUG=b:237344361 b:236025198 b:234181908 b:180945056 chromium:1098010
BUG=b:246424843 b:234181908 b:131913998
TEST=`make -j buildall`
TEST=./util/run_device_tests.py --board dartmonkey
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 "panic_data_dartmonkey_v2.0.2887": PASSED
Test "panic_data_nocturne_fp_v2.2.64": PASSED
Test "panic_data_nami_fp_v2.2.144": PASSED
Force-Relevant-Builds: all
Signed-off-by: Tom Hughes <tomhughes@chromium.org>
Change-Id: I2c312583a709fedae8fe11d92c22328c3b634bc7
Diffstat (limited to 'common/usbc/usb_tc_drp_acc_trysrc_sm.c')
-rw-r--r-- | common/usbc/usb_tc_drp_acc_trysrc_sm.c | 398 |
1 files changed, 200 insertions, 198 deletions
diff --git a/common/usbc/usb_tc_drp_acc_trysrc_sm.c b/common/usbc/usb_tc_drp_acc_trysrc_sm.c index 2da6b59f0a..e68b0139db 100644 --- a/common/usbc/usb_tc_drp_acc_trysrc_sm.c +++ b/common/usbc/usb_tc_drp_acc_trysrc_sm.c @@ -1,8 +1,9 @@ -/* Copyright 2019 The Chromium OS Authors. All rights reserved. +/* Copyright 2019 The ChromiumOS Authors * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ +#include "builtin/assert.h" #include "charge_manager.h" #include "charge_state.h" #include "common.h" @@ -32,30 +33,30 @@ * See Figure 4-16 in Release 1.4 of USB Type-C Spec. */ #ifdef CONFIG_COMMON_RUNTIME -#define CPRINTF(format, args...) cprintf(CC_USBPD, format, ## args) -#define CPRINTS(format, args...) cprints(CC_USBPD, format, ## args) +#define CPRINTF(format, args...) cprintf(CC_USBPD, format, ##args) +#define CPRINTS(format, args...) cprints(CC_USBPD, format, ##args) #else /* CONFIG_COMMON_RUNTIME */ #define CPRINTF(format, args...) #define CPRINTS(format, args...) #endif -#define CPRINTF_LX(x, format, args...) \ - do { \ - if (tc_debug_level >= x) \ - CPRINTF(format, ## args); \ +#define CPRINTF_LX(x, format, args...) \ + do { \ + if (tc_debug_level >= x) \ + CPRINTF(format, ##args); \ } while (0) -#define CPRINTF_L1(format, args...) CPRINTF_LX(1, format, ## args) -#define CPRINTF_L2(format, args...) CPRINTF_LX(2, format, ## args) -#define CPRINTF_L3(format, args...) CPRINTF_LX(3, format, ## args) - -#define CPRINTS_LX(x, format, args...) \ - do { \ - if (tc_debug_level >= x) \ - CPRINTS(format, ## args); \ +#define CPRINTF_L1(format, args...) CPRINTF_LX(1, format, ##args) +#define CPRINTF_L2(format, args...) CPRINTF_LX(2, format, ##args) +#define CPRINTF_L3(format, args...) CPRINTF_LX(3, format, ##args) + +#define CPRINTS_LX(x, format, args...) \ + do { \ + if (tc_debug_level >= x) \ + CPRINTS(format, ##args); \ } while (0) -#define CPRINTS_L1(format, args...) CPRINTS_LX(1, format, ## args) -#define CPRINTS_L2(format, args...) CPRINTS_LX(2, format, ## args) -#define CPRINTS_L3(format, args...) CPRINTS_LX(3, format, ## args) +#define CPRINTS_L1(format, args...) CPRINTS_LX(1, format, ##args) +#define CPRINTS_L2(format, args...) CPRINTS_LX(2, format, ##args) +#define CPRINTS_L3(format, args...) CPRINTS_LX(3, format, ##args) /* * Define DEBUG_PRINT_FLAG_AND_EVENT_NAMES to print flag names when set and @@ -83,57 +84,58 @@ void print_flag(int port, int set_or_clear, int flag); /* Type-C Layer Flags */ /* Flag to note we are sourcing VCONN */ -#define TC_FLAGS_VCONN_ON BIT(0) +#define TC_FLAGS_VCONN_ON BIT(0) /* Flag to note port partner has Rp/Rp or Rd/Rd */ -#define TC_FLAGS_TS_DTS_PARTNER BIT(1) +#define TC_FLAGS_TS_DTS_PARTNER BIT(1) /* Flag to note VBus input has never been low */ -#define TC_FLAGS_VBUS_NEVER_LOW BIT(2) +#define TC_FLAGS_VBUS_NEVER_LOW BIT(2) /* Flag to note Low Power Mode transition is currently happening */ -#define TC_FLAGS_LPM_TRANSITION BIT(3) +#define TC_FLAGS_LPM_TRANSITION BIT(3) /* Flag to note Low Power Mode is currently on */ -#define TC_FLAGS_LPM_ENGAGED BIT(4) +#define TC_FLAGS_LPM_ENGAGED BIT(4) /* Flag to note CVTPD has been detected */ -#define TC_FLAGS_CTVPD_DETECTED BIT(5) +#define TC_FLAGS_CTVPD_DETECTED BIT(5) /* Flag to note request to swap to VCONN on */ -#define TC_FLAGS_REQUEST_VC_SWAP_ON BIT(6) +#define TC_FLAGS_REQUEST_VC_SWAP_ON BIT(6) /* Flag to note request to swap to VCONN off */ -#define TC_FLAGS_REQUEST_VC_SWAP_OFF BIT(7) +#define TC_FLAGS_REQUEST_VC_SWAP_OFF BIT(7) /* Flag to note request to swap VCONN is being rejected */ -#define TC_FLAGS_REJECT_VCONN_SWAP BIT(8) +#define TC_FLAGS_REJECT_VCONN_SWAP BIT(8) /* Flag to note request to power role swap */ -#define TC_FLAGS_REQUEST_PR_SWAP BIT(9) +#define TC_FLAGS_REQUEST_PR_SWAP BIT(9) /* Flag to note request to data role swap */ -#define TC_FLAGS_REQUEST_DR_SWAP BIT(10) +#define TC_FLAGS_REQUEST_DR_SWAP BIT(10) /* Flag to note request to power off sink */ -#define TC_FLAGS_POWER_OFF_SNK BIT(11) +#define TC_FLAGS_POWER_OFF_SNK BIT(11) /* Flag to note port partner is Power Delivery capable */ -#define TC_FLAGS_PARTNER_PD_CAPABLE BIT(12) +#define TC_FLAGS_PARTNER_PD_CAPABLE BIT(12) /* Flag to note hard reset has been requested */ -#define TC_FLAGS_HARD_RESET_REQUESTED BIT(13) +#define TC_FLAGS_HARD_RESET_REQUESTED BIT(13) /* Flag to note we are currently performing PR Swap */ -#define TC_FLAGS_PR_SWAP_IN_PROGRESS BIT(14) +#define TC_FLAGS_PR_SWAP_IN_PROGRESS BIT(14) /* Flag to note we should check for connection */ -#define TC_FLAGS_CHECK_CONNECTION BIT(15) +#define TC_FLAGS_CHECK_CONNECTION BIT(15) /* Flag to note request from pd_set_suspend to enter TC_DISABLED state */ -#define TC_FLAGS_REQUEST_SUSPEND BIT(16) +#define TC_FLAGS_REQUEST_SUSPEND BIT(16) /* Flag to note we are in TC_DISABLED state */ -#define TC_FLAGS_SUSPENDED BIT(17) +#define TC_FLAGS_SUSPENDED BIT(17) /* Flag to indicate the port current limit has changed */ -#define TC_FLAGS_UPDATE_CURRENT BIT(18) +#define TC_FLAGS_UPDATE_CURRENT BIT(18) /* Flag to indicate USB mux should be updated */ -#define TC_FLAGS_UPDATE_USB_MUX BIT(19) +#define TC_FLAGS_UPDATE_USB_MUX BIT(19) /* Flag for retimer firmware update */ -#define TC_FLAGS_USB_RETIMER_FW_UPDATE_RUN BIT(20) +#define TC_FLAGS_USB_RETIMER_FW_UPDATE_RUN BIT(20) #define TC_FLAGS_USB_RETIMER_FW_UPDATE_LTD_RUN BIT(21) /* Flag for asynchronous call to request Error Recovery */ -#define TC_FLAGS_REQUEST_ERROR_RECOVERY BIT(22) +#define TC_FLAGS_REQUEST_ERROR_RECOVERY BIT(22) /* For checking flag_bit_names[] array */ -#define TC_FLAGS_COUNT 23 +#define TC_FLAGS_COUNT 23 /* On disconnect, clear most of the flags. */ -#define CLR_FLAGS_ON_DISCONNECT(port) TC_CLR_FLAG(port, \ - ~(TC_FLAGS_LPM_ENGAGED | TC_FLAGS_REQUEST_SUSPEND | TC_FLAGS_SUSPENDED)) +#define CLR_FLAGS_ON_DISCONNECT(port) \ + TC_CLR_FLAG(port, ~(TC_FLAGS_LPM_ENGAGED | TC_FLAGS_REQUEST_SUSPEND | \ + TC_FLAGS_SUSPENDED)) /* * 10 ms is enough time for any TCPC transaction to complete @@ -166,14 +168,14 @@ void print_flag(int port, int set_or_clear, int flag); * The TypeC state machine uses this bit to disable/enable PD * This bit corresponds to bit-0 of pd_disabled_mask */ -#define PD_DISABLED_NO_CONNECTION BIT(0) +#define PD_DISABLED_NO_CONNECTION BIT(0) /* * Console and Host commands use this bit to override the * PD_DISABLED_NO_CONNECTION bit that was set by the TypeC * state machine. * This bit corresponds to bit-1 of pd_disabled_mask */ -#define PD_DISABLED_BY_POLICY BIT(1) +#define PD_DISABLED_BY_POLICY BIT(1) /* Unreachable time in future */ #define TIMER_DISABLED 0xffffffffffffffff @@ -250,9 +252,8 @@ extern int _GPIO_CCD_MODE_ODL; * If we can't print or the CONFIG_USB_PD_DEBUG_LEVEL is defined to be 0 * then the DEBUG LABELS will be removed from the build. */ -#if defined(CONFIG_COMMON_RUNTIME) && \ - (!defined(CONFIG_USB_PD_DEBUG_LEVEL) || \ - (CONFIG_USB_PD_DEBUG_LEVEL > 0)) +#if defined(CONFIG_COMMON_RUNTIME) && (!defined(CONFIG_USB_PD_DEBUG_LEVEL) || \ + (CONFIG_USB_PD_DEBUG_LEVEL > 0)) #define USB_PD_DEBUG_LABELS #endif @@ -268,9 +269,8 @@ extern int _GPIO_CCD_MODE_ODL; */ #define IS_ATTACHED_SNK(port) (get_state_tc(port) == TC_ATTACHED_SNK) - /* List of human readable state names for console debugging */ -__maybe_unused static __const_data const char * const tc_state_names[] = { +__maybe_unused static __const_data const char *const tc_state_names[] = { #ifdef USB_PD_DEBUG_LABELS [TC_DISABLED] = "Disabled", [TC_ERROR_RECOVERY] = "ErrorRecovery", @@ -289,7 +289,7 @@ __maybe_unused static __const_data const char * const tc_state_names[] = { [TC_LOW_POWER_MODE] = "LowPowerMode", #endif #ifdef CONFIG_USB_PE_SM - [TC_CT_UNATTACHED_SNK] = "CTUnattached.SNK", + [TC_CT_UNATTACHED_SNK] = "CTUnattached.SNK", [TC_CT_ATTACHED_SNK] = "CTAttached.SNK", #endif /* Super States */ @@ -304,14 +304,16 @@ __maybe_unused static __const_data const char * const tc_state_names[] = { /* Debug log level - higher number == more log */ #ifdef CONFIG_USB_PD_DEBUG_LEVEL static const enum debug_level tc_debug_level = CONFIG_USB_PD_DEBUG_LEVEL; +#elif defined(CONFIG_USB_PD_INITIAL_DEBUG_LEVEL) +static enum debug_level tc_debug_level = CONFIG_USB_PD_INITIAL_DEBUG_LEVEL; #else static enum debug_level tc_debug_level = DEBUG_LEVEL_1; #endif #ifdef DEBUG_PRINT_FLAG_AND_EVENT_NAMES struct bit_name { - int value; - const char *name; + int value; + const char *name; }; static struct bit_name flag_bit_names[] = { @@ -335,11 +337,10 @@ static struct bit_name flag_bit_names[] = { { TC_FLAGS_SUSPENDED, "SUSPENDED" }, { TC_FLAGS_UPDATE_CURRENT, "UPDATE_CURRENT" }, { TC_FLAGS_UPDATE_USB_MUX, "UPDATE_USB_MUX" }, - { TC_FLAGS_USB_RETIMER_FW_UPDATE_RUN, - "USB_RETIMER_FW_UPDATE_RUN" }, + { TC_FLAGS_USB_RETIMER_FW_UPDATE_RUN, "USB_RETIMER_FW_UPDATE_RUN" }, { TC_FLAGS_USB_RETIMER_FW_UPDATE_LTD_RUN, - "USB_RETIMER_FW_UPDATE_LTD_RUN" }, - { TC_FLAGS_REQUEST_ERROR_RECOVERY, "REQUEST_ERROR_RECOCVERY"}, + "USB_RETIMER_FW_UPDATE_LTD_RUN" }, + { TC_FLAGS_REQUEST_ERROR_RECOVERY, "REQUEST_ERROR_RECOCVERY" }, }; BUILD_ASSERT(ARRAY_SIZE(flag_bit_names) == TC_FLAGS_COUNT); @@ -394,8 +395,8 @@ void print_flag(int port, int set_or_clear, int flag) #ifndef CONFIG_USB_PD_TRY_SRC extern int TC_TRY_SRC_UNDEFINED; extern int TC_TRY_WAIT_SNK_UNDEFINED; -#define TC_TRY_SRC TC_TRY_SRC_UNDEFINED -#define TC_TRY_WAIT_SNK TC_TRY_WAIT_SNK_UNDEFINED +#define TC_TRY_SRC TC_TRY_SRC_UNDEFINED +#define TC_TRY_WAIT_SNK TC_TRY_WAIT_SNK_UNDEFINED #endif static struct type_c { @@ -444,10 +445,11 @@ static struct type_c { } tc[CONFIG_USB_PD_PORT_MAX_COUNT]; /* Port dual-role state */ -static volatile __maybe_unused -enum pd_dual_role_states drp_state[CONFIG_USB_PD_PORT_MAX_COUNT] = { - [0 ... (CONFIG_USB_PD_PORT_MAX_COUNT - 1)] = - CONFIG_USB_PD_INITIAL_DRP_STATE}; +static volatile __maybe_unused enum pd_dual_role_states + drp_state[CONFIG_USB_PD_PORT_MAX_COUNT] = { + [0 ...(CONFIG_USB_PD_PORT_MAX_COUNT - 1)] = + CONFIG_USB_PD_INITIAL_DRP_STATE + }; static void set_vconn(int port, int enable); @@ -516,7 +518,7 @@ __overridable void pd_set_vbus_discharge(int port, int enable) /* * These pd_ functions are implemented in the PE layer */ -const uint32_t * const pd_get_src_caps(int port) +const uint32_t *const pd_get_src_caps(int port) { return NULL; } @@ -526,7 +528,7 @@ uint8_t pd_get_src_cap_cnt(int port) return 0; } -const uint32_t * const pd_get_snk_caps(int port) +const uint32_t *const pd_get_snk_caps(int port) { return NULL; } @@ -718,7 +720,7 @@ __maybe_unused static void tc_enable_try_src(int en) static void tc_set_modes_exit(int port) { if (IS_ENABLED(CONFIG_USB_PE_SM) && - IS_ENABLED(CONFIG_USB_PD_ALT_MODE_DFP)) { + IS_ENABLED(CONFIG_USB_PD_ALT_MODE_DFP)) { pd_dfp_exit_mode(port, TCPCI_MSG_SOP, 0, 0); pd_dfp_exit_mode(port, TCPCI_MSG_SOP_PRIME, 0, 0); pd_dfp_exit_mode(port, TCPCI_MSG_SOP_PRIME_PRIME, 0, 0); @@ -738,12 +740,13 @@ static void tc_detached(int port) /* Clear any mux connection on detach */ if (IS_ENABLED(CONFIG_USBC_SS_MUX)) - usb_mux_set(port, USB_PD_MUX_NONE, - USB_SWITCH_DISCONNECT, tc[port].polarity); + usb_mux_set(port, USB_PD_MUX_NONE, USB_SWITCH_DISCONNECT, + tc[port].polarity); } static inline void pd_set_dual_role_and_event(int port, - enum pd_dual_role_states state, uint32_t event) + enum pd_dual_role_states state, + uint32_t event) { drp_state[port] = state; @@ -1072,8 +1075,8 @@ static void tc_set_partner_role(int port, enum ppc_device_role role, * to run. So build in 1ms delays, for up to 300ms, to wait for * the suspend to actually happen. */ -#define SUSPEND_SLEEP_DELAY 1 -#define SUSPEND_SLEEP_RETRIES 300 +#define SUSPEND_SLEEP_DELAY 1 +#define SUSPEND_SLEEP_RETRIES 300 void pd_set_suspend(int port, int suspend) { @@ -1098,8 +1101,8 @@ void pd_set_suspend(int port, int suspend) /* Sleep this task if we are not suspended */ while (pd_is_port_enabled(port)) { if (++wait > SUSPEND_SLEEP_RETRIES) { - CPRINTS("C%d: NOT SUSPENDED after %dms", - port, wait * SUSPEND_SLEEP_DELAY); + CPRINTS("C%d: NOT SUSPENDED after %dms", port, + wait * SUSPEND_SLEEP_DELAY); return; } msleep(SUSPEND_SLEEP_DELAY); @@ -1177,8 +1180,8 @@ int pd_is_connected(int port) { return (IS_ATTACHED_SRC(port) || (IS_ENABLED(CONFIG_USB_PE_SM) && - ((get_state_tc(port) == TC_CT_UNATTACHED_SNK) || - (get_state_tc(port) == TC_CT_ATTACHED_SNK))) || + ((get_state_tc(port) == TC_CT_UNATTACHED_SNK) || + (get_state_tc(port) == TC_CT_ATTACHED_SNK))) || IS_ATTACHED_SNK(port)); } @@ -1235,7 +1238,7 @@ bool pd_get_partner_unconstr_power(int port) } static void bc12_role_change_handler(int port, enum pd_data_role prev_data_role, - enum pd_data_role data_role) + enum pd_data_role data_role) { int event = 0; bool role_changed = (data_role != prev_data_role); @@ -1290,8 +1293,7 @@ void typec_select_src_collision_rp(int port, enum tcpc_rp_value rp) static enum tcpc_rp_value typec_get_active_select_rp(int port) { /* Explicit contract will use the collision Rp */ - if (IS_ENABLED(CONFIG_USB_PD_REV30) && - pe_is_explicit_contract(port)) + if (IS_ENABLED(CONFIG_USB_PD_REV30) && pe_is_explicit_contract(port)) return tc[port].select_collision_rp; return tc[port].select_current_limit_rp; } @@ -1412,7 +1414,7 @@ static bool tc_perform_snk_hard_reset(int port) tc[port].ps_reset_state = PS_STATE2; pd_timer_enable(port, TC_TIMER_TIMEOUT, PD_T_SRC_RECOVER_MAX + - PD_T_SRC_TURN_ON); + PD_T_SRC_TURN_ON); } if (pd_timer_is_expired(port, TC_TIMER_TIMEOUT)) { @@ -1423,7 +1425,7 @@ static bool tc_perform_snk_hard_reset(int port) tc[port].ps_reset_state = PS_STATE2; pd_timer_enable(port, TC_TIMER_TIMEOUT, PD_T_SRC_RECOVER_MAX + - PD_T_SRC_TURN_ON); + PD_T_SRC_TURN_ON); } return false; case PS_STATE2: @@ -1497,8 +1499,8 @@ static void restart_tc_sm(int port, enum usb_tc_state start_state) * Update the Rp Value. We don't need to update CC lines though as that * happens in below set_state transition. */ - typec_select_src_current_limit_rp(port, - typec_get_default_current_limit_rp(port)); + typec_select_src_current_limit_rp( + port, typec_get_default_current_limit_rp(port)); /* Disable if restart failed, otherwise start in default state. */ set_state_tc(port, res ? TC_DISABLED : start_state); @@ -1567,7 +1569,6 @@ void tc_state_init(int port) return; } - /* Allow system to set try src enable */ if (IS_ENABLED(CONFIG_USB_PD_TRY_SRC)) tc_try_src_override(TRY_SRC_NO_OVERRIDE); @@ -1582,11 +1583,13 @@ void tc_state_init(int port) if (chipset_in_state(CHIPSET_STATE_ANY_OFF)) pd_set_dual_role_and_event(port, PD_DRP_FORCE_SINK, 0); else if (chipset_in_state(CHIPSET_STATE_ANY_SUSPEND)) - pd_set_dual_role_and_event(port, pd_get_drp_state_in_suspend(), 0); + pd_set_dual_role_and_event(port, pd_get_drp_state_in_suspend(), + 0); else /* CHIPSET_STATE_ON */ pd_set_dual_role_and_event(port, pd_get_drp_state_in_s0(), 0); #else - pd_set_dual_role_and_event(port, board_tc_get_initial_drp_mode(port), 0); + pd_set_dual_role_and_event(port, board_tc_get_initial_drp_mode(port), + 0); #endif /* @@ -1771,8 +1774,7 @@ void tc_event_check(int port, int evt) * Notify all ports of sysjump */ if (evt & PD_EVENT_SYSJUMP) { - for (i = 0; i < - CONFIG_USB_PD_PORT_MAX_COUNT; i++) + for (i = 0; i < CONFIG_USB_PD_PORT_MAX_COUNT; i++) dpm_set_mode_exit_request(i); notify_sysjump_ready(); } @@ -1834,8 +1836,8 @@ static void sink_stop_drawing_current(int port) if (IS_ENABLED(CONFIG_CHARGE_MANAGER)) { typec_set_input_current_limit(port, 0, 0); - charge_manager_set_ceil(port, - CEIL_REQUESTOR_PD, CHARGE_CEIL_NONE); + charge_manager_set_ceil(port, CEIL_REQUESTOR_PD, + CHARGE_CEIL_NONE); } } @@ -1861,9 +1863,9 @@ static void set_vconn(int port, int enable) static void pd_update_dual_role_config(int port) { if (tc[port].power_role == PD_ROLE_SOURCE && - (drp_state[port] == PD_DRP_FORCE_SINK || - (drp_state[port] == PD_DRP_TOGGLE_OFF && - get_state_tc(port) == TC_UNATTACHED_SRC))) { + (drp_state[port] == PD_DRP_FORCE_SINK || + (drp_state[port] == PD_DRP_TOGGLE_OFF && + get_state_tc(port) == TC_UNATTACHED_SRC))) { /* * Change to sink if port is currently a source AND (new DRP * state is force sink OR new DRP state is toggle off and we are @@ -1871,7 +1873,7 @@ static void pd_update_dual_role_config(int port) */ set_state_tc(port, TC_UNATTACHED_SNK); } else if (tc[port].power_role == PD_ROLE_SINK && - drp_state[port] == PD_DRP_FORCE_SOURCE) { + drp_state[port] == PD_DRP_FORCE_SOURCE) { /* * Change to source if port is currently a sink and the * new DRP state is force source. @@ -1885,10 +1887,9 @@ __maybe_unused static void handle_new_power_state(int port) if (!IS_ENABLED(CONFIG_POWER_COMMON)) assert(0); - if (IS_ENABLED(CONFIG_POWER_COMMON) && - IS_ENABLED(CONFIG_USB_PE_SM)) { + if (IS_ENABLED(CONFIG_POWER_COMMON) && IS_ENABLED(CONFIG_USB_PE_SM)) { if (chipset_in_or_transitioning_to_state( - CHIPSET_STATE_ANY_OFF)) { + CHIPSET_STATE_ANY_OFF)) { /* * The SoC will negotiate alternate mode again when it * boots up @@ -1905,8 +1906,7 @@ __maybe_unused static void handle_new_power_state(int port) */ if (IS_ENABLED(CONFIG_USB_PE_SM)) { if (tc_is_vconn_src(port) && tc_is_attached_snk(port) && - !pd_check_vconn_swap(port) && - pd_is_battery_capable()) + !pd_check_vconn_swap(port) && pd_is_battery_capable()) pd_dpm_request(port, DPM_REQUEST_HARD_RESET_SEND); } @@ -1928,7 +1928,7 @@ __maybe_unused static void handle_new_power_state(int port) void pd_request_vconn_swap_off(int port) { if (get_state_tc(port) == TC_ATTACHED_SRC || - get_state_tc(port) == TC_ATTACHED_SNK) { + get_state_tc(port) == TC_ATTACHED_SNK) { TC_SET_FLAG(port, TC_FLAGS_REQUEST_VC_SWAP_OFF); task_wake(PD_PORT_TO_TASK_ID(port)); } @@ -1937,7 +1937,7 @@ void pd_request_vconn_swap_off(int port) void pd_request_vconn_swap_on(int port) { if (get_state_tc(port) == TC_ATTACHED_SRC || - get_state_tc(port) == TC_ATTACHED_SNK) { + get_state_tc(port) == TC_ATTACHED_SNK) { TC_SET_FLAG(port, TC_FLAGS_REQUEST_VC_SWAP_ON); task_wake(PD_PORT_TO_TASK_ID(port)); } @@ -2090,14 +2090,13 @@ static void sink_power_sub_states(int port) tc[port].typec_curr = usb_get_typec_current_limit( tc[port].polarity, cc1, cc2); - typec_set_input_current_limit(port, - tc[port].typec_curr, TYPE_C_VOLTAGE); + typec_set_input_current_limit(port, tc[port].typec_curr, + TYPE_C_VOLTAGE); charge_manager_update_dualrole(port, CAP_DEDICATED); } } } - /* * TYPE-C State Implementations */ @@ -2117,6 +2116,7 @@ static void tc_disabled_entry(const int port) * to indicate to pd_is_port_enabled that we are now suspended. */ TC_SET_FLAG(port, TC_FLAGS_SUSPENDED); + tcpm_release(port); } static void tc_disabled_run(const int port) @@ -2124,13 +2124,16 @@ static void tc_disabled_run(const int port) /* If pd_set_suspend clears the request, go to TC_UNATTACHED_SNK/SRC. */ if (!TC_CHK_FLAG(port, TC_FLAGS_REQUEST_SUSPEND)) { set_state_tc(port, drp_state[port] == PD_DRP_FORCE_SOURCE ? - TC_UNATTACHED_SRC : TC_UNATTACHED_SNK); + TC_UNATTACHED_SRC : + TC_UNATTACHED_SNK); } else { if (IS_ENABLED(CONFIG_USBC_RETIMER_FW_UPDATE)) { - if (TC_CHK_FLAG(port, - TC_FLAGS_USB_RETIMER_FW_UPDATE_LTD_RUN)) { - TC_CLR_FLAG(port, - TC_FLAGS_USB_RETIMER_FW_UPDATE_LTD_RUN); + if (TC_CHK_FLAG( + port, + TC_FLAGS_USB_RETIMER_FW_UPDATE_LTD_RUN)) { + TC_CLR_FLAG( + port, + TC_FLAGS_USB_RETIMER_FW_UPDATE_LTD_RUN); usb_retimer_fw_update_process_op_cb(port); } } @@ -2179,7 +2182,8 @@ static void tc_error_recovery_run(const int port) */ if (tc[port].ctx.previous == NULL) { set_state_tc(port, drp_state[port] == PD_DRP_FORCE_SOURCE ? - TC_UNATTACHED_SRC : TC_UNATTACHED_SNK); + TC_UNATTACHED_SRC : + TC_UNATTACHED_SNK); return; } @@ -2230,11 +2234,10 @@ static void tc_unattached_snk_entry(const int port) */ tcpm_debug_detach(port); typec_select_pull(port, TYPEC_CC_RD); - typec_select_src_current_limit_rp(port, - typec_get_default_current_limit_rp(port)); + typec_select_src_current_limit_rp( + port, typec_get_default_current_limit_rp(port)); typec_update_cc(port); - prev_data_role = tc[port].data_role; tc[port].data_role = PD_ROLE_DISCONNECTED; /* @@ -2256,10 +2259,11 @@ static void tc_unattached_snk_entry(const int port) pd_execute_data_swap(port, PD_ROLE_DISCONNECTED); pd_timer_enable(port, TC_TIMER_NEXT_ROLE_SWAP, PD_T_DRP_SNK); - if (IS_ENABLED(CONFIG_USB_PE_SM)) { - CLR_FLAGS_ON_DISCONNECT(port); - tc_enable_pd(port, 0); - } +#ifdef CONFIG_USB_PE_SM + CLR_FLAGS_ON_DISCONNECT(port); + tc_enable_pd(port, 0); + tc[port].ps_reset_state = PS_STATE0; +#endif } static void tc_unattached_snk_run(const int port) @@ -2383,9 +2387,9 @@ static void tc_attach_wait_snk_run(const int port) if (new_cc_state == PD_CC_NONE && pd_timer_is_expired(port, TC_TIMER_PD_DEBOUNCE)) { /* We are detached */ - if (drp_state[port] == PD_DRP_TOGGLE_OFF - || drp_state[port] == PD_DRP_FREEZE - || drp_state[port] == PD_DRP_FORCE_SINK) + if (drp_state[port] == PD_DRP_TOGGLE_OFF || + drp_state[port] == PD_DRP_FREEZE || + drp_state[port] == PD_DRP_FORCE_SINK) set_state_tc(port, TC_UNATTACHED_SNK); else set_state_tc(port, TC_UNATTACHED_SRC); @@ -2425,9 +2429,9 @@ static void tc_attach_wait_snk_run(const int port) } if (IS_ENABLED(CONFIG_USB_PE_SM) && - IS_ENABLED(CONFIG_USB_PD_ALT_MODE_DFP)) { + IS_ENABLED(CONFIG_USB_PD_ALT_MODE_DFP)) { hook_call_deferred(&pd_usb_billboard_deferred_data, - PD_T_AME); + PD_T_AME); } } } @@ -2471,7 +2475,7 @@ static void tc_attached_snk_entry(const int port) /* Change role to sink */ tc_set_power_role(port, PD_ROLE_SINK); tcpm_set_msg_header(port, tc[port].power_role, - tc[port].data_role); + tc[port].data_role); /* * Maintain VCONN supply state, whether ON or OFF, and its @@ -2490,11 +2494,10 @@ static void tc_attached_snk_entry(const int port) hook_notify(HOOK_USB_PD_CONNECT); if (IS_ENABLED(CONFIG_CHARGE_MANAGER)) { - tc[port].typec_curr = - usb_get_typec_current_limit(tc[port].polarity, - cc1, cc2); - typec_set_input_current_limit(port, - tc[port].typec_curr, TYPE_C_VOLTAGE); + tc[port].typec_curr = usb_get_typec_current_limit( + tc[port].polarity, cc1, cc2); + typec_set_input_current_limit(port, tc[port].typec_curr, + TYPE_C_VOLTAGE); /* * Start new connections as dedicated until source caps * are received, at which point the PE will update the @@ -2550,8 +2553,8 @@ static bool tc_snk_check_vbus_removed(const int port) TC_TIMER_VBUS_DEBOUNCE)) { pd_timer_enable(port, TC_TIMER_VBUS_DEBOUNCE, PD_T_FRS_VBUS_DEBOUNCE); - } else if (pd_timer_is_expired(port, - TC_TIMER_VBUS_DEBOUNCE)) { + } else if (pd_timer_is_expired( + port, TC_TIMER_VBUS_DEBOUNCE)) { set_state_tc(port, TC_UNATTACHED_SNK); return true; } @@ -2658,8 +2661,9 @@ static void tc_attached_snk_run(const int port) /* Perform Data Role Swap */ tc_set_data_role(port, - tc[port].data_role == PD_ROLE_UFP ? - PD_ROLE_DFP : PD_ROLE_UFP); + tc[port].data_role == PD_ROLE_UFP ? + PD_ROLE_DFP : + PD_ROLE_UFP); } /* @@ -2787,8 +2791,8 @@ static void tc_unattached_src_entry(const int port) */ tcpm_debug_detach(port); typec_select_pull(port, TYPEC_CC_RP); - typec_select_src_current_limit_rp(port, - typec_get_default_current_limit_rp(port)); + typec_select_src_current_limit_rp( + port, typec_get_default_current_limit_rp(port)); typec_update_cc(port); prev_data_role = tc[port].data_role; @@ -2806,10 +2810,11 @@ static void tc_unattached_src_entry(const int port) if (IS_ENABLED(CONFIG_CHARGE_MANAGER)) charge_manager_update_dualrole(port, CAP_UNKNOWN); - if (IS_ENABLED(CONFIG_USB_PE_SM)) { - CLR_FLAGS_ON_DISCONNECT(port); - tc_enable_pd(port, 0); - } +#ifdef CONFIG_USB_PE_SM + CLR_FLAGS_ON_DISCONNECT(port); + tc_enable_pd(port, 0); + tc[port].ps_reset_state = PS_STATE0; +#endif pd_timer_enable(port, TC_TIMER_NEXT_ROLE_SWAP, PD_T_DRP_SRC); } @@ -2983,9 +2988,8 @@ static void tc_attached_src_entry(const int port) if (TC_CHK_FLAG(port, TC_FLAGS_PR_SWAP_IN_PROGRESS)) { /* Change role to source */ tc_set_power_role(port, PD_ROLE_SOURCE); - tcpm_set_msg_header(port, - tc[port].power_role, - tc[port].data_role); + tcpm_set_msg_header(port, tc[port].power_role, + tc[port].data_role); /* Enable VBUS */ tc_src_power_on(port); @@ -3040,10 +3044,9 @@ static void tc_attached_src_entry(const int port) set_vconn(port, 0); if (IS_ENABLED(CONFIG_USBC_SS_MUX)) - usb_mux_set(port, - USB_PD_MUX_NONE, - USB_SWITCH_DISCONNECT, - tc[port].polarity); + usb_mux_set(port, USB_PD_MUX_NONE, + USB_SWITCH_DISCONNECT, + tc[port].polarity); } tc_enable_pd(port, 0); @@ -3093,7 +3096,8 @@ static void tc_attached_src_entry(const int port) if (IS_ENABLED(CONFIG_USBC_SS_MUX)) usb_mux_set(port, USB_PD_MUX_NONE, - USB_SWITCH_DISCONNECT, tc[port].polarity); + USB_SWITCH_DISCONNECT, + tc[port].polarity); } } @@ -3161,13 +3165,13 @@ static void tc_attached_src_run(const int port) if (IS_ENABLED(CONFIG_USB_PD_TRY_SRC)) tryWait = is_try_src_enabled(port) && - !TC_CHK_FLAG(port, TC_FLAGS_TS_DTS_PARTNER); + !TC_CHK_FLAG(port, TC_FLAGS_TS_DTS_PARTNER); if (drp_state[port] == PD_DRP_FORCE_SOURCE) new_tc_state = TC_UNATTACHED_SRC; - else if(IS_ENABLED(CONFIG_USB_PD_TRY_SRC)) - new_tc_state = tryWait ? - TC_TRY_WAIT_SNK : TC_UNATTACHED_SNK; + else if (IS_ENABLED(CONFIG_USB_PD_TRY_SRC)) + new_tc_state = tryWait ? TC_TRY_WAIT_SNK : + TC_UNATTACHED_SNK; set_state_tc(port, new_tc_state); return; @@ -3221,8 +3225,9 @@ static void tc_attached_src_run(const int port) /* Perform Data Role Swap */ tc_set_data_role(port, - tc[port].data_role == PD_ROLE_DFP ? - PD_ROLE_UFP : PD_ROLE_DFP); + tc[port].data_role == PD_ROLE_DFP ? + PD_ROLE_UFP : + PD_ROLE_DFP); } /* @@ -3230,7 +3235,7 @@ static void tc_attached_src_run(const int port) * UnorientedDebugAccessory.SRC shall not drive Vconn */ if (IS_ENABLED(CONFIG_USBC_VCONN) && - !TC_CHK_FLAG(port, TC_FLAGS_TS_DTS_PARTNER)) { + !TC_CHK_FLAG(port, TC_FLAGS_TS_DTS_PARTNER)) { /* * VCONN Swap Request */ @@ -3239,7 +3244,7 @@ static void tc_attached_src_run(const int port) set_vconn(port, 1); pe_vconn_swap_complete(port); } else if (TC_CHK_FLAG(port, - TC_FLAGS_REQUEST_VC_SWAP_OFF)) { + TC_FLAGS_REQUEST_VC_SWAP_OFF)) { TC_CLR_FLAG(port, TC_FLAGS_REQUEST_VC_SWAP_OFF); set_vconn(port, 0); pe_vconn_swap_complete(port); @@ -3265,8 +3270,7 @@ static void tc_attached_src_run(const int port) * applied. */ if (!TC_CHK_FLAG(port, TC_FLAGS_TS_DTS_PARTNER) && - TC_CHK_FLAG(port, TC_FLAGS_CTVPD_DETECTED)) { - + TC_CHK_FLAG(port, TC_FLAGS_CTVPD_DETECTED)) { set_state_tc(port, TC_CT_UNATTACHED_SNK); } } @@ -3274,13 +3278,13 @@ static void tc_attached_src_run(const int port) if (TC_CHK_FLAG(port, TC_FLAGS_UPDATE_CURRENT)) { TC_CLR_FLAG(port, TC_FLAGS_UPDATE_CURRENT); - typec_set_source_current_limit(port, - tc[port].select_current_limit_rp); + typec_set_source_current_limit( + port, tc[port].select_current_limit_rp); pd_update_contract(port); /* Update Rp if no contract is present */ if (!IS_ENABLED(CONFIG_USB_PE_SM) || - !pe_is_explicit_contract(port)) + !pe_is_explicit_contract(port)) typec_update_cc(port); } } @@ -3302,7 +3306,7 @@ static void tc_attached_src_exit(const int port) * a CTVPD was not detected */ if (TC_CHK_FLAG(port, TC_FLAGS_VCONN_ON) && - !TC_CHK_FLAG(port, TC_FLAGS_CTVPD_DETECTED)) + !TC_CHK_FLAG(port, TC_FLAGS_CTVPD_DETECTED)) set_vconn(port, 0); } @@ -3332,14 +3336,14 @@ static __maybe_unused void check_drp_connection(const int port) tc[port].drp_sink_time = get_time().val; /* Get the next toggle state */ - next_state = drp_auto_toggle_next_state(&tc[port].drp_sink_time, - tc[port].power_role, drp_state[port], cc1, cc2, - tcpm_auto_toggle_supported(port)); + next_state = drp_auto_toggle_next_state( + &tc[port].drp_sink_time, tc[port].power_role, drp_state[port], + cc1, cc2, tcpm_auto_toggle_supported(port)); if (next_state == DRP_TC_DEFAULT) - next_state = (PD_ROLE_DEFAULT(port) == PD_ROLE_SOURCE) - ? DRP_TC_UNATTACHED_SRC - : DRP_TC_UNATTACHED_SNK; + next_state = (PD_ROLE_DEFAULT(port) == PD_ROLE_SOURCE) ? + DRP_TC_UNATTACHED_SRC : + DRP_TC_UNATTACHED_SNK; switch (next_state) { case DRP_TC_UNATTACHED_SNK: @@ -3491,8 +3495,8 @@ static void tc_try_src_entry(const int port) */ typec_select_pull(port, TYPEC_CC_RP); - typec_select_src_current_limit_rp(port, - typec_get_default_current_limit_rp(port)); + typec_select_src_current_limit_rp( + port, typec_get_default_current_limit_rp(port)); /* Apply Rp */ typec_update_cc(port); @@ -3507,7 +3511,7 @@ static void tc_try_src_run(const int port) tcpm_get_cc(port, &cc1, &cc2); if ((cc1 == TYPEC_CC_VOLT_RD && cc2 != TYPEC_CC_VOLT_RD) || - (cc1 != TYPEC_CC_VOLT_RD && cc2 == TYPEC_CC_VOLT_RD)) + (cc1 != TYPEC_CC_VOLT_RD && cc2 == TYPEC_CC_VOLT_RD)) new_cc_state = PD_CC_UFP_ATTACHED; else new_cc_state = PD_CC_NONE; @@ -3801,7 +3805,6 @@ static void tc_cc_rd_entry(const int port) tcpm_set_msg_header(port, tc[port].power_role, tc[port].data_role); } - /** * Super State CC_RP */ @@ -3887,8 +3890,8 @@ void tc_run(const int port) * If pd_set_suspend set TC_FLAGS_REQUEST_SUSPEND, go directly to * TC_DISABLED. */ - if (get_state_tc(port) != TC_DISABLED - && TC_CHK_FLAG(port, TC_FLAGS_REQUEST_SUSPEND)) { + if (get_state_tc(port) != TC_DISABLED && + TC_CHK_FLAG(port, TC_FLAGS_REQUEST_SUSPEND)) { /* Invalidate a contract, if there is one */ if (IS_ENABLED(CONFIG_USB_PE_SM)) pe_invalidate_explicit_contract(port); @@ -3918,17 +3921,16 @@ static void pd_chipset_resume(void) int i; for (i = 0; i < CONFIG_USB_PD_PORT_MAX_COUNT; i++) { - if(IS_ENABLED(CONFIG_USB_PE_SM)) + if (IS_ENABLED(CONFIG_USB_PE_SM)) pd_resume_check_pr_swap_needed(i); - pd_set_dual_role_and_event(i, - pd_get_drp_state_in_s0(), - PD_EVENT_UPDATE_DUAL_ROLE - | PD_EVENT_POWER_STATE_CHANGE); + pd_set_dual_role_and_event(i, pd_get_drp_state_in_s0(), + PD_EVENT_UPDATE_DUAL_ROLE | + PD_EVENT_POWER_STATE_CHANGE); if (tc[i].data_role == PD_ROLE_DFP) { pd_send_alert_msg(i, ADO_EXTENDED_ALERT_EVENT | - ADO_POWER_STATE_CHANGE); + ADO_POWER_STATE_CHANGE); } } @@ -3941,14 +3943,13 @@ static void pd_chipset_suspend(void) int i; for (i = 0; i < CONFIG_USB_PD_PORT_MAX_COUNT; i++) { - pd_set_dual_role_and_event(i, - pd_get_drp_state_in_suspend(), - PD_EVENT_UPDATE_DUAL_ROLE - | PD_EVENT_POWER_STATE_CHANGE); + pd_set_dual_role_and_event(i, pd_get_drp_state_in_suspend(), + PD_EVENT_UPDATE_DUAL_ROLE | + PD_EVENT_POWER_STATE_CHANGE); if (tc[i].data_role == PD_ROLE_DFP) { pd_send_alert_msg(i, ADO_EXTENDED_ALERT_EVENT | - ADO_POWER_STATE_CHANGE); + ADO_POWER_STATE_CHANGE); } } @@ -3974,12 +3975,15 @@ static void pd_chipset_reset(void) * kernel knows to consume discovery information for them. */ for (tx = TCPCI_MSG_SOP; tx <= TCPCI_MSG_SOP_PRIME; tx++) { - if (pd_get_identity_discovery(i, tx) != PD_DISC_NEEDED - && pd_get_svids_discovery(i, tx) != PD_DISC_NEEDED - && pd_get_modes_discovery(i, tx) != PD_DISC_NEEDED) - pd_notify_event(i, tx == TCPCI_MSG_SOP ? - PD_STATUS_EVENT_SOP_DISC_DONE : - PD_STATUS_EVENT_SOP_PRIME_DISC_DONE); + if (pd_get_identity_discovery(i, tx) != + PD_DISC_NEEDED && + pd_get_svids_discovery(i, tx) != PD_DISC_NEEDED && + pd_get_modes_discovery(i, tx) != PD_DISC_NEEDED) + pd_notify_event( + i, + tx == TCPCI_MSG_SOP ? + PD_STATUS_EVENT_SOP_DISC_DONE : + PD_STATUS_EVENT_SOP_PRIME_DISC_DONE); } /* Exit mode so AP can enter mode again after reset */ @@ -3995,10 +3999,9 @@ static void pd_chipset_startup(void) for (i = 0; i < CONFIG_USB_PD_PORT_MAX_COUNT; i++) { TC_SET_FLAG(i, TC_FLAGS_UPDATE_USB_MUX); - pd_set_dual_role_and_event(i, - pd_get_drp_state_in_suspend(), - PD_EVENT_UPDATE_DUAL_ROLE - | PD_EVENT_POWER_STATE_CHANGE); + pd_set_dual_role_and_event(i, pd_get_drp_state_in_suspend(), + PD_EVENT_UPDATE_DUAL_ROLE | + PD_EVENT_POWER_STATE_CHANGE); /* * Request port discovery to restore any * alt modes. @@ -4010,7 +4013,7 @@ static void pd_chipset_startup(void) if (tc[i].data_role == PD_ROLE_DFP) { pd_send_alert_msg(i, ADO_EXTENDED_ALERT_EVENT | - ADO_POWER_STATE_CHANGE); + ADO_POWER_STATE_CHANGE); } } @@ -4024,14 +4027,13 @@ static void pd_chipset_shutdown(void) for (i = 0; i < CONFIG_USB_PD_PORT_MAX_COUNT; i++) { TC_SET_FLAG(i, TC_FLAGS_UPDATE_USB_MUX); - pd_set_dual_role_and_event(i, - PD_DRP_FORCE_SINK, - PD_EVENT_UPDATE_DUAL_ROLE - | PD_EVENT_POWER_STATE_CHANGE); + pd_set_dual_role_and_event(i, PD_DRP_FORCE_SINK, + PD_EVENT_UPDATE_DUAL_ROLE | + PD_EVENT_POWER_STATE_CHANGE); if (tc[i].data_role == PD_ROLE_DFP) { pd_send_alert_msg(i, ADO_EXTENDED_ALERT_EVENT | - ADO_POWER_STATE_CHANGE); + ADO_POWER_STATE_CHANGE); } } |