158 lines
5.1 KiB
C
158 lines
5.1 KiB
C
/* 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_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_BIST_RX,
|
|
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 */
|