1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 #ifndef __LINUX_USB_USB338X_H
23 #define __LINUX_USB_USB338X_H
24
25 #include <linux/usb/net2280.h>
26
27
28
29
30 #define SCRATCH 0x0b
31
32 #define DEFECT7374_FSM_FIELD 28
33 #define SUPER_SPEED 8
34 #define DMA_REQUEST_OUTSTANDING 5
35 #define DMA_PAUSE_DONE_INTERRUPT 26
36 #define SET_ISOCHRONOUS_DELAY 24
37 #define SET_SEL 22
38 #define SUPER_SPEED_MODE 8
39
40
41 #define MAX_BURST_SIZE 24
42 #define EP_FIFO_BYTE_COUNT 16
43 #define IN_ENDPOINT_ENABLE 14
44 #define IN_ENDPOINT_TYPE 12
45 #define OUT_ENDPOINT_ENABLE 10
46 #define OUT_ENDPOINT_TYPE 8
47 #define USB3380_EP_CFG_MASK_IN ((0x3 << IN_ENDPOINT_TYPE) | \
48 BIT(IN_ENDPOINT_ENABLE))
49 #define USB3380_EP_CFG_MASK_OUT ((0x3 << OUT_ENDPOINT_TYPE) | \
50 BIT(OUT_ENDPOINT_ENABLE))
51
52 struct usb338x_usb_ext_regs {
53 u32 usbclass;
54 #define DEVICE_PROTOCOL 16
55 #define DEVICE_SUB_CLASS 8
56 #define DEVICE_CLASS 0
57 u32 ss_sel;
58 #define U2_SYSTEM_EXIT_LATENCY 8
59 #define U1_SYSTEM_EXIT_LATENCY 0
60 u32 ss_del;
61 #define U2_DEVICE_EXIT_LATENCY 8
62 #define U1_DEVICE_EXIT_LATENCY 0
63 u32 usb2lpm;
64 #define USB_L1_LPM_HIRD 2
65 #define USB_L1_LPM_REMOTE_WAKE 1
66 #define USB_L1_LPM_SUPPORT 0
67 u32 usb3belt;
68 #define BELT_MULTIPLIER 10
69 #define BEST_EFFORT_LATENCY_TOLERANCE 0
70 u32 usbctl2;
71 #define LTM_ENABLE 7
72 #define U2_ENABLE 6
73 #define U1_ENABLE 5
74 #define FUNCTION_SUSPEND 4
75 #define USB3_CORE_ENABLE 3
76 #define USB2_CORE_ENABLE 2
77 #define SERIAL_NUMBER_STRING_ENABLE 0
78 u32 in_timeout;
79 #define GPEP3_TIMEOUT 19
80 #define GPEP2_TIMEOUT 18
81 #define GPEP1_TIMEOUT 17
82 #define GPEP0_TIMEOUT 16
83 #define GPEP3_TIMEOUT_VALUE 13
84 #define GPEP3_TIMEOUT_ENABLE 12
85 #define GPEP2_TIMEOUT_VALUE 9
86 #define GPEP2_TIMEOUT_ENABLE 8
87 #define GPEP1_TIMEOUT_VALUE 5
88 #define GPEP1_TIMEOUT_ENABLE 4
89 #define GPEP0_TIMEOUT_VALUE 1
90 #define GPEP0_TIMEOUT_ENABLE 0
91 u32 isodelay;
92 #define ISOCHRONOUS_DELAY 0
93 } __packed;
94
95 struct usb338x_fifo_regs {
96
97 u32 ep_fifo_size_base;
98 #define IN_FIFO_BASE_ADDRESS 22
99 #define IN_FIFO_SIZE 16
100 #define OUT_FIFO_BASE_ADDRESS 6
101 #define OUT_FIFO_SIZE 0
102 u32 ep_fifo_out_wrptr;
103 u32 ep_fifo_out_rdptr;
104 u32 ep_fifo_in_wrptr;
105 u32 ep_fifo_in_rdptr;
106 u32 unused[3];
107 } __packed;
108
109
110
111 struct usb338x_ll_regs {
112
113 u32 ll_ltssm_ctrl1;
114 u32 ll_ltssm_ctrl2;
115 u32 ll_ltssm_ctrl3;
116 u32 unused1;
117
118
119 u32 unused2;
120 u32 ll_general_ctrl0;
121 u32 ll_general_ctrl1;
122 #define PM_U3_AUTO_EXIT 29
123 #define PM_U2_AUTO_EXIT 28
124 #define PM_U1_AUTO_EXIT 27
125 #define PM_FORCE_U2_ENTRY 26
126 #define PM_FORCE_U1_ENTRY 25
127 #define PM_LGO_COLLISION_SEND_LAU 24
128 #define PM_DIR_LINK_REJECT 23
129 #define PM_FORCE_LINK_ACCEPT 22
130 #define PM_DIR_ENTRY_U3 20
131 #define PM_DIR_ENTRY_U2 19
132 #define PM_DIR_ENTRY_U1 18
133 #define PM_U2_ENABLE 17
134 #define PM_U1_ENABLE 16
135 #define SKP_THRESHOLD_ADJUST_FMW 8
136 #define RESEND_DPP_ON_LRTY_FMW 7
137 #define DL_BIT_VALUE_FMW 6
138 #define FORCE_DL_BIT 5
139 u32 ll_general_ctrl2;
140 #define SELECT_INVERT_LANE_POLARITY 7
141 #define FORCE_INVERT_LANE_POLARITY 6
142
143
144 u32 ll_general_ctrl3;
145 u32 ll_general_ctrl4;
146 u32 ll_error_gen;
147 u32 unused3;
148
149
150 u32 unused4[4];
151
152
153 u32 unused5[2];
154 u32 ll_lfps_5;
155 #define TIMER_LFPS_6US 16
156 u32 ll_lfps_6;
157 #define TIMER_LFPS_80US 0
158
159
160 u32 unused6[8];
161
162
163 u32 unused7[3];
164 u32 ll_tsn_counters_2;
165 #define HOT_TX_NORESET_TS2 24
166
167
168 u32 ll_tsn_counters_3;
169 #define HOT_RX_RESET_TS2 0
170 u32 unused8[3];
171
172
173 u32 unused9;
174 u32 ll_lfps_timers_2;
175 #define LFPS_TIMERS_2_WORKAROUND_VALUE 0x084d
176 u32 unused10;
177 u32 ll_tsn_chicken_bit;
178 #define RECOVERY_IDLE_TO_RECOVER_FMW 3
179 } __packed;
180
181
182 struct usb338x_pl_regs {
183
184 u32 pl_reg_1;
185 u32 pl_reg_2;
186 u32 pl_reg_3;
187 u32 pl_reg_4;
188 u32 pl_ep_ctrl;
189
190 #define PL_EP_CTRL 0x810
191 #define ENDPOINT_SELECT 0
192
193 #define EP_INITIALIZED 16
194 #define SEQUENCE_NUMBER_RESET 17
195 #define CLEAR_ACK_ERROR_CODE 20
196 u32 pl_reg_6;
197 u32 pl_reg_7;
198 u32 pl_reg_8;
199 u32 pl_ep_status_1;
200
201 #define PL_EP_STATUS_1 0x820
202 #define STATE 16
203 #define ACK_GOOD_NORMAL 0x11
204 #define ACK_GOOD_MORE_ACKS_TO_COME 0x16
205 u32 pl_ep_status_2;
206 u32 pl_ep_status_3;
207
208 #define PL_EP_STATUS_3 0x828
209 #define SEQUENCE_NUMBER 0
210 u32 pl_ep_status_4;
211
212 #define PL_EP_STATUS_4 0x82c
213 u32 pl_ep_cfg_4;
214
215 #define PL_EP_CFG_4 0x830
216 #define NON_CTRL_IN_TOLERATE_BAD_DIR 6
217 } __packed;
218
219 #endif