summaryrefslogtreecommitdiff
path: root/configs/tegra124.soc
blob: 1012c7c76e75f6fdc59e1573730d7f612e03aaf8 (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
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
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
# All data validated against Tegra124 TRM on 2014/03/12 by swarren except:
# - drive group lpmd_b column, which is missing from the TRM (nvbug 1480165)
# - drive_group_pins[] content

kernel_copyright_years = '2013-2014'
kernel_author = 'Ashwini Ghuge <aghuge@nvidia.com>'
uboot_copyright_years = '2013-2014'

soc_has_io_clamping = True
soc_combine_pin_drvgroup = False
soc_rsvd_base = 1
soc_drvgroups_have_drvtype = True
soc_drvgroups_have_hsm = True
soc_drvgroups_have_lpmd = True
soc_drvgroups_have_schmitt = True
soc_pins_all_have_od = False
soc_pins_all_have_parked = False
soc_pins_all_have_schmitt = False
soc_pins_have_drvtype = False
soc_pins_have_e_io_hv = False
soc_pins_have_hsm = False
soc_pins_have_ior = True
soc_pins_have_od = True
soc_pins_have_rcv_sel = True
soc_pins_have_schmitt = False
soc_drv_reg_base = 0x868
soc_mipipadctrl_reg_base = 0x820
soc_einput_b = 5
soc_odrain_b = 6
soc_parked_bit = 0

gpios = (
    #name,                gpio,  reg,    f0,           f1,         f2,             f3,            od,    ior,   rcv_sel
    ('clk_32k_out',       'a0',  0x331c, 'blink',      'soc',      'rsvd3',        'rsvd4',       False, False, False),
    ('uart3_cts_n',       'a1',  0x317c, 'uartc',      'sdmmc1',   'dtv',          'gmi',         False, False, False),
    ('dap2_fs',           'a2',  0x3358, 'i2s1',       'hda',      'gmi',          'rsvd4',       False, False, False),
    ('dap2_sclk',         'a3',  0x3364, 'i2s1',       'hda',      'gmi',          'rsvd4',       False, False, False),
    ('dap2_din',          'a4',  0x335c, 'i2s1',       'hda',      'gmi',          'rsvd4',       False, False, False),
    ('dap2_dout',         'a5',  0x3360, 'i2s1',       'hda',      'gmi',          'rsvd4',       False, False, False),
    ('sdmmc3_clk',        'a6',  0x3390, 'sdmmc3',     'rsvd2',    'rsvd3',        'spi3',        False, False, False),
    ('sdmmc3_cmd',        'a7',  0x3394, 'sdmmc3',     'pwm3',     'uarta',        'spi3',        False, False, False),
    ('',                  'b0',  0x3234, 'uartd',      'rsvd2',    'gmi',          'rsvd4',       False, False, False),
    ('',                  'b1',  0x3238, 'uartd',      'rsvd2',    'gmi',          'rsvd4',       False, False, False),
    ('sdmmc3_dat3',       'b4',  0x33a4, 'sdmmc3',     'pwm0',     'displayb',     'spi3',        False, False, False),
    ('sdmmc3_dat2',       'b5',  0x33a0, 'sdmmc3',     'pwm1',     'displaya',     'spi3',        False, False, False),
    ('sdmmc3_dat1',       'b6',  0x339c, 'sdmmc3',     'pwm2',     'uarta',        'spi3',        False, False, False),
    ('sdmmc3_dat0',       'b7',  0x3398, 'sdmmc3',     'rsvd2',    'rsvd3',        'spi3',        False, False, False),
    ('uart3_rts_n',       'c0',  0x3180, 'uartc',      'pwm0',     'dtv',          'gmi',         False, False, False),
    ('uart2_txd',         'c2',  0x3168, 'irda',       'spdif',    'uarta',        'spi4',        False, False, False),
    ('uart2_rxd',         'c3',  0x3164, 'irda',       'spdif',    'uarta',        'spi4',        False, False, False),
    ('gen1_i2c_scl',      'c4',  0x31a4, 'i2c1',       'rsvd2',    'rsvd3',        'rsvd4',       True,  False, False),
    ('gen1_i2c_sda',      'c5',  0x31a0, 'i2c1',       'rsvd2',    'rsvd3',        'rsvd4',       True,  False, False),
    ('',                  'c7',  0x31c0, 'rsvd1',      'rsvd2',    'gmi',          'gmi_alt',     False, False, False),
    ('',                  'g0',  0x31f0, 'rsvd1',      'rsvd2',    'gmi',          'rsvd4',       False, False, False),
    ('',                  'g1',  0x31f4, 'rsvd1',      'rsvd2',    'gmi',          'rsvd4',       False, False, False),
    ('',                  'g2',  0x31f8, 'rsvd1',      'trace',    'gmi',          'rsvd4',       False, False, False),
    ('',                  'g3',  0x31fc, 'rsvd1',      'trace',    'gmi',          'rsvd4',       False, False, False),
    ('',                  'g4',  0x3200, 'rsvd1',      'tmds',     'gmi',          'spi4',        False, False, False),
    ('',                  'g5',  0x3204, 'rsvd1',      'rsvd2',    'gmi',          'spi4',        False, False, False),
    ('',                  'g6',  0x3208, 'rsvd1',      'rsvd2',    'gmi',          'spi4',        False, False, False),
    ('',                  'g7',  0x320c, 'rsvd1',      'rsvd2',    'gmi',          'spi4',        False, False, False),
    ('',                  'h0',  0x3210, 'pwm0',       'trace',    'gmi',          'dtv',         False, False, False),
    ('',                  'h1',  0x3214, 'pwm1',       'tmds',     'gmi',          'displaya',    False, False, False),
    ('',                  'h2',  0x3218, 'pwm2',       'tmds',     'gmi',          'cldvfs',      False, False, False),
    ('',                  'h3',  0x321c, 'pwm3',       'spi4',     'gmi',          'cldvfs',      False, False, False),
    ('',                  'h4',  0x3220, 'sdmmc2',     'rsvd2',    'gmi',          'rsvd4',       False, False, False),
    ('',                  'h5',  0x3224, 'sdmmc2',     'rsvd2',    'gmi',          'rsvd4',       False, False, False),
    ('',                  'h6',  0x3228, 'sdmmc2',     'trace',    'gmi',          'dtv',         False, False, False),
    ('',                  'h7',  0x322c, 'sdmmc2',     'trace',    'gmi',          'dtv',         False, False, False),
    ('',                  'i0',  0x3240, 'rsvd1',      'rsvd2',    'gmi',          'rsvd4',       False, False, False),
    ('',                  'i1',  0x3244, 'rsvd1',      'rsvd2',    'gmi',          'rsvd4',       False, False, False),
    ('',                  'i2',  0x3248, 'sdmmc2',     'trace',    'gmi',          'rsvd4',       False, False, False),
    ('',                  'i3',  0x31e8, 'rsvd1',      'rsvd2',    'gmi',          'spi4',        False, False, False),
    ('',                  'i4',  0x324c, 'spi4',       'trace',    'gmi',          'displaya',    False, False, False),
    ('',                  'i5',  0x31c4, 'sdmmc2',     'rsvd2',    'gmi',          'rsvd4',       False, False, False),
    ('',                  'i6',  0x31ec, 'rsvd1',      'rsvd2',    'gmi',          'sdmmc2',      False, False, False),
    ('',                  'i7',  0x31c8, 'rsvd1',      'trace',    'gmi',          'dtv',         False, False, False),
    ('',                  'j0',  0x31d4, 'rsvd1',      'rsvd2',    'gmi',          'usb',         False, False, False),
    ('',                  'j2',  0x31d8, 'rsvd1',      'rsvd2',    'gmi',          'soc',         False, False, False),
    ('uart2_cts_n',       'j5',  0x3170, 'uarta',      'uartb',    'gmi',          'spi4',        False, False, False),
    ('uart2_rts_n',       'j6',  0x316c, 'uarta',      'uartb',    'gmi',          'spi4',        False, False, False),
    ('',                  'j7',  0x3230, 'uartd',      'rsvd2',    'gmi',          'gmi_alt',     False, False, False),
    ('',                  'k0',  0x31cc, 'rsvd1',      'sdmmc3',   'gmi',          'soc',         False, False, False),
    ('',                  'k1',  0x31d0, 'sdmmc2',     'trace',    'gmi',          'rsvd4',       False, False, False),
    ('',                  'k2',  0x31e4, 'rsvd1',      'rsvd2',    'gmi',          'rsvd4',       False, False, False),
    ('',                  'k3',  0x31dc, 'sdmmc2',     'trace',    'gmi',          'ccla',        False, False, False),
    ('',                  'k4',  0x31e0, 'sdmmc2',     'rsvd2',    'gmi',          'gmi_alt',     False, False, False),
    ('spdif_out',         'k5',  0x3354, 'spdif',      'rsvd2',    'rsvd3',        'i2c3',        False, False, False),
    ('spdif_in',          'k6',  0x3350, 'spdif',      'rsvd2',    'rsvd3',        'i2c3',        False, False, False),
    ('',                  'k7',  0x323c, 'uartd',      'rsvd2',    'gmi',          'rsvd4',       False, False, False),
    ('dap1_fs',           'n0',  0x3338, 'i2s0',       'hda',      'gmi',          'rsvd4',       False, False, False),
    ('dap1_din',          'n1',  0x333c, 'i2s0',       'hda',      'gmi',          'rsvd4',       False, False, False),
    ('dap1_dout',         'n2',  0x3340, 'i2s0',       'hda',      'gmi',          'sata',        False, False, False),
    ('dap1_sclk',         'n3',  0x3344, 'i2s0',       'hda',      'gmi',          'rsvd4',       False, False, False),
    ('usb_vbus_en0',      'n4',  0x33f4, 'usb',        'rsvd2',    'rsvd3',        'rsvd4',       True,  False, False),
    ('usb_vbus_en1',      'n5',  0x33f8, 'usb',        'rsvd2',    'rsvd3',        'rsvd4',       True,  False, False),
    ('hdmi_int',          'n7',  0x3110, 'rsvd1',      'rsvd2',    'rsvd3',        'rsvd4',       False, False, True),
    ('ulpi_data7',        'o0',  0x301c, 'spi2',       'hsi',      'uarta',        'ulpi',        False, False, False),
    ('ulpi_data0',        'o1',  0x3000, 'spi3',       'hsi',      'uarta',        'ulpi',        False, False, False),
    ('ulpi_data1',        'o2',  0x3004, 'spi3',       'hsi',      'uarta',        'ulpi',        False, False, False),
    ('ulpi_data2',        'o3',  0x3008, 'spi3',       'hsi',      'uarta',        'ulpi',        False, False, False),
    ('ulpi_data3',        'o4',  0x300c, 'spi3',       'hsi',      'uarta',        'ulpi',        False, False, False),
    ('ulpi_data4',        'o5',  0x3010, 'spi2',       'hsi',      'uarta',        'ulpi',        False, False, False),
    ('ulpi_data5',        'o6',  0x3014, 'spi2',       'hsi',      'uarta',        'ulpi',        False, False, False),
    ('ulpi_data6',        'o7',  0x3018, 'spi2',       'hsi',      'uarta',        'ulpi',        False, False, False),
    ('dap3_fs',           'p0',  0x3030, 'i2s2',       'spi5',     'displaya',     'displayb',    False, False, False),
    ('dap3_din',          'p1',  0x3034, 'i2s2',       'spi5',     'displaya',     'displayb',    False, False, False),
    ('dap3_dout',         'p2',  0x3038, 'i2s2',       'spi5',     'displaya',     'rsvd4',       False, False, False),
    ('dap3_sclk',         'p3',  0x303c, 'i2s2',       'spi5',     'rsvd3',        'displayb',    False, False, False),
    ('dap4_fs',           'p4',  0x31a8, 'i2s3',       'gmi',      'dtv',          'rsvd4',       False, False, False),
    ('dap4_din',          'p5',  0x31ac, 'i2s3',       'gmi',      'rsvd3',        'rsvd4',       False, False, False),
    ('dap4_dout',         'p6',  0x31b0, 'i2s3',       'gmi',      'dtv',          'rsvd4',       False, False, False),
    ('dap4_sclk',         'p7',  0x31b4, 'i2s3',       'gmi',      'rsvd3',        'rsvd4',       False, False, False),
    ('kb_col0',           'q0',  0x32fc, 'kbc',        'rsvd2',    'spi2',         'rsvd4',       False, False, False),
    ('kb_col1',           'q1',  0x3300, 'kbc',        'rsvd2',    'spi2',         'rsvd4',       False, False, False),
    ('kb_col2',           'q2',  0x3304, 'kbc',        'rsvd2',    'spi2',         'rsvd4',       False, False, False),
    ('kb_col3',           'q3',  0x3308, 'kbc',        'displaya', 'pwm2',         'uarta',       False, False, False),
    ('kb_col4',           'q4',  0x330c, 'kbc',        'owr',      'sdmmc3',       'uarta',       False, False, False),
    ('kb_col5',           'q5',  0x3310, 'kbc',        'rsvd2',    'sdmmc3',       'rsvd4',       False, False, False),
    ('kb_col6',           'q6',  0x3314, 'kbc',        'rsvd2',    'spi2',         'uartd',       False, False, False),
    ('kb_col7',           'q7',  0x3318, 'kbc',        'rsvd2',    'spi2',         'uartd',       False, False, False),
    ('kb_row0',           'r0',  0x32bc, 'kbc',        'rsvd2',    'rsvd3',        'rsvd4',       False, False, False),
    ('kb_row1',           'r1',  0x32c0, 'kbc',        'rsvd2',    'rsvd3',        'rsvd4',       False, False, False),
    ('kb_row2',           'r2',  0x32c4, 'kbc',        'rsvd2',    'rsvd3',        'rsvd4',       False, False, False),
    ('kb_row3',           'r3',  0x32c8, 'kbc',        'displaya', 'sys',          'displayb',    False, False, False),
    ('kb_row4',           'r4',  0x32cc, 'kbc',        'displaya', 'rsvd3',        'displayb',    False, False, False),
    ('kb_row5',           'r5',  0x32d0, 'kbc',        'displaya', 'rsvd3',        'displayb',    False, False, False),
    ('kb_row6',           'r6',  0x32d4, 'kbc',        'displaya', 'displaya_alt', 'displayb',    False, False, False),
    ('kb_row7',           'r7',  0x32d8, 'kbc',        'rsvd2',    'cldvfs',       'uarta',       False, False, False),
    ('kb_row8',           's0',  0x32dc, 'kbc',        'rsvd2',    'cldvfs',       'uarta',       False, False, False),
    ('kb_row9',           's1',  0x32e0, 'kbc',        'rsvd2',    'rsvd3',        'uarta',       False, False, False),
    ('kb_row10',          's2',  0x32e4, 'kbc',        'rsvd2',    'rsvd3',        'uarta',       False, False, False),
    ('kb_row11',          's3',  0x32e8, 'kbc',        'rsvd2',    'rsvd3',        'irda',        False, False, False),
    ('kb_row12',          's4',  0x32ec, 'kbc',        'rsvd2',    'rsvd3',        'irda',        False, False, False),
    ('kb_row13',          's5',  0x32f0, 'kbc',        'rsvd2',    'spi2',         'rsvd4',       False, False, False),
    ('kb_row14',          's6',  0x32f4, 'kbc',        'rsvd2',    'spi2',         'rsvd4',       False, False, False),
    ('kb_row15',          's7',  0x32f8, 'kbc',        'soc',      'rsvd3',        'rsvd4',       False, False, False),
    ('kb_row16',          't0',  0x340c, 'kbc',        'rsvd2',    'rsvd3',        'uartc',       False, False, False),
    ('kb_row17',          't1',  0x3410, 'kbc',        'rsvd2',    'rsvd3',        'uartc',       False, False, False),
    ('gen2_i2c_scl',      't5',  0x3250, 'i2c2',       'rsvd2',    'gmi',          'rsvd4',       True,  False, False),
    ('gen2_i2c_sda',      't6',  0x3254, 'i2c2',       'rsvd2',    'gmi',          'rsvd4',       True,  False, False),
    ('sdmmc4_cmd',        't7',  0x325c, 'sdmmc4',     'rsvd2',    'gmi',          'rsvd4',       False, True,  False),
    ('',                  'u0',  0x3184, 'owr',        'uarta',    'gmi',          'rsvd4',       False, False, False),
    ('',                  'u1',  0x3188, 'rsvd1',      'uarta',    'gmi',          'rsvd4',       False, False, False),
    ('',                  'u2',  0x318c, 'rsvd1',      'uarta',    'gmi',          'rsvd4',       False, False, False),
    ('',                  'u3',  0x3190, 'pwm0',       'uarta',    'gmi',          'displayb',    False, False, False),
    ('',                  'u4',  0x3194, 'pwm1',       'uarta',    'gmi',          'displayb',    False, False, False),
    ('',                  'u5',  0x3198, 'pwm2',       'uarta',    'gmi',          'displayb',    False, False, False),
    ('',                  'u6',  0x319c, 'pwm3',       'uarta',    'rsvd3',        'gmi',         False, False, False),
    ('',                  'v0',  0x3040, 'rsvd1',      'rsvd2',    'rsvd3',        'rsvd4',       False, False, False),
    ('',                  'v1',  0x3044, 'rsvd1',      'rsvd2',    'rsvd3',        'rsvd4',       False, False, False),
    ('sdmmc3_cd_n',       'v2',  0x33e8, 'sdmmc3',     'owr',      'rsvd3',        'rsvd4',       False, False, False),
    ('sdmmc1_wp_n',       'v3',  0x33e4, 'sdmmc1',     'clk12',    'spi4',         'uarta',       False, False, False),
    ('ddc_scl',           'v4',  0x3114, 'i2c4',       'rsvd2',    'rsvd3',        'rsvd4',       False, False, True),
    ('ddc_sda',           'v5',  0x3118, 'i2c4',       'rsvd2',    'rsvd3',        'rsvd4',       False, False, True),
    ('gpio_w2_aud',       'w2',  0x33ec, 'spi6',       'rsvd2',    'spi2',         'i2c1',        False, False, False),
    ('gpio_w3_aud',       'w3',  0x33f0, 'spi6',       'spi1',     'spi2',         'i2c1',        False, False, False),
    ('dap_mclk1',         'w4',  0x334c, 'extperiph1', 'dap2',     'rsvd3',        'rsvd4',       False, False, False),
    ('clk2_out',          'w5',  0x3068, 'extperiph2', 'rsvd2',    'rsvd3',        'rsvd4',       False, False, False),
    ('uart3_txd',         'w6',  0x3174, 'uartc',      'rsvd2',    'gmi',          'spi4',        False, False, False),
    ('uart3_rxd',         'w7',  0x3178, 'uartc',      'rsvd2',    'gmi',          'spi4',        False, False, False),
    ('dvfs_pwm',          'x0',  0x3368, 'spi6',       'cldvfs',   'gmi',          'rsvd4',       False, False, False),
    ('gpio_x1_aud',       'x1',  0x336c, 'spi6',       'rsvd2',    'gmi',          'rsvd4',       False, False, False),
    ('dvfs_clk',          'x2',  0x3374, 'spi6',       'cldvfs',   'gmi',          'rsvd4',       False, False, False),
    ('gpio_x3_aud',       'x3',  0x3370, 'spi6',       'spi1',     'gmi',          'rsvd4',       False, False, False),
    ('gpio_x4_aud',       'x4',  0x3378, 'gmi',        'spi1',     'spi2',         'dap2',        False, False, False),
    ('gpio_x5_aud',       'x5',  0x337c, 'gmi',        'spi1',     'spi2',         'rsvd4',       False, False, False),
    ('gpio_x6_aud',       'x6',  0x3380, 'spi6',       'spi1',     'spi2',         'gmi',         False, False, False),
    ('gpio_x7_aud',       'x7',  0x3384, 'rsvd1',      'spi1',     'spi2',         'rsvd4',       False, False, False),
    ('ulpi_clk',          'y0',  0x3020, 'spi1',       'spi5',     'uartd',        'ulpi',        False, False, False),
    ('ulpi_dir',          'y1',  0x3024, 'spi1',       'spi5',     'uartd',        'ulpi',        False, False, False),
    ('ulpi_nxt',          'y2',  0x3028, 'spi1',       'spi5',     'uartd',        'ulpi',        False, False, False),
    ('ulpi_stp',          'y3',  0x302c, 'spi1',       'spi5',     'uartd',        'ulpi',        False, False, False),
    ('sdmmc1_dat3',       'y4',  0x3050, 'sdmmc1',     'spdif',    'spi4',         'uarta',       False, False, False),
    ('sdmmc1_dat2',       'y5',  0x3054, 'sdmmc1',     'pwm0',     'spi4',         'uarta',       False, False, False),
    ('sdmmc1_dat1',       'y6',  0x3058, 'sdmmc1',     'pwm1',     'spi4',         'uarta',       False, False, False),
    ('sdmmc1_dat0',       'y7',  0x305c, 'sdmmc1',     'rsvd2',    'spi4',         'uarta',       False, False, False),
    ('sdmmc1_clk',        'z0',  0x3048, 'sdmmc1',     'clk12',    'rsvd3',        'rsvd4',       False, False, False),
    ('sdmmc1_cmd',        'z1',  0x304c, 'sdmmc1',     'spdif',    'spi4',         'uarta',       False, False, False),
    ('pwr_i2c_scl',       'z6',  0x32b4, 'i2cpwr',     'rsvd2',    'rsvd3',        'rsvd4',       True,  False, False),
    ('pwr_i2c_sda',       'z7',  0x32b8, 'i2cpwr',     'rsvd2',    'rsvd3',        'rsvd4',       True,  False, False),
    ('sdmmc4_dat0',       'aa0', 0x3260, 'sdmmc4',     'spi3',     'gmi',          'rsvd4',       False, True,  False),
    ('sdmmc4_dat1',       'aa1', 0x3264, 'sdmmc4',     'spi3',     'gmi',          'rsvd4',       False, True,  False),
    ('sdmmc4_dat2',       'aa2', 0x3268, 'sdmmc4',     'spi3',     'gmi',          'rsvd4',       False, True,  False),
    ('sdmmc4_dat3',       'aa3', 0x326c, 'sdmmc4',     'spi3',     'gmi',          'rsvd4',       False, True,  False),
    ('sdmmc4_dat4',       'aa4', 0x3270, 'sdmmc4',     'spi3',     'gmi',          'rsvd4',       False, True,  False),
    ('sdmmc4_dat5',       'aa5', 0x3274, 'sdmmc4',     'spi3',     'rsvd3',        'rsvd4',       False, True,  False),
    ('sdmmc4_dat6',       'aa6', 0x3278, 'sdmmc4',     'spi3',     'gmi',          'rsvd4',       False, True,  False),
    ('sdmmc4_dat7',       'aa7', 0x327c, 'sdmmc4',     'rsvd2',    'gmi',          'rsvd4',       False, True,  False),
    ('',                  'bb0', 0x328c, 'vgp6',       'vimclk2',  'sdmmc2',       'vimclk2_alt', False, False, False),
    ('cam_i2c_scl',       'bb1', 0x3290, 'vgp1',       'i2c3',     'rsvd3',        'sdmmc2',      True,  False, False),
    ('cam_i2c_sda',       'bb2', 0x3294, 'vgp2',       'i2c3',     'rsvd3',        'sdmmc2',      True,  False, False),
    ('',                  'bb3', 0x3298, 'vgp3',       'displaya', 'displayb',     'sdmmc2',      False, False, False),
    ('',                  'bb4', 0x329c, 'vgp4',       'displaya', 'displayb',     'sdmmc2',      False, False, False),
    ('',                  'bb5', 0x32a0, 'vgp5',       'displaya', 'rsvd3',        'sdmmc2',      False, False, False),
    ('',                  'bb6', 0x32a4, 'i2s4',       'rsvd2',    'displayb',     'sdmmc2',      False, False, False),
    ('',                  'bb7', 0x32a8, 'i2s4',       'rsvd2',    'rsvd3',        'sdmmc2',      False, False, False),
    ('cam_mclk',          'cc0', 0x3284, 'vi',         'vi_alt1',  'vi_alt3',      'sdmmc2',      False, False, False),
    ('',                  'cc1', 0x3288, 'i2s4',       'rsvd2',    'rsvd3',        'sdmmc2',      False, False, False),
    ('',                  'cc2', 0x32ac, 'i2s4',       'rsvd2',    'sdmmc3',       'sdmmc2',      False, False, False),
    ('sdmmc4_clk',        'cc4', 0x3258, 'sdmmc4',     'rsvd2',    'gmi',          'rsvd4',       False, True,  False),
    ('clk2_req',          'cc5', 0x306c, 'dap',        'rsvd2',    'rsvd3',        'rsvd4',       False, False, False),
    ('pex_l0_rst_n',      'dd1', 0x33bc, 'pe0',        'rsvd2',    'rsvd3',        'rsvd4',       False, False, False),
    ('pex_l0_clkreq_n',   'dd2', 0x33c0, 'pe0',        'rsvd2',    'rsvd3',        'rsvd4',       False, False, False),
    ('pex_wake_n',        'dd3', 0x33c4, 'pe',         'rsvd2',    'rsvd3',        'rsvd4',       False, False, False),
    ('pex_l1_rst_n',      'dd5', 0x33cc, 'pe1',        'rsvd2',    'rsvd3',        'rsvd4',       False, False, False),
    ('pex_l1_clkreq_n',   'dd6', 0x33d0, 'pe1',        'rsvd2',    'rsvd3',        'rsvd4',       False, False, False),
    ('clk3_out',          'ee0', 0x31b8, 'extperiph3', 'rsvd2',    'rsvd3',        'rsvd4',       False, False, False),
    ('clk3_req',          'ee1', 0x31bc, 'dev3',       'rsvd2',    'rsvd3',        'rsvd4',       False, False, False),
    ('dap_mclk1_req',     'ee2', 0x3348, 'dap',        'dap1',     'sata',         'rsvd4',       False, False, False),
    ('hdmi_cec',          'ee3', 0x33e0, 'cec',        'rsvd2',    'rsvd3',        'rsvd4',       True,  False, False),
    ('sdmmc3_clk_lb_out', 'ee4', 0x3400, 'sdmmc3',     'rsvd2',    'rsvd3',        'rsvd4',       False, False, False),
    ('sdmmc3_clk_lb_in',  'ee5', 0x33fc, 'sdmmc3',     'rsvd2',    'rsvd3',        'rsvd4',       False, False, False),
    ('dp_hpd',            'ff0', 0x3430, 'dp',         'rsvd2',    'rsvd3',        'rsvd4',       False, False, False),
    ('usb_vbus_en2',      'ff1', 0x3414, 'usb',        'rsvd2',    'rsvd3',        'rsvd4',       True,  False, False),
    ('',                  'ff2', 0x3418, 'sata',       'rsvd2',    'rsvd3',        'rsvd4',       True,  False, False),
)

pins = (
    #name,           reg,    f0,       f1,      f2,      f3,            od,    ior,   rcv_sel
    ('core_pwr_req', 0x3324, 'pwron',  'rsvd2', 'rsvd3', 'rsvd4',       False, False, False),
    ('cpu_pwr_req',  0x3328, 'cpu',    'rsvd2', 'rsvd3', 'rsvd4',       False, False, False),
    ('pwr_int_n',    0x332c, 'pmi',    'rsvd2', 'rsvd3', 'rsvd4',       False, False, False),
    ('gmi_clk_lb',   0x3404, 'sdmmc2', 'rsvd2', 'gmi',   'rsvd4',       False, False, False),
    ('reset_out_n',  0x3408, 'rsvd1',  'rsvd2', 'rsvd3', 'reset_out_n', False, False, False),
    ('owr',          0x3334, 'owr',    'rsvd2', 'rsvd3', 'rsvd4',       False, False, True),
    ('clk_32k_in',   0x3330, 'clk',    'rsvd2', 'rsvd3', 'rsvd4',       False, False, False),
    ('jtag_rtck',    0x32b0, 'rtck',   'rsvd2', 'rsvd3', 'rsvd4',       False, False, False),
    ('dsi_b_clk_p',  ),
    ('dsi_b_clk_n',  ),
    ('dsi_b_d0_p',   ),
    ('dsi_b_d0_n',   ),
    ('dsi_b_d1_p',   ),
    ('dsi_b_d1_n',   ),
    ('dsi_b_d2_p',   ),
    ('dsi_b_d2_n',   ),
    ('dsi_b_d3_p',   ),
    ('dsi_b_d3_n',   ),
)

drive_groups = (
    #name, r, hsm_b, schmitt_b, lpmd_b, drvdn_b, drvdn_w, drvup_b, drvup_w, slwr_b, slwr_w, slwf_b, slwf_w, drvtype
    ('ao1',         0x868, 2, 3, 4,  12, 5, 20, 5,  28, 2, 30, 2,  False),
    ('ao2',         0x86c, 2, 3, 4,  12, 5, 20, 5,  28, 2, 30, 2,  False),
    ('at1',         0x870, 2, 3, 4,  12, 7, 20, 7,  28, 2, 30, 2,  True),
    ('at2',         0x874, 2, 3, 4,  12, 7, 20, 7,  28, 2, 30, 2,  True),
    ('at3',         0x878, 2, 3, 4,  12, 7, 20, 7,  28, 2, 30, 2,  True),
    ('at4',         0x87c, 2, 3, 4,  12, 7, 20, 7,  28, 2, 30, 2,  True),
    ('at5',         0x880, 2, 3, 4,  14, 5, 19, 5,  28, 2, 30, 2,  False),
    ('cdev1',       0x884, 2, 3, 4,  12, 5, 20, 5,  28, 2, 30, 2,  False),
    ('cdev2',       0x888, 2, 3, 4,  12, 5, 20, 5,  28, 2, 30, 2,  False),
    ('dap1',        0x890, 2, 3, 4,  12, 5, 20, 5,  28, 2, 30, 2,  False),
    ('dap2',        0x894, 2, 3, 4,  12, 5, 20, 5,  28, 2, 30, 2,  False),
    ('dap3',        0x898, 2, 3, 4,  12, 5, 20, 5,  28, 2, 30, 2,  False),
    ('dap4',        0x89c, 2, 3, 4,  12, 5, 20, 5,  28, 2, 30, 2,  False),
    ('dbg',         0x8a0, 2, 3, 4,  12, 5, 20, 5,  28, 2, 30, 2,  False),
    ('sdio3',       0x8b0, 2, 3, -1, 12, 7, 20, 7,  28, 2, 30, 2,  False),
    ('spi',         0x8b4, 2, 3, 4,  12, 5, 20, 5,  28, 2, 30, 2,  False),
    ('uaa',         0x8b8, 2, 3, 4,  12, 5, 20, 5,  28, 2, 30, 2,  False),
    ('uab',         0x8bc, 2, 3, 4,  12, 5, 20, 5,  28, 2, 30, 2,  False),
    ('uart2',       0x8c0, 2, 3, 4,  12, 5, 20, 5,  28, 2, 30, 2,  False),
    ('uart3',       0x8c4, 2, 3, 4,  12, 5, 20, 5,  28, 2, 30, 2,  False),
    ('sdio1',       0x8ec, 2, 3, -1, 12, 7, 20, 7,  28, 2, 30, 2,  False),
    ('ddc',         0x8fc, 2, 3, 4,  12, 5, 20, 5,  28, 2, 30, 2,  False),
    ('gma',         0x900, 2, 3, 4,  14, 5, 20, 5,  28, 2, 30, 2,  True),
    ('gme',         0x910, 2, 3, 4,  14, 5, 19, 5,  28, 2, 30, 2,  False),
    ('gmf',         0x914, 2, 3, 4,  14, 5, 19, 5,  28, 2, 30, 2,  False),
    ('gmg',         0x918, 2, 3, 4,  14, 5, 19, 5,  28, 2, 30, 2,  False),
    ('gmh',         0x91c, 2, 3, 4,  14, 5, 19, 5,  28, 2, 30, 2,  False),
    ('owr',         0x920, 2, 3, 4,  12, 5, 20, 5,  28, 2, 30, 2,  False),
    # There is confusion in the TRM; is this UDA or UAD?
    ('uda',         0x924, 2, 3, 4,  12, 5, 20, 5,  28, 2, 30, 2,  False),
    ('gpv',         0x928, 2, 3, 4,  12, 5, 20, 5,  28, 2, 30, 2,  False),
    ('dev3',        0x92c, 2, 3, 4,  12, 5, 20, 5,  28, 2, 30, 2,  False),
    ('cec',         0x938, 2, 3, 4,  12, 5, 20, 5,  28, 2, 30, 2,  False),
    ('at6',         0x994, 2, 3, 4,  12, 7, 20, 7,  28, 2, 30, 2,  True),
    ('dap5',        0x998, 2, 3, 4,  12, 5, 20, 5,  28, 2, 30, 2,  False),
    ('usb_vbus_en', 0x99c, 2, 3, 4,  12, 5, 20, 5,  28, 2, 30, 2,  False),
    ('ao3',         0x9a8, 2, 3, 4,  12, 5, -1, -1, 28, 2, -1, -1, False),
    ('ao0',         0x9b0, 2, 3, 4,  12, 5, 20, 5,  28, 2, 30, 2,  False),
    ('hv0',         0x9b4, 2, 3, 4,  12, 5, -1, -1, 28, 2, -1, -1, False),
    ('sdio4',       0x9c4, 2, 3, 4,  12, 5, 20, 5,  28, 2, 30, 2,  False),
    ('ao4',         0x9c8, 2, 3, 4,  12, 7, 20, 7,  28, 2, 30, 2,  True),
)

drive_group_pins = {
    'ao1': (
        'kb_row0_pr0',
        'kb_row1_pr1',
        'kb_row2_pr2',
        'kb_row3_pr3',
        'kb_row4_pr4',
        'kb_row5_pr5',
        'kb_row6_pr6',
        'kb_row7_pr7',
        'pwr_i2c_scl_pz6',
        'pwr_i2c_sda_pz7',
    ),
    'ao2': (
        'clk_32k_out_pa0',
        'clk_32k_in',
        'kb_col0_pq0',
        'kb_col1_pq1',
        'kb_col2_pq2',
        'kb_col3_pq3',
        'kb_col4_pq4',
        'kb_col5_pq5',
        'kb_col6_pq6',
        'kb_col7_pq7',
        'kb_row8_ps0',
        'kb_row9_ps1',
        'kb_row10_ps2',
        'kb_row11_ps3',
        'kb_row12_ps4',
        'kb_row13_ps5',
        'kb_row14_ps6',
        'kb_row15_ps7',
        'kb_row16_pt0',
        'kb_row17_pt1',
        'sdmmc3_cd_n_pv2',
        'core_pwr_req',
        'cpu_pwr_req',
        'pwr_int_n',
    ),
    'at1': (
        'ph0',
        'ph1',
        'ph2',
        'ph3',
    ),
    'at2': (
        'pg0',
        'pg1',
        'pg2',
        'pg3',
        'pg4',
        'pg5',
        'pg6',
        'pg7',
        'pi0',
        'pi1',
        'pi3',
        'pi4',
        'pi7',
        'pk0',
        'pk2',
    ),
    'at3': (
        'pc7',
        'pj0',
    ),
    'at4': (
        'pb0',
        'pb1',
        'pj0',
        'pj7',
        'pk7',
    ),
    'at5': (
        'gen2_i2c_scl_pt5',
        'gen2_i2c_sda_pt6',
    ),
    'cdev1': (
        'dap_mclk1_pw4',
        'dap_mclk1_req_pee2',
    ),
    'cdev2': (
        'clk2_out_pw5',
        'clk2_req_pcc5',
    ),
    'dap1': (
        'dap1_fs_pn0',
        'dap1_din_pn1',
        'dap1_dout_pn2',
        'dap1_sclk_pn3',
    ),
    'dap2': (
        'dap2_fs_pa2',
        'dap2_sclk_pa3',
        'dap2_din_pa4',
        'dap2_dout_pa5',
    ),
    'dap3': (
        'dap3_fs_pp0',
        'dap3_din_pp1',
        'dap3_dout_pp2',
        'dap3_sclk_pp3',
    ),
    'dap4': (
        'dap4_fs_pp4',
        'dap4_din_pp5',
        'dap4_dout_pp6',
        'dap4_sclk_pp7',
    ),
    'dbg': (
        'gen1_i2c_scl_pc4',
        'gen1_i2c_sda_pc5',
        'pu0',
        'pu1',
        'pu2',
        'pu3',
        'pu4',
        'pu5',
        'pu6',
    ),
    'sdio3': (
        'sdmmc3_clk_pa6',
        'sdmmc3_cmd_pa7',
        'sdmmc3_dat3_pb4',
        'sdmmc3_dat2_pb5',
        'sdmmc3_dat1_pb6',
        'sdmmc3_dat0_pb7',
        'sdmmc3_clk_lb_out_pee4',
        'sdmmc3_clk_lb_in_pee5',
    ),
    'spi': (
        'dvfs_pwm_px0',
        'gpio_x1_aud_px1',
        'dvfs_clk_px2',
        'gpio_x3_aud_px3',
        'gpio_x4_aud_px4',
        'gpio_x5_aud_px5',
        'gpio_x6_aud_px6',
        'gpio_x7_aud_px7',
        'gpio_w2_aud_pw2',
        'gpio_w3_aud_pw3',
    ),
    'uaa': (
        'ulpi_data0_po1',
        'ulpi_data1_po2',
        'ulpi_data2_po3',
        'ulpi_data3_po4',
    ),
    'uab': (
        'ulpi_data7_po0',
        'ulpi_data4_po5',
        'ulpi_data5_po6',
        'ulpi_data6_po7',
        'pv0',
        'pv1',
    ),
    'uart2': (
        'uart2_txd_pc2',
        'uart2_rxd_pc3',
        'uart2_cts_n_pj5',
        'uart2_rts_n_pj6',
    ),
    'uart3': (
        'uart3_cts_n_pa1',
        'uart3_rts_n_pc0',
        'uart3_txd_pw6',
        'uart3_rxd_pw7',
    ),
    'sdio1': (
        'sdmmc1_dat3_py4',
        'sdmmc1_dat2_py5',
        'sdmmc1_dat1_py6',
        'sdmmc1_dat0_py7',
        'sdmmc1_clk_pz0',
        'sdmmc1_cmd_pz1',
    ),
    'ddc': (
        'ddc_scl_pv4',
        'ddc_sda_pv5',
    ),
    'gma': (
        'sdmmc4_clk_pcc4',
        'sdmmc4_cmd_pt7',
        'sdmmc4_dat0_paa0',
        'sdmmc4_dat1_paa1',
        'sdmmc4_dat2_paa2',
        'sdmmc4_dat3_paa3',
        'sdmmc4_dat4_paa4',
        'sdmmc4_dat5_paa5',
        'sdmmc4_dat6_paa6',
        'sdmmc4_dat7_paa7',
    ),
    'gme': (
        'pbb0',
        'cam_i2c_scl_pbb1',
        'cam_i2c_sda_pbb2',
        'pbb3',
        'pcc2',
    ),
    'gmf': (
        'pbb4',
        'pbb5',
        'pbb6',
        'pbb7',
    ),
    'gmg': (
        'cam_mclk_pcc0',
    ),
    'gmh': (
        'pcc1',
    ),
    'owr': (
        'sdmmc3_cd_n_pv2',
        'owr',
    ),
    'uda': (
        'ulpi_clk_py0',
        'ulpi_dir_py1',
        'ulpi_nxt_py2',
        'ulpi_stp_py3',
    ),
    'gpv': (
        'pex_l0_rst_n_pdd1',
        'pex_l0_clkreq_n_pdd2',
        'pex_wake_n_pdd3',
        'pex_l1_rst_n_pdd5',
        'pex_l1_clkreq_n_pdd6',
        'usb_vbus_en2_pff1',
        'pff2',
    ),
    'dev3': (
        'clk3_out_pee0',
        'clk3_req_pee1',
    ),
    'cec': (
        'hdmi_cec_pee3',
    ),
    'at6': (
        'pk1',
        'pk3',
        'pk4',
        'pi2',
        'pi5',
        'pi6',
        'ph4',
        'ph5',
        'ph6',
        'ph7',
    ),
    'dap5': (
        'spdif_in_pk6',
        'spdif_out_pk5',
        'dp_hpd_pff0',
    ),
    'usb_vbus_en': (
        'usb_vbus_en0_pn4',
        'usb_vbus_en1_pn5',
    ),
    'ao3': (
        'reset_out_n',
    ),
    'ao0': (
        'jtag_rtck',
    ),
    'hv0': (
        'hdmi_int_pn7',
    ),
    'sdio4': (
        'sdmmc1_wp_n_pv3',
    ),
    'ao4': (
        'jtag_rtck',
    ),
}

mipi_pad_ctrl_groups = {
    #name,    r,     b, f0,    f1
    ('dsi_b', 0x820, 1, 'csi', 'dsi_b'),
}

mipi_pad_ctrl_group_pins = {
    'dsi_b': (
        'dsi_b_clk_p',
        'dsi_b_clk_n',
        'dsi_b_d0_p',
        'dsi_b_d0_n',
        'dsi_b_d1_p',
        'dsi_b_d1_n',
        'dsi_b_d2_p',
        'dsi_b_d2_n',
        'dsi_b_d3_p',
        'dsi_b_d3_n',
    ),
}