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
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
|
/** @file
Register names for PCH USB devices
Conventions:
- Prefixes:
Definitions beginning with "R_" are registers
Definitions beginning with "B_" are bits within registers
Definitions beginning with "V_" are meaningful values of bits within the registers
Definitions beginning with "S_" are register sizes
Definitions beginning with "N_" are the bit position
- In general, PCH registers are denoted by "_PCH_" in register names
- Registers / bits that are different between PCH generations are denoted by
"_PCH_<generation_name>_" in register/bit names. e.g., "_PCH_LPT_"
- Registers / bits that are different between SKUs are denoted by "_<SKU_name>"
at the end of the register/bit names
- Registers / bits of new devices introduced in a PCH generation will be just named
as "_PCH_" without <generation_name> inserted.
@copyright
Copyright (c) 1999 - 2013 Intel Corporation. All rights reserved
This software and associated documentation (if any) is furnished
under a license and may only be used or copied in accordance
with the terms of the license. Except as permitted by such
license, no part of this software or documentation may be
reproduced, stored in a retrieval system, or transmitted in any
form or by any means without the express written consent of
Intel Corporation.
This file contains an 'Intel Peripheral Driver' and uniquely
identified as "Intel Reference Module" and is
licensed for Intel CPUs and chipsets under the terms of your
license agreement with Intel or your vendor. This file may
be modified by the user, subject to additional terms of the
license agreement
**/
#ifndef _PCH_REGS_USB_H_
#define _PCH_REGS_USB_H_
//
// USB Definitions
//
#define LPTH_USB_MAX_PHYSICAL_PORTS 14 ///< Max Physical Connector EHCI + XHCI, not counting virtual ports like USB-R.
#define LPTH_EHCI_MAX_CONTROLLERS 2 ///< Max EHCI Controllers
#define LPTH_EHCI_MAX_PORTS 14 ///< Counting ports behind RMHs 8 from EHCI-1 and 6 from EHCI-2, not counting EHCI USB-R virtual ports.
#define LPTH_XHCI_MAX_USB2_PORTS 15 ///< 14 High Speed lanes + Including one port reserved for USBr
#define LPTH_XHCI_MAX_USB3_PORTS 6 ///< 6 Super Speed lanes
#define LPTLP_USB_MAX_PHYSICAL_PORTS 8 ///< Max Physical Connector EHCI + XHCI, not counting virtual ports like USB-R.
#define LPTLP_EHCI_MAX_PORTS 8 ///< Counting ports behind RMHs 8 from EHCI-1 and 6 from EHCI-2, not counting EHCI USB-R virtual ports.
#define LPTLP_EHCI_MAX_CONTROLLERS 1 ///< Max EHCI Controllers
#define LPTLP_XHCI_MAX_USB2_PORTS 9 ///< 8 High Speed lanes + Including one port reserved for USBr
#define LPTLP_XHCI_MAX_USB3_PORTS 4 ///< 4 Super Speed lanes
#define R_PCH_USB_VENDOR_ID 0x00
#define V_PCH_USB_VENDOR_ID V_PCH_INTEL_VENDOR_ID
#define R_PCH_USB_DEVICE_ID 0x02
#define V_PCH_LPTH_USB_DEVICE_ID_EHCI_1 0x8C26 ///< LPT EHCI#1
#define V_PCH_LPTH_USB_DEVICE_ID_EHCI_2 0x8C2D ///< LPT EHCI#2
#define V_PCH_LPTH_USB_DEVICE_ID_XHCI_1 0x8C31 ///< LPT XHCI#1
#define V_PCH_LPTLP_USB_DEVICE_ID_EHCI_1 0x9C26 ///< LPTLP EHCI#1
#define V_PCH_LPTLP_USB_DEVICE_ID_XHCI_1 0x9C31 ///< LPTLP XHCI#1
//
// USB2 (EHCI) related definitions
//
typedef enum {
PchEhci1 = 0,
PchEhci2,
PchEhciControllerMax
} PCH_USB20_CONTROLLER_TYPE;
#define PCI_DEVICE_NUMBER_PCH_USB 29
#define PCI_FUNCTION_NUMBER_PCH_EHCI 0
#define PCI_DEVICE_NUMBER_PCH_USB_EXT 26
#define PCI_FUNCTION_NUMBER_PCH_EHCI2 0
//
// EHCI PCI Config Space registers
//
#define R_PCH_EHCI_COMMAND_REGISTER 0x04
#define B_PCH_EHCI_COMMAND_INTR_DIS BIT10
#define B_PCH_EHCI_COMMAND_FBE BIT9
#define B_PCH_EHCI_COMMAND_SERR_EN BIT8
#define B_PCH_EHCI_COMMAND_WCC BIT7
#define B_PCH_EHCI_COMMAND_PER BIT6
#define B_PCH_EHCI_COMMAND_VPS BIT5
#define B_PCH_EHCI_COMMAND_PMWE BIT4
#define B_PCH_EHCI_COMMAND_SCE BIT3
#define B_PCH_EHCI_COMMAND_BME BIT2
#define B_PCH_EHCI_COMMAND_MSE BIT1
#define B_PCH_EHCI_COMMAND_IOSE BIT0
#define R_PCH_EHCI_PCISTS 0x06
#define B_PCH_EHCI_PCISTS_DPE BIT15
#define B_PCH_EHCI_PCISTS_SSE BIT14
#define B_PCH_EHCI_PCISTS_RMA BIT13
#define B_PCH_EHCI_PCISTS_RTA BIT12
#define B_PCH_EHCI_PCISTS_STA BIT11
#define B_PCH_EHCI_PCISTS_DEV_STS (BIT10 | BIT9)
#define B_PCH_EHCI_PCISTS_DPED BIT8
#define B_PCH_EHCI_PCISTS_FB2BC BIT7
#define B_PCH_EHCI_PCISTS_UDF BIT6
#define B_PCH_EHCI_PCISTS_66MHZ_CAP BIT5
#define B_PCH_EHCI_PCISTS_CAP_LST BIT4
#define B_PCH_EHCI_PCISTS_INTR_STS BIT3
#define R_PCH_EHCI_RID 0x08
#define B_PCH_EHCI_RID 0xFF
#define R_PCH_EHCI_PI 0x09
#define B_PCH_EHCI_PI 0xFF
#define R_PCH_EHCI_SCC 0x0A
#define B_PCH_EHCI_SCC 0xFF
#define R_PCH_EHCI_BCC 0x0B
#define B_PCH_EHCI_BCC 0xFF
#define R_PCH_EHCI_MLT 0x0D
#define B_PCH_EHCI_MLT 0xFF
#define R_PCH_EHCI_HEADTYPE 0x0E
#define B_PCH_EHCI_HEADTYPE 0xFF
#define R_PCH_EHCI_MEM_BASE 0x10
#define V_PCH_EHCI_MEM_LENGTH 0x400
#define N_PCH_EHCI_MEM_ALIGN 10
#define R_PCH_EHCI_SVID 0x2C
#define B_PCH_EHCI_SVID 0xFFFF
#define R_PCH_EHCI_SID 0x2E
#define B_PCH_EHCI_SID 0xFFFF
#define R_PCH_EHCI_CAP_PTR 0x34
#define B_PCH_EHCI_CAP_PTR 0xFF
#define R_PCH_EHCI_INT_LN 0x3C
#define B_PCH_EHCI_INT_LN 0xFF
#define R_PCH_EHCI_INT_PN 0x3D
#define B_PCH_EHCI_INT_PN 0xFF
#define R_PCH_EHCI_IHFCLK 0x44
#define B_PCH_EHCI_IHFCLK 0xFFFFFFFF
#define R_PCH_EHCI_IHFCLKC 0x48
#define B_PCH_EHCI_IHFCLKC 0xFFFFFFFF
#define R_PCH_EHCI_PWR_CAPID 0x50
#define B_PCH_EHCI_PWR_CAPID 0xFF
#define R_PCH_EHCI_NXT_PTR1 0x51
#define B_PCH_EHCI_NXT_PTR1 0xFF
#define R_PCH_EHCI_PWR_CAP 0x52
#define B_PCH_EHCI_PWR_CAP_PME_SUP 0xF800
#define B_PCH_EHCI_PWR_CAP_D2_SUP BIT10
#define B_PCH_EHCI_PWR_CAP_D1_SUP BIT9
#define B_PCH_EHCI_PWR_CAP_AUX_CUR (BIT8 | BIT7 | BIT6)
#define B_PCH_EHCI_PWR_CAP_DSI BIT5
#define B_PCH_EHCI_PWR_CAP_PME_CLK BIT3
#define B_PCH_EHCI_PWR_CAP_VER (BIT2 | BIT1 | BIT0)
#define R_PCH_EHCI_PWR_CNTL_STS 0x54
#define B_PCH_EHCI_PWR_CNTL_STS_PME_STS BIT15
#define B_PCH_EHCI_PWR_CNTL_STS_DATASCL (BIT14 | BIT13)
#define B_PCH_EHCI_PWR_CNTL_STS_DATASEL (BIT12 | BIT11 | BIT10 | BIT9)
#define B_PCH_EHCI_PWR_CNTL_STS_PME_EN BIT8
#define B_PCH_EHCI_PWR_CNTL_STS_NO_SOFT_RESET BIT3
#define B_PCH_EHCI_PWR_CNTL_STS_PWR_STS (BIT1 | BIT0)
#define V_PCH_EHCI_PWR_CNTL_STS_PWR_STS_D3 (BIT1 | BIT0)
#define R_PCH_EHCI_DBG_CAPID 0x58
#define B_PCH_EHCI_DBG_CAPID 0xFF
#define R_PCH_EHCI_NXT_PTR2 0x59
#define B_PCH_EHCI_NXT_PTR2 0xFF
#define R_PCH_EHCI_DBG_BASE 0x5A
#define B_PCH_EHCI_DBG_BASE_BAR_NUM 0xE000
#define B_PCH_EHCI_DBG_BASE_PORT_OFFSET 0x1FFF
#define R_PCH_EHCI_USB_RELNUM 0x60
#define B_PCH_EHCI_USB_RELNUM 0xFF
#define R_PCH_EHCI_FL_ADJ 0x61
#define B_PCH_EHCI_FL_ADJ 0x3F
#define R_PCH_EHCI_PWAKE_CAP 0x62
#define B_PCH_EHCI_PWAKE_CAP_D29_MASK 0x01FE
#define B_PCH_EHCI_PWAKE_CAP_D26_MASK 0x007E
#define B_PCH_EHCI_PWAKE_CAP_PWK_IMP BIT0
#define R_PCH_EHCI_PDO 0x64
#define B_PCH_EHCI_PDO_DIS_PORT0 BIT0
#define B_PCH_EHCI_PDO_D29_MASK 0xFF
#define B_PCH_EHCI_PDO_D26_MASK 0x3F
#define R_PCH_EHCI_RMHDEVR 0x66
#define B_PCH_EHCI_RMHDEVR_D29_MASK 0x01FE
#define B_PCH_EHCI_RMHDEVR_D26_MASK 0x007E
#define R_PCH_EHCI_LEGEXT_CAP 0x68
#define B_PCH_EHCI_LEGEXT_CAP_HCOS BIT24
#define B_PCH_EHCI_LEGEXT_CAP_HCBIOS BIT16
#define B_PCH_EHCI_LEGEXT_CAP_NEXT 0x0000FF00
#define B_PCH_EHCI_LEGEXT_CAP_CAPID 0x000000FF
#define R_PCH_EHCI_LEGEXT_CS 0x6C
#define B_PCH_EHCI_LEGEXT_CS_SMIBAR BIT31
#define B_PCH_EHCI_LEGEXT_CS_SMIPCI BIT30
#define B_PCH_EHCI_LEGEXT_CS_SMIOS BIT29
#define B_PCH_EHCI_LEGEXT_CS_SMIAA BIT21
#define B_PCH_EHCI_LEGEXT_CS_SMIHSE BIT20
#define B_PCH_EHCI_LEGEXT_CS_SMIFLR BIT19
#define B_PCH_EHCI_LEGEXT_CS_SMIPCD BIT18
#define B_PCH_EHCI_LEGEXT_CS_SMIERR BIT17
#define B_PCH_EHCI_LEGEXT_CS_SMICOMP BIT16
#define B_PCH_EHCI_LEGEXT_CS_SMIBAR_EN BIT15
#define B_PCH_EHCI_LEGEXT_CS_SMIPCI_EN BIT14
#define B_PCH_EHCI_LEGEXT_CS_SMIOS_EN BIT13
#define B_PCH_EHCI_LEGEXT_CS_SMIAA_EN BIT5
#define B_PCH_EHCI_LEGEXT_CS_SMIHSE_EN BIT4
#define B_PCH_EHCI_LEGEXT_CS_SMIFLR_EN BIT3
#define B_PCH_EHCI_LEGEXT_CS_SMIPCD_EN BIT2
#define B_PCH_EHCI_LEGEXT_CS_SMIERR_EN BIT1
#define B_PCH_EHCI_LEGEXT_CS_SMICOMP_EN BIT0
#define R_PCH_EHCI_SPCSMI 0x70
#define B_PCH_EHCI_SPCSMI_D29 0x3FC00000
#define B_PCH_EHCI_SPCSMI_D26 0x0FC00000
#define B_PCH_EHCI_SPCSMI_PMCSR BIT21
#define B_PCH_EHCI_SPCSMI_ASYNC BIT20
#define B_PCH_EHCI_SPCSMI_PERIODIC BIT19
#define B_PCH_EHCI_SPCSMI_CF BIT18
#define B_PCH_EHCI_SPCSMI_HCHALT BIT17
#define B_PCH_EHCI_SPCSMI_HCRESET BIT16
#define B_PCH_EHCI_SPCSMI_PO_EN 0x00003FC0
#define B_PCH_EHCI_SPCSMI_PMCSR_EN BIT5
#define B_PCH_EHCI_SPCSMI_ASYNC_EN BIT4
#define B_PCH_EHCI_SPCSMI_PERIODIC_EN BIT3
#define B_PCH_EHCI_SPCSMI_CF_EN BIT2
#define B_PCH_EHCI_SPCSMI_HCHALT_EN BIT1
#define B_PCH_EHCI_SPCSMI_HCRESET_EN BIT0
#define R_PCH_EHCI_OCMAP 0x74
#define R_PCH_EHCI_RMHWKCTL 0x7E
#define R_PCH_EHCI_ACCESS_CNTL 0x80
#define B_PCH_EHCI_ACCESS_CNTL_ENABLE BIT0
#define V_PCH_EHCI_ACCESS_CNTL_ENABLE 0x01
#define R_PCH_EHCI_FLR_CID 0x98
#define B_PCH_EHCI_FLR_CID 0xFF
#define V_PCH_EHCI_FLR_CID_13 0x13
#define V_PCH_EHCI_FLR_CID_09 0x09
#define R_PCH_EHCI_FLR_NEXT 0x99
#define B_PCH_EHCI_FLR_NEXT 0xFF
#define R_PCH_EHCI_FLR_CLV 0x9A
#define B_PCH_EHCI_FLR_CLV_CAP_SSEL0 BIT9
#define B_PCH_EHCI_FLR_CLV_TXP_SSEL0 BIT8
#define B_PCH_EHCI_FLR_CLV_VSCID_SSEL1 0xF000
#define B_PCH_EHCI_FLR_CLV_CAPVER_SSEL1 0x0F00
#define B_PCH_EHCI_FLR_CLV_LNG 0x00FF
#define R_PCH_EHCI_FLR_CTRL 0x9C
#define B_PCH_EHCI_FLR_CTRL_INITFLR BIT0
#define R_PCH_EHCI_FLR_STS 0x9D
#define B_PCH_EHCI_FLR_STS_TXP BIT0
//
// EHCI MMIO registers
//
#define R_PCH_EHCI_HCSPARAMS 0x04
#define N_PCH_EHCI_HCSPARAMS_DP_N 20
#define N_PCH_EHCI_HCSPARAMS_N_CC 12
#define N_PCH_EHCI_HCSPARAMS_N_PCC 8
#define N_PCH_EHCI_HCSPARAMS_N_PORTS 0
#define R_PCH_EHCI_USB2CMD 0x20
#define B_PCH_EHCI_USB2CMD_ASE BIT5
#define B_PCH_EHCI_USB2CMD_PSE BIT4
#define B_PCH_EHCI_USB2CMD_HCRESET BIT1
#define B_PCH_EHCI_USB2CMD_RS BIT0
#define R_PCH_EHCI_USB2STS 0x24
#define B_PCH_EHCI_USB2STS_HCHALTED BIT12
#define R_PCH_EHCI_CONFIGFLAG 0x60
#define R_PCH_EHCI_PORTSC0 0x64
#define R_PCH_EHCI_PORTSC0_SUSPEND BIT7
#define R_PCH_EHCI_PORTSC0_PORT_EN_DIS BIT2
#define B_PCH_EHCI_PORTSC0_CHANGE_ENABLE_MASK (0x2A | R_PCH_EHCI_PORTSC0_PORT_EN_DIS) ///< Mask all change bits and port enabled
#define B_PCH_EHCI_PORTSC0_RESET BIT8
//
// USB3 (XHCI) related definitions
//
#define PCI_DEVICE_NUMBER_PCH_XHCI 20
#define PCI_FUNCTION_NUMBER_PCH_XHCI 0
//
// XHCI PCI Config Space registers
//
#define R_PCH_XHCI_COMMAND_REGISTER 0x04
#define B_PCH_XHCI_COMMAND_BME BIT2
#define B_PCH_XHCI_COMMAND_MSE BIT1
#define R_PCH_XHCI_MEM_BASE 0x10
#define V_PCH_XHCI_MEM_LENGTH 0x3000
#define N_PCH_XHCI_MEM_ALIGN 16
#define R_PCH_XHCI_SVID 0x2C
#define B_PCH_XHCI_SVID 0xFFFF
#define R_PCH_XHCI_SID 0x2E
#define B_PCH_XHCI_SID 0xFFFF
#define R_PCH_XHCI_XHCC1 0x40
#define B_PCH_XHCI_XHCC1_ACCTRL BIT31
#define B_PCH_XHCI_XHCC1_RMTASERR BIT24
#define B_PCH_XHCI_XHCC1_URD BIT23
#define B_PCH_XHCI_XHCC1_URRE BIT22
#define B_PCH_XHCI_XHCC1_IIL1E (BIT21 | BIT20 | BIT19)
#define V_PCH_XHCI_XHCC1_IIL1E_DIS 0
#define V_PCH_XHCI_XHCC1_IIL1E_32 (BIT19)
#define V_PCH_XHCI_XHCC1_IIL1E_64 (BIT20)
#define V_PCH_XHCI_XHCC1_IIL1E_128 (BIT20 | BIT19)
#define V_PCH_XHCI_XHCC1_IIL1E_256 (BIT21)
#define V_PCH_XHCI_XHCC1_IIL1E_512 (BIT21 | BIT19)
#define V_PCH_XHCI_XHCC1_IIL1E_1024 (BIT21 | BIT20)
#define V_PCH_XHCI_XHCC1_IIL1E_131072 (BIT21 | BIT20 | BIT19)
#define B_PCH_XHCI_XHCC1_XHCIL1E BIT18
#define B_PCH_XHCI_XHCC1_D3IL1E BIT17
#define B_PCH_XHCI_XHCC1_UNPPA (BIT16 | BIT15 | BIT14 | BIT13 | BIT12)
#define B_PCH_XHCI_XHCC1_SWAXHCI BIT11
#define B_PCH_XHCI_XHCC1_L23HRAWC (BIT10 | BIT9 | BIT8)
#define B_PCH_XHCI_XHCC1_UTAGCP (BIT7 | BIT6)
#define B_PCH_XHCI_XHCC1_UDAGCNP (BIT5 | BIT4)
#define B_PCH_XHCI_XHCC1_UDAGCCP (BIT3 | BIT2)
#define B_PCH_XHCI_XHCC1_UDAGC (BIT1 | BIT0)
#define R_PCH_XHCI_XHCC2 0x44
#define B_PCH_XHCI_XHCC2_OCCFDONE BIT31
#define B_PCH_XHCI_XHCC2_XHCUPRDROE BIT11
#define B_PCH_XHCI_XHCC2_IOSFSRAD BIT10
#define B_PCH_XHCI_XHCC2_SWACXIHB (BIT9 | BIT8)
#define B_PCH_XHCI_XHCC2_SWADMIL1IHB (BIT7 | BIT6)
#define B_PCH_XHCI_XHCC2_L1FP2CGWC (BIT5 | BIT4 | BIT3)
#define B_PCH_XHCI_XHCC2_RDREQSZCTRL (BIT2 | BIT1 | BIT0)
#define R_PCH_XHCI_XHCLKGTEN 0x50
#define B_PCH_XHCI_XHCLKGTEN_SSLSE BIT26
#define B_PCH_XHCI_XHCLKGTEN_USB2PLLSE BIT25
#define B_PCH_XHCI_XHCLKGTEN_IOSFSTCGE BIT24
#define B_PCH_XHCI_XHCLKGTEN_HSTCGE (BIT23 | BIT22 | BIT21 | BIT20)
#define B_PCH_XHCI_XHCLKGTEN_SSTCGE (BIT19 | BIT18 | BIT17 | BIT16)
#define B_PCH_XHCI_XHCLKGTEN_XHCIGEU3S BIT15
#define B_PCH_XHCI_XHCLKGTEN_XHCFTCLKSE BIT14
#define B_PCH_XHCI_XHCLKGTEN_XHCBBTCGIPISO BIT13
#define B_PCH_XHCI_XHCLKGTEN_XHCHSTCGU2NRWE BIT12
#define B_PCH_XHCI_XHCLKGTEN_XHCUSB2PLLSDLE (BIT11 | BIT10)
#define B_PCH_XHCI_XHCLKGTEN_HSPLLSUE (BIT9 | BIT8)
#define B_PCH_XHCI_XHCLKGTEN_SSPLLSUE (BIT7 | BIT6 | BIT5)
#define B_PCH_XHCI_XHCLKGTEN_XHCBLCGE BIT4
#define B_PCH_XHCI_XHCLKGTEN_HSLTCGE BIT3
#define B_PCH_XHCI_XHCLKGTEN_SSLTCGE BIT2
#define B_PCH_XHCI_XHCLKGTEN_IOSFBTCGE BIT1
#define B_PCH_XHCI_XHCLKGTEN_IOSFGBLCGE BIT0
#define R_PCH_XHCI_USB_RELNUM 0x60
#define B_PCH_XHCI_USB_RELNUM 0xFF
#define R_PCH_XHCI_FL_ADJ 0x61
#define B_PCH_XHCI_FL_ADJ 0x3F
#define R_PCH_XHCI_PWR_CAPID 0x70
#define B_PCH_XHCI_PWR_CAPID 0xFF
#define R_PCH_XHCI_NXT_PTR1 0x71
#define B_PCH_XHCI_NXT_PTR1 0xFF
#define R_PCH_XHCI_PWR_CAP 0x72
#define B_PCH_XHCI_PWR_CAP_PME_SUP 0xF800
#define B_PCH_XHCI_PWR_CAP_D2_SUP BIT10
#define B_PCH_XHCI_PWR_CAP_D1_SUP BIT9
#define B_PCH_XHCI_PWR_CAP_AUX_CUR (BIT8 | BIT7 | BIT6)
#define B_PCH_XHCI_PWR_CAP_DSI BIT5
#define B_PCH_XHCI_PWR_CAP_PME_CLK BIT3
#define B_PCH_XHCI_PWR_CAP_VER (BIT2 | BIT1 | BIT0)
#define R_PCH_XHCI_PWR_CNTL_STS 0x74
#define B_PCH_XHCI_PWR_CNTL_STS_PME_STS BIT15
#define B_PCH_XHCI_PWR_CNTL_STS_DATASCL (BIT14 | BIT13)
#define B_PCH_XHCI_PWR_CNTL_STS_DATASEL (BIT12 | BIT11 | BIT10 | BIT9)
#define B_PCH_XHCI_PWR_CNTL_STS_PME_EN BIT8
#define B_PCH_XHCI_PWR_CNTL_STS_PWR_STS (BIT1 | BIT0)
#define V_PCH_XHCI_PWR_CNTL_STS_PWR_STS_D3 (BIT1 | BIT0)
#define R_PCH_XHCI_U2OCM1 0xC0
#define B_PCH_XHCI_U2OCM1_OC4_MAPPING 0xFF000000
#define B_PCH_XHCI_U2OCM1_OC3_MAPPING 0x00FF0000
#define B_PCH_XHCI_U2OCM1_OC2_MAPPING 0x0000FF00
#define B_PCH_XHCI_U2OCM1_OC1_MAPPING 0x000000FF
#define R_PCH_XHCI_U2OCM2 0xC4
#define B_PCH_XHCI_U2OCM2_OC8_MAPPING 0x3F000000
#define B_PCH_XHCI_U2OCM2_OC7_MAPPING 0x003F0000
#define B_PCH_XHCI_U2OCM2_OC6_MAPPING 0x00003F00
#define B_PCH_XHCI_U2OCM2_OC5_MAPPING 0x0000003F
#define R_PCH_XHCI_U3OCM1 0xC8
#define B_PCH_XHCI_U3OCM1_OC4_MAPPING 0x3F000000
#define B_PCH_XHCI_U3OCM1_OC3_MAPPING 0x003F0000
#define B_PCH_XHCI_U3OCM1_OC2_MAPPING 0x00003F00
#define B_PCH_XHCI_U3OCM1_OC1_MAPPING 0x0000003F
#define R_PCH_XHCI_U3OCM2 0xCC
#define B_PCH_XHCI_U3OCM2_OC8_MAPPING 0x3F000000
#define B_PCH_XHCI_U3OCM2_OC7_MAPPING 0x003F0000
#define B_PCH_XHCI_U3OCM2_OC6_MAPPING 0x00003F00
#define B_PCH_XHCI_U3OCM2_OC5_MAPPING 0x0000003F
#define R_PCH_XHCI_USB2PR 0xD0
#define B_PCH_XHCI_USB2PR_USB2HCSEL 0x7FFF
#define R_PCH_XHCI_USB2PRM 0xD4
#define B_PCH_XHCI_USB2PR_USB2HCSELM 0x7FFF
#define R_PCH_XHCI_USB3PR 0xD8
#define B_PCH_XHCI_USB3PR_USB3SSEN 0x3F
#define R_PCH_XHCI_USB3PRM 0xDC
#define B_PCH_XHCI_USB3PR_USB3SSENM 0x3F
#define R_PCH_XHCI_FUS 0xE0
#define B_PCH_XHCI_FUS_USBR (BIT5)
#define V_PCH_XHCI_FUS_USBR_EN 0
#define V_PCH_XHCI_FUS_USBR_DIS (BIT5)
#define B_PCH_XHCI_FUS_SSPRTCNT (BIT4 | BIT3)
#define V_PCH_XHCI_FUS_SSPRTCNT_00B 0
#define V_PCH_XHCI_FUS_SSPRTCNT_01B (BIT3)
#define V_PCH_XHCI_FUS_SSPRTCNT_10B (BIT4)
#define V_PCH_XHCI_FUS_SSPRTCNT_11B (BIT4 | BIT3)
#define B_PCH_XHCI_FUS_HSPRTCNT (BIT2 | BIT1)
#define V_PCH_XHCI_FUS_HSPRTCNT_00B 0
#define V_PCH_XHCI_FUS_HSPRTCNT_01B (BIT1)
#define V_PCH_XHCI_FUS_HSPRTCNT_10B (BIT2)
#define V_PCH_XHCI_FUS_HSPRTCNT_11B (BIT2 | BIT1)
#define V_PCH_H_XHCI_FUS_SSPRTCNT_00B_CNT 6
#define V_PCH_H_XHCI_FUS_SSPRTCNT_01B_CNT 4
#define V_PCH_H_XHCI_FUS_SSPRTCNT_10B_CNT 2
#define V_PCH_H_XHCI_FUS_SSPRTCNT_11B_CNT 0
#define V_PCH_H_XHCI_FUS_SSPRTCNT_00B_MASK 0x3F
#define V_PCH_H_XHCI_FUS_SSPRTCNT_01B_MASK 0x0F
#define V_PCH_H_XHCI_FUS_SSPRTCNT_10B_MASK 0x03
#define V_PCH_H_XHCI_FUS_SSPRTCNT_11B_MASK 0x00
#define V_PCH_H_XHCI_FUS_HSPRTCNT_00B_CNT 14
#define V_PCH_H_XHCI_FUS_HSPRTCNT_01B_CNT 12
#define V_PCH_H_XHCI_FUS_HSPRTCNT_10B_CNT 10
#define V_PCH_H_XHCI_FUS_HSPRTCNT_11B_CNT 8
#define V_PCH_H_XHCI_FUS_HSPRTCNT_00B_MASK 0x3FFF
#define V_PCH_H_XHCI_FUS_HSPRTCNT_01B_MASK 0x3FFF
#define V_PCH_H_XHCI_FUS_HSPRTCNT_10B_MASK 0x0FFF
#define V_PCH_H_XHCI_FUS_HSPRTCNT_11B_MASK 0x00FF
#define V_PCH_LP_XHCI_FIXED_SSPRTCNT 4
#define V_PCH_LP_XHCI_FIXED_SSPRTCNT_MASK 0x0F
#define V_PCH_LP_XHCI_FIXED_HSPRTCNT 8
#define V_PCH_LP_XHCI_FIXED_HSPRTCNT_MASK 0x00FF
#define R_PCH_XHCI_USB2PDO 0xE4
#define B_PCH_XHCI_USB2PDO_MASK 0x7FFF
#define B_PCH_XHCI_USB2PDO_DIS_PORT0 BIT0
#define R_PCH_XHCI_USB3PDO 0xE8
#define B_PCH_XHCI_USB3PDO_MASK 0x3F
#define B_PCH_XHCI_USB3PDO_DIS_PORT0 BIT0
//
// xHCI MMIO registers
//
//
// 0x00 - 0x1F - Capability Registers
//
#define R_PCH_XHCI_CAPLENGTH 0x00
#define R_PCH_XHCI_HCIVERSION 0x02
#define R_PCH_XHCI_HCSPARAMS1 0x04
#define R_PCH_XHCI_HCSPARAMS2 0x08
#define R_PCH_XHCI_HCSPARAMS3 0x0C
#define B_PCH_XHCI_HCSPARAMS3_U2DEL 0xFFFF0000
#define B_PCH_XHCI_HCSPARAMS3_U1DEL 0x0000FFFF
#define R_PCH_XHCI_HCCPARAMS 0x10
#define B_PCH_XHCI_HCCPARAMS_LHRC BIT5
#define B_PCH_XHCI_HCCPARAMS_MAXPSASIZE 0xF000
#define R_PCH_XHCI_DBOFF 0x14
#define R_PCH_XHCI_RTSOFF 0x18
//
// 0x80 - 0xBF - Operational Registers
//
#define R_PCH_XHCI_USBCMD 0x80
#define B_PCH_XHCI_USBCMD_RS BIT0 ///< Run/Stop
#define B_PCH_XHCI_USBCMD_RST BIT1 ///< HCRST
#define R_PCH_XHCI_USBSTS 0x84
//
// 0x480 - 0x5CF - Port Status and Control Registers
//
#define R_PCH_XHCI_PORTSC01USB2 0x480
#define R_PCH_XHCI_PORTSC02USB2 0x490
#define R_PCH_XHCI_PORTSC03USB2 0x4A0
#define R_PCH_XHCI_PORTSC04USB2 0x4B0
#define R_PCH_XHCI_PORTSC05USB2 0x4C0
#define R_PCH_XHCI_PORTSC06USB2 0x4D0
#define R_PCH_XHCI_PORTSC07USB2 0x4E0
#define R_PCH_XHCI_PORTSC08USB2 0x4F0
#define R_PCH_XHCI_PORTSC09USB2 0x500
#define R_PCH_H_XHCI_PORTSC10USB2 0x510
#define R_PCH_H_XHCI_PORTSC11USB2 0x520
#define R_PCH_H_XHCI_PORTSC12USB2 0x530
#define R_PCH_H_XHCI_PORTSC13USB2 0x540
#define R_PCH_H_XHCI_PORTSC14USB2 0x550
#define R_PCH_H_XHCI_PORTSC15USB2 0x560
#define B_PCH_XHCI_PORTSCXUSB2_WPR BIT31 ///< Warm Port Reset
#define B_PCH_XHCI_PORTSCXUSB2_CEC BIT23 ///< Port Config Error Change
#define B_PCH_XHCI_PORTSCXUSB2_PLC BIT22 ///< Port Link State Change
#define B_PCH_XHCI_PORTSCXUSB2_PRC BIT21 ///< Port Reset Change
#define B_PCH_XHCI_PORTSCXUSB2_OCC BIT20 ///< Over-current Change
#define B_PCH_XHCI_PORTSCXUSB2_WRC BIT19 ///< Warm Port Reset Change
#define B_PCH_XHCI_PORTSCXUSB2_PEC BIT18 ///< Port Enabled Disabled Change
#define B_PCH_XHCI_PORTSCXUSB2_CSC BIT17 ///< Connect Status Change
#define B_PCH_XHCI_PORTSCXUSB2_LWS BIT16 ///< Port Link State Write Strobe
#define B_PCH_XHCI_USB2_U3_EXIT (BIT5 | BIT6 | BIT7 | BIT8)
#define B_PCH_XHCI_USB2_U0_MASK (BIT5 | BIT6 | BIT7 | BIT8)
#define B_PCH_XHCI_PORTSCXUSB2_PP BIT9
#define B_PCH_XHCI_PORTSCXUSB2_PR BIT4 ///< Port Reset
#define B_PCH_XHCI_PORTSCXUSB2_PED BIT1 ///< Port Enable/Disabled
#define B_PCH_XHCI_PORTSCXUSB2_CCS BIT0 ///< Current Connect Status
#define B_PCH_XHCI_PORT_CHANGE_ENABLE_MASK (B_PCH_XHCI_PORTSCXUSB2_CEC | B_PCH_XHCI_PORTSCXUSB2_PLC | B_PCH_XHCI_PORTSCXUSB2_PRC | B_PCH_XHCI_PORTSCXUSB2_OCC | B_PCH_XHCI_PORTSCXUSB2_WRC | B_PCH_XHCI_PORTSCXUSB2_PEC | B_PCH_XHCI_PORTSCXUSB2_CSC | B_PCH_XHCI_PORTSCXUSB2_PED)
#define R_PCH_H_XHCI_PORTSC1USB3 0x570
#define R_PCH_H_XHCI_PORTSC2USB3 0x580
#define R_PCH_H_XHCI_PORTSC3USB3 0x590
#define R_PCH_H_XHCI_PORTSC4USB3 0x5A0
#define R_PCH_H_XHCI_PORTSC5USB3 0x5B0
#define R_PCH_H_XHCI_PORTSC6USB3 0x5C0
#define R_PCH_LP_XHCI_PORTSC1USB3 0x510
#define R_PCH_LP_XHCI_PORTSC2USB3 0x520
#define R_PCH_LP_XHCI_PORTSC3USB3 0x530
#define R_PCH_LP_XHCI_PORTSC4USB3 0x540
#define B_PCH_XHCI_PORTSCXUSB3_WPR BIT31 ///< Warm Port Reset
#define B_PCH_XHCI_PORTSCXUSB3_CEC BIT23 ///< Port Config Error Change
#define B_PCH_XHCI_PORTSCXUSB3_PLC BIT22 ///< Port Link State Change
#define B_PCH_XHCI_PORTSCXUSB3_PRC BIT21 ///< Port Reset Change
#define B_PCH_XHCI_PORTSCXUSB3_OCC BIT20 ///< Over-current Change
#define B_PCH_XHCI_PORTSCXUSB3_WRC BIT19 ///< Warm Port Reset Change
#define B_PCH_XHCI_PORTSCXUSB3_PEC BIT18 ///< Port Enabled Disabled Change
#define B_PCH_XHCI_PORTSCXUSB3_CSC BIT17 ///< Connect Status Change
#define B_PCH_XHCI_PORTSCXUSB3_LWS BIT16 ///< Port Link State Write Strobe //AMI_OVERRITE
#define B_PCH_XHCI_PORTSCXUSB3_PLS (BIT8 | BIT7 | BIT6 | BIT5) ///< Port Link State
#define V_PCH_XHCI_PORTSCXUSB3_PLS_POLLING 0x000000E0 ///< Link is in the Polling State
#define V_PCH_XHCI_PORTSCXUSB3_PLS_RXDETECT 0x000000A0 ///< Link is in the RxDetect State
#define B_PCH_XHCI_PORTSCXUSB3_PP BIT9 ///< Port Power //AMI_OVERRITE
#define B_PCH_XHCI_PORTSCXUSB3_PR BIT4 ///< Port Reset
#define B_PCH_XHCI_PORTSCXUSB3_PED BIT1 ///< Port Enable/Disabled
#define B_PCH_XHCI_PORTSCXUSB3_CHANGE_ENABLE_MASK (B_PCH_XHCI_PORTSCXUSB3_CEC | B_PCH_XHCI_PORTSCXUSB3_PLC | B_PCH_XHCI_PORTSCXUSB3_PRC | B_PCH_XHCI_PORTSCXUSB3_OCC | B_PCH_XHCI_PORTSCXUSB3_WRC | B_PCH_XHCI_PORTSCXUSB3_PEC | B_PCH_XHCI_PORTSCXUSB3_CSC | B_PCH_XHCI_PORTSCXUSB3_PED)
//
// 0x2000 - 0x21FF - Runtime Registers
// 0x3000 - 0x307F - Doorbell Registers
//
//
// 0x8000 - 0x833F - Extended Capabilities Registers
//
#define R_PCH_XHCI_MMIO_ECR_8058 0x8058
#define B_PCH_XHCI_MMIO_ECR_8058_BIT8 BIT8 ///< Set 0
#define R_PCH_XHCI_MMIO_ECR_8090 0x8090
#define B_PCH_XHCI_MMIO_ECR_8090_BIT14 BIT14 ///< Set 1
#define B_PCH_XHCI_MMIO_ECR_8090_BIT8 BIT8 ///< Set 1
#define R_PCH_XHCI_MMIO_ECR_8094 0x8094
#define B_PCH_XHCI_MMIO_ECR_8094_BIT23 BIT23 ///< Set 1
#define R_PCH_XHCI_MMIO_ECR_80E0 0x80E0
#define B_PCH_XHCI_MMIO_ECR_80E0_BIT9 BIT9 ///< Set 1
#define B_PCH_XHCI_MMIO_ECR_80E0_BIT6 BIT6 ///< Set 1
#define R_PCH_XHCI_MMIO_ECR_80EC 0x80EC
#define B_PCH_XHCI_MMIO_ECR_80EC_BIT_14_12 0x7000 ///< Set 6
#define B_PCH_XHCI_MMIO_ECR_80EC_BIT_11_9 0x0E00 ///< Set 6
#define R_PCH_XHCI_MMIO_ECR_8110 0x8110
#define B_PCH_XHCI_MMIO_ECR_8110_BIT2 BIT2 ///< Set 0
#endif
|