summaryrefslogtreecommitdiff
path: root/Silicon/Intel/LewisburgPkg/Include/Register/PchRegsGpio.h
blob: 24b78d0907c09084a821437d5976c9483e28297e (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
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
/** @file

Copyright (c) 2018, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials are licensed and made available under
the terms and conditions of the BSD License that accompanies this distribution.
The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php.

THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.

**/

#ifndef _PCH_REGS_GPIO_H_
#define _PCH_REGS_GPIO_H_

#define V_PCH_GPIO_GPP_A_PAD_MAX            24
#define V_PCH_GPIO_GPP_B_PAD_MAX            24
#define V_PCH_GPIO_GPP_C_PAD_MAX            24
#define V_PCH_GPIO_GPP_D_PAD_MAX            24
#define V_PCH_LP_GPIO_GPP_E_PAD_MAX         24
#define V_PCH_H_GPIO_GPP_E_PAD_MAX          13
#define V_PCH_GPIO_GPP_F_PAD_MAX            24
#define V_PCH_LP_GPIO_GPP_G_PAD_MAX         8
#define V_PCH_H_GPIO_GPP_G_PAD_MAX          24
#define V_PCH_H_GPIO_GPP_H_PAD_MAX          24
#define V_PCH_H_GPIO_GPP_J_PAD_MAX          24
#define V_PCH_H_GPIO_GPP_K_PAD_MAX          11
#define V_PCH_H_GPIO_GPP_L_PAD_MAX          20
#define V_PCH_H_GPIO_GPP_I_PAD_MAX          11

#define V_PCH_GPIO_GPD_PAD_MAX              12

#define V_PCH_GPIO_GROUP_MAX                13
#define V_PCH_H_GPIO_GROUP_MAX              V_PCH_GPIO_GROUP_MAX
#define V_PCH_LP_GPIO_GROUP_MAX             8
#define V_PCH_GPIO_NUM_SUPPORTED_GPIS       261
#define S_PCH_GPIO_GP_SMI_EN                4
#define S_PCH_GPIO_GP_SMI_STS               4

///
/// Groups mapped to 2-tier General Purpose Event will all be under
/// one master GPE_111 (0x6F)
///
#define PCH_GPIO_2_TIER_MASTER_GPE_NUMBER  0x6F


//
// GPIO Common Private Configuration Registers
//
#define R_PCH_PCR_GPIO_REV_ID               0x00
#define R_PCH_PCR_GPIO_CAP_LIST             0x04
#define R_PCH_PCR_GPIO_FAMBAR               0x08
#define R_PCH_PCR_GPIO_PADBAR               0x0C
#define B_PCH_PCR_GPIO_PADBAR               0x0000FFFF
#define R_PCH_PCR_GPIO_MISCCFG              0x10
#define B_PCH_PCR_GPIO_MISCCFG_GPE0_DW2     (BIT19 | BIT18 | BIT17 | BIT16)
#define N_PCH_PCR_GPIO_MISCCFG_GPE0_DW2     16
#define B_PCH_PCR_GPIO_MISCCFG_GPE0_DW1     (BIT15 | BIT14 | BIT13 | BIT12)
#define N_PCH_PCR_GPIO_MISCCFG_GPE0_DW1     12
#define B_PCH_PCR_GPIO_MISCCFG_GPE0_DW0     (BIT11 | BIT10 | BIT9 | BIT8)
#define N_PCH_PCR_GPIO_MISCCFG_GPE0_DW0     8
#define B_PCH_PCR_GPIO_MISCCFG_IRQ_ROUTE    BIT3
#define N_PCH_PCR_GPIO_MISCCFG_IRQ_ROUTE    3
#define B_PCH_PCR_GPIO_MISCCFG_GPDPCGEN     BIT1
#define B_PCH_PCR_GPIO_MISCCFG_GPDLCGEN     BIT0
// SKL PCH-H:
#define R_PCH_H_PCR_GPIO_MISCSECCFG         0x14

//
// GPIO Community 0 Private Configuration Registers
//
// SKL PCH-LP
#define R_PCH_LP_PCR_GPIO_GPP_A_PAD_OWN        0x20
#define R_PCH_LP_PCR_GPIO_GPP_B_PAD_OWN        0x30
#define R_PCH_LP_PCR_GPIO_GPP_A_GPI_VWM_EN     0x80
#define R_PCH_LP_PCR_GPIO_GPP_B_GPI_VWM_EN     0x84
#define R_PCH_LP_PCR_GPIO_GPP_A_PADCFGLOCK     0xA0
#define R_PCH_LP_PCR_GPIO_GPP_A_PADCFGLOCKTX   0xA4
#define R_PCH_LP_PCR_GPIO_GPP_B_PADCFGLOCK     0xA8
#define R_PCH_LP_PCR_GPIO_GPP_B_PADCFGLOCKTX   0xAC
// SKX Server PCH
#define R_PCH_H_PCR_GPIO_GPP_A_PAD_OWN        0x20
#define R_PCH_H_PCR_GPIO_GPP_B_PAD_OWN        0x2C
#define R_PCH_H_PCR_GPIO_GPP_F_PAD_OWN        0x38
#define R_PCH_H_PCR_GPIO_GPP_A_GPI_VWM_EN     0x50
#define R_PCH_H_PCR_GPIO_GPP_B_GPI_VWM_EN     0x54
#define R_PCH_H_PCR_GPIO_GPP_F_GPI_VWM_EN     0x58
#define R_PCH_H_PCR_GPIO_GPP_A_PADCFGLOCK     0x60
#define R_PCH_H_PCR_GPIO_GPP_A_PADCFGLOCKTX   0x64
#define R_PCH_H_PCR_GPIO_GPP_B_PADCFGLOCK     0x68
#define R_PCH_H_PCR_GPIO_GPP_B_PADCFGLOCKTX   0x6C
#define R_PCH_H_PCR_GPIO_GPP_F_PADCFGLOCK     0x70
#define R_PCH_H_PCR_GPIO_GPP_F_PADCFGLOCKTX   0x74
#define R_PCH_H_PCR_GPIO_GPP_F_HOSTSW_OWN     0x88
#define R_PCH_H_PCR_GPIO_GPP_F_GPI_IS         0x0108
#define R_PCH_H_PCR_GPIO_GPP_F_GPI_IE         0x0118
#define R_PCH_H_PCR_GPIO_GPP_F_GPI_GPE_STS    0x0128
#define R_PCH_H_PCR_GPIO_GPP_F_GPI_GPE_EN     0x0138
#define R_PCH_H_PCR_GPIO_GPP_F_PADCFG_OFFSET  0x580

// Common
#define R_PCH_PCR_GPIO_GPP_A_HOSTSW_OWN     0x80
#define R_PCH_PCR_GPIO_GPP_B_HOSTSW_OWN     0x84
#define R_PCH_PCR_GPIO_GPP_A_GPI_IS         0x0100
#define R_PCH_PCR_GPIO_GPP_B_GPI_IS         0x0104
#define R_PCH_PCR_GPIO_GPP_A_GPI_IE         0x0110
#define R_PCH_PCR_GPIO_GPP_B_GPI_IE         0x0114
#define R_PCH_PCR_GPIO_GPP_A_GPI_GPE_STS    0x0120
#define R_PCH_PCR_GPIO_GPP_B_GPI_GPE_STS    0x0124
#define R_PCH_PCR_GPIO_GPP_A_GPI_GPE_EN     0x0130
#define R_PCH_PCR_GPIO_GPP_B_GPI_GPE_EN     0x0134
#define R_PCH_PCR_GPIO_GPP_B_SMI_STS        0x0144
#define R_PCH_PCR_GPIO_GPP_B_SMI_EN         0x0154
#define R_PCH_PCR_GPIO_GPP_B_NMI_STS        0x0164
#define R_PCH_PCR_GPIO_GPP_B_NMI_EN         0x0174
#define R_PCH_PCR_GPIO_GPP_A_PADCFG_OFFSET  0x400
#define R_PCH_PCR_GPIO_GPP_B_PADCFG_OFFSET  0x4C0

//
// GPIO Community 1 Private Configuration Registers
//
//SKL PCH-LP:
#define R_PCH_LP_PCR_GPIO_GPP_C_PAD_OWN        0x20
#define R_PCH_LP_PCR_GPIO_GPP_D_PAD_OWN        0x30
#define R_PCH_LP_PCR_GPIO_GPP_E_PAD_OWN        0x40
#define R_PCH_LP_PCR_GPIO_GPP_C_GPI_VWM_EN     0x80
#define R_PCH_LP_PCR_GPIO_GPP_D_GPI_VWM_EN     0x84
#define R_PCH_LP_PCR_GPIO_GPP_E_GPI_VWM_EN     0x88
#define R_PCH_LP_PCR_GPIO_GPP_C_PADCFGLOCK     0xA0
#define R_PCH_LP_PCR_GPIO_GPP_C_PADCFGLOCKTX   0xA4
#define R_PCH_LP_PCR_GPIO_GPP_D_PADCFGLOCK     0xA8
#define R_PCH_LP_PCR_GPIO_GPP_D_PADCFGLOCKTX   0xAC
#define R_PCH_LP_PCR_GPIO_GPP_E_PADCFGLOCK     0xB0
#define R_PCH_LP_PCR_GPIO_GPP_E_PADCFGLOCKTX   0xB4
//SKL PCH-H:
#define R_PCH_H_PCR_GPIO_GPP_C_PAD_OWN        0x20
#define R_PCH_H_PCR_GPIO_GPP_D_PAD_OWN        0x2C
#define R_PCH_H_PCR_GPIO_GPP_E_PAD_OWN        0x38
// Server SKX PCH
#define R_PCH_H_PCR_GPIO_GPP_C_GPI_VWM_EN     0x50
#define R_PCH_H_PCR_GPIO_GPP_D_GPI_VWM_EN     0x54
#define R_PCH_H_PCR_GPIO_GPP_E_GPI_VWM_EN     0x58
#define R_PCH_H_PCR_GPIO_GPP_C_PADCFGLOCK     0x60
#define R_PCH_H_PCR_GPIO_GPP_C_PADCFGLOCKTX   0x64
#define R_PCH_H_PCR_GPIO_GPP_D_PADCFGLOCK     0x68
#define R_PCH_H_PCR_GPIO_GPP_D_PADCFGLOCKTX   0x6C
#define R_PCH_H_PCR_GPIO_GPP_E_PADCFGLOCK     0x70
#define R_PCH_H_PCR_GPIO_GPP_E_PADCFGLOCKTX   0x74
// Common
#define R_PCH_PCR_GPIO_GPP_C_HOSTSW_OWN       0x80
#define R_PCH_PCR_GPIO_GPP_D_HOSTSW_OWN       0x84
#define R_PCH_PCR_GPIO_GPP_E_HOSTSW_OWN       0x88
#define R_PCH_PCR_GPIO_GPP_C_GPI_IS           0x0100
#define R_PCH_PCR_GPIO_GPP_D_GPI_IS           0x0104
#define R_PCH_PCR_GPIO_GPP_E_GPI_IS           0x0108
#define R_PCH_PCR_GPIO_GPP_C_GPI_IE           0x0110
#define R_PCH_PCR_GPIO_GPP_D_GPI_IE           0x0114
#define R_PCH_PCR_GPIO_GPP_E_GPI_IE           0x0114
#define R_PCH_PCR_GPIO_GPP_C_GPI_GPE_STS      0x0120
#define R_PCH_PCR_GPIO_GPP_D_GPI_GPE_STS      0x0124
#define R_PCH_PCR_GPIO_GPP_E_GPI_GPE_STS      0x0128
#define R_PCH_PCR_GPIO_GPP_C_GPI_GPE_EN       0x0130
#define R_PCH_PCR_GPIO_GPP_D_GPI_GPE_EN       0x0134
#define R_PCH_PCR_GPIO_GPP_E_GPI_GPE_EN       0x0138
#define R_PCH_PCR_GPIO_GPP_C_SMI_STS          0x0140
#define R_PCH_PCR_GPIO_GPP_D_SMI_STS          0x0144
#define R_PCH_PCR_GPIO_GPP_E_SMI_STS          0x0148
#define R_PCH_PCR_GPIO_GPP_C_SMI_EN           0x0150
#define R_PCH_PCR_GPIO_GPP_D_SMI_EN           0x0154
#define R_PCH_PCR_GPIO_GPP_E_SMI_EN           0x0158
#define R_PCH_PCR_GPIO_GPP_C_NMI_STS          0x0160
#define R_PCH_PCR_GPIO_GPP_D_NMI_STS          0x0164
#define R_PCH_PCR_GPIO_GPP_E_NMI_STS          0x0168
#define R_PCH_PCR_GPIO_GPP_C_NMI_EN           0x0170
#define R_PCH_PCR_GPIO_GPP_D_NMI_EN           0x0174
#define R_PCH_PCR_GPIO_GPP_E_NMI_EN           0x0178


// Common:
#define R_PCH_PCR_GPIO_CAP_LIST_1_PWM         0x0200
#define R_PCH_PCR_GPIO_PWMC                   0x0204
#define R_PCH_PCR_GPIO_CAP_LIST_2_SER_BLINK   0x0208
#define R_PCH_PCR_GPIO_GP_SER_BLINK           0x020C
#define B_PCH_PCR_GPIO_GP_SER_BLINK           0x1F
#define R_PCH_PCR_GPIO_GP_SER_CMDSTS          0x0210
#define B_PCH_PCR_GPIO_GP_SER_CMDSTS_DLS      (BIT23 | BIT22)
#define N_PCH_PCR_GPIO_GP_SER_CMDSTS_DLS      22
#define B_PCH_PCR_GPIO_GP_SER_CMDSTS_DRS      0x003F0000
#define N_PCH_PCR_GPIO_GP_SER_CMDSTS_DRS      16
#define B_PCH_PCR_GPIO_GP_SER_CMDSTS_BUSY     BIT8
#define B_PCH_PCR_GPIO_GP_SER_CMDSTS_GO       BIT0
#define R_PCH_PCR_GPIO_GP_SER_DATA            0x0210
// Common:
#define R_PCH_PCR_GPIO_GPP_C_PADCFG_OFFSET    0x400
#define R_PCH_PCR_GPIO_GPP_D_PADCFG_OFFSET    0x4C0
#define R_PCH_PCR_GPIO_GPP_E_PADCFG_OFFSET    0x580

//
// GPIO Community 2 Private Configuration Registers
//
// SKL PCH-LP
#define R_PCH_LP_PCR_GPIO_GPD_PAD_OWN         0x20
#define R_PCH_LP_PCR_GPIO_GPD_GPI_VWM_EN      0x80
#define R_PCH_LP_PCR_GPIO_GPD_PADCFGLOCK      0xA0
#define R_PCH_LP_PCR_GPIO_GPD_PADCFGLOCKTX    0xA4
// SKX Server PCH
#define R_PCH_H_PCR_GPIO_GPD_PAD_OWN          0x20
#define R_PCH_H_PCR_GPIO_GPD_GPI_VWM_EN       0x50
#define R_PCH_H_PCR_GPIO_GPD_PADCFGLOCK       0x60
#define R_PCH_H_PCR_GPIO_GPD_PADCFGLOCKTX     0x64
// Common
#define R_PCH_PCR_GPIO_GPD_HOSTSW_OWN       0x80
#define R_PCH_PCR_GPIO_GPD_GPI_IS           0x0100
#define R_PCH_PCR_GPIO_GPD_GPI_IE           0x0110
#define R_PCH_PCR_GPIO_GPD_GPI_GPE_STS      0x0120
#define R_PCH_PCR_GPIO_GPD_GPI_GPE_EN       0x0130
#define R_PCH_PCR_GPIO_GPD_PADCFG_OFFSET    0x400

//
// GPIO Community 3 Private Configuration Registers
//
// SKL PCH-LP:
#define R_PCH_LP_PCR_GPIO_GPP_F_PAD_OWN        0x20
#define R_PCH_LP_PCR_GPIO_GPP_G_PAD_OWN        0x30
#define R_PCH_LP_PCR_GPIO_GPP_F_GPI_VWM_EN     0x80
#define R_PCH_LP_PCR_GPIO_GPP_G_GPI_VWM_EN     0x84
#define R_PCH_LP_PCR_GPIO_GPP_F_PADCFGLOCK     0xA0
#define R_PCH_LP_PCR_GPIO_GPP_F_PADCFGLOCKTX   0xA4
#define R_PCH_LP_PCR_GPIO_GPP_G_PADCFGLOCK     0xA8
#define R_PCH_LP_PCR_GPIO_GPP_G_PADCFGLOCKTX   0xAC
#define R_PCH_LP_PCR_GPIO_GPP_F_HOSTSW_OWN     0xD0
#define R_PCH_LP_PCR_GPIO_GPP_G_HOSTSW_OWN     0xD4
#define R_PCH_LP_PCR_GPIO_GPP_F_GPI_IS         0x0100
#define R_PCH_LP_PCR_GPIO_GPP_G_GPI_IS         0x0104
#define R_PCH_LP_PCR_GPIO_GPP_F_GPI_IE         0x0120
#define R_PCH_LP_PCR_GPIO_GPP_G_GPI_IE         0x0124
#define R_PCH_LP_PCR_GPIO_GPP_F_GPI_GPE_STS    0x0140
#define R_PCH_LP_PCR_GPIO_GPP_G_GPI_GPE_STS    0x0144
#define R_PCH_LP_PCR_GPIO_GPP_F_GPI_GPE_EN     0x0160
#define R_PCH_LP_PCR_GPIO_GPP_G_GPI_GPE_EN     0x0164
#define R_PCH_LP_PCR_GPIO_GPP_F_PADCFG_OFFSET  0x400
#define R_PCH_LP_PCR_GPIO_GPP_G_PADCFG_OFFSET  0x4C0

// SKX Server PCH
#define R_PCH_H_PCR_GPIO_GPP_I_PAD_OWN        0x20
#define R_PCH_H_PCR_GPIO_GPP_I_GPI_VWM_EN     0x50
#define R_PCH_H_PCR_GPIO_GPP_I_PADCFGLOCK     0x60
#define R_PCH_H_PCR_GPIO_GPP_I_PADCFGLOCKTX   0x64
#define R_PCH_H_PCR_GPIO_GPP_I_HOSTSW_OWN     0x80
#define R_PCH_H_PCR_GPIO_GPP_I_GPI_IS         0x0100
#define R_PCH_H_PCR_GPIO_GPP_I_GPI_IE         0x0110
#define R_PCH_H_PCR_GPIO_GPP_I_GPI_GPE_STS    0x0120
#define R_PCH_H_PCR_GPIO_GPP_I_GPI_GPE_EN     0x0130
#define R_PCH_H_PCR_GPIO_GPP_I_SMI_STS        0x0140
#define R_PCH_H_PCR_GPIO_GPP_I_SMI_EN         0x0150
#define R_PCH_H_PCR_GPIO_GPP_I_NMI_STS        0x0160
#define R_PCH_H_PCR_GPIO_GPP_I_NMI_EN         0x0170
#define R_PCH_H_PCR_GPIO_GPP_I_PADCFG_OFFSET  0x400

//
// GPIO Community 4 Private Configuration Registers
//

// SKX Server PCH
#define R_PCH_H_PCR_GPIO_GPP_J_PAD_OWN        0x20
#define R_PCH_H_PCR_GPIO_GPP_K_PAD_OWN        0x2C
#define R_PCH_H_PCR_GPIO_GPP_J_GPI_VWM_EN     0x50
#define R_PCH_H_PCR_GPIO_GPP_K_GPI_VWM_EN     0x54
#define R_PCH_H_PCR_GPIO_GPP_J_PADCFGLOCK     0x60
#define R_PCH_H_PCR_GPIO_GPP_J_PADCFGLOCKTX   0x64
#define R_PCH_H_PCR_GPIO_GPP_K_PADCFGLOCK     0x68
#define R_PCH_H_PCR_GPIO_GPP_K_PADCFGLOCKTX   0x6C
#define R_PCH_H_PCR_GPIO_GPP_J_HOSTSW_OWN     0x80
#define R_PCH_H_PCR_GPIO_GPP_K_HOSTSW_OWN     0x84
#define R_PCH_H_PCR_GPIO_GPP_J_GPI_IS         0x0100
#define R_PCH_H_PCR_GPIO_GPP_K_GPI_IS         0x0104
#define R_PCH_H_PCR_GPIO_GPP_J_GPI_IE         0x0110
#define R_PCH_H_PCR_GPIO_GPP_K_GPI_IE         0x0114
#define R_PCH_H_PCR_GPIO_GPP_J_GPI_GPE_STS    0x0120
#define R_PCH_H_PCR_GPIO_GPP_K_GPI_GPE_STS    0x0124
#define R_PCH_H_PCR_GPIO_GPP_J_GPI_GPE_EN     0x0130
#define R_PCH_H_PCR_GPIO_GPP_K_GPI_GPE_EN     0x0134
#define R_PCH_H_PCR_GPIO_GPP_J_PADCFG_OFFSET  0x400
#define R_PCH_H_PCR_GPIO_GPP_K_PADCFG_OFFSET  0x4C0

//
// GPIO Community 5 Private Configuration Registers
//

// SKX Server PCH
#define R_PCH_H_PCR_GPIO_GPP_G_PAD_OWN        0x20
#define R_PCH_H_PCR_GPIO_GPP_H_PAD_OWN        0x2C
#define R_PCH_H_PCR_GPIO_GPP_L_PAD_OWN        0x38
#define R_PCH_H_PCR_GPIO_GPP_G_GPI_VWM_EN     0x50
#define R_PCH_H_PCR_GPIO_GPP_H_GPI_VWM_EN     0x54
#define R_PCH_H_PCR_GPIO_GPP_L_GPI_VWM_EN     0x58
#define R_PCH_H_PCR_GPIO_GPP_G_PADCFGLOCK     0x60
#define R_PCH_H_PCR_GPIO_GPP_G_PADCFGLOCKTX   0x64
#define R_PCH_H_PCR_GPIO_GPP_H_PADCFGLOCK     0x68
#define R_PCH_H_PCR_GPIO_GPP_H_PADCFGLOCKTX   0x6C
#define R_PCH_H_PCR_GPIO_GPP_L_PADCFGLOCK     0x70
#define R_PCH_H_PCR_GPIO_GPP_L_PADCFGLOCKTX   0x74
#define R_PCH_H_PCR_GPIO_GPP_G_HOSTSW_OWN     0x80
#define R_PCH_H_PCR_GPIO_GPP_H_HOSTSW_OWN     0x84
#define R_PCH_H_PCR_GPIO_GPP_L_HOSTSW_OWN     0x88
#define R_PCH_H_PCR_GPIO_GPP_G_GPI_IS         0x0100
#define R_PCH_H_PCR_GPIO_GPP_H_GPI_IS         0x0104
#define R_PCH_H_PCR_GPIO_GPP_L_GPI_IS         0x0108
#define R_PCH_H_PCR_GPIO_GPP_G_GPI_IE         0x0110
#define R_PCH_H_PCR_GPIO_GPP_H_GPI_IE         0x0114
#define R_PCH_H_PCR_GPIO_GPP_L_GPI_IE         0x0118
#define R_PCH_H_PCR_GPIO_GPP_G_GPI_GPE_STS    0x0120
#define R_PCH_H_PCR_GPIO_GPP_H_GPI_GPE_STS    0x0124
#define R_PCH_H_PCR_GPIO_GPP_L_GPI_GPE_STS    0x0128
#define R_PCH_H_PCR_GPIO_GPP_G_GPI_GPE_EN     0x0130
#define R_PCH_H_PCR_GPIO_GPP_H_GPI_GPE_EN     0x0134
#define R_PCH_H_PCR_GPIO_GPP_L_GPI_GPE_EN     0x0138
#define R_PCH_H_PCR_GPIO_GPP_G_PADCFG_OFFSET  0x400
#define R_PCH_H_PCR_GPIO_GPP_H_PADCFG_OFFSET  0x4C0
#define R_PCH_H_PCR_GPIO_GPP_L_PADCFG_OFFSET  0x580




//
// Define Pad Number
//
#define V_GPIO_PAD0                                  0
#define V_GPIO_PAD1                                  1
#define V_GPIO_PAD2                                  2
#define V_GPIO_PAD3                                  3
#define V_GPIO_PAD4                                  4
#define V_GPIO_PAD5                                  5
#define V_GPIO_PAD6                                  6
#define V_GPIO_PAD7                                  7
#define V_GPIO_PAD8                                  8
#define V_GPIO_PAD9                                  9
#define V_GPIO_PAD10                                10
#define V_GPIO_PAD11                                11
#define V_GPIO_PAD12                                12
#define V_GPIO_PAD13                                13
#define V_GPIO_PAD14                                14
#define V_GPIO_PAD15                                15
#define V_GPIO_PAD16                                16
#define V_GPIO_PAD17                                17
#define V_GPIO_PAD18                                18
#define V_GPIO_PAD19                                19
#define V_GPIO_PAD20                                20
#define V_GPIO_PAD21                                21
#define V_GPIO_PAD22                                22
#define V_GPIO_PAD23                                23

//
// Host Software Pad Ownership modes
//
#define V_PCH_PCR_GPIO_HOSTSW_OWN_ACPI      0x00
#define V_PCH_PCR_GPIO_HOSTSW_OWN_GPIO      0x01

//
// Pad Ownership modes
//
#define V_PCH_PCR_GPIO_PAD_OWN_HOST         0x00
#define V_PCH_PCR_GPIO_PAD_OWN_CSME         0x01
#define V_PCH_PCR_GPIO_PAD_OWN_ISH          0x02

//
// Pad Configuration Register DW0
//

//Pad Reset Config
#define B_PCH_GPIO_RST_CONF             (BIT31 | BIT30)
#define N_PCH_GPIO_RST_CONF             30
#define V_PCH_GPIO_RST_CONF_POW_GOOD    0x00
#define V_PCH_GPIO_RST_CONF_DEEP_RST    0x01
#define V_PCH_GPIO_RST_CONF_GPIO_RST    0x02
#define V_PCH_GPIO_RST_CONF_RESUME_RST  0x03  // Only for GPD Group

//RX Pad State Select
#define B_PCH_GPIO_RX_PAD_STATE         BIT29
#define N_PCH_GPIO_RX_PAD_STATE         29
#define V_PCH_GPIO_RX_PAD_STATE_RAW     0x00
#define V_PCH_GPIO_RX_PAD_STATE_INT     0x01

//RX Raw Overrride to 1
#define B_PCH_GPIO_RX_RAW1              BIT28
#define N_PCH_GPIO_RX_RAW1              28
#define V_PCH_GPIO_RX_RAW1_DIS          0x00
#define V_PCH_GPIO_RX_RAW1_EN           0x01

//RX Level/Edge Configuration
#define B_PCH_GPIO_RX_LVL_EDG           (BIT26 | BIT25)
#define N_PCH_GPIO_RX_LVL_EDG           25
#define V_PCH_GPIO_RX_LVL_EDG_LVL       0x00
#define V_PCH_GPIO_RX_LVL_EDG_EDG       0x01
#define V_PCH_GPIO_RX_LVL_EDG_0         0x02
#define V_PCH_GPIO_RX_LVL_EDG_RIS_FAL   0x03

//RX Invert
#define B_PCH_GPIO_RXINV                BIT23
#define N_PCH_GPIO_RXINV                23
#define V_PCH_GPIO_RXINV_NO             0x00
#define V_PCH_GPIO_RXINV_YES            0x01

//GPIO Input Route IOxAPIC
#define B_PCH_GPIO_RX_APIC_ROUTE        BIT20
#define N_PCH_GPIO_RX_APIC_ROUTE        20
#define V_PCH_GPIO_RX_APIC_ROUTE_DIS    0x00
#define V_PCH_GPIO_RX_APIC_ROUTE_EN     0x01

//GPIO Input Route SCI
#define B_PCH_GPIO_RX_SCI_ROUTE         BIT19
#define N_PCH_GPIO_RX_SCI_ROUTE         19
#define V_PCH_GPIO_RX_SCI_ROUTE_DIS     0x00
#define V_PCH_GPIO_RX_SCI_ROUTE_EN      0x01

//GPIO Input Route SMI
#define B_PCH_GPIO_RX_SMI_ROUTE         BIT18
#define N_PCH_GPIO_RX_SMI_ROUTE         18
#define V_PCH_GPIO_RX_SMI_ROUTE_DIS     0x00
#define V_PCH_GPIO_RX_SMI_ROUTE_EN      0x01

//GPIO Input Route NMI
#define B_PCH_GPIO_RX_NMI_ROUTE         BIT17
#define N_PCH_GPIO_RX_NMI_ROUTE         17
#define V_PCH_GPIO_RX_NMI_ROUTE_DIS     0x00
#define V_PCH_GPIO_RX_NMI_ROUTE_EN      0x01

//GPIO Pad Mode
#define B_PCH_GPIO_PAD_MODE             (BIT12 | BIT11 | BIT10)
#define N_PCH_GPIO_PAD_MODE             10
#define V_PCH_GPIO_PAD_MODE_GPIO        0
#define V_PCH_GPIO_PAD_MODE_NAT_1       1
#define V_PCH_GPIO_PAD_MODE_NAT_2       2
#define V_PCH_GPIO_PAD_MODE_NAT_3       3
#define V_PCH_GPIO_PAD_MODE_NAT_4       4 // SPT-H only

//GPIO RX Disable
#define B_PCH_GPIO_RXDIS                BIT9
#define N_PCH_GPIO_RXDIS                9
#define V_PCH_GPIO_RXDIS_EN             0x00
#define V_PCH_GPIO_RXDIS_DIS            0x01

//GPIO TX Disable
#define B_PCH_GPIO_TXDIS                BIT8
#define N_PCH_GPIO_TXDIS                8
#define V_PCH_GPIO_TXDIS_EN             0x00
#define V_PCH_GPIO_TXDIS_DIS            0x01

//GPIO RX State
#define B_PCH_GPIO_RX_STATE             BIT1
#define N_PCH_GPIO_RX_STATE             1
#define V_PCH_GPIO_RX_STATE_LOW         0x00
#define V_PCH_GPIO_RX_STATE_HIGH        0x01

//GPIO TX State
#define B_PCH_GPIO_TX_STATE             BIT0
#define N_PCH_GPIO_TX_STATE             0
#define V_PCH_GPIO_TX_STATE_LOW         0x00
#define V_PCH_GPIO_TX_STATE_HIGH        0x01

//
// Pad Configuration Register DW1
//

//Padtol
#define B_PCH_GPIO_PADTOL               BIT25
#define N_PCH_GPIO_PADTOL               25
#define V_PCH_GPIO_PADTOL_NONE          0x00
#define V_PCH_GPIO_PADTOL_CLEAR         0x00
#define V_PCH_GPIO_PADTOL_SET           0x01

//Termination
#define B_PCH_GPIO_TERM                (BIT13 | BIT12 | BIT11 | BIT10)
#define N_PCH_GPIO_TERM                 10
#define V_PCH_GPIO_TERM_WPD_NONE        0x00
#define V_PCH_GPIO_TERM_WPD_5K          0x02
#define V_PCH_GPIO_TERM_WPD_20K         0x04
#define V_PCH_GPIO_TERM_WPU_NONE        0x08
#define V_PCH_GPIO_TERM_WPU_1K          0x09
#define V_PCH_GPIO_TERM_WPU_2K          0x0B
#define V_PCH_GPIO_TERM_WPU_5K          0x0A
#define V_PCH_GPIO_TERM_WPU_20K         0x0C
#define V_PCH_GPIO_TERM_WPU_1K_2K       0x0D
#define V_PCH_GPIO_TERM_NATIVE          0x0F

//Interrupt number
#define B_PCH_GPIO_INTSEL               0x7F
#define N_PCH_GPIO_INTSEL               0

//
// Ownership
//
#define V_PCH_GPIO_OWN_GPIO             0x01
#define V_PCH_GPIO_OWN_ACPI             0x00

//
// GPE 
//
#define V_PCH_GPIO_GPE_EN               0x01
#define V_PCH_GPIO_GPE_DIS              0x00
//
// SMI
//
#define V_PCH_GPIO_SMI_EN               0x01
#define V_PCH_GPIO_SMI_DIS              0x00
//
// NMI
//
#define V_PCH_GPIO_NMI_EN               0x01
#define V_PCH_GPIO_NMI_DIS              0x00
//
// Reserved: RSVD1  
//
#define V_PCH_GPIO_RSVD1                0x00

#endif