Chameleon

Chameleon Commit Details

Date:2013-02-21 13:54:27 (11 years 2 months ago)
Author:ErmaC
Commit:2184
Parents: 2183
Message:Improve PCI info. Interface program and device revision.
Changes:
M/trunk/i386/libsaio/pci.c
M/trunk/i386/libsaio/pci.h

File differences

trunk/i386/libsaio/pci.c
7070
7171
7272
73
74
73
74
7575
7676
7777
......
8787
8888
8989
90
90
91
92
9193
9294
9395
......
178180
179181
180182
181
183
182184
183185
184186
pci_dt_t**current = &start->children;
uint32_tid;
uint32_tpci_addr;
uint8_tdev;
uint8_tfunc;
uint8_tdev = 0;
uint8_tfunc = 0;
uint8_tsecondary_bus;
uint8_theader_type;
new->dev.addr= pci_addr;
new->vendor_id= id & 0xffff;
new->device_id= (id >> 16) & 0xffff;
new->subsys_id.subsys_id= pci_config_read32(pci_addr, PCI_SUBSYSTEM_VENDOR_ID);
new->progif= pci_config_read8(pci_addr, PCI_CLASS_PROG);
new->revision_id= pci_config_read8(pci_addr, PCI_CLASS_REVISION);
new->subsys_id.subsys_id= pci_config_read32(pci_addr, PCI_SUBSYSTEM_VENDOR_ID);
new->class_id= pci_config_read16(pci_addr, PCI_CLASS_DEVICE);
new->parent= start;
current = pci_dt;
while (current) {
printf("%02x:%02x.%x [%04x] [%04x:%04x] (subsys [%04x:%04x]):: %s\n",
printf("%02x:%02x.%x [%04x%02x] [%04x:%04x] (subsys [%04x:%04x]):: %s\n",
current->dev.bits.bus, current->dev.bits.dev, current->dev.bits.func,
current->class_id, current->vendor_id, current->device_id,
current->subsys_id.subsys.vendor_id, current->subsys_id.subsys.device_id,
trunk/i386/libsaio/pci.h
77
88
99
10
11
12
13
14
15
16
1017
1118
12
13
14
15
19
20
21
22
1623
1724
1825
......
2330
2431
2532
26
33
2734
28
29
35
36
37
38
39
3040
3141
3242
33
34
43
44
3545
3646
37
47
3848
39
49
4050
51
52
53
54
4155
4256
4357
......
108122
109123
110124
111
125
126
127
112128
113129
114130
......
141157
142158
143159
144
145
146
147
160
161
162
163
148164
149165
150166
......
161177
162178
163179
164
180
165181
166182
167183
......
278294
279295
280296
281
297
282298
283299
284300
......
746762
747763
748764
749
765
750766
751767
752768
753769
754770
755
771
756772
757773
758774
759775
760
761
762
763
764
765
766
767
768
769
770
771
772
776
777
773778
774
775
776
777
778
779
780
779
781780
782
783
784
785
786
781
782
783
784
785
786
787
788
789
790
791
792
787793
788
789
790
791
792
793
794
795
796
797
798
799
800
801
794802
795
796
797
798
803
804
805
806
807
808
799809
800
801
802
803
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
804829
805
806
807
808
809
810
811
812
830
831
832
833
834
835
836
837
813838
814
815
816
817
818
819
839
840
841
842
843
844
845
820846
821
822
823
824
825
826
827
847
848
849
850
851
852
853
854
855
856
857
828858
829
830
859
860
861
831862
832
833
834
835
863
864
865
866
836867
837
838
839
868
869
870
871
840872
841
842
843
844
845
846
847
848
873
874
875
876
877
878
879
880
881
849882
850
851
852
853
854
855
856
857
883
884
885
886
887
888
889
890
891
892
893
894
895
896
858897
859
860
861
862
863
898
899
900
901
902
903
904
905
906
907
908
864909
865
866
910
911
912
867913
868
869
870
871
872
914
915
916
917
918
919
873920
874
875
876
877
921
922
923
924
925
926
927
928
929
930
931
878932
879
880
881
882
883
933
934
884935
885
886
887936
888937
889938
#ifndef __LIBSAIO_PCI_H
#define __LIBSAIO_PCI_H
/*
* 31 24 16 15 11 10 8
* +---------------------------------------------------------------+
* |1| 0 | BUS | DEV |FUNC | 0 |
* +---------------------------------------------------------------+
*/
typedef struct {
uint32_t:2;
uint32_treg :6;
uint32_tfunc:3;
uint32_tdev :5;
uint32_tbus :8;
uint32_treg:6;
uint32_tfunc:3;
uint32_tdev:5;
uint32_tbus:8;
uint32_t:7;
uint32_teb:1;
} pci_addr_t;
} pci_dev_t;
typedef struct pci_dt_t {
pci_dev_tdev;
pci_dev_tdev;
uint16_tvendor_id;
uint16_tdevice_id;
uint16_tvendor_id; /* Specifies a vendor ID. The PCI bus configuration code obtains this
vendor ID from the vendor ID device register. */
uint16_tdevice_id; /* Specifies a device ID that identifies the specific device. The PCI
bus configuration code obtains this device ID from the device ID
device register. */
union {
struct {
uint16_tvendor_id;
uint16_tdevice_id;
uint16_tvendor_id; /* Specifies a subsystem vendor ID. */
uint16_tdevice_id; /* Specifies a subsystem device ID that identifies the specific device. */
} subsys;
uint32_tsubsys_id;
}subsys_id;
}subsys_id;
uint16_tclass_id;
uint8_t progif; /* A read-only register that specifies a register-level programming interface the device has, if it has any at all. */
uint8_t revision_id; /* PCI revision ID. Specifies a revision identifier for a particular device. Where valid IDs are allocated by the vendor. */
uint16_tclass_id; /* Specifies a class code. This member is a data structure that stores information related to the device's class code device register. */
struct pci_dt_t*parent;
struct pci_dt_t*children;
struct pci_dt_t*next;
/*
* Under PCI, each device has 256 bytes of configuration address space,
* of which the first 64 bytes are standardized as follows:
*/
*
* register name offset
*******************************************************/
#define PCI_VENDOR_ID0x00/* 16 bits */
#define PCI_DEVICE_ID0x02/* 16 bits */
#define PCI_COMMAND0x04/* 16 bits */
#define PCI_STATUS_SIG_SYSTEM_ERROR 0x4000/* Set when we drive SERR */
#define PCI_STATUS_DETECTED_PARITY0x8000/* Set on parity error */
#define PCI_CLASS_REVISION0x08/* High 24 bits are class, low 8 revision */
#define PCI_REVISION_ID0x08/* Revision ID */
#define PCI_CLASS_PROG0x09/* Reg. Level Programming Interface */
#define PCI_CLASS_DEVICE0x0a/* Device class */
#define PCI_CLASS_REVISION0x08/* High 24 bits are class, low 8 revision */
#define PCI_CLASS_PROG0x09/* Reg. Level Programming Interface know also as PCI_PROG_IF */
#define PCI_CLASS_DEVICE0x0a/* Device subclass */
//#define PCI_SUBCLASS_DEVICE0x0b/* Device class */
#define PCI_CACHE_LINE_SIZE0x0c/* 8 bits */
#define PCI_LATENCY_TIMER0x0d/* 8 bits */
/*
* Base addresses specify locations in memory or I/O space.
* Decoded size can be determined by writing a value of
* 0xffffffff to the register, and reading it back. Only
* 0xffffffff to the register, and reading it back. Only
* 1 bits are decoded.
*/
#define PCI_BASE_ADDRESS_00x10/* 32 bits */
#define PCI_CB_LEGACY_MODE_BASE0x44/* 16-bit PC Card legacy mode base address (ExCa) */
/* 0x48-0x7f reserved */
/* Capability lists */
/* Capability Identification Numbers list */
#define PCI_CAP_LIST_ID0/* Capability ID */
#define PCI_CAP_ID_PM0x01/* Power Management */
#define PCI_CAP_ID_AGP0x02/* Accelerated Graphics Port */
/*
* The PCI interface treats multi-function devices as independent
* devices. The slot/function address of each device is encoded
* devices. The slot/function address of each device is encoded
* in a single byte as follows:
*
*7:3 = slot
*2:0 = function
*/
#define PCI_DEVFN(slot,func)((((slot) & 0x1f) << 3) | ((func) & 0x07))
#define PCI_DEVFN(slot,func)((((slot) & 0x1f) << 3) | ((func) & 0x07))
#define PCI_SLOT(devfn)(((devfn) >> 3) & 0x1f)
#define PCI_FUNC(devfn)((devfn) & 0x07)
/* Device classes and subclasses */
#define PCI_CLASS_NOT_DEFINED0x0000
#define PCI_CLASS_NOT_DEFINED_VGA0x0001
#define PCI_BASE_CLASS_STORAGE0x01
#define PCI_CLASS_STORAGE_SCSI0x0100
#define PCI_CLASS_STORAGE_IDE0x0101
#define PCI_CLASS_STORAGE_FLOPPY0x0102
#define PCI_CLASS_STORAGE_IPI0x0103
#define PCI_CLASS_STORAGE_RAID0x0104
#define PCI_CLASS_STORAGE_ATA0x0105
#define PCI_CLASS_STORAGE_SATA0x0106
#define PCI_CLASS_STORAGE_SAS0x0107
#define PCI_CLASS_STORAGE_OTHER0x0180
#define PCI_CLASS_NOT_DEFINED0x0000
#define PCI_CLASS_NOT_DEFINED_VGA0x0001
#define PCI_BASE_CLASS_NETWORK0x02
#define PCI_CLASS_NETWORK_ETHERNET0x0200
#define PCI_CLASS_NETWORK_TOKEN_RING0x0201
#define PCI_CLASS_NETWORK_FDDI0x0202
#define PCI_CLASS_NETWORK_ATM0x0203
#define PCI_CLASS_NETWORK_ISDN0x0204
#define PCI_CLASS_NETWORK_OTHER0x0280
// values for the class_sub field for class_base = 0x00 (Device was built prior definition of the class code field)
#define PCI_BASE_CLASS_DISPLAY0x03
#define PCI_CLASS_DISPLAY_VGA0x0300
#define PCI_CLASS_DISPLAY_XGA0x0301
#define PCI_CLASS_DISPLAY_3D0x0302
#define PCI_CLASS_DISPLAY_OTHER0x0380
// values for the class_sub field for class_base = 0x01 (Mass Storage Controller)
#define PCI_BASE_CLASS_STORAGE0x01
#define PCI_CLASS_STORAGE_SCSI0x0100
#define PCI_CLASS_STORAGE_IDE0x0101
#define PCI_CLASS_STORAGE_FLOPPY0x0102
#define PCI_CLASS_STORAGE_IPI0x0103
#define PCI_CLASS_STORAGE_RAID0x0104
#define PCI_CLASS_STORAGE_ATA0x0105
#define PCI_CLASS_STORAGE_SATA0x0106
#define PCI_CLASS_STORAGE_SATA_AHCI0x010601
#define PCI_CLASS_STORAGE_SAS0x0107
#define PCI_CLASS_STORAGE_OTHER0x0180
#define PCI_BASE_CLASS_MULTIMEDIA0x04
#define PCI_CLASS_MULTIMEDIA_VIDEO0x0400
#define PCI_CLASS_MULTIMEDIA_AUDIO0x0401
#define PCI_CLASS_MULTIMEDIA_PHONE0x0402
#define PCI_CLASS_MULTIMEDIA_AUDIO_DEV0x0403
#define PCI_CLASS_MULTIMEDIA_OTHER0x0480
// values for the class_sub field for class_base = 0x02 (Network Controller)
#define PCI_BASE_CLASS_NETWORK0x02
#define PCI_CLASS_NETWORK_ETHERNET0x0200
#define PCI_CLASS_NETWORK_TOKEN_RING0x0201
#define PCI_CLASS_NETWORK_FDDI0x0202
#define PCI_CLASS_NETWORK_ATM0x0203
#define PCI_CLASS_NETWORK_ISDN0x0204
#define PCI_CLASS_NETWORK_OTHER0x0280
#define PCI_BASE_CLASS_MEMORY0x05
#define PCI_CLASS_MEMORY_RAM0x0500
#define PCI_CLASS_MEMORY_FLASH0x0501
#define PCI_CLASS_MEMORY_OTHER0x0580
// values for the class_sub field for class_base = 0x03 (Display Controller)
#define PCI_BASE_CLASS_DISPLAY0x03
#define PCI_CLASS_DISPLAY_VGA0x0300
#define PCI_CLASS_DISPLAY_XGA0x0301
#define PCI_CLASS_DISPLAY_3D0x0302
#define PCI_CLASS_DISPLAY_OTHER0x0380
#define PCI_BASE_CLASS_BRIDGE0x06
#define PCI_CLASS_BRIDGE_HOST0x0600
#define PCI_CLASS_BRIDGE_ISA0x0601
#define PCI_CLASS_BRIDGE_EISA0x0602
// values for the class_sub field for class_base = 0x04 (Multimedia Controller)
#define PCI_BASE_CLASS_MULTIMEDIA0x04
#define PCI_CLASS_MULTIMEDIA_VIDEO0x0400 /* video */
#define PCI_CLASS_MULTIMEDIA_AUDIO0x0401 /* audio */
#define PCI_CLASS_MULTIMEDIA_PHONE0x0402
#define PCI_CLASS_MULTIMEDIA_AUDIO_DEV0x0403 /* HD audio */
#define PCI_CLASS_MULTIMEDIA_OTHER0x0480
// values for the class_sub field for class_base = 0x05 (Memory Controller)
#define PCI_BASE_CLASS_MEMORY0x05
#define PCI_CLASS_MEMORY_RAM0x0500
#define PCI_CLASS_MEMORY_FLASH0x0501
#define PCI_CLASS_MEMORY_OTHER0x0580
// values for the class_sub field for class_base = 0x06 (Bridge Device)
#define PCI_BASE_CLASS_BRIDGE0x06
#define PCI_CLASS_BRIDGE_HOST0x0600
#define PCI_CLASS_BRIDGE_ISA0x0601
#define PCI_CLASS_BRIDGE_EISA0x0602
#define PCI_CLASS_BRIDGE_MC0x0603
#define PCI_CLASS_BRIDGE_PCI0x0604
#define PCI_CLASS_BRIDGE_PCMCIA0x0605
#define PCI_CLASS_BRIDGE_NUBUS0x0606
#define PCI_CLASS_BRIDGE_CARDBUS0x0607
#define PCI_CLASS_BRIDGE_RACEWAY0x0608
#define PCI_CLASS_BRIDGE_PCI_SEMI0x0609
#define PCI_CLASS_BRIDGE_IB_TO_PCI0x060a
#define PCI_CLASS_BRIDGE_OTHER0x0680
#define PCI_CLASS_BRIDGE_PCI0x0604
#define PCI_CLASS_BRIDGE_PCMCIA0x0605
#define PCI_CLASS_BRIDGE_NUBUS0x0606
#define PCI_CLASS_BRIDGE_CARDBUS0x0607
#define PCI_CLASS_BRIDGE_RACEWAY0x0608
#define PCI_CLASS_BRIDGE_PCI_SEMI0x0609
#define PCI_CLASS_BRIDGE_IB_TO_PCI0x060a
#define PCI_CLASS_BRIDGE_OTHER0x0680
#define PCI_BASE_CLASS_COMMUNICATION0x07
#define PCI_CLASS_COMMUNICATION_SERIAL0x0700
#define PCI_CLASS_COMMUNICATION_PARALLEL0x0701
#define PCI_CLASS_COMMUNICATION_MSERIAL0x0702
#define PCI_CLASS_COMMUNICATION_MODEM0x0703
#define PCI_CLASS_COMMUNICATION_OTHER0x0780
// values for the class_sub field for class_base = 0x07 (Simple Communications Controllers)
#define PCI_BASE_CLASS_COMMUNICATION0x07
#define PCI_CLASS_COMMUNICATION_SERIAL0x0700
#define PCI_CLASS_COMMUNICATION_PARALLEL0x0701
#define PCI_CLASS_COMMUNICATION_MSERIAL0x0702
#define PCI_CLASS_COMMUNICATION_MODEM0x0703
#define PCI_CLASS_COMMUNICATION_OTHER0x0780
#define PCI_BASE_CLASS_SYSTEM0x08
#define PCI_CLASS_SYSTEM_PIC0x0800
#define PCI_CLASS_SYSTEM_DMA0x0801
#define PCI_CLASS_SYSTEM_TIMER0x0802
#define PCI_CLASS_SYSTEM_RTC0x0803
#define PCI_CLASS_SYSTEM_PCI_HOTPLUG0x0804
#define PCI_CLASS_SYSTEM_OTHER0x0880
// values for the class_sub field for class_base = 0x08 (Base System Peripherals)
#define PCI_BASE_CLASS_SYSTEM0x08
#define PCI_CLASS_SYSTEM_PIC0x0800
#define PCI_CLASS_SYSTEM_PIC_IOAPIC0x080010
#define PCI_CLASS_SYSTEM_PIC_IOXAPIC0x080020 // I/O APIC interrupt controller , 32 bye none-prefectable memory.
#define PCI_CLASS_SYSTEM_DMA0x0801
#define PCI_CLASS_SYSTEM_TIMER0x0802
#define PCI_CLASS_SYSTEM_RTC0x0803
#define PCI_CLASS_SYSTEM_PCI_HOTPLUG0x0804 // HotPlug Controller
#define PCI_CLASS_SYSTEM_SDHCI0x0805
#define PCI_CLASS_SYSTEM_OTHER0x0880
#define PCI_BASE_CLASS_INPUT0x09
#define PCI_CLASS_INPUT_KEYBOARD0x0900
// values for the class_sub field for class_base = 0x09 (Input Devices)
#define PCI_BASE_CLASS_INPUT0x09
#define PCI_CLASS_INPUT_KEYBOARD0x0900
#define PCI_CLASS_INPUT_PEN0x0901
#define PCI_CLASS_INPUT_MOUSE0x0902
#define PCI_CLASS_INPUT_SCANNER0x0903
#define PCI_CLASS_INPUT_GAMEPORT0x0904
#define PCI_CLASS_INPUT_OTHER0x0980
#define PCI_CLASS_INPUT_MOUSE0x0902
#define PCI_CLASS_INPUT_SCANNER0x0903
#define PCI_CLASS_INPUT_GAMEPORT0x0904
#define PCI_CLASS_INPUT_OTHER0x0980
#define PCI_BASE_CLASS_DOCKING0x0a
#define PCI_CLASS_DOCKING_GENERIC0x0a00
#define PCI_CLASS_DOCKING_OTHER0x0a80
// values for the class_sub field for class_base = 0x0a (Docking Stations)
#define PCI_BASE_CLASS_DOCKING0x0a
#define PCI_CLASS_DOCKING_GENERIC0x0a00
#define PCI_CLASS_DOCKING_OTHER0x0a80
#define PCI_BASE_CLASS_PROCESSOR0x0b
#define PCI_CLASS_PROCESSOR_3860x0b00
#define PCI_CLASS_PROCESSOR_4860x0b01
#define PCI_CLASS_PROCESSOR_PENTIUM0x0b02
#define PCI_CLASS_PROCESSOR_ALPHA0x0b10
#define PCI_CLASS_PROCESSOR_POWERPC0x0b20
#define PCI_CLASS_PROCESSOR_MIPS0x0b30
#define PCI_CLASS_PROCESSOR_CO0x0b40
// values for the class_sub field for class_base = 0x0b (processor)
#define PCI_BASE_CLASS_PROCESSOR0x0b
#define PCI_CLASS_PROCESSOR_3860x0b00
#define PCI_CLASS_PROCESSOR_4860x0b01
#define PCI_CLASS_PROCESSOR_PENTIUM0x0b02
#define PCI_CLASS_PROCESSOR_ALPHA0x0b10
#define PCI_CLASS_PROCESSOR_POWERPC0x0b20
#define PCI_CLASS_PROCESSOR_MIPS0x0b30
#define PCI_CLASS_PROCESSOR_CO0x0b40 // Co-Processor
#define PCI_BASE_CLASS_SERIAL0x0c
#define PCI_CLASS_SERIAL_FIREWIRE0x0c00
#define PCI_CLASS_SERIAL_ACCESS0x0c01
#define PCI_CLASS_SERIAL_SSA0x0c02
#define PCI_CLASS_SERIAL_USB0x0c03
#define PCI_CLASS_SERIAL_FIBER0x0c04
#define PCI_CLASS_SERIAL_SMBUS0x0c05
#define PCI_CLASS_SERIAL_INFINIBAND0x0c06
// values for the class_sub field for class_base = 0x0c (serial bus controller)
#define PCI_BASE_CLASS_SERIAL0x0c
#define PCI_CLASS_SERIAL_FIREWIRE0x0c00 /* FireWire (IEEE 1394) */
#define PCI_CLASS_SERIAL_FIREWIRE_OHCI0x0c10
#define PCI_CLASS_SERIAL_ACCESS0x0c01
#define PCI_CLASS_SERIAL_SSA0x0c02
#define PCI_CLASS_SERIAL_USB0x0c03 /* Universal Serial Bus */
#define PCI_IF_UHCI0x00 /* Universal Host Controller Interface */
#define PCI_IF_OHCI0x10 /* Open Host Controller Interface */
#define PCI_IF_EHCI0x20 /* Enhanced Host Controller Interface */
#define PCI_IF_XHCI0x30 /* Extensible Host Controller Interface */
#define PCI_CLASS_SERIAL_FIBER0x0c04
#define PCI_CLASS_SERIAL_SMBUS0x0c05
#define PCI_CLASS_SERIAL_INFINIBAND0x0c06
#define PCI_BASE_CLASS_WIRELESS0x0d
#define PCI_CLASS_WIRELESS_IRDA0x0d00
#define PCI_CLASS_WIRELESS_CONSUMER_IR0x0d01
#define PCI_CLASS_WIRELESS_RF0x0d10
#define PCI_CLASS_WIRELESS_OTHER0x0d80
// values for the class_sub field for class_base = 0x0d (Wireless Controller)
#define PCI_BASE_CLASS_WIRELESS0x0d
#define PCI_CLASS_WIRELESS_IRDA0x0d00
#define PCI_CLASS_WIRELESS_IR0x0d01
#define PCI_CLASS_WIRELESS_RF0x0d10
#define PCI_CLASS_WIRELESS_BLUETOOTH0x0d11
#define PCI_CLASS_WIRELESS_BROADBAND0x0d12
#define PCI_CLASS_WIRELESS_80211A0x0d20
#define PCI_CLASS_WIRELESS_80211B0x0d21
#define PCI_CLASS_WIRELESS_WHCI0x0d1010
#define PCI_CLASS_WIRELESS_OTHER0x80
#define PCI_BASE_CLASS_INTELLIGENT0x0e
#define PCI_CLASS_INTELLIGENT_I2O0x0e00
// values for the class_sub field for class_base = 0x0e (Intelligent I/O Controller)
#define PCI_BASE_CLASS_INTELLIGENT0x0e
#define PCI_CLASS_INTELLIGENT_I2O0x0e00
#define PCI_BASE_CLASS_SATELLITE0x0f
#define PCI_CLASS_SATELLITE_TV0x0f00
#define PCI_CLASS_SATELLITE_AUDIO0x0f01
#define PCI_CLASS_SATELLITE_VOICE0x0f03
#define PCI_CLASS_SATELLITE_DATA0x0f04
// values for the class_sub field for class_base = 0x0f (Satellite Communication Controller)
#define PCI_BASE_CLASS_SATELLITE0x0f
#define PCI_CLASS_SATELLITE_TV0x0f00
#define PCI_CLASS_SATELLITE_AUDIO0x0f01
#define PCI_CLASS_SATELLITE_VOICE0x0f03
#define PCI_CLASS_SATELLITE_DATA0x0f04
#define PCI_BASE_CLASS_CRYPT0x10
#define PCI_CLASS_CRYPT_NETWORK0x1000
#define PCI_CLASS_CRYPT_ENTERTAINMENT0x1010
#define PCI_CLASS_CRYPT_OTHER0x1080
// values for the class_sub field for class_base = 0x10 (Encryption and decryption controller)
#define PCI_BASE_CLASS_CRYPT0x10
#define PCI_CLASS_CRYPT_NETWORK0x1000
#define PCI_CLASS_CRYPT_ENTERTAINMENT0x1010
#define PCI_CLASS_CRYPT_OTHER0x1080
// values for the class_sub field for class_base = 0x12 (Data Acquisition and Signal Processing Controllers)
#define PCI_BASE_CLASS_SIGNAL0x11
#define PCI_CLASS_SIGNAL_DPIO0x1100
#define PCI_CLASS_SIGNAL_PERF_CTR0x1101
#define PCI_CLASS_SIGNAL_SYNCHRONIZER0x1110
#define PCI_CLASS_SIGNAL_OTHER0x1180
#define PCI_BASE_CLASS_SIGNAL0x11
#define PCI_CLASS_SIGNAL_DPIO0x1100
#define PCI_CLASS_SIGNAL_PERF_CTR0x1101
#define PCI_CLASS_SIGNAL_SYNCHRONIZER0x1110
#define PCI_CLASS_SIGNAL_OTHER0x1180
// values for the class_sub field for class_base = 0xff (Device does not fit any defined class)
#define PCI_CLASS_OTHERS 0xff
#define PCI_CLASS_OTHERS0xff
/* Several ID's we need in the library */
#define PCI_VENDOR_ID_APPLE0x106b
#define PCI_VENDOR_ID_AMD0x1022

Archive Download the corresponding diff file

Revision: 2184