Adding upstream version 6.03~pre2+dfsg.
[syslinux-debian/hramrach.git] / efi32 / include / efi / pci22.h
blobb94f5198a5d9fef8e18df5a026708bd16e6f1cc9
1 #ifndef _PCI22_H
2 #define _PCI22_H
4 /*++
6 Copyright (c) 1999 Intel Corporation
8 Module Name:
10 pci22.h
12 Abstract:
13 Support for PCI 2.2 standard.
18 Revision History
20 --*/
22 #ifdef SOFT_SDV
23 #define PCI_MAX_BUS 1
24 #else
25 #define PCI_MAX_BUS 255
26 #endif
28 #define PCI_MAX_DEVICE 31
29 #define PCI_MAX_FUNC 7
32 // Command
34 #define PCI_VGA_PALETTE_SNOOP_DISABLED 0x20
36 #pragma pack(1)
37 typedef struct {
38 UINT16 VendorId;
39 UINT16 DeviceId;
40 UINT16 Command;
41 UINT16 Status;
42 UINT8 RevisionID;
43 UINT8 ClassCode[3];
44 UINT8 CacheLineSize;
45 UINT8 LaytencyTimer;
46 UINT8 HeaderType;
47 UINT8 BIST;
48 } PCI_DEVICE_INDEPENDENT_REGION;
50 typedef struct {
51 UINT32 Bar[6];
52 UINT32 CISPtr;
53 UINT16 SubsystemVendorID;
54 UINT16 SubsystemID;
55 UINT32 ExpansionRomBar;
56 UINT32 Reserved[2];
57 UINT8 InterruptLine;
58 UINT8 InterruptPin;
59 UINT8 MinGnt;
60 UINT8 MaxLat;
61 } PCI_DEVICE_HEADER_TYPE_REGION;
63 typedef struct {
64 PCI_DEVICE_INDEPENDENT_REGION Hdr;
65 PCI_DEVICE_HEADER_TYPE_REGION Device;
66 } PCI_TYPE00;
68 typedef struct {
69 UINT32 Bar[2];
70 UINT8 PrimaryBus;
71 UINT8 SecondaryBus;
72 UINT8 SubordinateBus;
73 UINT8 SecondaryLatencyTimer;
74 UINT8 IoBase;
75 UINT8 IoLimit;
76 UINT16 SecondaryStatus;
77 UINT16 MemoryBase;
78 UINT16 MemoryLimit;
79 UINT16 PrefetchableMemoryBase;
80 UINT16 PrefetchableMemoryLimit;
81 UINT32 PrefetchableBaseUpper32;
82 UINT32 PrefetchableLimitUpper32;
83 UINT16 IoBaseUpper16;
84 UINT16 IoLimitUpper16;
85 UINT32 Reserved;
86 UINT32 ExpansionRomBAR;
87 UINT8 InterruptLine;
88 UINT8 InterruptPin;
89 UINT16 BridgeControl;
90 } PCI_BRIDGE_CONTROL_REGISTER;
92 #define PCI_CLASS_DISPLAY_CTRL 0x03
93 #define PCI_CLASS_VGA 0x00
95 #define PCI_CLASS_BRIDGE 0x06
96 #define PCI_CLASS_ISA 0x01
97 #define PCI_CLASS_ISA_POSITIVE_DECODE 0x80
99 #define PCI_CLASS_NETWORK 0x02
100 #define PCI_CLASS_ETHERNET 0x00
102 #define HEADER_TYPE_DEVICE 0x00
103 #define HEADER_TYPE_PCI_TO_PCI_BRIDGE 0x01
104 #define HEADER_TYPE_MULTI_FUNCTION 0x80
105 #define HEADER_LAYOUT_CODE 0x7f
107 #define IS_PCI_BRIDGE(_p) ((((_p)->Hdr.HeaderType) & HEADER_LAYOUT_CODE) == HEADER_TYPE_PCI_TO_PCI_BRIDGE)
108 #define IS_PCI_MULTI_FUNC(_p) (((_p)->Hdr.HeaderType) & HEADER_TYPE_MULTI_FUNCTION)
110 typedef struct {
111 PCI_DEVICE_INDEPENDENT_REGION Hdr;
112 PCI_BRIDGE_CONTROL_REGISTER Bridge;
113 } PCI_TYPE01;
115 typedef struct {
116 UINT8 Register;
117 UINT8 Function;
118 UINT8 Device;
119 UINT8 Bus;
120 UINT8 Reserved[4];
121 } DEFIO_PCI_ADDR;
123 typedef struct {
124 UINT32 Reg : 8;
125 UINT32 Func : 3;
126 UINT32 Dev : 5;
127 UINT32 Bus : 8;
128 UINT32 Reserved: 7;
129 UINT32 Enable : 1;
130 } PCI_CONFIG_ACCESS_CF8;
132 #pragma pack()
134 #define EFI_ROOT_BRIDGE_LIST 'eprb'
135 typedef struct {
136 UINTN Signature;
138 UINT16 BridgeNumber;
139 UINT16 PrimaryBus;
140 UINT16 SubordinateBus;
142 EFI_DEVICE_PATH *DevicePath;
144 LIST_ENTRY Link;
145 } PCI_ROOT_BRIDGE_ENTRY;
148 #define PCI_EXPANSION_ROM_HEADER_SIGNATURE 0xaa55
149 #define EFI_PCI_EXPANSION_ROM_HEADER_EFISIGNATURE 0x0EF1
150 #define PCI_DATA_STRUCTURE_SIGNATURE EFI_SIGNATURE_32('P','C','I','R')
152 #pragma pack(1)
153 typedef struct {
154 UINT16 Signature; // 0xaa55
155 UINT8 Reserved[0x16];
156 UINT16 PcirOffset;
157 } PCI_EXPANSION_ROM_HEADER;
160 typedef struct {
161 UINT16 Signature; // 0xaa55
162 UINT16 InitializationSize;
163 UINT16 EfiSignature; // 0x0EF1
164 UINT16 EfiSubsystem;
165 UINT16 EfiMachineType;
166 UINT8 Reserved[0x0A];
167 UINT16 EfiImageHeaderOffset;
168 UINT16 PcirOffset;
169 } EFI_PCI_EXPANSION_ROM_HEADER;
171 typedef struct {
172 UINT32 Signature; // "PCIR"
173 UINT16 VendorId;
174 UINT16 DeviceId;
175 UINT16 Reserved0;
176 UINT16 Length;
177 UINT8 Revision;
178 UINT8 ClassCode[3];
179 UINT16 ImageLength;
180 UINT16 CodeRevision;
181 UINT8 CodeType;
182 UINT8 Indicator;
183 UINT16 Reserved1;
184 } PCI_DATA_STRUCTURE;
185 #pragma pack()
187 #endif