]> pd.if.org Git - zos/blob - pci/func.c
add a readme with a public domain note
[zos] / pci / func.c
1 #include <stdint.h>
2
3 char *pci_func_desc(uint8_t class, uint8_t sub, uint8_t prog) {
4         uint32_t funcno, special;
5
6         funcno = class << 16 | sub << 8 | prog;
7         special = class << 16 | sub << 8;
8
9         switch (special) {
10                 case 0x010000: return "IDE Controller"; break;
11                 case 0x020500: return "PICMG 2.14 Multi Computing"; break;
12                 case 0x060700: return "RACEway Bridge"; break;
13                 default: break;
14         }
15         switch (funcno) {
16                 case 0x000000: return "Any device except for VGA-Compatible devices"; break;
17                 case 0x000100: return "VGA-Compatible Device"; break;
18                 case 0x010000: return "SCSI Bus Controller"; break;
19                 case 0x010200: return "Floppy Disk Controller"; break;
20                 case 0x010300: return "IPI Bus Controller"; break;
21                 case 0x010400: return "RAID Controller"; break;
22                 case 0x010520: return "ATA Controller (Single DMA)"; break;
23                 case 0x010530: return "ATA Controller (Chained DMA)"; break;
24                 case 0x010600: return "Serial ATA (Vendor Specific Interface)"; break;
25                 case 0x010601: return "Serial ATA (AHCI 1.0)"; break;
26                 case 0x010700: return "Serial Attached SCSI (SAS)"; break;
27                 case 0x018000: return "Other Mass Storage Controller"; break;
28                 case 0x020000: return "Ethernet Controller"; break;
29                 case 0x020100: return "Token Ring Controller"; break;
30                 case 0x020200: return "FDDI Controller"; break;
31                 case 0x020300: return "ATM Controller"; break;
32                 case 0x020400: return "ISDN Controller"; break;
33                 case 0x020500: return "WorldFip Controller"; break;
34                 case 0x028000: return "Other Network Controller"; break;
35                 case 0x030000: return "VGA-Compatible Controller"; break;
36                 case 0x030001: return "8512-Compatible Controller"; break;
37                 case 0x030100: return "XGA Controller"; break;
38                 case 0x030200: return "3D Controller (Not VGA-Compatible)"; break;
39                 case 0x038000: return "Other Display Controller"; break;
40                 case 0x040000: return "Video Device"; break;
41                 case 0x040100: return "Audio Device"; break;
42                 case 0x040200: return "Computer Telephony Device"; break;
43                 case 0x048000: return "Other Multimedia Device"; break;
44                 case 0x050000: return "RAM Controller"; break;
45                 case 0x050100: return "Flash Controller"; break;
46                 case 0x058000: return "Other Memory Controller"; break;
47                 case 0x060000: return "Host Bridge"; break;
48                 case 0x060100: return "ISA Bridge"; break;
49                 case 0x060200: return "EISA Bridge"; break;
50                 case 0x060300: return "MCA Bridge"; break;
51                 case 0x060400: return "PCI-to-PCI Bridge"; break;
52                 case 0x060401: return "PCI-to-PCI Bridge (Subtractive Decode)"; break;
53                 case 0x060500: return "PCMCIA Bridge"; break;
54                 case 0x060600: return "NuBus Bridge"; break;
55                 case 0x060700: return "CardBus Bridge"; break;
56                 case 0x060940: return "PCI-to-PCI Bridge (Semi-Transparent, Primary)"; break;
57                 case 0x060980: return "PCI-to-PCI Bridge (Semi-Transparent, Secondary)"; break;
58                 case 0x068000: return "Other Bridge Device"; break;
59                 case 0x070000: return "Generic XT-Compatible Serial Controller"; break;
60                 case 0x070001: return "16450-Compatible Serial Controller"; break;
61                 case 0x070002: return "16550-Compatible Serial Controller"; break;
62                 case 0x070003: return "16650-Compatible Serial Controller"; break;
63                 case 0x070004: return "16750-Compatible Serial Controller"; break;
64                 case 0x070005: return "16850-Compatible Serial Controller"; break;
65                 case 0x070006: return "16950-Compatible Serial Controller"; break;
66                 case 0x070100: return "Parallel Port"; break;
67                 case 0x070101: return "Bi-Directional Parallel Port"; break;
68                 case 0x070102: return "ECP 1.X Compliant Parallel Port"; break;
69                 case 0x070103: return "IEEE 1284 Controller"; break;
70                 case 0x070200: return "Multiport Serial Controller"; break;
71                 case 0x070300: return "Generic Modem"; break;
72                 case 0x070301: return "Hayes Compatible Modem (16450-Compatible Interface)"; break;
73                 case 0x070302: return "Hayes Compatible Modem (16550-Compatible Interface)"; break;
74                 case 0x070303: return "Hayes Compatible Modem (16650-Compatible Interface)"; break;
75                 case 0x070304: return "Hayes Compatible Modem (16750-Compatible Interface)"; break;
76                 case 0x070400: return "IEEE 488.1/2 (GPIB) Controller"; break;
77                 case 0x070500: return "Smart Card"; break;
78                 case 0x078000: return "Other Communications Device"; break;
79                 case 0x080000: return "Generic 8259 PIC"; break;
80                 case 0x080001: return "ISA PIC"; break;
81                 case 0x080002: return "EISA PIC"; break;
82                 case 0x080010: return "I/O APIC Interrupt Controller"; break;
83                 case 0x080020: return "I/O(x) APIC Interrupt Controller"; break;
84                 case 0x080100: return "Generic 8237 DMA Controller"; break;
85                 case 0x080101: return "ISA DMA Controller"; break;
86                 case 0x080102: return "EISA DMA Controller"; break;
87                 case 0x080200: return "Generic 8254 System Timer"; break;
88                 case 0x080201: return "ISA System Timer"; break;
89                 case 0x080202: return "EISA System Timer"; break;
90                 case 0x080300: return "Generic RTC Controller"; break;
91                 case 0x080301: return "ISA RTC Controller"; break;
92                 case 0x080400: return "Generic PCI Hot-Plug Controller"; break;
93                 case 0x088000: return "Other System Peripheral"; break;
94                 case 0x090000: return "Keyboard Controller"; break;
95                 case 0x090100: return "Consumer IR Controller"; break;
96                 case 0x090200: return "Audio Controller"; break;
97                 case 0x090300: return "Voice Controller"; break;
98                 case 0x090310: return "USB (Open Host Controller Spec"; break;
99                 case 0x090320: return "USB2 Host Controller (Intel Enhanced Host Controller Interface)"; break;
100                 case 0x090380: return "USB"; break;
101                 case 0x090400: return "Data Controller"; break;
102                 case 0x090410: return "Gameport Contrlller (Legacy)"; break;
103                 case 0x090500: return "SMBus"; break;
104                 case 0x090600: return "InfiniBand"; break;
105                 case 0x090700: return "IPMI SMIC Interface"; break;
106                 case 0x090701: return "IPMI Kybd Controller Style Interface"; break;
107                 case 0x090702: return "IPMI Block Transfer Interface"; break;
108                 case 0x090800: return "SERCOS Interface Standard (IEC 61491)"; break;
109                 case 0x090900: return "CANbus"; break;
110                 case 0x091000: return "RF Controller"; break;
111                 case 0x091100: return "Bluetooth Controller"; break;
112                 case 0x091200: return "Broadband Controller"; break;
113                 case 0x092000: return "Ethernet Controller (802.11a)"; break;
114                 case 0x092100: return "Ethernet Controller (802.11b)"; break;
115                 case 0x093000: return "MIPS Processor"; break;
116                 case 0x094000: return "Co-Processor"; break;
117                 case 0x094010: return "IEEE 1394 Controller (1394 OpenHCI Spec)"; break;
118                 case 0x098000: return "Message FIFO"; break;
119                 case 0x100000: return "Network and Computing Encrpytion/Decryption"; break;
120                 case 0x101000: return "Entertainment Encryption/Decryption"; break;
121                 case 0x108000: return "Other Encryption/Decryption"; break;
122                 case 0x110000: return "DPIO Modules"; break;
123                 case 0x110100: return "Performance Counters"; break;
124                 case 0x111000: return "Communications Syncrhonization Plus Time and Frequency Test/Measurment"; break;
125                 case 0x112000: return "Management Card"; break;
126                 case 0x118000: return "Other Data Acquisition/Signal Processing Controller"; break;
127                 default: break;
128         }
129
130         return "unknown";
131 }