]> git.proxmox.com Git - mirror_edk2.git/blob - EdkModulePkg/Library/EdkPciIncompatibleDeviceSupportLib/IncompatiblePciDeviceList.h
1. Added EdkPciIncompatibleDeviceSupportLib in EdkModulePkg, this library is used...
[mirror_edk2.git] / EdkModulePkg / Library / EdkPciIncompatibleDeviceSupportLib / IncompatiblePciDeviceList.h
1 /** @file
2 The incompatible PCI device list
3
4 Copyright (c) 2007 Intel Corporation. All rights reserved. <BR>
5 This software and associated documentation (if any) is furnished
6 under a license and may only be used or copied in accordance
7 with the terms of the license. Except as permitted by such
8 license, no part of this software or documentation may be
9 reproduced, stored in a retrieval system, or transmitted in any
10 form or by any means without the express written consent of
11 Intel Corporation.
12
13 **/
14
15 #ifndef _EFI_INCOMPATIBLE_PCI_DEVICE_LIST_H
16 #define _EFI_INCOMPATIBLE_PCI_DEVICE_LIST_H
17
18 #include <IndustryStandard/pci22.h>
19 #include <IndustryStandard/Acpi.h>
20
21
22 #define PCI_DEVICE_ID(VendorId, DeviceId, Revision, SubVendorId, SubDeviceId) \
23 VendorId, DeviceId, Revision, SubVendorId, SubDeviceId
24
25 #define PCI_BAR_TYPE_IO ACPI_ADDRESS_SPACE_TYPE_IO
26 #define PCI_BAR_TYPE_MEM ACPI_ADDRESS_SPACE_TYPE_MEM
27
28 #define DEVICE_INF_TAG 0xFFF2
29 #define DEVICE_RES_TAG 0xFFF1
30 #define LIST_END_TAG 0x0000
31
32 //
33 // descriptor for access width of incompatible PCI device
34 //
35 typedef struct {
36 UINT64 AccessType;
37 UINT64 AccessWidth;
38 EFI_PCI_REGISTER_ACCESS_DATA PciRegisterAccessData;
39 } EFI_PCI_REGISTER_ACCESS_DESCRIPTOR;
40
41 //
42 // descriptor for register value of incompatible PCI device
43 //
44 typedef struct {
45 UINT64 AccessType;
46 UINT64 Offset;
47 EFI_PCI_REGISTER_VALUE_DATA PciRegisterValueData;
48 } EFI_PCI_REGISTER_VALUE_DESCRIPTOR;
49
50
51 //
52 // the incompatible PCI devices list for ACPI resource
53 //
54 GLOBAL_REMOVE_IF_UNREFERENCED UINT64 IncompatiblePciDeviceListForResource[] = {
55 //
56 // DEVICE_INF_TAG,
57 // PCI_DEVICE_ID (VendorID, DeviceID, Revision, SubVendorId, SubDeviceId),
58 // DEVICE_RES_TAG,
59 // ResType, GFlag , SFlag, Granularity, RangeMin,
60 // RangeMax, Offset, AddrLen
61 //
62 //
63 // Device Adaptec 9004
64 //
65 DEVICE_INF_TAG,
66 PCI_DEVICE_ID(0x9004, DEVICE_ID_NOCARE, DEVICE_ID_NOCARE, DEVICE_ID_NOCARE, DEVICE_ID_NOCARE),
67 DEVICE_RES_TAG,
68 PCI_BAR_TYPE_IO,
69 PCI_ACPI_UNUSED,
70 PCI_ACPI_UNUSED,
71 PCI_ACPI_UNUSED,
72 PCI_ACPI_UNUSED,
73 PCI_BAR_EVEN_ALIGN,
74 PCI_BAR_ALL,
75 PCI_BAR_NOCHANGE,
76 //
77 // Device Adaptec 9005
78 //
79 DEVICE_INF_TAG,
80 PCI_DEVICE_ID(0x9005, DEVICE_ID_NOCARE, DEVICE_ID_NOCARE, DEVICE_ID_NOCARE, DEVICE_ID_NOCARE),
81 DEVICE_RES_TAG,
82 PCI_BAR_TYPE_IO,
83 PCI_ACPI_UNUSED,
84 PCI_ACPI_UNUSED,
85 PCI_ACPI_UNUSED,
86 PCI_ACPI_UNUSED,
87 PCI_BAR_EVEN_ALIGN,
88 PCI_BAR_ALL,
89 PCI_BAR_NOCHANGE,
90 //
91 // Device QLogic 1007
92 //
93 DEVICE_INF_TAG,
94 PCI_DEVICE_ID(0x1077, DEVICE_ID_NOCARE, DEVICE_ID_NOCARE, DEVICE_ID_NOCARE, DEVICE_ID_NOCARE),
95 DEVICE_RES_TAG,
96 PCI_BAR_TYPE_IO,
97 PCI_ACPI_UNUSED,
98 PCI_ACPI_UNUSED,
99 PCI_ACPI_UNUSED,
100 PCI_ACPI_UNUSED,
101 PCI_BAR_EVEN_ALIGN,
102 PCI_BAR_ALL,
103 PCI_BAR_NOCHANGE,
104 //
105 // Device Agilent 103C
106 //
107 DEVICE_INF_TAG,
108 PCI_DEVICE_ID(0x103C, DEVICE_ID_NOCARE, DEVICE_ID_NOCARE, DEVICE_ID_NOCARE, DEVICE_ID_NOCARE),
109 DEVICE_RES_TAG,
110 PCI_BAR_TYPE_IO,
111 PCI_ACPI_UNUSED,
112 PCI_ACPI_UNUSED,
113 PCI_ACPI_UNUSED,
114 PCI_ACPI_UNUSED,
115 PCI_BAR_EVEN_ALIGN,
116 PCI_BAR_ALL,
117 PCI_BAR_NOCHANGE,
118 //
119 // Device Agilent 15BC
120 //
121 DEVICE_INF_TAG,
122 PCI_DEVICE_ID(0x15BC, DEVICE_ID_NOCARE, DEVICE_ID_NOCARE, DEVICE_ID_NOCARE, DEVICE_ID_NOCARE),
123 DEVICE_RES_TAG,
124 PCI_BAR_TYPE_IO,
125 PCI_ACPI_UNUSED,
126 PCI_ACPI_UNUSED,
127 PCI_ACPI_UNUSED,
128 PCI_ACPI_UNUSED,
129 PCI_BAR_EVEN_ALIGN,
130 PCI_BAR_ALL,
131 PCI_BAR_NOCHANGE,
132 //
133 // The end of the list
134 //
135 LIST_END_TAG
136 };
137
138 //
139 // the incompatible PCI devices list for the values of configuration registers
140 //
141 GLOBAL_REMOVE_IF_UNREFERENCED UINT64 IncompatiblePciDeviceListForRegister[] = {
142 //
143 // DEVICE_INF_TAG,
144 // PCI_DEVICE_ID (VendorID, DeviceID, Revision, SubVendorId, SubDeviceId),
145 // PCI_RES_TAG,
146 // PCI_ACCESS_TYPE, PCI_CONFIG_ADDRESS,
147 // AND_VALUE, OR_VALUE
148
149 //
150 // Device Lava 0x1407, DeviceId 0x0110
151 //
152 DEVICE_INF_TAG,
153 PCI_DEVICE_ID(0x1407, 0x0110, DEVICE_ID_NOCARE, DEVICE_ID_NOCARE, DEVICE_ID_NOCARE),
154 DEVICE_RES_TAG,
155 PCI_REGISTER_READ,
156 PCI_CAPBILITY_POINTER_OFFSET,
157 0xffffff00,
158 VALUE_NOCARE,
159
160 //
161 // Device Lava 0x1407, DeviceId 0x0111
162 //
163 DEVICE_INF_TAG,
164 PCI_DEVICE_ID(0x1407, 0x0111, DEVICE_ID_NOCARE, DEVICE_ID_NOCARE, DEVICE_ID_NOCARE),
165 DEVICE_RES_TAG,
166 PCI_REGISTER_READ,
167 PCI_CAPBILITY_POINTER_OFFSET,
168 0xffffff00,
169 VALUE_NOCARE,
170
171 //
172 // The end of the list
173 //
174 LIST_END_TAG
175 };
176
177 //
178 // the incompatible PCI devices list for the access width of configuration registers
179 //
180 GLOBAL_REMOVE_IF_UNREFERENCED UINT64 DeviceListForAccessWidth[] = {
181 //
182 // DEVICE_INF_TAG,
183 // PCI_DEVICE_ID (VendorID, DeviceID, Revision, SubVendorId, SubDeviceId),
184 // DEVICE_RES_TAG,
185 // PCI_ACCESS_TYPE, PCI_ACCESS_WIDTH,
186 // START_ADDRESS, END_ADDRESS,
187 // ACTUAL_PCI_ACCESS_WIDTH,
188 //
189
190 //
191 // Sample Device
192 //
193 //DEVICE_INF_TAG,
194 //PCI_DEVICE_ID(0xXXXX, DEVICE_ID_NOCARE, DEVICE_ID_NOCARE, DEVICE_ID_NOCARE, DEVICE_ID_NOCARE),
195 //DEVICE_RES_TAG,
196 //PCI_REGISTER_READ,
197 //EfiPciWidthUint8,
198 //0,
199 //0xFF,
200 //EfiPciWidthUint32,
201 //
202
203 //
204 // The end of the list
205 //
206 LIST_END_TAG
207 };
208
209 #endif