/* Copyright 2019 The Chromium OS Authors. All rights reserved. * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. * * Test USB PE module. */ #ifndef __CROS_TEST_USB_PE_H #define __CROS_TEST_USB_PE_H #include "common.h" /* * Test references to port */ #define PORT0 0 /** * usb_pe_drp_sm.c locally defined. If it changes there, it must * be changed here as well. */ /* * Policy Engine Layer Flags */ /* At least one successful PD communication packet received from port partner */ #define PE_FLAGS_PD_CONNECTION BIT(0) /* Accept message received from port partner */ #define PE_FLAGS_ACCEPT BIT(1) /* Power Supply Ready message received from port partner */ #define PE_FLAGS_PS_READY BIT(2) /* Protocol Error was determined based on error recovery current state */ #define PE_FLAGS_PROTOCOL_ERROR BIT(3) /* Set if we are in Modal Operation */ #define PE_FLAGS_MODAL_OPERATION BIT(4) /* A message we requested to be sent has been transmitted */ #define PE_FLAGS_TX_COMPLETE BIT(5) /* A message sent by a port partner has been received */ #define PE_FLAGS_MSG_RECEIVED BIT(6) /* A hard reset has been requested but has not been sent, not currently used */ #define PE_FLAGS_HARD_RESET_PENDING BIT(7) /* Port partner sent a Wait message. Wait before we resend our message */ #define PE_FLAGS_WAIT BIT(8) /* An explicit contract is in place with our port partner */ #define PE_FLAGS_EXPLICIT_CONTRACT BIT(9) /* Waiting for Sink Capabailities timed out. Used for retry error handling */ #define PE_FLAGS_SNK_WAIT_CAP_TIMEOUT BIT(10) /* Power Supply voltage/current transition timed out */ #define PE_FLAGS_PS_TRANSITION_TIMEOUT BIT(11) /* Flag to note current Atomic Message Sequence is interruptible */ #define PE_FLAGS_INTERRUPTIBLE_AMS BIT(12) /* Flag to note Power Supply reset has completed */ #define PE_FLAGS_PS_RESET_COMPLETE BIT(13) /* VCONN swap operation has completed */ #define PE_FLAGS_VCONN_SWAP_COMPLETE BIT(14) /* Flag to note no more setup VDMs (discovery, etc.) should be sent */ #define PE_FLAGS_VDM_SETUP_DONE BIT(15) /* Flag to note Swap Source Start timer should be set at PE_SRC_Startup entry */ #define PE_FLAGS_RUN_SOURCE_START_TIMER BIT(16) /* Flag to note Port Discovery port partner replied with BUSY */ #define PE_FLAGS_VDM_REQUEST_BUSY BIT(17) /* Flag to note Port Discovery port partner replied with NAK */ #define PE_FLAGS_VDM_REQUEST_NAKED BIT(18) /* Flag to note FRS/PRS context in shared state machine path */ #define PE_FLAGS_FAST_ROLE_SWAP_PATH BIT(19) /* Flag to note if FRS listening is enabled */ #define PE_FLAGS_FAST_ROLE_SWAP_ENABLED BIT(20) /* Flag to note TCPC passed on FRS signal from port partner */ #define PE_FLAGS_FAST_ROLE_SWAP_SIGNALED BIT(21) /* List of all Policy Engine level states */ enum usb_pe_state { /* Super States */ PE_PRS_FRS_SHARED, PE_VDM_SEND_REQUEST, /* Normal States */ PE_SRC_STARTUP, PE_SRC_DISCOVERY, PE_SRC_SEND_CAPABILITIES, PE_SRC_NEGOTIATE_CAPABILITY, PE_SRC_TRANSITION_SUPPLY, PE_SRC_READY, PE_SRC_DISABLED, PE_SRC_CAPABILITY_RESPONSE, PE_SRC_HARD_RESET, PE_SRC_HARD_RESET_RECEIVED, PE_SRC_TRANSITION_TO_DEFAULT, PE_SNK_STARTUP, PE_SNK_DISCOVERY, PE_SNK_WAIT_FOR_CAPABILITIES, PE_SNK_EVALUATE_CAPABILITY, PE_SNK_SELECT_CAPABILITY, PE_SNK_READY, PE_SNK_HARD_RESET, PE_SNK_TRANSITION_TO_DEFAULT, PE_SNK_GIVE_SINK_CAP, PE_SNK_GET_SOURCE_CAP, PE_SNK_TRANSITION_SINK, PE_SEND_SOFT_RESET, PE_SOFT_RESET, PE_SEND_NOT_SUPPORTED, PE_SRC_PING, PE_DRS_EVALUATE_SWAP, PE_DRS_CHANGE, PE_DRS_SEND_SWAP, PE_PRS_SRC_SNK_EVALUATE_SWAP, PE_PRS_SRC_SNK_TRANSITION_TO_OFF, PE_PRS_SRC_SNK_ASSERT_RD, PE_PRS_SRC_SNK_WAIT_SOURCE_ON, PE_PRS_SRC_SNK_SEND_SWAP, PE_PRS_SNK_SRC_EVALUATE_SWAP, PE_PRS_SNK_SRC_TRANSITION_TO_OFF, PE_PRS_SNK_SRC_ASSERT_RP, PE_PRS_SNK_SRC_SOURCE_ON, PE_PRS_SNK_SRC_SEND_SWAP, PE_VCS_EVALUATE_SWAP, PE_VCS_SEND_SWAP, PE_VCS_WAIT_FOR_VCONN_SWAP, PE_VCS_TURN_ON_VCONN_SWAP, PE_VCS_TURN_OFF_VCONN_SWAP, PE_VCS_SEND_PS_RDY_SWAP, PE_VCS_CBL_SEND_SOFT_RESET, PE_VDM_IDENTITY_REQUEST_CBL, PE_INIT_PORT_VDM_IDENTITY_REQUEST, PE_INIT_VDM_SVIDS_REQUEST, PE_INIT_VDM_MODES_REQUEST, PE_VDM_REQUEST_DPM, PE_VDM_RESPONSE, PE_HANDLE_CUSTOM_VDM_REQUEST, PE_WAIT_FOR_ERROR_RECOVERY, PE_BIST_TX, PE_DEU_SEND_ENTER_USB, PE_DR_SNK_GET_SINK_CAP, PE_DR_SNK_GIVE_SOURCE_CAP, PE_DR_SRC_GET_SOURCE_CAP, /* PD3.0 only states below here*/ PE_FRS_SNK_SRC_START_AMS, PE_GIVE_BATTERY_CAP, PE_GIVE_BATTERY_STATUS, PE_SEND_ALERT, PE_SRC_CHUNK_RECEIVED, PE_SNK_CHUNK_RECEIVED, }; void set_state_pe(const int port, const enum usb_pe_state new_state); enum usb_pe_state get_state_pe(const int port); void pe_set_flag(int port, int flag); void pe_clr_flag(int port, int flag); int pe_chk_flag(int port, int flag); int pe_get_all_flags(int port); void pe_set_all_flags(int port, int flags); void pe_clr_dpm_requests(int port); #endif /* __CROS_TEST_USB_PE_H */