summaryrefslogtreecommitdiff
path: root/test/usb_pe.h
blob: f54040e6a6c43da4e89b527a63cc40fc762156ba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
/* 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

/*
 * Parameters for pe_run
 *
 * pe_run(port, evt, enable)
 *    evt - currently ignored in the implementation
 *    enable - 0 Disable/1 Enable
 */
#define EVT_IGNORED 0

#define ENABLED 1
#define DISABLED 0

/**
 * usb_pe_drp_sm.c locally defined.  If it changes there, it must
 * be changed here as well.
 */

/* Policy Engine Layer Flags */
#define PE_FLAGS_PD_CONNECTION               BIT(0)
#define PE_FLAGS_ACCEPT                      BIT(1)
#define PE_FLAGS_PS_READY                    BIT(2)
#define PE_FLAGS_PROTOCOL_ERROR              BIT(3)
#define PE_FLAGS_MODAL_OPERATION             BIT(4)
#define PE_FLAGS_TX_COMPLETE                 BIT(5)
#define PE_FLAGS_MSG_RECEIVED                BIT(6)
#define PE_FLAGS_HARD_RESET_PENDING          BIT(7)
#define PE_FLAGS_WAIT                        BIT(8)
#define PE_FLAGS_EXPLICIT_CONTRACT           BIT(9)
#define PE_FLAGS_SNK_WAIT_CAP_TIMEOUT        BIT(10)
#define PE_FLAGS_PS_TRANSITION_TIMEOUT       BIT(11)
#define PE_FLAGS_INTERRUPTIBLE_AMS           BIT(12)
#define PE_FLAGS_PS_RESET_COMPLETE           BIT(13)
#define PE_FLAGS_SEND_SVDM                   BIT(14)
#define PE_FLAGS_VCONN_SWAP_COMPLETE         BIT(15)
#define PE_FLAGS_DISCOVER_PORT_IDENTITY_DONE BIT(16)
#define PE_FLAGS_DISCOVER_VDM_IDENTITY_DONE  BIT(17)
#define PE_FLAGS_RUN_SOURCE_START_TIMER      BIT(19)
#define PE_FLAGS_VDM_REQUEST_BUSY            BIT(20)
#define PE_FLAGS_VDM_REQUEST_NAKED           BIT(21)
#define PE_FLAGS_FAST_ROLE_SWAP_PATH         BIT(22)/* FRS/PRS Exec Path */
#define PE_FLAGS_FAST_ROLE_SWAP_ENABLED      BIT(23)/* FRS Listening State */
#define PE_FLAGS_FAST_ROLE_SWAP_SIGNALED     BIT(24)/* FRS PPC/TCPC Signal */

/* List of all Policy Engine level states */
enum usb_pe_state {
	/* 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_SRC_VDM_IDENTITY_REQUEST,
	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_GIVE_BATTERY_CAP,
	PE_GIVE_BATTERY_STATUS,
	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_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_FRS_SNK_SRC_START_AMS,
	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_DO_PORT_DISCOVERY,
	PE_VDM_REQUEST,
	PE_VDM_ACKED,
	PE_VDM_RESPONSE,
	PE_HANDLE_CUSTOM_VDM_REQUEST,
	PE_WAIT_FOR_ERROR_RECOVERY,
	PE_BIST,
	PE_DR_SNK_GET_SINK_CAP,

	/* Super States */
	PE_PRS_FRS_SHARED,
};

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);

#endif /* __CROS_TEST_USB_PE_H */