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 */
|