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
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
|
/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
* tsi148.h
*
* Support for the Tundra TSI148 VME Bridge chip
*
* Author: Tom Armistead
* Updated and maintained by Ajit Prem
* Copyright 2004 Motorola Inc.
*/
#ifndef TSI148_H
#define TSI148_H
#ifndef PCI_VENDOR_ID_TUNDRA
#define PCI_VENDOR_ID_TUNDRA 0x10e3
#endif
#ifndef PCI_DEVICE_ID_TUNDRA_TSI148
#define PCI_DEVICE_ID_TUNDRA_TSI148 0x148
#endif
/*
* Define the number of each that the Tsi148 supports.
*/
#define TSI148_MAX_MASTER 8 /* Max Master Windows */
#define TSI148_MAX_SLAVE 8 /* Max Slave Windows */
#define TSI148_MAX_DMA 2 /* Max DMA Controllers */
#define TSI148_MAX_MAILBOX 4 /* Max Mail Box registers */
#define TSI148_MAX_SEMAPHORE 8 /* Max Semaphores */
/* Structure used to hold driver specific information */
struct tsi148_driver {
void __iomem *base; /* Base Address of device registers */
wait_queue_head_t dma_queue[2];
wait_queue_head_t iack_queue;
void (*lm_callback[4])(void *); /* Called in interrupt handler */
void *lm_data[4];
void *crcsr_kernel;
dma_addr_t crcsr_bus;
struct vme_master_resource *flush_image;
struct mutex vme_rmw; /* Only one RMW cycle at a time */
struct mutex vme_int; /*
* Only one VME interrupt can be
* generated at a time, provide locking
*/
};
/*
* Layout of a DMAC Linked-List Descriptor
*
* Note: This structure is accessed via the chip and therefore must be
* correctly laid out - It must also be aligned on 64-bit boundaries.
*/
struct tsi148_dma_descriptor {
__be32 dsau; /* Source Address */
__be32 dsal;
__be32 ddau; /* Destination Address */
__be32 ddal;
__be32 dsat; /* Source attributes */
__be32 ddat; /* Destination attributes */
__be32 dnlau; /* Next link address */
__be32 dnlal;
__be32 dcnt; /* Byte count */
__be32 ddbs; /* 2eSST Broadcast select */
};
struct tsi148_dma_entry {
/*
* The descriptor needs to be aligned on a 64-bit boundary, we increase
* the chance of this by putting it first in the structure.
*/
struct tsi148_dma_descriptor descriptor;
struct list_head list;
dma_addr_t dma_handle;
};
/*
* TSI148 ASIC register structure overlays and bit field definitions.
*
* Note: Tsi148 Register Group (CRG) consists of the following
* combination of registers:
* PCFS - PCI Configuration Space Registers
* LCSR - Local Control and Status Registers
* GCSR - Global Control and Status Registers
* CR/CSR - Subset of Configuration ROM /
* Control and Status Registers
*/
/*
* Command/Status Registers (CRG + $004)
*/
#define TSI148_PCFS_ID 0x0
#define TSI148_PCFS_CSR 0x4
#define TSI148_PCFS_CLASS 0x8
#define TSI148_PCFS_MISC0 0xC
#define TSI148_PCFS_MBARL 0x10
#define TSI148_PCFS_MBARU 0x14
#define TSI148_PCFS_SUBID 0x28
#define TSI148_PCFS_CAPP 0x34
#define TSI148_PCFS_MISC1 0x3C
#define TSI148_PCFS_XCAPP 0x40
#define TSI148_PCFS_XSTAT 0x44
/*
* LCSR definitions
*/
/*
* Outbound Translations
*/
#define TSI148_LCSR_OT0_OTSAU 0x100
#define TSI148_LCSR_OT0_OTSAL 0x104
#define TSI148_LCSR_OT0_OTEAU 0x108
#define TSI148_LCSR_OT0_OTEAL 0x10C
#define TSI148_LCSR_OT0_OTOFU 0x110
#define TSI148_LCSR_OT0_OTOFL 0x114
#define TSI148_LCSR_OT0_OTBS 0x118
#define TSI148_LCSR_OT0_OTAT 0x11C
#define TSI148_LCSR_OT1_OTSAU 0x120
#define TSI148_LCSR_OT1_OTSAL 0x124
#define TSI148_LCSR_OT1_OTEAU 0x128
#define TSI148_LCSR_OT1_OTEAL 0x12C
#define TSI148_LCSR_OT1_OTOFU 0x130
#define TSI148_LCSR_OT1_OTOFL 0x134
#define TSI148_LCSR_OT1_OTBS 0x138
#define TSI148_LCSR_OT1_OTAT 0x13C
#define TSI148_LCSR_OT2_OTSAU 0x140
#define TSI148_LCSR_OT2_OTSAL 0x144
#define TSI148_LCSR_OT2_OTEAU 0x148
#define TSI148_LCSR_OT2_OTEAL 0x14C
#define TSI148_LCSR_OT2_OTOFU 0x150
#define TSI148_LCSR_OT2_OTOFL 0x154
#define TSI148_LCSR_OT2_OTBS 0x158
#define TSI148_LCSR_OT2_OTAT 0x15C
#define TSI148_LCSR_OT3_OTSAU 0x160
#define TSI148_LCSR_OT3_OTSAL 0x164
#define TSI148_LCSR_OT3_OTEAU 0x168
#define TSI148_LCSR_OT3_OTEAL 0x16C
#define TSI148_LCSR_OT3_OTOFU 0x170
#define TSI148_LCSR_OT3_OTOFL 0x174
#define TSI148_LCSR_OT3_OTBS 0x178
#define TSI148_LCSR_OT3_OTAT 0x17C
#define TSI148_LCSR_OT4_OTSAU 0x180
#define TSI148_LCSR_OT4_OTSAL 0x184
#define TSI148_LCSR_OT4_OTEAU 0x188
#define TSI148_LCSR_OT4_OTEAL 0x18C
#define TSI148_LCSR_OT4_OTOFU 0x190
#define TSI148_LCSR_OT4_OTOFL 0x194
#define TSI148_LCSR_OT4_OTBS 0x198
#define TSI148_LCSR_OT4_OTAT 0x19C
#define TSI148_LCSR_OT5_OTSAU 0x1A0
#define TSI148_LCSR_OT5_OTSAL 0x1A4
#define TSI148_LCSR_OT5_OTEAU 0x1A8
#define TSI148_LCSR_OT5_OTEAL 0x1AC
#define TSI148_LCSR_OT5_OTOFU 0x1B0
#define TSI148_LCSR_OT5_OTOFL 0x1B4
#define TSI148_LCSR_OT5_OTBS 0x1B8
#define TSI148_LCSR_OT5_OTAT 0x1BC
#define TSI148_LCSR_OT6_OTSAU 0x1C0
#define TSI148_LCSR_OT6_OTSAL 0x1C4
#define TSI148_LCSR_OT6_OTEAU 0x1C8
#define TSI148_LCSR_OT6_OTEAL 0x1CC
#define TSI148_LCSR_OT6_OTOFU 0x1D0
#define TSI148_LCSR_OT6_OTOFL 0x1D4
#define TSI148_LCSR_OT6_OTBS 0x1D8
#define TSI148_LCSR_OT6_OTAT 0x1DC
#define TSI148_LCSR_OT7_OTSAU 0x1E0
#define TSI148_LCSR_OT7_OTSAL 0x1E4
#define TSI148_LCSR_OT7_OTEAU 0x1E8
#define TSI148_LCSR_OT7_OTEAL 0x1EC
#define TSI148_LCSR_OT7_OTOFU 0x1F0
#define TSI148_LCSR_OT7_OTOFL 0x1F4
#define TSI148_LCSR_OT7_OTBS 0x1F8
#define TSI148_LCSR_OT7_OTAT 0x1FC
#define TSI148_LCSR_OT0 0x100
#define TSI148_LCSR_OT1 0x120
#define TSI148_LCSR_OT2 0x140
#define TSI148_LCSR_OT3 0x160
#define TSI148_LCSR_OT4 0x180
#define TSI148_LCSR_OT5 0x1A0
#define TSI148_LCSR_OT6 0x1C0
#define TSI148_LCSR_OT7 0x1E0
static const int TSI148_LCSR_OT[8] = { TSI148_LCSR_OT0, TSI148_LCSR_OT1,
TSI148_LCSR_OT2, TSI148_LCSR_OT3,
TSI148_LCSR_OT4, TSI148_LCSR_OT5,
TSI148_LCSR_OT6, TSI148_LCSR_OT7 };
#define TSI148_LCSR_OFFSET_OTSAU 0x0
#define TSI148_LCSR_OFFSET_OTSAL 0x4
#define TSI148_LCSR_OFFSET_OTEAU 0x8
#define TSI148_LCSR_OFFSET_OTEAL 0xC
#define TSI148_LCSR_OFFSET_OTOFU 0x10
#define TSI148_LCSR_OFFSET_OTOFL 0x14
#define TSI148_LCSR_OFFSET_OTBS 0x18
#define TSI148_LCSR_OFFSET_OTAT 0x1C
/*
* VMEbus interrupt ack
* offset 0x200
*/
#define TSI148_LCSR_VIACK1 0x204
#define TSI148_LCSR_VIACK2 0x208
#define TSI148_LCSR_VIACK3 0x20C
#define TSI148_LCSR_VIACK4 0x210
#define TSI148_LCSR_VIACK5 0x214
#define TSI148_LCSR_VIACK6 0x218
#define TSI148_LCSR_VIACK7 0x21C
static const int TSI148_LCSR_VIACK[8] = { 0, TSI148_LCSR_VIACK1,
TSI148_LCSR_VIACK2, TSI148_LCSR_VIACK3,
TSI148_LCSR_VIACK4, TSI148_LCSR_VIACK5,
TSI148_LCSR_VIACK6, TSI148_LCSR_VIACK7 };
/*
* RMW
* offset 0x220
*/
#define TSI148_LCSR_RMWAU 0x220
#define TSI148_LCSR_RMWAL 0x224
#define TSI148_LCSR_RMWEN 0x228
#define TSI148_LCSR_RMWC 0x22C
#define TSI148_LCSR_RMWS 0x230
/*
* VMEbus control
* offset 0x234
*/
#define TSI148_LCSR_VMCTRL 0x234
#define TSI148_LCSR_VCTRL 0x238
#define TSI148_LCSR_VSTAT 0x23C
/*
* PCI status
* offset 0x240
*/
#define TSI148_LCSR_PSTAT 0x240
/*
* VME filter.
* offset 0x250
*/
#define TSI148_LCSR_VMEFL 0x250
/*
* VME exception.
* offset 0x260
*/
#define TSI148_LCSR_VEAU 0x260
#define TSI148_LCSR_VEAL 0x264
#define TSI148_LCSR_VEAT 0x268
/*
* PCI error
* offset 0x270
*/
#define TSI148_LCSR_EDPAU 0x270
#define TSI148_LCSR_EDPAL 0x274
#define TSI148_LCSR_EDPXA 0x278
#define TSI148_LCSR_EDPXS 0x27C
#define TSI148_LCSR_EDPAT 0x280
/*
* Inbound Translations
* offset 0x300
*/
#define TSI148_LCSR_IT0_ITSAU 0x300
#define TSI148_LCSR_IT0_ITSAL 0x304
#define TSI148_LCSR_IT0_ITEAU 0x308
#define TSI148_LCSR_IT0_ITEAL 0x30C
#define TSI148_LCSR_IT0_ITOFU 0x310
#define TSI148_LCSR_IT0_ITOFL 0x314
#define TSI148_LCSR_IT0_ITAT 0x318
#define TSI148_LCSR_IT1_ITSAU 0x320
#define TSI148_LCSR_IT1_ITSAL 0x324
#define TSI148_LCSR_IT1_ITEAU 0x328
#define TSI148_LCSR_IT1_ITEAL 0x32C
#define TSI148_LCSR_IT1_ITOFU 0x330
#define TSI148_LCSR_IT1_ITOFL 0x334
#define TSI148_LCSR_IT1_ITAT 0x338
#define TSI148_LCSR_IT2_ITSAU 0x340
#define TSI148_LCSR_IT2_ITSAL 0x344
#define TSI148_LCSR_IT2_ITEAU 0x348
#define TSI148_LCSR_IT2_ITEAL 0x34C
#define TSI148_LCSR_IT2_ITOFU 0x350
#define TSI148_LCSR_IT2_ITOFL 0x354
#define TSI148_LCSR_IT2_ITAT 0x358
#define TSI148_LCSR_IT3_ITSAU 0x360
#define TSI148_LCSR_IT3_ITSAL 0x364
#define TSI148_LCSR_IT3_ITEAU 0x368
#define TSI148_LCSR_IT3_ITEAL 0x36C
#define TSI148_LCSR_IT3_ITOFU 0x370
#define TSI148_LCSR_IT3_ITOFL 0x374
#define TSI148_LCSR_IT3_ITAT 0x378
#define TSI148_LCSR_IT4_ITSAU 0x380
#define TSI148_LCSR_IT4_ITSAL 0x384
#define TSI148_LCSR_IT4_ITEAU 0x388
#define TSI148_LCSR_IT4_ITEAL 0x38C
#define TSI148_LCSR_IT4_ITOFU 0x390
#define TSI148_LCSR_IT4_ITOFL 0x394
#define TSI148_LCSR_IT4_ITAT 0x398
#define TSI148_LCSR_IT5_ITSAU 0x3A0
#define TSI148_LCSR_IT5_ITSAL 0x3A4
#define TSI148_LCSR_IT5_ITEAU 0x3A8
#define TSI148_LCSR_IT5_ITEAL 0x3AC
#define TSI148_LCSR_IT5_ITOFU 0x3B0
#define TSI148_LCSR_IT5_ITOFL 0x3B4
#define TSI148_LCSR_IT5_ITAT 0x3B8
#define TSI148_LCSR_IT6_ITSAU 0x3C0
#define TSI148_LCSR_IT6_ITSAL 0x3C4
#define TSI148_LCSR_IT6_ITEAU 0x3C8
#define TSI148_LCSR_IT6_ITEAL 0x3CC
#define TSI148_LCSR_IT6_ITOFU 0x3D0
#define TSI148_LCSR_IT6_ITOFL 0x3D4
#define TSI148_LCSR_IT6_ITAT 0x3D8
#define TSI148_LCSR_IT7_ITSAU 0x3E0
#define TSI148_LCSR_IT7_ITSAL 0x3E4
#define TSI148_LCSR_IT7_ITEAU 0x3E8
#define TSI148_LCSR_IT7_ITEAL 0x3EC
#define TSI148_LCSR_IT7_ITOFU 0x3F0
#define TSI148_LCSR_IT7_ITOFL 0x3F4
#define TSI148_LCSR_IT7_ITAT 0x3F8
#define TSI148_LCSR_IT0 0x300
#define TSI148_LCSR_IT1 0x320
#define TSI148_LCSR_IT2 0x340
#define TSI148_LCSR_IT3 0x360
#define TSI148_LCSR_IT4 0x380
#define TSI148_LCSR_IT5 0x3A0
#define TSI148_LCSR_IT6 0x3C0
#define TSI148_LCSR_IT7 0x3E0
static const int TSI148_LCSR_IT[8] = { TSI148_LCSR_IT0, TSI148_LCSR_IT1,
TSI148_LCSR_IT2, TSI148_LCSR_IT3,
TSI148_LCSR_IT4, TSI148_LCSR_IT5,
TSI148_LCSR_IT6, TSI148_LCSR_IT7 };
#define TSI148_LCSR_OFFSET_ITSAU 0x0
#define TSI148_LCSR_OFFSET_ITSAL 0x4
#define TSI148_LCSR_OFFSET_ITEAU 0x8
#define TSI148_LCSR_OFFSET_ITEAL 0xC
#define TSI148_LCSR_OFFSET_ITOFU 0x10
#define TSI148_LCSR_OFFSET_ITOFL 0x14
#define TSI148_LCSR_OFFSET_ITAT 0x18
/*
* Inbound Translation GCSR
* offset 0x400
*/
#define TSI148_LCSR_GBAU 0x400
#define TSI148_LCSR_GBAL 0x404
#define TSI148_LCSR_GCSRAT 0x408
/*
* Inbound Translation CRG
* offset 0x40C
*/
#define TSI148_LCSR_CBAU 0x40C
#define TSI148_LCSR_CBAL 0x410
#define TSI148_LCSR_CSRAT 0x414
/*
* Inbound Translation CR/CSR
* CRG
* offset 0x418
*/
#define TSI148_LCSR_CROU 0x418
#define TSI148_LCSR_CROL 0x41C
#define TSI148_LCSR_CRAT 0x420
/*
* Inbound Translation Location Monitor
* offset 0x424
*/
#define TSI148_LCSR_LMBAU 0x424
#define TSI148_LCSR_LMBAL 0x428
#define TSI148_LCSR_LMAT 0x42C
/*
* VMEbus Interrupt Control.
* offset 0x430
*/
#define TSI148_LCSR_BCU 0x430
#define TSI148_LCSR_BCL 0x434
#define TSI148_LCSR_BPGTR 0x438
#define TSI148_LCSR_BPCTR 0x43C
#define TSI148_LCSR_VICR 0x440
/*
* Local Bus Interrupt Control.
* offset 0x448
*/
#define TSI148_LCSR_INTEN 0x448
#define TSI148_LCSR_INTEO 0x44C
#define TSI148_LCSR_INTS 0x450
#define TSI148_LCSR_INTC 0x454
#define TSI148_LCSR_INTM1 0x458
#define TSI148_LCSR_INTM2 0x45C
/*
* DMA Controllers
* offset 0x500
*/
#define TSI148_LCSR_DCTL0 0x500
#define TSI148_LCSR_DSTA0 0x504
#define TSI148_LCSR_DCSAU0 0x508
#define TSI148_LCSR_DCSAL0 0x50C
#define TSI148_LCSR_DCDAU0 0x510
#define TSI148_LCSR_DCDAL0 0x514
#define TSI148_LCSR_DCLAU0 0x518
#define TSI148_LCSR_DCLAL0 0x51C
#define TSI148_LCSR_DSAU0 0x520
#define TSI148_LCSR_DSAL0 0x524
#define TSI148_LCSR_DDAU0 0x528
#define TSI148_LCSR_DDAL0 0x52C
#define TSI148_LCSR_DSAT0 0x530
#define TSI148_LCSR_DDAT0 0x534
#define TSI148_LCSR_DNLAU0 0x538
#define TSI148_LCSR_DNLAL0 0x53C
#define TSI148_LCSR_DCNT0 0x540
#define TSI148_LCSR_DDBS0 0x544
#define TSI148_LCSR_DCTL1 0x580
#define TSI148_LCSR_DSTA1 0x584
#define TSI148_LCSR_DCSAU1 0x588
#define TSI148_LCSR_DCSAL1 0x58C
#define TSI148_LCSR_DCDAU1 0x590
#define TSI148_LCSR_DCDAL1 0x594
#define TSI148_LCSR_DCLAU1 0x598
#define TSI148_LCSR_DCLAL1 0x59C
#define TSI148_LCSR_DSAU1 0x5A0
#define TSI148_LCSR_DSAL1 0x5A4
#define TSI148_LCSR_DDAU1 0x5A8
#define TSI148_LCSR_DDAL1 0x5AC
#define TSI148_LCSR_DSAT1 0x5B0
#define TSI148_LCSR_DDAT1 0x5B4
#define TSI148_LCSR_DNLAU1 0x5B8
#define TSI148_LCSR_DNLAL1 0x5BC
#define TSI148_LCSR_DCNT1 0x5C0
#define TSI148_LCSR_DDBS1 0x5C4
#define TSI148_LCSR_DMA0 0x500
#define TSI148_LCSR_DMA1 0x580
static const int TSI148_LCSR_DMA[TSI148_MAX_DMA] = { TSI148_LCSR_DMA0,
TSI148_LCSR_DMA1 };
#define TSI148_LCSR_OFFSET_DCTL 0x0
#define TSI148_LCSR_OFFSET_DSTA 0x4
#define TSI148_LCSR_OFFSET_DCSAU 0x8
#define TSI148_LCSR_OFFSET_DCSAL 0xC
#define TSI148_LCSR_OFFSET_DCDAU 0x10
#define TSI148_LCSR_OFFSET_DCDAL 0x14
#define TSI148_LCSR_OFFSET_DCLAU 0x18
#define TSI148_LCSR_OFFSET_DCLAL 0x1C
#define TSI148_LCSR_OFFSET_DSAU 0x20
#define TSI148_LCSR_OFFSET_DSAL 0x24
#define TSI148_LCSR_OFFSET_DDAU 0x28
#define TSI148_LCSR_OFFSET_DDAL 0x2C
#define TSI148_LCSR_OFFSET_DSAT 0x30
#define TSI148_LCSR_OFFSET_DDAT 0x34
#define TSI148_LCSR_OFFSET_DNLAU 0x38
#define TSI148_LCSR_OFFSET_DNLAL 0x3C
#define TSI148_LCSR_OFFSET_DCNT 0x40
#define TSI148_LCSR_OFFSET_DDBS 0x44
/*
* GCSR Register Group
*/
/*
* GCSR CRG
* offset 0x00 0x600 - DEVI/VENI
* offset 0x04 0x604 - CTRL/GA/REVID
* offset 0x08 0x608 - Semaphore3/2/1/0
* offset 0x0C 0x60C - Seamphore7/6/5/4
*/
#define TSI148_GCSR_ID 0x600
#define TSI148_GCSR_CSR 0x604
#define TSI148_GCSR_SEMA0 0x608
#define TSI148_GCSR_SEMA1 0x60C
/*
* Mail Box
* GCSR CRG
* offset 0x10 0x610 - Mailbox0
*/
#define TSI148_GCSR_MBOX0 0x610
#define TSI148_GCSR_MBOX1 0x614
#define TSI148_GCSR_MBOX2 0x618
#define TSI148_GCSR_MBOX3 0x61C
static const int TSI148_GCSR_MBOX[4] = { TSI148_GCSR_MBOX0,
TSI148_GCSR_MBOX1,
TSI148_GCSR_MBOX2,
TSI148_GCSR_MBOX3 };
/*
* CR/CSR
*/
/*
* CR/CSR CRG
* offset 0x7FFF4 0xFF4 - CSRBCR
* offset 0x7FFF8 0xFF8 - CSRBSR
* offset 0x7FFFC 0xFFC - CBAR
*/
#define TSI148_CSRBCR 0xFF4
#define TSI148_CSRBSR 0xFF8
#define TSI148_CBAR 0xFFC
/*
* TSI148 Register Bit Definitions
*/
/*
* PFCS Register Set
*/
#define TSI148_PCFS_CMMD_SERR BIT(8) /* SERR_L out pin ssys err */
#define TSI148_PCFS_CMMD_PERR BIT(6) /* PERR_L out pin parity */
#define TSI148_PCFS_CMMD_MSTR BIT(2) /* PCI bus master */
#define TSI148_PCFS_CMMD_MEMSP BIT(1) /* PCI mem space access */
#define TSI148_PCFS_CMMD_IOSP BIT(0) /* PCI I/O space enable */
#define TSI148_PCFS_STAT_RCPVE BIT(15) /* Detected Parity Error */
#define TSI148_PCFS_STAT_SIGSE BIT(14) /* Signalled System Error */
#define TSI148_PCFS_STAT_RCVMA BIT(13) /* Received Master Abort */
#define TSI148_PCFS_STAT_RCVTA BIT(12) /* Received Target Abort */
#define TSI148_PCFS_STAT_SIGTA BIT(11) /* Signalled Target Abort */
#define TSI148_PCFS_STAT_SELTIM (3 << 9) /* DELSEL Timing */
#define TSI148_PCFS_STAT_DPAR BIT(8) /* Data Parity Err Reported */
#define TSI148_PCFS_STAT_FAST BIT(7) /* Fast back-to-back Cap */
#define TSI148_PCFS_STAT_P66M BIT(5) /* 66 MHz Capable */
#define TSI148_PCFS_STAT_CAPL BIT(4) /* Capab List - address $34 */
/*
* Revision ID/Class Code Registers (CRG +$008)
*/
#define TSI148_PCFS_CLAS_M (0xFF << 24) /* Class ID */
#define TSI148_PCFS_SUBCLAS_M (0xFF << 16) /* Sub-Class ID */
#define TSI148_PCFS_PROGIF_M (0xFF << 8) /* Sub-Class ID */
#define TSI148_PCFS_REVID_M (0xFF << 0) /* Rev ID */
/*
* Cache Line Size/ Master Latency Timer/ Header Type Registers (CRG + $00C)
*/
#define TSI148_PCFS_HEAD_M (0xFF << 16) /* Master Lat Timer */
#define TSI148_PCFS_MLAT_M (0xFF << 8) /* Master Lat Timer */
#define TSI148_PCFS_CLSZ_M (0xFF << 0) /* Cache Line Size */
/*
* Memory Base Address Lower Reg (CRG + $010)
*/
#define TSI148_PCFS_MBARL_BASEL_M (0xFFFFF << 12) /* Base Addr Lower Mask */
#define TSI148_PCFS_MBARL_PRE BIT(3) /* Prefetch */
#define TSI148_PCFS_MBARL_MTYPE_M (3 << 1) /* Memory Type Mask */
#define TSI148_PCFS_MBARL_IOMEM BIT(0) /* I/O Space Indicator */
/*
* Message Signaled Interrupt Capabilities Register (CRG + $040)
*/
#define TSI148_PCFS_MSICAP_64BAC BIT(7) /* 64-bit Address Capable */
#define TSI148_PCFS_MSICAP_MME_M (7 << 4) /* Multiple Msg Enable Mask */
#define TSI148_PCFS_MSICAP_MMC_M (7 << 1) /* Multiple Msg Capable Mask */
#define TSI148_PCFS_MSICAP_MSIEN BIT(0) /* Msg signaled INT Enable */
/*
* Message Address Lower Register (CRG +$044)
*/
#define TSI148_PCFS_MSIAL_M (0x3FFFFFFF << 2) /* Mask */
/*
* Message Data Register (CRG + 4C)
*/
#define TSI148_PCFS_MSIMD_M (0xFFFF << 0) /* Mask */
/*
* PCI-X Capabilities Register (CRG + $050)
*/
#define TSI148_PCFS_PCIXCAP_MOST_M (7 << 4) /* Max outstanding Split Tran */
#define TSI148_PCFS_PCIXCAP_MMRBC_M (3 << 2) /* Max Mem Read byte cnt */
#define TSI148_PCFS_PCIXCAP_ERO BIT(1) /* Enable Relaxed Ordering */
#define TSI148_PCFS_PCIXCAP_DPERE BIT(0) /* Data Parity Recover Enable */
/*
* PCI-X Status Register (CRG +$054)
*/
#define TSI148_PCFS_PCIXSTAT_RSCEM BIT(29) /* Received Split Comp Error */
#define TSI148_PCFS_PCIXSTAT_DMCRS_M (7 << 26) /* max Cumulative Read Size */
#define TSI148_PCFS_PCIXSTAT_DMOST_M (7 << 23) /* max outstanding Split Trans */
#define TSI148_PCFS_PCIXSTAT_DMMRC_M (3 << 21) /* max mem read byte count */
#define TSI148_PCFS_PCIXSTAT_DC BIT(20) /* Device Complexity */
#define TSI148_PCFS_PCIXSTAT_USC BIT(19) /* Unexpected Split comp */
#define TSI148_PCFS_PCIXSTAT_SCD BIT(18) /* Split completion discard */
#define TSI148_PCFS_PCIXSTAT_133C BIT(17) /* 133MHz capable */
#define TSI148_PCFS_PCIXSTAT_64D BIT(16) /* 64 bit device */
#define TSI148_PCFS_PCIXSTAT_BN_M (0xFF << 8) /* Bus number */
#define TSI148_PCFS_PCIXSTAT_DN_M (0x1F << 3) /* Device number */
#define TSI148_PCFS_PCIXSTAT_FN_M (7 << 0) /* Function Number */
/*
* LCSR Registers
*/
/*
* Outbound Translation Starting Address Lower
*/
#define TSI148_LCSR_OTSAL_M (0xFFFF << 16) /* Mask */
/*
* Outbound Translation Ending Address Lower
*/
#define TSI148_LCSR_OTEAL_M (0xFFFF << 16) /* Mask */
/*
* Outbound Translation Offset Lower
*/
#define TSI148_LCSR_OTOFFL_M (0xFFFF << 16) /* Mask */
/*
* Outbound Translation 2eSST Broadcast Select
*/
#define TSI148_LCSR_OTBS_M (0xFFFFF << 0) /* Mask */
/*
* Outbound Translation Attribute
*/
#define TSI148_LCSR_OTAT_EN BIT(31) /* Window Enable */
#define TSI148_LCSR_OTAT_MRPFD BIT(18) /* Prefetch Disable */
#define TSI148_LCSR_OTAT_PFS_M (3 << 16) /* Prefetch Size Mask */
#define TSI148_LCSR_OTAT_PFS_2 (0 << 16) /* 2 Cache Lines P Size */
#define TSI148_LCSR_OTAT_PFS_4 BIT(16) /* 4 Cache Lines P Size */
#define TSI148_LCSR_OTAT_PFS_8 (2 << 16) /* 8 Cache Lines P Size */
#define TSI148_LCSR_OTAT_PFS_16 (3 << 16) /* 16 Cache Lines P Size */
#define TSI148_LCSR_OTAT_2eSSTM_M (7 << 11) /* 2eSST Xfer Rate Mask */
#define TSI148_LCSR_OTAT_2eSSTM_160 (0 << 11) /* 160MB/s 2eSST Xfer Rate */
#define TSI148_LCSR_OTAT_2eSSTM_267 BIT(11) /* 267MB/s 2eSST Xfer Rate */
#define TSI148_LCSR_OTAT_2eSSTM_320 (2 << 11) /* 320MB/s 2eSST Xfer Rate */
#define TSI148_LCSR_OTAT_TM_M (7 << 8) /* Xfer Protocol Mask */
#define TSI148_LCSR_OTAT_TM_SCT (0 << 8) /* SCT Xfer Protocol */
#define TSI148_LCSR_OTAT_TM_BLT BIT(8) /* BLT Xfer Protocol */
#define TSI148_LCSR_OTAT_TM_MBLT (2 << 8) /* MBLT Xfer Protocol */
#define TSI148_LCSR_OTAT_TM_2eVME (3 << 8) /* 2eVME Xfer Protocol */
#define TSI148_LCSR_OTAT_TM_2eSST (4 << 8) /* 2eSST Xfer Protocol */
#define TSI148_LCSR_OTAT_TM_2eSSTB (5 << 8) /* 2eSST Bcast Xfer Protocol */
#define TSI148_LCSR_OTAT_DBW_M (3 << 6) /* Max Data Width */
#define TSI148_LCSR_OTAT_DBW_16 (0 << 6) /* 16-bit Data Width */
#define TSI148_LCSR_OTAT_DBW_32 BIT(6) /* 32-bit Data Width */
#define TSI148_LCSR_OTAT_SUP BIT(5) /* Supervisory Access */
#define TSI148_LCSR_OTAT_PGM BIT(4) /* Program Access */
#define TSI148_LCSR_OTAT_AMODE_M (0xf << 0) /* Address Mode Mask */
#define TSI148_LCSR_OTAT_AMODE_A16 (0 << 0) /* A16 Address Space */
#define TSI148_LCSR_OTAT_AMODE_A24 BIT(0) /* A24 Address Space */
#define TSI148_LCSR_OTAT_AMODE_A32 (2 << 0) /* A32 Address Space */
#define TSI148_LCSR_OTAT_AMODE_A64 (4 << 0) /* A32 Address Space */
#define TSI148_LCSR_OTAT_AMODE_CRCSR (5 << 0) /* CR/CSR Address Space */
#define TSI148_LCSR_OTAT_AMODE_USER1 (8 << 0) /* User1 Address Space */
#define TSI148_LCSR_OTAT_AMODE_USER2 (9 << 0) /* User2 Address Space */
#define TSI148_LCSR_OTAT_AMODE_USER3 (10 << 0) /* User3 Address Space */
#define TSI148_LCSR_OTAT_AMODE_USER4 (11 << 0) /* User4 Address Space */
/*
* VME Master Control Register CRG+$234
*/
#define TSI148_LCSR_VMCTRL_VSA BIT(27) /* VMEbus Stop Ack */
#define TSI148_LCSR_VMCTRL_VS BIT(26) /* VMEbus Stop */
#define TSI148_LCSR_VMCTRL_DHB BIT(25) /* Device Has Bus */
#define TSI148_LCSR_VMCTRL_DWB BIT(24) /* Device Wants Bus */
#define TSI148_LCSR_VMCTRL_RMWEN BIT(20) /* RMW Enable */
#define TSI148_LCSR_VMCTRL_ATO_M (7 << 16) /* Master Access Time-out Mask */
#define TSI148_LCSR_VMCTRL_ATO_32 (0 << 16) /* 32 us */
#define TSI148_LCSR_VMCTRL_ATO_128 BIT(16) /* 128 us */
#define TSI148_LCSR_VMCTRL_ATO_512 (2 << 16) /* 512 us */
#define TSI148_LCSR_VMCTRL_ATO_2M (3 << 16) /* 2 ms */
#define TSI148_LCSR_VMCTRL_ATO_8M (4 << 16) /* 8 ms */
#define TSI148_LCSR_VMCTRL_ATO_32M (5 << 16) /* 32 ms */
#define TSI148_LCSR_VMCTRL_ATO_128M (6 << 16) /* 128 ms */
#define TSI148_LCSR_VMCTRL_ATO_DIS (7 << 16) /* Disabled */
#define TSI148_LCSR_VMCTRL_VTOFF_M (7 << 12) /* VMEbus Master Time off */
#define TSI148_LCSR_VMCTRL_VTOFF_0 (0 << 12) /* 0us */
#define TSI148_LCSR_VMCTRL_VTOFF_1 BIT(12) /* 1us */
#define TSI148_LCSR_VMCTRL_VTOFF_2 (2 << 12) /* 2us */
#define TSI148_LCSR_VMCTRL_VTOFF_4 (3 << 12) /* 4us */
#define TSI148_LCSR_VMCTRL_VTOFF_8 (4 << 12) /* 8us */
#define TSI148_LCSR_VMCTRL_VTOFF_16 (5 << 12) /* 16us */
#define TSI148_LCSR_VMCTRL_VTOFF_32 (6 << 12) /* 32us */
#define TSI148_LCSR_VMCTRL_VTOFF_64 (7 << 12) /* 64us */
#define TSI148_LCSR_VMCTRL_VTON_M (7 << 8) /* VMEbus Master Time On */
#define TSI148_LCSR_VMCTRL_VTON_4 (0 << 8) /* 8us */
#define TSI148_LCSR_VMCTRL_VTON_8 BIT(8) /* 8us */
#define TSI148_LCSR_VMCTRL_VTON_16 (2 << 8) /* 16us */
#define TSI148_LCSR_VMCTRL_VTON_32 (3 << 8) /* 32us */
#define TSI148_LCSR_VMCTRL_VTON_64 (4 << 8) /* 64us */
#define TSI148_LCSR_VMCTRL_VTON_128 (5 << 8) /* 128us */
#define TSI148_LCSR_VMCTRL_VTON_256 (6 << 8) /* 256us */
#define TSI148_LCSR_VMCTRL_VTON_512 (7 << 8) /* 512us */
#define TSI148_LCSR_VMCTRL_VREL_M (3 << 3) /* VMEbus Master Rel Mode Mask
*/
#define TSI148_LCSR_VMCTRL_VREL_T_D (0 << 3) /* Time on or Done */
#define TSI148_LCSR_VMCTRL_VREL_T_R_D BIT(3) /* Time on and REQ or Done */
#define TSI148_LCSR_VMCTRL_VREL_T_B_D (2 << 3) /* Time on and BCLR or Done */
#define TSI148_LCSR_VMCTRL_VREL_T_D_R (3 << 3) /* Time on or Done and REQ */
#define TSI148_LCSR_VMCTRL_VFAIR BIT(2) /* VMEbus Master Fair Mode */
#define TSI148_LCSR_VMCTRL_VREQL_M (3 << 0) /* VMEbus Master Req Level Mask
*/
/*
* VMEbus Control Register CRG+$238
*/
#define TSI148_LCSR_VCTRL_LRE BIT(31) /* Late Retry Enable */
#define TSI148_LCSR_VCTRL_DLT_M (0xF << 24) /* Deadlock Timer */
#define TSI148_LCSR_VCTRL_DLT_OFF (0 << 24) /* Deadlock Timer Off */
#define TSI148_LCSR_VCTRL_DLT_16 BIT(24) /* 16 VCLKS */
#define TSI148_LCSR_VCTRL_DLT_32 (2 << 24) /* 32 VCLKS */
#define TSI148_LCSR_VCTRL_DLT_64 (3 << 24) /* 64 VCLKS */
#define TSI148_LCSR_VCTRL_DLT_128 (4 << 24) /* 128 VCLKS */
#define TSI148_LCSR_VCTRL_DLT_256 (5 << 24) /* 256 VCLKS */
#define TSI148_LCSR_VCTRL_DLT_512 (6 << 24) /* 512 VCLKS */
#define TSI148_LCSR_VCTRL_DLT_1024 (7 << 24) /* 1024 VCLKS */
#define TSI148_LCSR_VCTRL_DLT_2048 (8 << 24) /* 2048 VCLKS */
#define TSI148_LCSR_VCTRL_DLT_4096 (9 << 24) /* 4096 VCLKS */
#define TSI148_LCSR_VCTRL_DLT_8192 (0xA << 24) /* 8192 VCLKS */
#define TSI148_LCSR_VCTRL_DLT_16384 (0xB << 24) /* 16384 VCLKS */
#define TSI148_LCSR_VCTRL_DLT_32768 (0xC << 24) /* 32768 VCLKS */
#define TSI148_LCSR_VCTRL_NERBB BIT(20) /* No Early Release of Bus Busy */
#define TSI148_LCSR_VCTRL_SRESET BIT(17) /* System Reset */
#define TSI148_LCSR_VCTRL_LRESET BIT(16) /* Local Reset */
#define TSI148_LCSR_VCTRL_SFAILAI BIT(15) /* SYSFAIL Auto Slot ID */
#define TSI148_LCSR_VCTRL_BID_M (0x1F << 8) /* Broadcast ID Mask */
#define TSI148_LCSR_VCTRL_ATOEN BIT(7) /* Arbiter Time-out Enable */
#define TSI148_LCSR_VCTRL_ROBIN BIT(6) /* VMEbus Round Robin */
#define TSI148_LCSR_VCTRL_GTO_M (7 << 0) /* VMEbus Global Time-out Mask*/
#define TSI148_LCSR_VCTRL_GTO_8 (0 << 0) /* 8 us */
#define TSI148_LCSR_VCTRL_GTO_16 BIT(0) /* 16 us */
#define TSI148_LCSR_VCTRL_GTO_32 (2 << 0) /* 32 us */
#define TSI148_LCSR_VCTRL_GTO_64 (3 << 0) /* 64 us */
#define TSI148_LCSR_VCTRL_GTO_128 (4 << 0) /* 128 us */
#define TSI148_LCSR_VCTRL_GTO_256 (5 << 0) /* 256 us */
#define TSI148_LCSR_VCTRL_GTO_512 (6 << 0) /* 512 us */
#define TSI148_LCSR_VCTRL_GTO_DIS (7 << 0) /* Disabled */
/*
* VMEbus Status Register CRG + $23C
*/
#define TSI148_LCSR_VSTAT_CPURST BIT(15) /* Clear power up reset */
#define TSI148_LCSR_VSTAT_BRDFL BIT(14) /* Board fail */
#define TSI148_LCSR_VSTAT_PURSTS BIT(12) /* Power up reset status */
#define TSI148_LCSR_VSTAT_BDFAILS BIT(11) /* Board Fail Status */
#define TSI148_LCSR_VSTAT_SYSFAILS BIT(10) /* System Fail Status */
#define TSI148_LCSR_VSTAT_ACFAILS BIT(9) /* AC fail status */
#define TSI148_LCSR_VSTAT_SCONS BIT(8) /* System Cont Status */
#define TSI148_LCSR_VSTAT_GAP BIT(5) /* Geographic Addr Parity */
#define TSI148_LCSR_VSTAT_GA_M (0x1F << 0) /* Geographic Addr Mask */
/*
* PCI Configuration Status Register CRG+$240
*/
#define TSI148_LCSR_PSTAT_REQ64S BIT(6) /* Request 64 status set */
#define TSI148_LCSR_PSTAT_M66ENS BIT(5) /* M66ENS 66Mhz enable */
#define TSI148_LCSR_PSTAT_FRAMES BIT(4) /* Frame Status */
#define TSI148_LCSR_PSTAT_IRDYS BIT(3) /* IRDY status */
#define TSI148_LCSR_PSTAT_DEVSELS BIT(2) /* DEVL status */
#define TSI148_LCSR_PSTAT_STOPS BIT(1) /* STOP status */
#define TSI148_LCSR_PSTAT_TRDYS BIT(0) /* TRDY status */
/*
* VMEbus Exception Attributes Register CRG + $268
*/
#define TSI148_LCSR_VEAT_VES BIT(31) /* Status */
#define TSI148_LCSR_VEAT_VEOF BIT(30) /* Overflow */
#define TSI148_LCSR_VEAT_VESCL BIT(29) /* Status Clear */
#define TSI148_LCSR_VEAT_2EOT BIT(21) /* 2e Odd Termination */
#define TSI148_LCSR_VEAT_2EST BIT(20) /* 2e Slave terminated */
#define TSI148_LCSR_VEAT_BERR BIT(19) /* Bus Error */
#define TSI148_LCSR_VEAT_LWORD BIT(18) /* LWORD_ signal state */
#define TSI148_LCSR_VEAT_WRITE BIT(17) /* WRITE_ signal state */
#define TSI148_LCSR_VEAT_IACK BIT(16) /* IACK_ signal state */
#define TSI148_LCSR_VEAT_DS1 BIT(15) /* DS1_ signal state */
#define TSI148_LCSR_VEAT_DS0 BIT(14) /* DS0_ signal state */
#define TSI148_LCSR_VEAT_AM_M (0x3F << 8) /* Address Mode Mask */
#define TSI148_LCSR_VEAT_XAM_M (0xFF << 0) /* Master AMode Mask */
/*
* VMEbus PCI Error Diagnostics PCI/X Attributes Register CRG + $280
*/
#define TSI148_LCSR_EDPAT_EDPCL BIT(29)
/*
* Inbound Translation Starting Address Lower
*/
#define TSI148_LCSR_ITSAL6432_M (0xFFFF << 16) /* Mask */
#define TSI148_LCSR_ITSAL24_M (0x00FFF << 12) /* Mask */
#define TSI148_LCSR_ITSAL16_M (0x0000FFF << 4) /* Mask */
/*
* Inbound Translation Ending Address Lower
*/
#define TSI148_LCSR_ITEAL6432_M (0xFFFF << 16) /* Mask */
#define TSI148_LCSR_ITEAL24_M (0x00FFF << 12) /* Mask */
#define TSI148_LCSR_ITEAL16_M (0x0000FFF << 4) /* Mask */
/*
* Inbound Translation Offset Lower
*/
#define TSI148_LCSR_ITOFFL6432_M (0xFFFF << 16) /* Mask */
#define TSI148_LCSR_ITOFFL24_M (0xFFFFF << 12) /* Mask */
#define TSI148_LCSR_ITOFFL16_M (0xFFFFFFF << 4) /* Mask */
/*
* Inbound Translation Attribute
*/
#define TSI148_LCSR_ITAT_EN BIT(31) /* Window Enable */
#define TSI148_LCSR_ITAT_TH BIT(18) /* Prefetch Threshold */
#define TSI148_LCSR_ITAT_VFS_M (3 << 16) /* Virtual FIFO Size Mask */
#define TSI148_LCSR_ITAT_VFS_64 (0 << 16) /* 64 bytes Virtual FIFO Size */
#define TSI148_LCSR_ITAT_VFS_128 BIT(16) /* 128 bytes Virtual FIFO Sz */
#define TSI148_LCSR_ITAT_VFS_256 (2 << 16) /* 256 bytes Virtual FIFO Sz */
#define TSI148_LCSR_ITAT_VFS_512 (3 << 16) /* 512 bytes Virtual FIFO Sz */
#define TSI148_LCSR_ITAT_2eSSTM_M (7 << 12) /* 2eSST Xfer Rate Mask */
#define TSI148_LCSR_ITAT_2eSSTM_160 (0 << 12) /* 160MB/s 2eSST Xfer Rate */
#define TSI148_LCSR_ITAT_2eSSTM_267 BIT(12) /* 267MB/s 2eSST Xfer Rate */
#define TSI148_LCSR_ITAT_2eSSTM_320 (2 << 12) /* 320MB/s 2eSST Xfer Rate */
#define TSI148_LCSR_ITAT_2eSSTB BIT(11) /* 2eSST Bcast Xfer Protocol */
#define TSI148_LCSR_ITAT_2eSST BIT(10) /* 2eSST Xfer Protocol */
#define TSI148_LCSR_ITAT_2eVME BIT(9) /* 2eVME Xfer Protocol */
#define TSI148_LCSR_ITAT_MBLT BIT(8) /* MBLT Xfer Protocol */
#define TSI148_LCSR_ITAT_BLT BIT(7) /* BLT Xfer Protocol */
#define TSI148_LCSR_ITAT_AS_M (7 << 4) /* Address Space Mask */
#define TSI148_LCSR_ITAT_AS_A16 (0 << 4) /* A16 Address Space */
#define TSI148_LCSR_ITAT_AS_A24 BIT(4) /* A24 Address Space */
#define TSI148_LCSR_ITAT_AS_A32 (2 << 4) /* A32 Address Space */
#define TSI148_LCSR_ITAT_AS_A64 (4 << 4) /* A64 Address Space */
#define TSI148_LCSR_ITAT_SUPR BIT(3) /* Supervisor Access */
#define TSI148_LCSR_ITAT_NPRIV BIT(2) /* Non-Priv (User) Access */
#define TSI148_LCSR_ITAT_PGM BIT(1) /* Program Access */
#define TSI148_LCSR_ITAT_DATA BIT(0) /* Data Access */
/*
* GCSR Base Address Lower Address CRG +$404
*/
#define TSI148_LCSR_GBAL_M (0x7FFFFFF << 5) /* Mask */
/*
* GCSR Attribute Register CRG + $408
*/
#define TSI148_LCSR_GCSRAT_EN BIT(7) /* Enable access to GCSR */
#define TSI148_LCSR_GCSRAT_AS_M (7 << 4) /* Address Space Mask */
#define TSI148_LCSR_GCSRAT_AS_A16 (0 << 4) /* Address Space 16 */
#define TSI148_LCSR_GCSRAT_AS_A24 BIT(4) /* Address Space 24 */
#define TSI148_LCSR_GCSRAT_AS_A32 (2 << 4) /* Address Space 32 */
#define TSI148_LCSR_GCSRAT_AS_A64 (4 << 4) /* Address Space 64 */
#define TSI148_LCSR_GCSRAT_SUPR BIT(3) /* Sup set -GCSR decoder */
#define TSI148_LCSR_GCSRAT_NPRIV BIT(2) /* Non-Privliged set - CGSR */
#define TSI148_LCSR_GCSRAT_PGM BIT(1) /* Program set - GCSR decoder */
#define TSI148_LCSR_GCSRAT_DATA BIT(0) /* DATA set GCSR decoder */
/*
* CRG Base Address Lower Address CRG + $410
*/
#define TSI148_LCSR_CBAL_M (0xFFFFF << 12)
/*
* CRG Attribute Register CRG + $414
*/
#define TSI148_LCSR_CRGAT_EN BIT(7) /* Enable PRG Access */
#define TSI148_LCSR_CRGAT_AS_M (7 << 4) /* Address Space */
#define TSI148_LCSR_CRGAT_AS_A16 (0 << 4) /* Address Space 16 */
#define TSI148_LCSR_CRGAT_AS_A24 BIT(4) /* Address Space 24 */
#define TSI148_LCSR_CRGAT_AS_A32 (2 << 4) /* Address Space 32 */
#define TSI148_LCSR_CRGAT_AS_A64 (4 << 4) /* Address Space 64 */
#define TSI148_LCSR_CRGAT_SUPR BIT(3) /* Supervisor Access */
#define TSI148_LCSR_CRGAT_NPRIV BIT(2) /* Non-Privliged(User) Access */
#define TSI148_LCSR_CRGAT_PGM BIT(1) /* Program Access */
#define TSI148_LCSR_CRGAT_DATA BIT(0) /* Data Access */
/*
* CR/CSR Offset Lower Register CRG + $41C
*/
#define TSI148_LCSR_CROL_M (0x1FFF << 19) /* Mask */
/*
* CR/CSR Attribute register CRG + $420
*/
#define TSI148_LCSR_CRAT_EN BIT(7) /* Enable access to CR/CSR */
/*
* Location Monitor base address lower register CRG + $428
*/
#define TSI148_LCSR_LMBAL_M (0x7FFFFFF << 5) /* Mask */
/*
* Location Monitor Attribute Register CRG + $42C
*/
#define TSI148_LCSR_LMAT_EN BIT(7) /* Enable Location Monitor */
#define TSI148_LCSR_LMAT_AS_M (7 << 4) /* Address Space MASK */
#define TSI148_LCSR_LMAT_AS_A16 (0 << 4) /* A16 */
#define TSI148_LCSR_LMAT_AS_A24 BIT(4) /* A24 */
#define TSI148_LCSR_LMAT_AS_A32 (2 << 4) /* A32 */
#define TSI148_LCSR_LMAT_AS_A64 (4 << 4) /* A64 */
#define TSI148_LCSR_LMAT_SUPR BIT(3) /* Supervisor Access */
#define TSI148_LCSR_LMAT_NPRIV BIT(2) /* Non-Priv (User) Access */
#define TSI148_LCSR_LMAT_PGM BIT(1) /* Program Access */
#define TSI148_LCSR_LMAT_DATA BIT(0) /* Data Access */
/*
* Broadcast Pulse Generator Timer Register CRG + $438
*/
#define TSI148_LCSR_BPGTR_BPGT_M (0xFFFF << 0) /* Mask */
/*
* Broadcast Programmable Clock Timer Register CRG + $43C
*/
#define TSI148_LCSR_BPCTR_BPCT_M (0xFFFFFF << 0) /* Mask */
/*
* VMEbus Interrupt Control Register CRG + $43C
*/
#define TSI148_LCSR_VICR_CNTS_M (3 << 22) /* Cntr Source MASK */
#define TSI148_LCSR_VICR_CNTS_DIS BIT(22) /* Cntr Disable */
#define TSI148_LCSR_VICR_CNTS_IRQ1 (2 << 22) /* IRQ1 to Cntr */
#define TSI148_LCSR_VICR_CNTS_IRQ2 (3 << 22) /* IRQ2 to Cntr */
#define TSI148_LCSR_VICR_EDGIS_M (3 << 20) /* Edge interrupt MASK */
#define TSI148_LCSR_VICR_EDGIS_DIS BIT(20) /* Edge interrupt Disable */
#define TSI148_LCSR_VICR_EDGIS_IRQ1 (2 << 20) /* IRQ1 to Edge */
#define TSI148_LCSR_VICR_EDGIS_IRQ2 (3 << 20) /* IRQ2 to Edge */
#define TSI148_LCSR_VICR_IRQIF_M (3 << 18) /* IRQ1* Function MASK */
#define TSI148_LCSR_VICR_IRQIF_NORM BIT(18) /* Normal */
#define TSI148_LCSR_VICR_IRQIF_PULSE (2 << 18) /* Pulse Generator */
#define TSI148_LCSR_VICR_IRQIF_PROG (3 << 18) /* Programmable Clock */
#define TSI148_LCSR_VICR_IRQIF_1U (4 << 18) /* 1us Clock */
#define TSI148_LCSR_VICR_IRQ2F_M (3 << 16) /* IRQ2* Function MASK */
#define TSI148_LCSR_VICR_IRQ2F_NORM BIT(16) /* Normal */
#define TSI148_LCSR_VICR_IRQ2F_PULSE (2 << 16) /* Pulse Generator */
#define TSI148_LCSR_VICR_IRQ2F_PROG (3 << 16) /* Programmable Clock */
#define TSI148_LCSR_VICR_IRQ2F_1U (4 << 16) /* 1us Clock */
#define TSI148_LCSR_VICR_BIP BIT(15) /* Broadcast Interrupt Pulse */
#define TSI148_LCSR_VICR_IRQC BIT(12) /* VMEbus IRQ Clear */
#define TSI148_LCSR_VICR_IRQS BIT(11) /* VMEbus IRQ Status */
#define TSI148_LCSR_VICR_IRQL_M (7 << 8) /* VMEbus SW IRQ Level Mask */
#define TSI148_LCSR_VICR_IRQL_1 BIT(8) /* VMEbus SW IRQ Level 1 */
#define TSI148_LCSR_VICR_IRQL_2 (2 << 8) /* VMEbus SW IRQ Level 2 */
#define TSI148_LCSR_VICR_IRQL_3 (3 << 8) /* VMEbus SW IRQ Level 3 */
#define TSI148_LCSR_VICR_IRQL_4 (4 << 8) /* VMEbus SW IRQ Level 4 */
#define TSI148_LCSR_VICR_IRQL_5 (5 << 8) /* VMEbus SW IRQ Level 5 */
#define TSI148_LCSR_VICR_IRQL_6 (6 << 8) /* VMEbus SW IRQ Level 6 */
#define TSI148_LCSR_VICR_IRQL_7 (7 << 8) /* VMEbus SW IRQ Level 7 */
static const int TSI148_LCSR_VICR_IRQL[8] = { 0, TSI148_LCSR_VICR_IRQL_1,
TSI148_LCSR_VICR_IRQL_2, TSI148_LCSR_VICR_IRQL_3,
TSI148_LCSR_VICR_IRQL_4, TSI148_LCSR_VICR_IRQL_5,
TSI148_LCSR_VICR_IRQL_6, TSI148_LCSR_VICR_IRQL_7 };
#define TSI148_LCSR_VICR_STID_M (0xFF << 0) /* Status/ID Mask */
/*
* Interrupt Enable Register CRG + $440
*/
#define TSI148_LCSR_INTEN_DMA1EN BIT(25) /* DMAC 1 */
#define TSI148_LCSR_INTEN_DMA0EN BIT(24) /* DMAC 0 */
#define TSI148_LCSR_INTEN_LM3EN BIT(23) /* Location Monitor 3 */
#define TSI148_LCSR_INTEN_LM2EN BIT(22) /* Location Monitor 2 */
#define TSI148_LCSR_INTEN_LM1EN BIT(21) /* Location Monitor 1 */
#define TSI148_LCSR_INTEN_LM0EN BIT(20) /* Location Monitor 0 */
#define TSI148_LCSR_INTEN_MB3EN BIT(19) /* Mail Box 3 */
#define TSI148_LCSR_INTEN_MB2EN BIT(18) /* Mail Box 2 */
#define TSI148_LCSR_INTEN_MB1EN BIT(17) /* Mail Box 1 */
#define TSI148_LCSR_INTEN_MB0EN BIT(16) /* Mail Box 0 */
#define TSI148_LCSR_INTEN_PERREN BIT(13) /* PCI/X Error */
#define TSI148_LCSR_INTEN_VERREN BIT(12) /* VMEbus Error */
#define TSI148_LCSR_INTEN_VIEEN BIT(11) /* VMEbus IRQ Edge */
#define TSI148_LCSR_INTEN_IACKEN BIT(10) /* IACK */
#define TSI148_LCSR_INTEN_SYSFLEN BIT(9) /* System Fail */
#define TSI148_LCSR_INTEN_ACFLEN BIT(8) /* AC Fail */
#define TSI148_LCSR_INTEN_IRQ7EN BIT(7) /* IRQ7 */
#define TSI148_LCSR_INTEN_IRQ6EN BIT(6) /* IRQ6 */
#define TSI148_LCSR_INTEN_IRQ5EN BIT(5) /* IRQ5 */
#define TSI148_LCSR_INTEN_IRQ4EN BIT(4) /* IRQ4 */
#define TSI148_LCSR_INTEN_IRQ3EN BIT(3) /* IRQ3 */
#define TSI148_LCSR_INTEN_IRQ2EN BIT(2) /* IRQ2 */
#define TSI148_LCSR_INTEN_IRQ1EN BIT(1) /* IRQ1 */
static const int TSI148_LCSR_INTEN_LMEN[4] = { TSI148_LCSR_INTEN_LM0EN,
TSI148_LCSR_INTEN_LM1EN,
TSI148_LCSR_INTEN_LM2EN,
TSI148_LCSR_INTEN_LM3EN };
static const int TSI148_LCSR_INTEN_IRQEN[7] = { TSI148_LCSR_INTEN_IRQ1EN,
TSI148_LCSR_INTEN_IRQ2EN,
TSI148_LCSR_INTEN_IRQ3EN,
TSI148_LCSR_INTEN_IRQ4EN,
TSI148_LCSR_INTEN_IRQ5EN,
TSI148_LCSR_INTEN_IRQ6EN,
TSI148_LCSR_INTEN_IRQ7EN };
/*
* Interrupt Enable Out Register CRG + $444
*/
#define TSI148_LCSR_INTEO_DMA1EO BIT(25) /* DMAC 1 */
#define TSI148_LCSR_INTEO_DMA0EO BIT(24) /* DMAC 0 */
#define TSI148_LCSR_INTEO_LM3EO BIT(23) /* Loc Monitor 3 */
#define TSI148_LCSR_INTEO_LM2EO BIT(22) /* Loc Monitor 2 */
#define TSI148_LCSR_INTEO_LM1EO BIT(21) /* Loc Monitor 1 */
#define TSI148_LCSR_INTEO_LM0EO BIT(20) /* Location Monitor 0 */
#define TSI148_LCSR_INTEO_MB3EO BIT(19) /* Mail Box 3 */
#define TSI148_LCSR_INTEO_MB2EO BIT(18) /* Mail Box 2 */
#define TSI148_LCSR_INTEO_MB1EO BIT(17) /* Mail Box 1 */
#define TSI148_LCSR_INTEO_MB0EO BIT(16) /* Mail Box 0 */
#define TSI148_LCSR_INTEO_PERREO BIT(13) /* PCI/X Error */
#define TSI148_LCSR_INTEO_VERREO BIT(12) /* VMEbus Error */
#define TSI148_LCSR_INTEO_VIEEO BIT(11) /* VMEbus IRQ Edge */
#define TSI148_LCSR_INTEO_IACKEO BIT(10) /* IACK */
#define TSI148_LCSR_INTEO_SYSFLEO BIT(9) /* System Fail */
#define TSI148_LCSR_INTEO_ACFLEO BIT(8) /* AC Fail */
#define TSI148_LCSR_INTEO_IRQ7EO BIT(7) /* IRQ7 */
#define TSI148_LCSR_INTEO_IRQ6EO BIT(6) /* IRQ6 */
#define TSI148_LCSR_INTEO_IRQ5EO BIT(5) /* IRQ5 */
#define TSI148_LCSR_INTEO_IRQ4EO BIT(4) /* IRQ4 */
#define TSI148_LCSR_INTEO_IRQ3EO BIT(3) /* IRQ3 */
#define TSI148_LCSR_INTEO_IRQ2EO BIT(2) /* IRQ2 */
#define TSI148_LCSR_INTEO_IRQ1EO BIT(1) /* IRQ1 */
static const int TSI148_LCSR_INTEO_LMEO[4] = { TSI148_LCSR_INTEO_LM0EO,
TSI148_LCSR_INTEO_LM1EO,
TSI148_LCSR_INTEO_LM2EO,
TSI148_LCSR_INTEO_LM3EO };
static const int TSI148_LCSR_INTEO_IRQEO[7] = { TSI148_LCSR_INTEO_IRQ1EO,
TSI148_LCSR_INTEO_IRQ2EO,
TSI148_LCSR_INTEO_IRQ3EO,
TSI148_LCSR_INTEO_IRQ4EO,
TSI148_LCSR_INTEO_IRQ5EO,
TSI148_LCSR_INTEO_IRQ6EO,
TSI148_LCSR_INTEO_IRQ7EO };
/*
* Interrupt Status Register CRG + $448
*/
#define TSI148_LCSR_INTS_DMA1S BIT(25) /* DMA 1 */
#define TSI148_LCSR_INTS_DMA0S BIT(24) /* DMA 0 */
#define TSI148_LCSR_INTS_LM3S BIT(23) /* Location Monitor 3 */
#define TSI148_LCSR_INTS_LM2S BIT(22) /* Location Monitor 2 */
#define TSI148_LCSR_INTS_LM1S BIT(21) /* Location Monitor 1 */
#define TSI148_LCSR_INTS_LM0S BIT(20) /* Location Monitor 0 */
#define TSI148_LCSR_INTS_MB3S BIT(19) /* Mail Box 3 */
#define TSI148_LCSR_INTS_MB2S BIT(18) /* Mail Box 2 */
#define TSI148_LCSR_INTS_MB1S BIT(17) /* Mail Box 1 */
#define TSI148_LCSR_INTS_MB0S BIT(16) /* Mail Box 0 */
#define TSI148_LCSR_INTS_PERRS BIT(13) /* PCI/X Error */
#define TSI148_LCSR_INTS_VERRS BIT(12) /* VMEbus Error */
#define TSI148_LCSR_INTS_VIES BIT(11) /* VMEbus IRQ Edge */
#define TSI148_LCSR_INTS_IACKS BIT(10) /* IACK */
#define TSI148_LCSR_INTS_SYSFLS BIT(9) /* System Fail */
#define TSI148_LCSR_INTS_ACFLS BIT(8) /* AC Fail */
#define TSI148_LCSR_INTS_IRQ7S BIT(7) /* IRQ7 */
#define TSI148_LCSR_INTS_IRQ6S BIT(6) /* IRQ6 */
#define TSI148_LCSR_INTS_IRQ5S BIT(5) /* IRQ5 */
#define TSI148_LCSR_INTS_IRQ4S BIT(4) /* IRQ4 */
#define TSI148_LCSR_INTS_IRQ3S BIT(3) /* IRQ3 */
#define TSI148_LCSR_INTS_IRQ2S BIT(2) /* IRQ2 */
#define TSI148_LCSR_INTS_IRQ1S BIT(1) /* IRQ1 */
static const int TSI148_LCSR_INTS_LMS[4] = { TSI148_LCSR_INTS_LM0S,
TSI148_LCSR_INTS_LM1S,
TSI148_LCSR_INTS_LM2S,
TSI148_LCSR_INTS_LM3S };
static const int TSI148_LCSR_INTS_MBS[4] = { TSI148_LCSR_INTS_MB0S,
TSI148_LCSR_INTS_MB1S,
TSI148_LCSR_INTS_MB2S,
TSI148_LCSR_INTS_MB3S };
/*
* Interrupt Clear Register CRG + $44C
*/
#define TSI148_LCSR_INTC_DMA1C BIT(25) /* DMA 1 */
#define TSI148_LCSR_INTC_DMA0C BIT(24) /* DMA 0 */
#define TSI148_LCSR_INTC_LM3C BIT(23) /* Location Monitor 3 */
#define TSI148_LCSR_INTC_LM2C BIT(22) /* Location Monitor 2 */
#define TSI148_LCSR_INTC_LM1C BIT(21) /* Location Monitor 1 */
#define TSI148_LCSR_INTC_LM0C BIT(20) /* Location Monitor 0 */
#define TSI148_LCSR_INTC_MB3C BIT(19) /* Mail Box 3 */
#define TSI148_LCSR_INTC_MB2C BIT(18) /* Mail Box 2 */
#define TSI148_LCSR_INTC_MB1C BIT(17) /* Mail Box 1 */
#define TSI148_LCSR_INTC_MB0C BIT(16) /* Mail Box 0 */
#define TSI148_LCSR_INTC_PERRC BIT(13) /* VMEbus Error */
#define TSI148_LCSR_INTC_VERRC BIT(12) /* VMEbus Access Time-out */
#define TSI148_LCSR_INTC_VIEC BIT(11) /* VMEbus IRQ Edge */
#define TSI148_LCSR_INTC_IACKC BIT(10) /* IACK */
#define TSI148_LCSR_INTC_SYSFLC BIT(9) /* System Fail */
#define TSI148_LCSR_INTC_ACFLC BIT(8) /* AC Fail */
static const int TSI148_LCSR_INTC_LMC[4] = { TSI148_LCSR_INTC_LM0C,
TSI148_LCSR_INTC_LM1C,
TSI148_LCSR_INTC_LM2C,
TSI148_LCSR_INTC_LM3C };
static const int TSI148_LCSR_INTC_MBC[4] = { TSI148_LCSR_INTC_MB0C,
TSI148_LCSR_INTC_MB1C,
TSI148_LCSR_INTC_MB2C,
TSI148_LCSR_INTC_MB3C };
/*
* Interrupt Map Register 1 CRG + $458
*/
#define TSI148_LCSR_INTM1_DMA1M_M (3 << 18) /* DMA 1 */
#define TSI148_LCSR_INTM1_DMA0M_M (3 << 16) /* DMA 0 */
#define TSI148_LCSR_INTM1_LM3M_M (3 << 14) /* Location Monitor 3 */
#define TSI148_LCSR_INTM1_LM2M_M (3 << 12) /* Location Monitor 2 */
#define TSI148_LCSR_INTM1_LM1M_M (3 << 10) /* Location Monitor 1 */
#define TSI148_LCSR_INTM1_LM0M_M (3 << 8) /* Location Monitor 0 */
#define TSI148_LCSR_INTM1_MB3M_M (3 << 6) /* Mail Box 3 */
#define TSI148_LCSR_INTM1_MB2M_M (3 << 4) /* Mail Box 2 */
#define TSI148_LCSR_INTM1_MB1M_M (3 << 2) /* Mail Box 1 */
#define TSI148_LCSR_INTM1_MB0M_M (3 << 0) /* Mail Box 0 */
/*
* Interrupt Map Register 2 CRG + $45C
*/
#define TSI148_LCSR_INTM2_PERRM_M (3 << 26) /* PCI Bus Error */
#define TSI148_LCSR_INTM2_VERRM_M (3 << 24) /* VMEbus Error */
#define TSI148_LCSR_INTM2_VIEM_M (3 << 22) /* VMEbus IRQ Edge */
#define TSI148_LCSR_INTM2_IACKM_M (3 << 20) /* IACK */
#define TSI148_LCSR_INTM2_SYSFLM_M (3 << 18) /* System Fail */
#define TSI148_LCSR_INTM2_ACFLM_M (3 << 16) /* AC Fail */
#define TSI148_LCSR_INTM2_IRQ7M_M (3 << 14) /* IRQ7 */
#define TSI148_LCSR_INTM2_IRQ6M_M (3 << 12) /* IRQ6 */
#define TSI148_LCSR_INTM2_IRQ5M_M (3 << 10) /* IRQ5 */
#define TSI148_LCSR_INTM2_IRQ4M_M (3 << 8) /* IRQ4 */
#define TSI148_LCSR_INTM2_IRQ3M_M (3 << 6) /* IRQ3 */
#define TSI148_LCSR_INTM2_IRQ2M_M (3 << 4) /* IRQ2 */
#define TSI148_LCSR_INTM2_IRQ1M_M (3 << 2) /* IRQ1 */
/*
* DMA Control (0-1) Registers CRG + $500
*/
#define TSI148_LCSR_DCTL_ABT BIT(27) /* Abort */
#define TSI148_LCSR_DCTL_PAU BIT(26) /* Pause */
#define TSI148_LCSR_DCTL_DGO BIT(25) /* DMA Go */
#define TSI148_LCSR_DCTL_MOD BIT(23) /* Mode */
#define TSI148_LCSR_DCTL_VBKS_M (7 << 12) /* VMEbus block Size MASK */
#define TSI148_LCSR_DCTL_VBKS_32 (0 << 12) /* VMEbus block Size 32 */
#define TSI148_LCSR_DCTL_VBKS_64 BIT(12) /* VMEbus block Size 64 */
#define TSI148_LCSR_DCTL_VBKS_128 (2 << 12) /* VMEbus block Size 128 */
#define TSI148_LCSR_DCTL_VBKS_256 (3 << 12) /* VMEbus block Size 256 */
#define TSI148_LCSR_DCTL_VBKS_512 (4 << 12) /* VMEbus block Size 512 */
#define TSI148_LCSR_DCTL_VBKS_1024 (5 << 12) /* VMEbus block Size 1024 */
#define TSI148_LCSR_DCTL_VBKS_2048 (6 << 12) /* VMEbus block Size 2048 */
#define TSI148_LCSR_DCTL_VBKS_4096 (7 << 12) /* VMEbus block Size 4096 */
#define TSI148_LCSR_DCTL_VBOT_M (7 << 8) /* VMEbus back-off MASK */
#define TSI148_LCSR_DCTL_VBOT_0 (0 << 8) /* VMEbus back-off 0us */
#define TSI148_LCSR_DCTL_VBOT_1 BIT(8) /* VMEbus back-off 1us */
#define TSI148_LCSR_DCTL_VBOT_2 (2 << 8) /* VMEbus back-off 2us */
#define TSI148_LCSR_DCTL_VBOT_4 (3 << 8) /* VMEbus back-off 4us */
#define TSI148_LCSR_DCTL_VBOT_8 (4 << 8) /* VMEbus back-off 8us */
#define TSI148_LCSR_DCTL_VBOT_16 (5 << 8) /* VMEbus back-off 16us */
#define TSI148_LCSR_DCTL_VBOT_32 (6 << 8) /* VMEbus back-off 32us */
#define TSI148_LCSR_DCTL_VBOT_64 (7 << 8) /* VMEbus back-off 64us */
#define TSI148_LCSR_DCTL_PBKS_M (7 << 4) /* PCI block size MASK */
#define TSI148_LCSR_DCTL_PBKS_32 (0 << 4) /* PCI block size 32 bytes */
#define TSI148_LCSR_DCTL_PBKS_64 BIT(4) /* PCI block size 64 bytes */
#define TSI148_LCSR_DCTL_PBKS_128 (2 << 4) /* PCI block size 128 bytes */
#define TSI148_LCSR_DCTL_PBKS_256 (3 << 4) /* PCI block size 256 bytes */
#define TSI148_LCSR_DCTL_PBKS_512 (4 << 4) /* PCI block size 512 bytes */
#define TSI148_LCSR_DCTL_PBKS_1024 (5 << 4) /* PCI block size 1024 bytes */
#define TSI148_LCSR_DCTL_PBKS_2048 (6 << 4) /* PCI block size 2048 bytes */
#define TSI148_LCSR_DCTL_PBKS_4096 (7 << 4) /* PCI block size 4096 bytes */
#define TSI148_LCSR_DCTL_PBOT_M (7 << 0) /* PCI back off MASK */
#define TSI148_LCSR_DCTL_PBOT_0 (0 << 0) /* PCI back off 0us */
#define TSI148_LCSR_DCTL_PBOT_1 BIT(0) /* PCI back off 1us */
#define TSI148_LCSR_DCTL_PBOT_2 (2 << 0) /* PCI back off 2us */
#define TSI148_LCSR_DCTL_PBOT_4 (3 << 0) /* PCI back off 3us */
#define TSI148_LCSR_DCTL_PBOT_8 (4 << 0) /* PCI back off 4us */
#define TSI148_LCSR_DCTL_PBOT_16 (5 << 0) /* PCI back off 8us */
#define TSI148_LCSR_DCTL_PBOT_32 (6 << 0) /* PCI back off 16us */
#define TSI148_LCSR_DCTL_PBOT_64 (7 << 0) /* PCI back off 32us */
/*
* DMA Status Registers (0-1) CRG + $504
*/
#define TSI148_LCSR_DSTA_SMA BIT(31) /* PCI Signalled Master Abt */
#define TSI148_LCSR_DSTA_RTA BIT(30) /* PCI Received Target Abt */
#define TSI148_LCSR_DSTA_MRC BIT(29) /* PCI Max Retry Count */
#define TSI148_LCSR_DSTA_VBE BIT(28) /* VMEbus error */
#define TSI148_LCSR_DSTA_ABT BIT(27) /* Abort */
#define TSI148_LCSR_DSTA_PAU BIT(26) /* Pause */
#define TSI148_LCSR_DSTA_DON BIT(25) /* Done */
#define TSI148_LCSR_DSTA_BSY BIT(24) /* Busy */
/*
* DMA Current Link Address Lower (0-1)
*/
#define TSI148_LCSR_DCLAL_M (0x3FFFFFF << 6) /* Mask */
/*
* DMA Source Attribute (0-1) Reg
*/
#define TSI148_LCSR_DSAT_TYP_M (3 << 28) /* Source Bus Type */
#define TSI148_LCSR_DSAT_TYP_PCI (0 << 28) /* PCI Bus */
#define TSI148_LCSR_DSAT_TYP_VME BIT(28) /* VMEbus */
#define TSI148_LCSR_DSAT_TYP_PAT (2 << 28) /* Data Pattern */
#define TSI148_LCSR_DSAT_PSZ BIT(25) /* Pattern Size */
#define TSI148_LCSR_DSAT_NIN BIT(24) /* No Increment */
#define TSI148_LCSR_DSAT_2eSSTM_M (3 << 11) /* 2eSST Trans Rate Mask */
#define TSI148_LCSR_DSAT_2eSSTM_160 (0 << 11) /* 160 MB/s */
#define TSI148_LCSR_DSAT_2eSSTM_267 BIT(11) /* 267 MB/s */
#define TSI148_LCSR_DSAT_2eSSTM_320 (2 << 11) /* 320 MB/s */
#define TSI148_LCSR_DSAT_TM_M (7 << 8) /* Bus Transfer Protocol Mask */
#define TSI148_LCSR_DSAT_TM_SCT (0 << 8) /* SCT */
#define TSI148_LCSR_DSAT_TM_BLT BIT(8) /* BLT */
#define TSI148_LCSR_DSAT_TM_MBLT (2 << 8) /* MBLT */
#define TSI148_LCSR_DSAT_TM_2eVME (3 << 8) /* 2eVME */
#define TSI148_LCSR_DSAT_TM_2eSST (4 << 8) /* 2eSST */
#define TSI148_LCSR_DSAT_TM_2eSSTB (5 << 8) /* 2eSST Broadcast */
#define TSI148_LCSR_DSAT_DBW_M (3 << 6) /* Max Data Width MASK */
#define TSI148_LCSR_DSAT_DBW_16 (0 << 6) /* 16 Bits */
#define TSI148_LCSR_DSAT_DBW_32 BIT(6) /* 32 Bits */
#define TSI148_LCSR_DSAT_SUP BIT(5) /* Supervisory Mode */
#define TSI148_LCSR_DSAT_PGM BIT(4) /* Program Mode */
#define TSI148_LCSR_DSAT_AMODE_M (0xf << 0) /* Address Space Mask */
#define TSI148_LCSR_DSAT_AMODE_A16 (0 << 0) /* A16 */
#define TSI148_LCSR_DSAT_AMODE_A24 BIT(0) /* A24 */
#define TSI148_LCSR_DSAT_AMODE_A32 (2 << 0) /* A32 */
#define TSI148_LCSR_DSAT_AMODE_A64 (4 << 0) /* A64 */
#define TSI148_LCSR_DSAT_AMODE_CRCSR (5 << 0) /* CR/CSR */
#define TSI148_LCSR_DSAT_AMODE_USER1 (8 << 0) /* User1 */
#define TSI148_LCSR_DSAT_AMODE_USER2 (9 << 0) /* User2 */
#define TSI148_LCSR_DSAT_AMODE_USER3 (0xa << 0) /* User3 */
#define TSI148_LCSR_DSAT_AMODE_USER4 (0xb << 0) /* User4 */
/*
* DMA Destination Attribute Registers (0-1)
*/
#define TSI148_LCSR_DDAT_TYP_PCI (0 << 28) /* Destination PCI Bus */
#define TSI148_LCSR_DDAT_TYP_VME BIT(28) /* Destination VMEbus */
#define TSI148_LCSR_DDAT_2eSSTM_M (3 << 11) /* 2eSST Transfer Rate Mask */
#define TSI148_LCSR_DDAT_2eSSTM_160 (0 << 11) /* 160 MB/s */
#define TSI148_LCSR_DDAT_2eSSTM_267 BIT(11) /* 267 MB/s */
#define TSI148_LCSR_DDAT_2eSSTM_320 (2 << 11) /* 320 MB/s */
#define TSI148_LCSR_DDAT_TM_M (7 << 8) /* Bus Transfer Protocol Mask */
#define TSI148_LCSR_DDAT_TM_SCT (0 << 8) /* SCT */
#define TSI148_LCSR_DDAT_TM_BLT BIT(8) /* BLT */
#define TSI148_LCSR_DDAT_TM_MBLT (2 << 8) /* MBLT */
#define TSI148_LCSR_DDAT_TM_2eVME (3 << 8) /* 2eVME */
#define TSI148_LCSR_DDAT_TM_2eSST (4 << 8) /* 2eSST */
#define TSI148_LCSR_DDAT_TM_2eSSTB (5 << 8) /* 2eSST Broadcast */
#define TSI148_LCSR_DDAT_DBW_M (3 << 6) /* Max Data Width MASK */
#define TSI148_LCSR_DDAT_DBW_16 (0 << 6) /* 16 Bits */
#define TSI148_LCSR_DDAT_DBW_32 BIT(6) /* 32 Bits */
#define TSI148_LCSR_DDAT_SUP BIT(5) /* Supervisory/User Access */
#define TSI148_LCSR_DDAT_PGM BIT(4) /* Program/Data Access */
#define TSI148_LCSR_DDAT_AMODE_M (0xf << 0) /* Address Space Mask */
#define TSI148_LCSR_DDAT_AMODE_A16 (0 << 0) /* A16 */
#define TSI148_LCSR_DDAT_AMODE_A24 BIT(0) /* A24 */
#define TSI148_LCSR_DDAT_AMODE_A32 (2 << 0) /* A32 */
#define TSI148_LCSR_DDAT_AMODE_A64 (4 << 0) /* A64 */
#define TSI148_LCSR_DDAT_AMODE_CRCSR (5 << 0) /* CRC/SR */
#define TSI148_LCSR_DDAT_AMODE_USER1 (8 << 0) /* User1 */
#define TSI148_LCSR_DDAT_AMODE_USER2 (9 << 0) /* User2 */
#define TSI148_LCSR_DDAT_AMODE_USER3 (0xa << 0) /* User3 */
#define TSI148_LCSR_DDAT_AMODE_USER4 (0xb << 0) /* User4 */
/*
* DMA Next Link Address Lower
*/
#define TSI148_LCSR_DNLAL_DNLAL_M (0x3FFFFFF << 6) /* Address Mask */
#define TSI148_LCSR_DNLAL_LLA BIT(0) /* Last Link Address Indicator */
/*
* DMA 2eSST Broadcast Select
*/
#define TSI148_LCSR_DBS_M (0x1FFFFF << 0) /* Mask */
/*
* GCSR Register Group
*/
/*
* GCSR Control and Status Register CRG + $604
*/
#define TSI148_GCSR_GCTRL_LRST BIT(15) /* Local Reset */
#define TSI148_GCSR_GCTRL_SFAILEN BIT(14) /* System Fail enable */
#define TSI148_GCSR_GCTRL_BDFAILS BIT(13) /* Board Fail Status */
#define TSI148_GCSR_GCTRL_SCON BIT(12) /* System Copntroller */
#define TSI148_GCSR_GCTRL_MEN BIT(11) /* Module Enable (READY) */
#define TSI148_GCSR_GCTRL_LMI3S BIT(7) /* Loc Monitor 3 Int Status */
#define TSI148_GCSR_GCTRL_LMI2S BIT(6) /* Loc Monitor 2 Int Status */
#define TSI148_GCSR_GCTRL_LMI1S BIT(5) /* Loc Monitor 1 Int Status */
#define TSI148_GCSR_GCTRL_LMI0S BIT(4) /* Loc Monitor 0 Int Status */
#define TSI148_GCSR_GCTRL_MBI3S BIT(3) /* Mail box 3 Int Status */
#define TSI148_GCSR_GCTRL_MBI2S BIT(2) /* Mail box 2 Int Status */
#define TSI148_GCSR_GCTRL_MBI1S BIT(1) /* Mail box 1 Int Status */
#define TSI148_GCSR_GCTRL_MBI0S BIT(0) /* Mail box 0 Int Status */
#define TSI148_GCSR_GAP BIT(5) /* Geographic Addr Parity */
#define TSI148_GCSR_GA_M (0x1F << 0) /* Geographic Address Mask */
/*
* CR/CSR Register Group
*/
/*
* CR/CSR Bit Clear Register CRG + $FF4
*/
#define TSI148_CRCSR_CSRBCR_LRSTC BIT(7) /* Local Reset Clear */
#define TSI148_CRCSR_CSRBCR_SFAILC BIT(6) /* System Fail Enable Clear */
#define TSI148_CRCSR_CSRBCR_BDFAILS BIT(5) /* Board Fail Status */
#define TSI148_CRCSR_CSRBCR_MENC BIT(4) /* Module Enable Clear */
#define TSI148_CRCSR_CSRBCR_BERRSC BIT(3) /* Bus Error Status Clear */
/*
* CR/CSR Bit Set Register CRG+$FF8
*/
#define TSI148_CRCSR_CSRBSR_LISTS BIT(7) /* Local Reset Clear */
#define TSI148_CRCSR_CSRBSR_SFAILS BIT(6) /* System Fail Enable Clear */
#define TSI148_CRCSR_CSRBSR_BDFAILS BIT(5) /* Board Fail Status */
#define TSI148_CRCSR_CSRBSR_MENS BIT(4) /* Module Enable Clear */
#define TSI148_CRCSR_CSRBSR_BERRS BIT(3) /* Bus Error Status Clear */
/*
* CR/CSR Base Address Register CRG + FFC
*/
#define TSI148_CRCSR_CBAR_M (0x1F << 3) /* Mask */
#endif /* TSI148_H */
|