aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/drivers/usb/typec/tcpm/fusb302_reg.h
blob: 00b39d365478823e711ceafd658017ab93c65bae (plain) (blame)
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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
// SPDX-License-Identifier: GPL-2.0+
/*
 * Copyright 2016-2017 Google, Inc
 *
 * Fairchild FUSB302 Type-C Chip Driver
 */

#ifndef FUSB302_REG_H
#define FUSB302_REG_H

#define FUSB_REG_DEVICE_ID			0x01
#define FUSB_REG_SWITCHES0			0x02
#define FUSB_REG_SWITCHES0_CC2_PU_EN		BIT(7)
#define FUSB_REG_SWITCHES0_CC1_PU_EN		BIT(6)
#define FUSB_REG_SWITCHES0_VCONN_CC2		BIT(5)
#define FUSB_REG_SWITCHES0_VCONN_CC1		BIT(4)
#define FUSB_REG_SWITCHES0_MEAS_CC2		BIT(3)
#define FUSB_REG_SWITCHES0_MEAS_CC1		BIT(2)
#define FUSB_REG_SWITCHES0_CC2_PD_EN		BIT(1)
#define FUSB_REG_SWITCHES0_CC1_PD_EN		BIT(0)
#define FUSB_REG_SWITCHES1			0x03
#define FUSB_REG_SWITCHES1_POWERROLE		BIT(7)
#define FUSB_REG_SWITCHES1_SPECREV1		BIT(6)
#define FUSB_REG_SWITCHES1_SPECREV0		BIT(5)
#define FUSB_REG_SWITCHES1_DATAROLE		BIT(4)
#define FUSB_REG_SWITCHES1_AUTO_GCRC		BIT(2)
#define FUSB_REG_SWITCHES1_TXCC2_EN		BIT(1)
#define FUSB_REG_SWITCHES1_TXCC1_EN		BIT(0)
#define FUSB_REG_MEASURE			0x04
#define FUSB_REG_MEASURE_MDAC5			BIT(7)
#define FUSB_REG_MEASURE_MDAC4			BIT(6)
#define FUSB_REG_MEASURE_MDAC3			BIT(5)
#define FUSB_REG_MEASURE_MDAC2			BIT(4)
#define FUSB_REG_MEASURE_MDAC1			BIT(3)
#define FUSB_REG_MEASURE_MDAC0			BIT(2)
#define FUSB_REG_MEASURE_VBUS			BIT(1)
#define FUSB_REG_MEASURE_XXXX5			BIT(0)
#define FUSB_REG_CONTROL0			0x06
#define FUSB_REG_CONTROL0_TX_FLUSH		BIT(6)
#define FUSB_REG_CONTROL0_INT_MASK		BIT(5)
#define FUSB_REG_CONTROL0_HOST_CUR_MASK		(0xC)
#define FUSB_REG_CONTROL0_HOST_CUR_HIGH		(0xC)
#define FUSB_REG_CONTROL0_HOST_CUR_MED		(0x8)
#define FUSB_REG_CONTROL0_HOST_CUR_DEF		(0x4)
#define FUSB_REG_CONTROL0_TX_START		BIT(0)
#define FUSB_REG_CONTROL1			0x07
#define FUSB_REG_CONTROL1_ENSOP2DB		BIT(6)
#define FUSB_REG_CONTROL1_ENSOP1DB		BIT(5)
#define FUSB_REG_CONTROL1_BIST_MODE2		BIT(4)
#define FUSB_REG_CONTROL1_RX_FLUSH		BIT(2)
#define FUSB_REG_CONTROL1_ENSOP2		BIT(1)
#define FUSB_REG_CONTROL1_ENSOP1		BIT(0)
#define FUSB_REG_CONTROL2			0x08
#define FUSB_REG_CONTROL2_MODE			BIT(1)
#define FUSB_REG_CONTROL2_MODE_MASK		(0x6)
#define FUSB_REG_CONTROL2_MODE_DFP		(0x6)
#define FUSB_REG_CONTROL2_MODE_UFP		(0x4)
#define FUSB_REG_CONTROL2_MODE_DRP		(0x2)
#define FUSB_REG_CONTROL2_MODE_NONE		(0x0)
#define FUSB_REG_CONTROL2_TOGGLE		BIT(0)
#define FUSB_REG_CONTROL3			0x09
#define FUSB_REG_CONTROL3_SEND_HARDRESET	BIT(6)
#define FUSB_REG_CONTROL3_BIST_TMODE		BIT(5)	/* 302B Only */
#define FUSB_REG_CONTROL3_AUTO_HARDRESET	BIT(4)
#define FUSB_REG_CONTROL3_AUTO_SOFTRESET	BIT(3)
#define FUSB_REG_CONTROL3_N_RETRIES		BIT(1)
#define FUSB_REG_CONTROL3_N_RETRIES_MASK	(0x6)
#define FUSB_REG_CONTROL3_N_RETRIES_3		(0x6)
#define FUSB_REG_CONTROL3_N_RETRIES_2		(0x4)
#define FUSB_REG_CONTROL3_N_RETRIES_1		(0x2)
#define FUSB_REG_CONTROL3_AUTO_RETRY		BIT(0)
#define FUSB_REG_MASK				0x0A
#define FUSB_REG_MASK_VBUSOK			BIT(7)
#define FUSB_REG_MASK_ACTIVITY			BIT(6)
#define FUSB_REG_MASK_COMP_CHNG			BIT(5)
#define FUSB_REG_MASK_CRC_CHK			BIT(4)
#define FUSB_REG_MASK_ALERT			BIT(3)
#define FUSB_REG_MASK_WAKE			BIT(2)
#define FUSB_REG_MASK_COLLISION			BIT(1)
#define FUSB_REG_MASK_BC_LVL			BIT(0)
#define FUSB_REG_POWER				0x0B
#define FUSB_REG_POWER_PWR			BIT(0)
#define FUSB_REG_POWER_PWR_LOW			0x1
#define FUSB_REG_POWER_PWR_MEDIUM		0x3
#define FUSB_REG_POWER_PWR_HIGH			0x7
#define FUSB_REG_POWER_PWR_ALL			0xF
#define FUSB_REG_RESET				0x0C
#define FUSB_REG_RESET_PD_RESET			BIT(1)
#define FUSB_REG_RESET_SW_RESET			BIT(0)
#define FUSB_REG_MASKA				0x0E
#define FUSB_REG_MASKA_OCP_TEMP			BIT(7)
#define FUSB_REG_MASKA_TOGDONE			BIT(6)
#define FUSB_REG_MASKA_SOFTFAIL			BIT(5)
#define FUSB_REG_MASKA_RETRYFAIL		BIT(4)
#define FUSB_REG_MASKA_HARDSENT			BIT(3)
#define FUSB_REG_MASKA_TX_SUCCESS		BIT(2)
#define FUSB_REG_MASKA_SOFTRESET		BIT(1)
#define FUSB_REG_MASKA_HARDRESET		BIT(0)
#define FUSB_REG_MASKB				0x0F
#define FUSB_REG_MASKB_GCRCSENT			BIT(0)
#define FUSB_REG_STATUS0A			0x3C
#define FUSB_REG_STATUS0A_SOFTFAIL		BIT(5)
#define FUSB_REG_STATUS0A_RETRYFAIL		BIT(4)
#define FUSB_REG_STATUS0A_POWER			BIT(2)
#define FUSB_REG_STATUS0A_RX_SOFT_RESET		BIT(1)
#define FUSB_REG_STATUS0A_RX_HARD_RESET		BIT(0)
#define FUSB_REG_STATUS1A			0x3D
#define FUSB_REG_STATUS1A_TOGSS			BIT(3)
#define FUSB_REG_STATUS1A_TOGSS_RUNNING		0x0
#define FUSB_REG_STATUS1A_TOGSS_SRC1		0x1
#define FUSB_REG_STATUS1A_TOGSS_SRC2		0x2
#define FUSB_REG_STATUS1A_TOGSS_SNK1		0x5
#define FUSB_REG_STATUS1A_TOGSS_SNK2		0x6
#define FUSB_REG_STATUS1A_TOGSS_AA		0x7
#define FUSB_REG_STATUS1A_TOGSS_POS		(3)
#define FUSB_REG_STATUS1A_TOGSS_MASK		(0x7)
#define FUSB_REG_STATUS1A_RXSOP2DB		BIT(2)
#define FUSB_REG_STATUS1A_RXSOP1DB		BIT(1)
#define FUSB_REG_STATUS1A_RXSOP			BIT(0)
#define FUSB_REG_INTERRUPTA			0x3E
#define FUSB_REG_INTERRUPTA_OCP_TEMP		BIT(7)
#define FUSB_REG_INTERRUPTA_TOGDONE		BIT(6)
#define FUSB_REG_INTERRUPTA_SOFTFAIL		BIT(5)
#define FUSB_REG_INTERRUPTA_RETRYFAIL		BIT(4)
#define FUSB_REG_INTERRUPTA_HARDSENT		BIT(3)
#define FUSB_REG_INTERRUPTA_TX_SUCCESS		BIT(2)
#define FUSB_REG_INTERRUPTA_SOFTRESET		BIT(1)
#define FUSB_REG_INTERRUPTA_HARDRESET		BIT(0)
#define FUSB_REG_INTERRUPTB			0x3F
#define FUSB_REG_INTERRUPTB_GCRCSENT		BIT(0)
#define FUSB_REG_STATUS0			0x40
#define FUSB_REG_STATUS0_VBUSOK			BIT(7)
#define FUSB_REG_STATUS0_ACTIVITY		BIT(6)
#define FUSB_REG_STATUS0_COMP			BIT(5)
#define FUSB_REG_STATUS0_CRC_CHK		BIT(4)
#define FUSB_REG_STATUS0_ALERT			BIT(3)
#define FUSB_REG_STATUS0_WAKE			BIT(2)
#define FUSB_REG_STATUS0_BC_LVL_MASK		0x03
#define FUSB_REG_STATUS0_BC_LVL_0_200		0x0
#define FUSB_REG_STATUS0_BC_LVL_200_600		0x1
#define FUSB_REG_STATUS0_BC_LVL_600_1230	0x2
#define FUSB_REG_STATUS0_BC_LVL_1230_MAX	0x3
#define FUSB_REG_STATUS0_BC_LVL1		BIT(1)
#define FUSB_REG_STATUS0_BC_LVL0		BIT(0)
#define FUSB_REG_STATUS1			0x41
#define FUSB_REG_STATUS1_RXSOP2			BIT(7)
#define FUSB_REG_STATUS1_RXSOP1			BIT(6)
#define FUSB_REG_STATUS1_RX_EMPTY		BIT(5)
#define FUSB_REG_STATUS1_RX_FULL		BIT(4)
#define FUSB_REG_STATUS1_TX_EMPTY		BIT(3)
#define FUSB_REG_STATUS1_TX_FULL		BIT(2)
#define FUSB_REG_INTERRUPT			0x42
#define FUSB_REG_INTERRUPT_VBUSOK		BIT(7)
#define FUSB_REG_INTERRUPT_ACTIVITY		BIT(6)
#define FUSB_REG_INTERRUPT_COMP_CHNG		BIT(5)
#define FUSB_REG_INTERRUPT_CRC_CHK		BIT(4)
#define FUSB_REG_INTERRUPT_ALERT		BIT(3)
#define FUSB_REG_INTERRUPT_WAKE			BIT(2)
#define FUSB_REG_INTERRUPT_COLLISION		BIT(1)
#define FUSB_REG_INTERRUPT_BC_LVL		BIT(0)
#define FUSB_REG_FIFOS				0x43

/* Tokens defined for the FUSB302 TX FIFO */
enum fusb302_txfifo_tokens {
	FUSB302_TKN_TXON = 0xA1,
	FUSB302_TKN_SYNC1 = 0x12,
	FUSB302_TKN_SYNC2 = 0x13,
	FUSB302_TKN_SYNC3 = 0x1B,
	FUSB302_TKN_RST1 = 0x15,
	FUSB302_TKN_RST2 = 0x16,
	FUSB302_TKN_PACKSYM = 0x80,
	FUSB302_TKN_JAMCRC = 0xFF,
	FUSB302_TKN_EOP = 0x14,
	FUSB302_TKN_TXOFF = 0xFE,
};

#endif