aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/usb/exynos_usb3_drd.h
blob: 9f58605d6f1207a5acde0d3bbb9ec84c49786588 (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
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
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
/* include/linux/usb/exynos_usb3_drd.h
 *
 * Copyright (c) 2012 Samsung Electronics Co. Ltd
 * Author: Anton Tikhomirov <av.tikhomirov@samsung.com>
 *
 * Exynos SuperSpeed USB 3.0 DRD Controller global and OTG registers
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */

#ifndef __LINUX_USB_EXYNOS_USB3_DRD_H
#define __LINUX_USB_EXYNOS_USB3_DRD_H

/* Global registers */
#define EXYNOS_USB3_GSBUSCFG0		0xC100
#define EXYNOS_USB3_GSBUSCFG0_SBusStoreAndForward	(1 << 12)
#define EXYNOS_USB3_GSBUSCFG0_DatBigEnd			(1 << 11)
#define EXYNOS_USB3_GSBUSCFG0_INCR256BrstEna		(1 << 7)
#define EXYNOS_USB3_GSBUSCFG0_INCR128BrstEna		(1 << 6)
#define EXYNOS_USB3_GSBUSCFG0_INCR64BrstEna		(1 << 5)
#define EXYNOS_USB3_GSBUSCFG0_INCR32BrstEna		(1 << 4)
#define EXYNOS_USB3_GSBUSCFG0_INCR16BrstEna		(1 << 3)
#define EXYNOS_USB3_GSBUSCFG0_INCR8BrstEna		(1 << 2)
#define EXYNOS_USB3_GSBUSCFG0_INCR4BrstEna		(1 << 1)
#define EXYNOS_USB3_GSBUSCFG0_INCRBrstEna		(1 << 0)

#define EXYNOS_USB3_GSBUSCFG1		0xC104
#define EXYNOS_USB3_GSBUSCFG1_EN1KPAGE			(1 << 12)
#define EXYNOS_USB3_GSBUSCFG1_BREQLIMIT_MASK		(0xf << 8)
#define EXYNOS_USB3_GSBUSCFG1_BREQLIMIT_SHIFT		8
#define EXYNOS_USB3_GSBUSCFG1_BREQLIMIT(_x)		((_x) << 8)

#define EXYNOS_USB3_GTXTHRCFG		0xC108
#define EXYNOS_USB3_GTXTHRCFG_USBTxPktCntSel		(1 << 29)
#define EXYNOS_USB3_GTXTHRCFG_USBTxPktCnt_MASK		(0xf << 24)
#define EXYNOS_USB3_GTXTHRCFG_USBTxPktCnt_SHIFT		24
#define EXYNOS_USB3_GTXTHRCFG_USBTxPktCnt(_x)		((_x) << 24)
#define EXYNOS_USB3_GTXTHRCFG_USBMaxTxBurstSize_MASK	(0xff << 16)
#define EXYNOS_USB3_GTXTHRCFG_USBMaxTxBurstSize_SHIFT	16
#define EXYNOS_USB3_GTXTHRCFG_USBMaxTxBurstSize(_x)	((_x) << 16)

#define EXYNOS_USB3_GRXTHRCFG		0xC10C
#define EXYNOS_USB3_GRXTHRCFG_USBRxPktCntSel		(1 << 29)
#define EXYNOS_USB3_GRXTHRCFG_USBRxPktCnt_MASK		(0xf << 24)
#define EXYNOS_USB3_GRXTHRCFG_USBRxPktCnt_SHIFT		24
#define EXYNOS_USB3_GRXTHRCFG_USBRxPktCnt(_x)		((_x) << 24)
#define EXYNOS_USB3_GRXTHRCFG_USBMaxRxBurstSize_MASK	(0x1f << 19)
#define EXYNOS_USB3_GRXTHRCFG_USBMaxRxBurstSize_SHIFT	19
#define EXYNOS_USB3_GRXTHRCFG_USBMaxRxBurstSize(_x)	((_x) << 19)

#define EXYNOS_USB3_GCTL		0xC110
#define EXYNOS_USB3_GCTL_PwrDnScale_MASK		(0x1fff << 19)
#define EXYNOS_USB3_GCTL_PwrDnScale_SHIFT		19
#define EXYNOS_USB3_GCTL_PwrDnScale(_x)			((_x) << 19)
#define EXYNOS_USB3_GCTL_U2RSTECN			(1 << 16)
#define EXYNOS_USB3_GCTL_FRMSCLDWN_MASK			(0x3 << 14)
#define EXYNOS_USB3_GCTL_FRMSCLDWN_SHIFT		14
#define EXYNOS_USB3_GCTL_FRMSCLDWN(_x)			((_x) << 14)
#define EXYNOS_USB3_GCTL_PrtCapDir_MASK			(0x3 << 12)
#define EXYNOS_USB3_GCTL_PrtCapDir_SHIFT		12
#define EXYNOS_USB3_GCTL_PrtCapDir(_x)			((_x) << 12)
#define EXYNOS_USB3_GCTL_CoreSoftReset			(1 << 11)
#define EXYNOS_USB3_GCTL_LocalLpBkEn			(1 << 10)
#define EXYNOS_USB3_GCTL_LpbkEn				(1 << 9)
#define EXYNOS_USB3_GCTL_DebugAttach			(1 << 8)
#define EXYNOS_USB3_GCTL_RAMClkSel_MASK			(0x3 << 6)
#define EXYNOS_USB3_GCTL_RAMClkSel_SHIFT		6
#define EXYNOS_USB3_GCTL_RAMClkSel(_x)			((_x) << 6)
#define EXYNOS_USB3_GCTL_ScaleDown_MASK			(0x3 << 4)
#define EXYNOS_USB3_GCTL_ScaleDown_SHIFT		4
#define EXYNOS_USB3_GCTL_ScaleDown(_x)			((_x) << 4)
#define EXYNOS_USB3_GCTL_DisScramble			(1 << 3)
#define EXYNOS_USB3_GCTL_SsPwrClmp			(1 << 2)
#define EXYNOS_USB3_GCTL_HsFsLsPwrClmp			(1 << 1)
#define EXYNOS_USB3_GCTL_DsblClkGtng			(1 << 0)

#define EXYNOS_USB3_GEVTEN		0xC114
#define EXYNOS_USB3_GEVTEN_I2CEvtEn			(1 << 1)
#define EXYNOS_USB3_GEVTEN_ULPICKEvtEn			(1 << 0)
#define EXYNOS_USB3_GEVTEN_I2CCKEvtEn			(1 << 0)

#define EXYNOS_USB3_GSTS		0xC118
#define EXYNOS_USB3_GSTS_CBELT_MASK			(0xfff << 20)
#define EXYNOS_USB3_GSTS_CBELT_SHIFT			20
#define EXYNOS_USB3_GSTS_CBELT(_x)			((_x) << 20)
#define EXYNOS_USB3_GSTS_OTG_IP				(1 << 10)
#define EXYNOS_USB3_GSTS_BC_IP				(1 << 9)
#define EXYNOS_USB3_GSTS_ADP_IP				(1 << 8)
#define EXYNOS_USB3_GSTS_Host_IP			(1 << 7)
#define EXYNOS_USB3_GSTS_Device_IP			(1 << 6)
#define EXYNOS_USB3_GSTS_CSRTimeout			(1 << 5)
#define EXYNOS_USB3_GSTS_BusErrAddrVld			(1 << 4)
#define EXYNOS_USB3_GSTS_CurMod_MASK			(0x3 << 0)
#define EXYNOS_USB3_GSTS_CurMod_SHIFT			0
#define EXYNOS_USB3_GSTS_CurMod(_x)			((_x) << 0)

#define EXYNOS_USB3_GSNPSID		0xC120

#define EXYNOS_USB3_GGPIO		0xC124
#define EXYNOS_USB3_GGPIO_GPO_MASK			(0xffff << 16)
#define EXYNOS_USB3_GGPIO_GPO_SHIFT			16
#define EXYNOS_USB3_GGPIO_GPO(_x)			((_x) << 16)
#define EXYNOS_USB3_GGPIO_GPI_MASK			(0xffff << 0)
#define EXYNOS_USB3_GGPIO_GPI_SHIFT			0
#define EXYNOS_USB3_GGPIO_GPI(_x)			((x) << 0)

#define EXYNOS_USB3_GUID		0xC128

#define EXYNOS_USB3_GUCTL		0xC12C
#define EXYNOS_USB3_GUCTL_SprsCtrlTransEn		(1 << 17)
#define EXYNOS_USB3_GUCTL_ResBwHSEPS			(1 << 16)
#define EXYNOS_USB3_GUCTL_CMdevAddr			(1 << 15)
#define EXYNOS_USB3_GUCTL_USBHstInAutoRetryEn		(1 << 14)
#define EXYNOS_USB3_GUCTL_USBHstInMaxBurst_MASK		(0x7 << 11)
#define EXYNOS_USB3_GUCTL_USBHstInMaxBurst_SHIFT	11
#define EXYNOS_USB3_GUCTL_USBHstInMaxBurst(_x)		((_x) << 11)
#define EXYNOS_USB3_GUCTL_DTCT_MASK			(0x3 << 9)
#define EXYNOS_USB3_GUCTL_DTCT_SHIFT			9
#define EXYNOS_USB3_GUCTL_DTCT(_x)			((_x) << 9)
#define EXYNOS_USB3_GUCTL_DTFT_MASK			(0x1ff << 0)
#define EXYNOS_USB3_GUCTL_DTFT_SHIFT			0
#define EXYNOS_USB3_GUCTL_DTFT(_x)			((_x) << 0)

#define EXYNOS_USB3_GBUSERRADDR_31_0	0xC130
#define EXYNOS_USB3_GBUSERRADDR_63_32	0xC134
#define EXYNOS_USB3_GPRTBIMAP_31_0	0xC138
#define EXYNOS_USB3_GPRTBIMAP_63_32	0xC13C

#define EXYNOS_USB3_GHWPARAMS0		0xC140
#define EXYNOS_USB3_GHWPARAMS1		0xC144
#define EXYNOS_USB3_GHWPARAMS2		0xC148
#define EXYNOS_USB3_GHWPARAMS3		0xC14C
#define EXYNOS_USB3_GHWPARAMS4		0xC150
#define EXYNOS_USB3_GHWPARAMS5		0xC154
#define EXYNOS_USB3_GHWPARAMS6		0xC158
#define EXYNOS_USB3_GHWPARAMS7		0xC15C

#define EXYNOS_USB3_GDBGFIFOSPACE	0xC160
#define EXYNOS_USB3_GDBGLTSSM		0xC164

#define EXYNOS_USB3_GDBGLSPMUX		0xC170
#define EXYNOS_USB3_GDBGLSP		0xC174
#define EXYNOS_USB3_GDBGEPINFO0		0xC178
#define EXYNOS_USB3_GDBGEPINFO1		0xC17C

#define EXYNOS_USB3_GPRTBIMAP_HS_31_0	0xC180
#define EXYNOS_USB3_GPRTBIMAP_HS_63_32	0xC184
#define EXYNOS_USB3_GPRTBIMAP_FS_31_0	0xC188
#define EXYNOS_USB3_GPRTBIMAP_FS_63_32	0xC18C

#define EXYNOS_USB3_GUSB2PHYCFG(_a)	(0xC200 + ((_a) * 0x04))
#define EXYNOS_USB3_GUSB2PHYCFGx_PHYSoftRst		(1 << 31)
#define EXYNOS_USB3_GUSB2PHYCFGx_PhyIntrNum_MASK	(0x3f << 19)
#define EXYNOS_USB3_GUSB2PHYCFGx_PhyIntrNum_SHIFT	19
#define EXYNOS_USB3_GUSB2PHYCFGx_PhyIntrNum(_x)		((_x) << 19)
#define EXYNOS_USB3_GUSB2PHYCFGx_ULPIExtVbusIndicator	(1 << 18)
#define EXYNOS_USB3_GUSB2PHYCFGx_ULPIExtVbusDrv		(1 << 17)
#define EXYNOS_USB3_GUSB2PHYCFGx_ULPIClkSusM		(1 << 16)
#define EXYNOS_USB3_GUSB2PHYCFGx_ULPIAutoRes		(1 << 15)
#define EXYNOS_USB3_GUSB2PHYCFGx_PhyLPwrClkSel		(1 << 14)
#define EXYNOS_USB3_GUSB2PHYCFGx_USBTrdTim_MASK		(0xf << 10)
#define EXYNOS_USB3_GUSB2PHYCFGx_USBTrdTim_SHIFT	10
#define EXYNOS_USB3_GUSB2PHYCFGx_USBTrdTim(_x)		((_x) << 10)
#define EXYNOS_USB3_GUSB2PHYCFGx_EnblSlpM		(1 << 8)
#define EXYNOS_USB3_GUSB2PHYCFGx_PHYSel			(1 << 7)
#define EXYNOS_USB3_GUSB2PHYCFGx_SusPHY			(1 << 6)
#define EXYNOS_USB3_GUSB2PHYCFGx_FSIntf			(1 << 5)
#define EXYNOS_USB3_GUSB2PHYCFGx_ULPI_UTMI_Sel		(1 << 4)
#define EXYNOS_USB3_GUSB2PHYCFGx_PHYIf			(1 << 3)
#define EXYNOS_USB3_GUSB2PHYCFGx_TOutCal_MASK		(0x7 << 0)
#define EXYNOS_USB3_GUSB2PHYCFGx_TOutCal_SHIFT		0
#define EXYNOS_USB3_GUSB2PHYCFGx_TOutCal(_x)		((_x) << 0)

#define EXYNOS_USB3_GUSB2I2CCTL(_a)	(0xC240 + ((_a) * 0x04))

#define EXYNOS_USB3_GUSB2PHYACC(_a)	(0xC280 + ((_a) * 0x04))
#define EXYNOS_USB3_GUSB2PHYACCx_DisUlpiDrvr		(1 << 26)
#define EXYNOS_USB3_GUSB2PHYACCx_NewRegReq		(1 << 25)
#define EXYNOS_USB3_GUSB2PHYACCx_VStsDone		(1 << 24)
#define EXYNOS_USB3_GUSB2PHYACCx_VStsBsy		(1 << 23)
#define EXYNOS_USB3_GUSB2PHYACCx_RegWr			(1 << 22)
#define EXYNOS_USB3_GUSB2PHYACCx_RegAddr_MASK		(0x3f << 16)
#define EXYNOS_USB3_GUSB2PHYACCx_RegAddr_SHIFT		16
#define EXYNOS_USB3_GUSB2PHYACCx_RegAddr(_x)		((_x) << 16)
/* Next 2 fields are overlaping. Is it error in user manual? */
#define EXYNOS_USB3_GUSB2PHYACCx_VCtrl_MASK		(0xff << 8)
#define EXYNOS_USB3_GUSB2PHYACCx_VCtrl_SHIFT		8
#define EXYNOS_USB3_GUSB2PHYACCx_VCtrl(_x)		((_x) << 8)
/*--------*/
#define EXYNOS_USB3_GUSB2PHYACCx_ExtRegAddr_MASK	(0x3f << 8)
#define EXYNOS_USB3_GUSB2PHYACCx_ExtRegAddr_SHIFT	8
#define EXYNOS_USB3_GUSB2PHYACCx_ExtRegAddr(_x)		((_x) << 8)
/*--------*/
#define EXYNOS_USB3_GUSB2PHYACCx_RegData_MASK		(0xff << 0)
#define EXYNOS_USB3_GUSB2PHYACCx_RegData_SHIFT		0
#define EXYNOS_USB3_GUSB2PHYACCx_RegData(_x)		((_x) << 0)

#define EXYNOS_USB3_GUSB3PIPECTL(_a)	(0xC2C0 + ((_a) * 0x04))
#define EXYNOS_USB3_GUSB3PIPECTLx_PHYSoftRst		(1 << 31)
#define EXYNOS_USB3_GUSB3PIPECTLx_request_p1p2p3	(1 << 24)
#define EXYNOS_USB3_GUSB3PIPECTLx_StartRxdetU3RxDet	(1 << 23)
#define EXYNOS_USB3_GUSB3PIPECTLx_DisRxDetU3RxDet	(1 << 22)
#define EXYNOS_USB3_GUSB3PIPECTLx_delay_p1p2p3_MASK	(0x7 << 19)
#define EXYNOS_USB3_GUSB3PIPECTLx_delay_p1p2p3_SHIFT	19
#define EXYNOS_USB3_GUSB3PIPECTLx_delay_p1p2p3(_x)	((_x) << 19)
#define EXYNOS_USB3_GUSB3PIPECTLx_delay_phy_pwr_p1p2p3	(1 << 18)
#define EXYNOS_USB3_GUSB3PIPECTLx_SuspSSPhy		(1 << 17)
#define EXYNOS_USB3_GUSB3PIPECTLx_DatWidth_MASK		(0x3 << 15)
#define EXYNOS_USB3_GUSB3PIPECTLx_DatWidth_SHIFT	15
#define EXYNOS_USB3_GUSB3PIPECTLx_DatWidth(_x)		((_x) << 15)
#define EXYNOS_USB3_GUSB3PIPECTLx_AbortRxDetInU2	(1 << 14)
#define EXYNOS_USB3_GUSB3PIPECTLx_SkipRxDet		(1 << 13)
#define EXYNOS_USB3_GUSB3PIPECTLx_LFPSP0Algn		(1 << 12)
#define EXYNOS_USB3_GUSB3PIPECTLx_P3P2TranOK		(1 << 11)
#define EXYNOS_USB3_GUSB3PIPECTLx_LFPSFilt		(1 << 9)
#define EXYNOS_USB3_GUSB3PIPECTLx_TxSwing		(1 << 6)
#define EXYNOS_USB3_GUSB3PIPECTLx_TxMargin_MASK		(0x7 << 3)
#define EXYNOS_USB3_GUSB3PIPECTLx_TxMargin_SHIFT	3
#define EXYNOS_USB3_GUSB3PIPECTLx_TxMargin(_x)		((_x) << 3)
#define EXYNOS_USB3_GUSB3PIPECTLx_TxDeemphasis_MASK	(0x3 << 1)
#define EXYNOS_USB3_GUSB3PIPECTLx_TxDeemphasis_SHIFT	1
#define EXYNOS_USB3_GUSB3PIPECTLx_TxDeemphasis(_x)	((_x) << 1)
#define EXYNOS_USB3_GUSB3PIPECTLx_ElasticBufferMode	(1 << 0)

#define EXYNOS_USB3_GTXFIFOSIZ(_a)	(0xC300 + ((_a) * 0x04))
#define EXYNOS_USB3_GTXFIFOSIZx_TxFStAddr_n_MASK	(0xffff << 16)
#define EXYNOS_USB3_GTXFIFOSIZx_TxFStAddr_n_SHIFT	16
#define EXYNOS_USB3_GTXFIFOSIZx_TxFStAddr_n(_x)		((_x) << 16)
#define EXYNOS_USB3_GTXFIFOSIZx_TxFDep_n_MASK		(0xffff << 0)
#define EXYNOS_USB3_GTXFIFOSIZx_TxFDep_n_SHIFT		0
#define EXYNOS_USB3_GTXFIFOSIZx_TxFDep_n(_x)		((_x) << 0)

#define EXYNOS_USB3_GRXFIFOSIZ(_a)	(0xC380 + ((_a) * 0x04))
#define EXYNOS_USB3_GRXFIFOSIZx_RxFStAddr_n_MASK	(0xffff << 16)
#define EXYNOS_USB3_GRXFIFOSIZx_RxFStAddr_n_SHIFT	16
#define EXYNOS_USB3_GRXFIFOSIZx_RxFStAddr_n(_x)		((_x) << 16)
#define EXYNOS_USB3_GRXFIFOSIZx_RxFDep_n_MASK		(0xffff << 0)
#define EXYNOS_USB3_GRXFIFOSIZx_RxFDep_n_SHIFT		0
#define EXYNOS_USB3_GRXFIFOSIZx_RxFDep_n(_x)		((_x) << 0)

#define EXYNOS_USB3_GEVNTADR_31_0(_a)	(0xC400 + ((_a) * 0x10))
#define EXYNOS_USB3_GEVNTADR_63_32(_a)	(0xC404 + ((_a) * 0x10))

#define EXYNOS_USB3_GEVNTSIZ(_a)	(0xC408 + ((_a) * 0x10))
#define EXYNOS_USB3_GEVNTSIZx_EvntIntMask		(1 << 31)
#define EXYNOS_USB3_GEVNTSIZx_EVNTSiz_MASK		(0xffff << 0)
#define EXYNOS_USB3_GEVNTSIZx_EVNTSiz_SHIFT		0
#define EXYNOS_USB3_GEVNTSIZx_EVNTSiz(x)		((_x) << 0)

#define EXYNOS_USB3_GEVNTCOUNT(_a)	(0xC40C + ((_a) * 0x10))
#define EXYNOS_USB3_GEVNTCOUNTx_EVNTCount_MASK		(0xffff << 0)
#define EXYNOS_USB3_GEVNTCOUNTx_EVNTCount_SHIFT		0
#define EXYNOS_USB3_GEVNTCOUNTx_EVNTCount(_x)		((_x) << 0)

/* Event Buffer Content for Device Endpoint-Specific Events (DEPEVT) */
#define EXYNOS_USB3_DEPEVT_EventParam_MASK		(0xffff << 16)
#define EXYNOS_USB3_DEPEVT_EventParam_SHIFT		16
#define EXYNOS_USB3_DEPEVT_EventParam(_x)		((_x) << 16)
#define EXYNOS_USB3_DEPEVT_EventStatus_MASK		(0xf << 12)
#define EXYNOS_USB3_DEPEVT_EventStatus_SHIFT		12
#define EXYNOS_USB3_DEPEVT_EventStatus_CTL_MASK		(0x3 << 12)
#define EXYNOS_USB3_DEPEVT_EventStatus_CTL_SETUP	(0 << 12)
#define EXYNOS_USB3_DEPEVT_EventStatus_CTL_DATA		(1 << 12)
#define EXYNOS_USB3_DEPEVT_EventStatus_CTL_STATUS	(2 << 12)
#define EXYNOS_USB3_DEPEVT_EventStatus_BUSERR		(1 << 12)
#define EXYNOS_USB3_DEPEVT_EVENT_MASK			(0xf << 6)
#define EXYNOS_USB3_DEPEVT_EVENT_SHIFT			6
#define EXYNOS_USB3_DEPEVT_EVENT_EPCmdCmplt		(7 << 6)
#define EXYNOS_USB3_DEPEVT_EVENT_StreamEvt		(6 << 6)
#define EXYNOS_USB3_DEPEVT_EVENT_RxTxfifoEvt		(4 << 6)
#define EXYNOS_USB3_DEPEVT_EVENT_XferNotReady		(3 << 6)
#define EXYNOS_USB3_DEPEVT_EVENT_XferInProgress		(2 << 6)
#define EXYNOS_USB3_DEPEVT_EVENT_XferComplete		(1 << 6)
#define EXYNOS_USB3_DEPEVT_EPNUM_MASK			(0x1f << 1)
#define EXYNOS_USB3_DEPEVT_EPNUM_SHIFT			1
#define EXYNOS_USB3_DEPEVT_EPNUM(_x)			((_x) << 1)

/* Event Buffer Content for Device-Specific Events (DEVT) */
#define EXYNOS_USB3_DEVT_EvtInfo_MASK			(0xf << 16)
#define EXYNOS_USB3_DEVT_EvtInfo_SHIFT			16
#define EXYNOS_USB3_DEVT_EvtInfo(_x)			((_x) << 16)
#define EXYNOS_USB3_DEVT_EvtInfo_SS			(1 << 20)
#define EXYNOS_USB3_DEVT_EvtInfo_U3			(0x3 << 16)
#define EXYNOS_USB3_DEVT_EvtInfo_SS_DIS			(0x4 << 16)
#define EXYNOS_USB3_DEVT_EvtInfo_Suspend		(0x3 << 16)
#define EXYNOS_USB3_DEVT_EVENT_MASK			(0xf << 8)
#define EXYNOS_USB3_DEVT_EVENT_SHIFT			8
#define EXYNOS_USB3_DEVT_EVENT_VndrDevTstRcved		(12 << 8)
#define EXYNOS_USB3_DEVT_EVENT_EvntOverflow		(11 << 8)
#define EXYNOS_USB3_DEVT_EVENT_CmdCmplt			(10 << 8)
#define EXYNOS_USB3_DEVT_EVENT_ErrticErr		(9 << 8)
#define EXYNOS_USB3_DEVT_EVENT_Sof			(7 << 8)
#define EXYNOS_USB3_DEVT_EVENT_EOPF			(6 << 8)
#define EXYNOS_USB3_DEVT_EVENT_WkUpEvt			(4 << 8)
#define EXYNOS_USB3_DEVT_EVENT_ULStChng			(3 << 8)
#define EXYNOS_USB3_DEVT_EVENT_ConnectDone		(2 << 8)
#define EXYNOS_USB3_DEVT_EVENT_USBRst			(1 << 8)
#define EXYNOS_USB3_DEVT_EVENT_DisconnEvt		(0 << 8)

#define EXYNOS_USB3_GHWPARAMS8		0xC600

/* USB 2.0 OTG and Battery Charger registers */
#define EXYNOS_USB3_OCFG		0xCC00
#define EXYNOS_USB3_OCFG_OTG_Version			(1 << 2)
#define EXYNOS_USB3_OCFG_HNPCap				(1 << 1)
#define EXYNOS_USB3_OCFG_SRPCap				(1 << 0)

#define EXYNOS_USB3_OCTL		0xCC04
#define EXYNOS_USB3_OCTL_PeriMode			(1 << 6)
#define EXYNOS_USB3_OCTL_PrtPwrCtl			(1 << 5)
#define EXYNOS_USB3_OCTL_HNPReq				(1 << 4)
#define EXYNOS_USB3_OCTL_SesReq				(1 << 3)
#define EXYNOS_USB3_OCTL_TermSelDLPulse			(1 << 2)
#define EXYNOS_USB3_OCTL_DevSetHNPEn			(1 << 1)
#define EXYNOS_USB3_OCTL_HstSetHNPEn			(1 << 0)

#define EXYNOS_USB3_OEVT		0xCC08
#define EXYNOS_USB3_OEVT_DeviceMode			(1 << 31)
#define EXYNOS_USB3_OEVT_OTGConIDStsChngEvnt		(1 << 24)
#define EXYNOS_USB3_OEVT_OTGADevBHostEndEvnt		(1 << 20)
#define EXYNOS_USB3_OEVT_OTGADevHostEvnt		(1 << 19)
#define EXYNOS_USB3_OEVT_OTGADevHNPChngEvnt		(1 << 18)
#define EXYNOS_USB3_OEVT_OTGADevSRPDetEvnt		(1 << 17)
#define EXYNOS_USB3_OEVT_OTGADevSessEndDetEvnt		(1 << 16)
#define EXYNOS_USB3_OEVT_OTGBDevBHostEndEvnt		(1 << 11)
#define EXYNOS_USB3_OEVT_OTGBDevHNPChngEvnt		(1 << 10)
#define EXYNOS_USB3_OEVT_OTGBDevSessVldDetEvnt		(1 << 9)
#define EXYNOS_USB3_OEVT_OTGBDevVBUSChngEvnt		(1 << 8)
#define EXYNOS_USB3_OEVT_BSesVld			(1 << 3)
#define EXYNOS_USB3_OEVT_HstNegSts			(1 << 2)
#define EXYNOS_USB3_OEVT_SesReqSts			(1 << 1)
#define EXYNOS_USB3_OEVT_OEVTError			(1 << 0)

#define EXYNOS_USB3_OEVTEN		0xCC0C
#define EXYNOS_USB3_OEVTEN_OTGConIDStsChngEvntEn	(1 << 24)
#define EXYNOS_USB3_OEVTEN_OTGADevBHostEndEvntEn	(1 << 20)
#define EXYNOS_USB3_OEVTEN_OTGADevHostEvntEn		(1 << 19)
#define EXYNOS_USB3_OEVTEN_OTGADevHNPChngEvntEn		(1 << 18)
#define EXYNOS_USB3_OEVTEN_OTGADevSRPDetEvntEn		(1 << 17)
#define EXYNOS_USB3_OEVTEN_OTGADevSessEndDetEvntEn	(1 << 16)
#define EXYNOS_USB3_OEVTEN_OTGBDevBHostEndEvntEn	(1 << 11)
#define EXYNOS_USB3_OEVTEN_OTGBDevHNPChngEvntEn		(1 << 10)
#define EXYNOS_USB3_OEVTEN_OTGBDevSessVldDetEvntEn	(1 << 9)
#define EXYNOS_USB3_OEVTEN_OTGBDevVBUSChngEvntEn	(1 << 8)

#define EXYNOS_USB3_OSTS		0xCC10
#define EXYNOS_USB3_OSTS_OTG_state_MASK			(0xf << 8)
#define EXYNOS_USB3_OSTS_OTG_state_SHIFT		8
#define EXYNOS_USB3_OSTS_OTG_state(_x)			((_x) << 8)
#define EXYNOS_USB3_OSTS_PeripheralState		(1 << 4)
#define EXYNOS_USB3_OSTS_xHCIPrtPower			(1 << 3)
#define EXYNOS_USB3_OSTS_BSesVld			(1 << 2)
#define EXYNOS_USB3_OSTS_VbusVld			(1 << 1)
#define EXYNOS_USB3_OSTS_ConIDSts			(1 << 0)

#define EXYNOS_USB3_ADPCFG		0xCC20
#define EXYNOS_USB3_ADPCFG_PrbPer_MASK			(0x3 << 30)
#define EXYNOS_USB3_ADPCFG_PrbPer_SHIFT			30
#define EXYNOS_USB3_ADPCFG_PrbPer(_x)			((_x) << 30)
#define EXYNOS_USB3_ADPCFG_PrbDelta_MASK		(0x3 << 28)
#define EXYNOS_USB3_ADPCFG_PrbDelta_SHIFT		28
#define EXYNOS_USB3_ADPCFG_PrbDelta(_x)			((_x) << 28)
#define EXYNOS_USB3_ADPCFG_PrbDschg_MASK		(0x3 << 26)
#define EXYNOS_USB3_ADPCFG_PrbDschg_SHIFT		26
#define EXYNOS_USB3_ADPCFG_PrbDschg(_x)			((_x) << 26)

#define EXYNOS_USB3_ADPCTL		0xCC24
#define EXYNOS_USB3_ADPCTL_EnaPrb			(1 << 28)
#define EXYNOS_USB3_ADPCTL_EnaSns			(1 << 27)
#define EXYNOS_USB3_ADPCTL_ADPEn			(1 << 26)
#define EXYNOS_USB3_ADPCTL_ADPRes			(1 << 25)
#define EXYNOS_USB3_ADPCTL_WB				(1 << 24)

#define EXYNOS_USB3_ADPEVT		0xCC28
#define EXYNOS_USB3_ADPEVT_AdpPrbEvnt			(1 << 28)
#define EXYNOS_USB3_ADPEVT_AdpSnsEvnt			(1 << 27)
#define EXYNOS_USB3_ADPEVT_AdpTmoutEvnt			(1 << 26)
#define EXYNOS_USB3_ADPEVT_ADPRstCmpltEvnt		(1 << 25)
#define EXYNOS_USB3_ADPEVT_RTIM_MASK			(0x7ff << 0)
#define EXYNOS_USB3_ADPEVT_RTIM_SHIFT			0
#define EXYNOS_USB3_ADPEVT_RTIM(_x)			((_x) << 0)

#define EXYNOS_USB3_ADPEVTEN		0xCC2C
#define EXYNOS_USB3_ADPEVTEN_AdpPrbEvntEn		(1 << 28)
#define EXYNOS_USB3_ADPEVTEN_AdpSnsEvntEn		(1 << 27)
#define EXYNOS_USB3_ADPEVTEN_AdpTmoutEvntEn		(1 << 26)
#define EXYNOS_USB3_ADPEVTEN_ADPRstCmpltEvntEn		(1 << 25)

#define EXYNOS_USB3_BCFG		0xCC30
#define EXYNOS_USB3_BCFG_IDDIG_SEL			(1 << 1)
#define EXYNOS_USB3_BCFG_CHIRP_EN			(1 << 0)

#define EXYNOS_USB3_BCEVT		0xCC38
#define EXYNOS_USB3_BCEVT_MV_ChngEvnt			(1 << 24)
#define EXYNOS_USB3_BCEVT_MultValIdBc_MASK		(0x1f << 0)
#define EXYNOS_USB3_BCEVT_MultValIdBc_SHIFT		0
#define EXYNOS_USB3_BCEVT_MultValIdBc(_x)		((_x) << 0)

#define EXYNOS_USB3_BCEVTEN		0xCC3C
#define EXYNOS_USB3_BCEVTEN_MV_ChngEvntEn		(1 << 24)

#endif /* __LINUX_USB_EXYNOS_USB3_DRD_H */