2 The incompatible PCI device list
4 Copyright (c) 2006 - 2007, Intel Corporation
5 All rights reserved. This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
15 #ifndef _EFI_INCOMPATIBLE_PCI_DEVICE_LIST_H
16 #define _EFI_INCOMPATIBLE_PCI_DEVICE_LIST_H
18 #include <Library/PciIncompatibleDeviceSupportLib.h>
19 #include <Library/MemoryAllocationLib.h>
20 #include <Library/DebugLib.h>
22 #include <IndustryStandard/Pci22.h>
23 #include <IndustryStandard/Acpi.h>
26 #define PCI_DEVICE_ID(VendorId, DeviceId, Revision, SubVendorId, SubDeviceId) \
27 VendorId, DeviceId, Revision, SubVendorId, SubDeviceId
29 #define PCI_BAR_TYPE_IO ACPI_ADDRESS_SPACE_TYPE_IO
30 #define PCI_BAR_TYPE_MEM ACPI_ADDRESS_SPACE_TYPE_MEM
32 #define DEVICE_INF_TAG 0xFFF2
33 #define DEVICE_RES_TAG 0xFFF1
34 #define LIST_END_TAG 0x0000
37 // descriptor for access width of incompatible PCI device
42 EFI_PCI_REGISTER_ACCESS_DATA PciRegisterAccessData
;
43 } EFI_PCI_REGISTER_ACCESS_DESCRIPTOR
;
46 // descriptor for register value of incompatible PCI device
51 EFI_PCI_REGISTER_VALUE_DATA PciRegisterValueData
;
52 } EFI_PCI_REGISTER_VALUE_DESCRIPTOR
;
56 // the incompatible PCI devices list for ACPI resource
58 GLOBAL_REMOVE_IF_UNREFERENCED UINT64 IncompatiblePciDeviceListForResource
[] = {
61 // PCI_DEVICE_ID (VendorID, DeviceID, Revision, SubVendorId, SubDeviceId),
63 // ResType, GFlag , SFlag, Granularity, RangeMin,
64 // RangeMax, Offset, AddrLen
67 // Device Adaptec 9004
70 PCI_DEVICE_ID(0x9004, DEVICE_ID_NOCARE
, DEVICE_ID_NOCARE
, DEVICE_ID_NOCARE
, DEVICE_ID_NOCARE
),
81 // Device Adaptec 9005
84 PCI_DEVICE_ID(0x9005, DEVICE_ID_NOCARE
, DEVICE_ID_NOCARE
, DEVICE_ID_NOCARE
, DEVICE_ID_NOCARE
),
98 PCI_DEVICE_ID(0x1077, DEVICE_ID_NOCARE
, DEVICE_ID_NOCARE
, DEVICE_ID_NOCARE
, DEVICE_ID_NOCARE
),
109 // Device Agilent 103C
112 PCI_DEVICE_ID(0x103C, DEVICE_ID_NOCARE
, DEVICE_ID_NOCARE
, DEVICE_ID_NOCARE
, DEVICE_ID_NOCARE
),
123 // Device Agilent 15BC
126 PCI_DEVICE_ID(0x15BC, DEVICE_ID_NOCARE
, DEVICE_ID_NOCARE
, DEVICE_ID_NOCARE
, DEVICE_ID_NOCARE
),
137 // The end of the list
143 // the incompatible PCI devices list for the values of configuration registers
145 GLOBAL_REMOVE_IF_UNREFERENCED UINT64 IncompatiblePciDeviceListForRegister
[] = {
148 // PCI_DEVICE_ID (VendorID, DeviceID, Revision, SubVendorId, SubDeviceId),
150 // PCI_ACCESS_TYPE, PCI_CONFIG_ADDRESS,
151 // AND_VALUE, OR_VALUE
154 // Device Lava 0x1407, DeviceId 0x0110
157 PCI_DEVICE_ID(0x1407, 0x0110, DEVICE_ID_NOCARE
, DEVICE_ID_NOCARE
, DEVICE_ID_NOCARE
),
160 PCI_CAPBILITY_POINTER_OFFSET
,
165 // Device Lava 0x1407, DeviceId 0x0111
168 PCI_DEVICE_ID(0x1407, 0x0111, DEVICE_ID_NOCARE
, DEVICE_ID_NOCARE
, DEVICE_ID_NOCARE
),
171 PCI_CAPBILITY_POINTER_OFFSET
,
176 // The end of the list
182 // the incompatible PCI devices list for the access width of configuration registers
184 GLOBAL_REMOVE_IF_UNREFERENCED UINT64 DeviceListForAccessWidth
[] = {
187 // PCI_DEVICE_ID (VendorID, DeviceID, Revision, SubVendorId, SubDeviceId),
189 // PCI_ACCESS_TYPE, PCI_ACCESS_WIDTH,
190 // START_ADDRESS, END_ADDRESS,
191 // ACTUAL_PCI_ACCESS_WIDTH,
198 //PCI_DEVICE_ID(0xXXXX, DEVICE_ID_NOCARE, DEVICE_ID_NOCARE, DEVICE_ID_NOCARE, DEVICE_ID_NOCARE),
208 // The end of the list