2007-06-27 11:31:57 +02:00
|
|
|
/** @file
|
|
|
|
The incompatible PCI device list
|
|
|
|
|
2007-07-25 07:41:27 +02:00
|
|
|
Copyright (c) 2006 - 2007, Intel Corporation
|
|
|
|
All rights reserved. This program and the accompanying materials
|
|
|
|
are licensed and made available under the terms and conditions of the BSD License
|
|
|
|
which accompanies this distribution. The full text of the license may be found at
|
|
|
|
http://opensource.org/licenses/bsd-license.php
|
|
|
|
|
|
|
|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
|
|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
2007-06-27 11:31:57 +02:00
|
|
|
|
|
|
|
**/
|
|
|
|
|
|
|
|
#ifndef _EFI_INCOMPATIBLE_PCI_DEVICE_LIST_H
|
|
|
|
#define _EFI_INCOMPATIBLE_PCI_DEVICE_LIST_H
|
|
|
|
|
2007-07-20 08:10:09 +02:00
|
|
|
|
2007-06-29 10:40:03 +02:00
|
|
|
#include <PiDxe.h>
|
2007-07-20 08:10:09 +02:00
|
|
|
|
2007-06-29 10:40:03 +02:00
|
|
|
#include <Library/PciIncompatibleDeviceSupportLib.h>
|
|
|
|
#include <Library/MemoryAllocationLib.h>
|
|
|
|
#include <Library/DebugLib.h>
|
2007-06-27 11:31:57 +02:00
|
|
|
|
2008-03-21 23:53:54 +01:00
|
|
|
#include <IndustryStandard/Pci22.h>
|
2007-06-27 11:31:57 +02:00
|
|
|
#include <IndustryStandard/Acpi.h>
|
|
|
|
|
|
|
|
|
|
|
|
#define PCI_DEVICE_ID(VendorId, DeviceId, Revision, SubVendorId, SubDeviceId) \
|
|
|
|
VendorId, DeviceId, Revision, SubVendorId, SubDeviceId
|
|
|
|
|
|
|
|
#define PCI_BAR_TYPE_IO ACPI_ADDRESS_SPACE_TYPE_IO
|
|
|
|
#define PCI_BAR_TYPE_MEM ACPI_ADDRESS_SPACE_TYPE_MEM
|
|
|
|
|
|
|
|
#define DEVICE_INF_TAG 0xFFF2
|
|
|
|
#define DEVICE_RES_TAG 0xFFF1
|
|
|
|
#define LIST_END_TAG 0x0000
|
|
|
|
|
|
|
|
//
|
|
|
|
// descriptor for access width of incompatible PCI device
|
|
|
|
//
|
|
|
|
typedef struct {
|
|
|
|
UINT64 AccessType;
|
|
|
|
UINT64 AccessWidth;
|
|
|
|
EFI_PCI_REGISTER_ACCESS_DATA PciRegisterAccessData;
|
|
|
|
} EFI_PCI_REGISTER_ACCESS_DESCRIPTOR;
|
|
|
|
|
|
|
|
//
|
|
|
|
// descriptor for register value of incompatible PCI device
|
|
|
|
//
|
|
|
|
typedef struct {
|
|
|
|
UINT64 AccessType;
|
|
|
|
UINT64 Offset;
|
|
|
|
EFI_PCI_REGISTER_VALUE_DATA PciRegisterValueData;
|
|
|
|
} EFI_PCI_REGISTER_VALUE_DESCRIPTOR;
|
|
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
// the incompatible PCI devices list for ACPI resource
|
|
|
|
//
|
|
|
|
GLOBAL_REMOVE_IF_UNREFERENCED UINT64 IncompatiblePciDeviceListForResource[] = {
|
|
|
|
//
|
|
|
|
// DEVICE_INF_TAG,
|
|
|
|
// PCI_DEVICE_ID (VendorID, DeviceID, Revision, SubVendorId, SubDeviceId),
|
|
|
|
// DEVICE_RES_TAG,
|
|
|
|
// ResType, GFlag , SFlag, Granularity, RangeMin,
|
|
|
|
// RangeMax, Offset, AddrLen
|
|
|
|
//
|
|
|
|
//
|
|
|
|
// Device Adaptec 9004
|
|
|
|
//
|
|
|
|
DEVICE_INF_TAG,
|
|
|
|
PCI_DEVICE_ID(0x9004, DEVICE_ID_NOCARE, DEVICE_ID_NOCARE, DEVICE_ID_NOCARE, DEVICE_ID_NOCARE),
|
|
|
|
DEVICE_RES_TAG,
|
|
|
|
PCI_BAR_TYPE_IO,
|
|
|
|
PCI_ACPI_UNUSED,
|
|
|
|
PCI_ACPI_UNUSED,
|
|
|
|
PCI_ACPI_UNUSED,
|
|
|
|
PCI_ACPI_UNUSED,
|
|
|
|
PCI_BAR_EVEN_ALIGN,
|
|
|
|
PCI_BAR_ALL,
|
|
|
|
PCI_BAR_NOCHANGE,
|
|
|
|
//
|
|
|
|
// Device Adaptec 9005
|
|
|
|
//
|
|
|
|
DEVICE_INF_TAG,
|
|
|
|
PCI_DEVICE_ID(0x9005, DEVICE_ID_NOCARE, DEVICE_ID_NOCARE, DEVICE_ID_NOCARE, DEVICE_ID_NOCARE),
|
|
|
|
DEVICE_RES_TAG,
|
|
|
|
PCI_BAR_TYPE_IO,
|
|
|
|
PCI_ACPI_UNUSED,
|
|
|
|
PCI_ACPI_UNUSED,
|
|
|
|
PCI_ACPI_UNUSED,
|
|
|
|
PCI_ACPI_UNUSED,
|
|
|
|
PCI_BAR_EVEN_ALIGN,
|
|
|
|
PCI_BAR_ALL,
|
|
|
|
PCI_BAR_NOCHANGE,
|
|
|
|
//
|
|
|
|
// Device QLogic 1007
|
|
|
|
//
|
|
|
|
DEVICE_INF_TAG,
|
|
|
|
PCI_DEVICE_ID(0x1077, DEVICE_ID_NOCARE, DEVICE_ID_NOCARE, DEVICE_ID_NOCARE, DEVICE_ID_NOCARE),
|
|
|
|
DEVICE_RES_TAG,
|
|
|
|
PCI_BAR_TYPE_IO,
|
|
|
|
PCI_ACPI_UNUSED,
|
|
|
|
PCI_ACPI_UNUSED,
|
|
|
|
PCI_ACPI_UNUSED,
|
|
|
|
PCI_ACPI_UNUSED,
|
|
|
|
PCI_BAR_EVEN_ALIGN,
|
|
|
|
PCI_BAR_ALL,
|
|
|
|
PCI_BAR_NOCHANGE,
|
|
|
|
//
|
|
|
|
// Device Agilent 103C
|
|
|
|
//
|
|
|
|
DEVICE_INF_TAG,
|
|
|
|
PCI_DEVICE_ID(0x103C, DEVICE_ID_NOCARE, DEVICE_ID_NOCARE, DEVICE_ID_NOCARE, DEVICE_ID_NOCARE),
|
|
|
|
DEVICE_RES_TAG,
|
|
|
|
PCI_BAR_TYPE_IO,
|
|
|
|
PCI_ACPI_UNUSED,
|
|
|
|
PCI_ACPI_UNUSED,
|
|
|
|
PCI_ACPI_UNUSED,
|
|
|
|
PCI_ACPI_UNUSED,
|
|
|
|
PCI_BAR_EVEN_ALIGN,
|
|
|
|
PCI_BAR_ALL,
|
|
|
|
PCI_BAR_NOCHANGE,
|
|
|
|
//
|
|
|
|
// Device Agilent 15BC
|
|
|
|
//
|
|
|
|
DEVICE_INF_TAG,
|
|
|
|
PCI_DEVICE_ID(0x15BC, DEVICE_ID_NOCARE, DEVICE_ID_NOCARE, DEVICE_ID_NOCARE, DEVICE_ID_NOCARE),
|
|
|
|
DEVICE_RES_TAG,
|
|
|
|
PCI_BAR_TYPE_IO,
|
|
|
|
PCI_ACPI_UNUSED,
|
|
|
|
PCI_ACPI_UNUSED,
|
|
|
|
PCI_ACPI_UNUSED,
|
|
|
|
PCI_ACPI_UNUSED,
|
|
|
|
PCI_BAR_EVEN_ALIGN,
|
|
|
|
PCI_BAR_ALL,
|
|
|
|
PCI_BAR_NOCHANGE,
|
|
|
|
//
|
|
|
|
// The end of the list
|
|
|
|
//
|
|
|
|
LIST_END_TAG
|
|
|
|
};
|
|
|
|
|
|
|
|
//
|
|
|
|
// the incompatible PCI devices list for the values of configuration registers
|
|
|
|
//
|
|
|
|
GLOBAL_REMOVE_IF_UNREFERENCED UINT64 IncompatiblePciDeviceListForRegister[] = {
|
|
|
|
//
|
|
|
|
// DEVICE_INF_TAG,
|
|
|
|
// PCI_DEVICE_ID (VendorID, DeviceID, Revision, SubVendorId, SubDeviceId),
|
|
|
|
// PCI_RES_TAG,
|
|
|
|
// PCI_ACCESS_TYPE, PCI_CONFIG_ADDRESS,
|
|
|
|
// AND_VALUE, OR_VALUE
|
|
|
|
|
|
|
|
//
|
|
|
|
// Device Lava 0x1407, DeviceId 0x0110
|
|
|
|
//
|
|
|
|
DEVICE_INF_TAG,
|
|
|
|
PCI_DEVICE_ID(0x1407, 0x0110, DEVICE_ID_NOCARE, DEVICE_ID_NOCARE, DEVICE_ID_NOCARE),
|
|
|
|
DEVICE_RES_TAG,
|
|
|
|
PCI_REGISTER_READ,
|
|
|
|
PCI_CAPBILITY_POINTER_OFFSET,
|
|
|
|
0xffffff00,
|
|
|
|
VALUE_NOCARE,
|
|
|
|
|
|
|
|
//
|
|
|
|
// Device Lava 0x1407, DeviceId 0x0111
|
|
|
|
//
|
|
|
|
DEVICE_INF_TAG,
|
|
|
|
PCI_DEVICE_ID(0x1407, 0x0111, DEVICE_ID_NOCARE, DEVICE_ID_NOCARE, DEVICE_ID_NOCARE),
|
|
|
|
DEVICE_RES_TAG,
|
|
|
|
PCI_REGISTER_READ,
|
|
|
|
PCI_CAPBILITY_POINTER_OFFSET,
|
|
|
|
0xffffff00,
|
|
|
|
VALUE_NOCARE,
|
|
|
|
|
|
|
|
//
|
|
|
|
// The end of the list
|
|
|
|
//
|
|
|
|
LIST_END_TAG
|
|
|
|
};
|
|
|
|
|
|
|
|
//
|
|
|
|
// the incompatible PCI devices list for the access width of configuration registers
|
|
|
|
//
|
|
|
|
GLOBAL_REMOVE_IF_UNREFERENCED UINT64 DeviceListForAccessWidth[] = {
|
|
|
|
//
|
|
|
|
// DEVICE_INF_TAG,
|
|
|
|
// PCI_DEVICE_ID (VendorID, DeviceID, Revision, SubVendorId, SubDeviceId),
|
|
|
|
// DEVICE_RES_TAG,
|
|
|
|
// PCI_ACCESS_TYPE, PCI_ACCESS_WIDTH,
|
|
|
|
// START_ADDRESS, END_ADDRESS,
|
|
|
|
// ACTUAL_PCI_ACCESS_WIDTH,
|
|
|
|
//
|
|
|
|
|
|
|
|
//
|
|
|
|
// Sample Device
|
|
|
|
//
|
|
|
|
//DEVICE_INF_TAG,
|
|
|
|
//PCI_DEVICE_ID(0xXXXX, DEVICE_ID_NOCARE, DEVICE_ID_NOCARE, DEVICE_ID_NOCARE, DEVICE_ID_NOCARE),
|
|
|
|
//DEVICE_RES_TAG,
|
|
|
|
//PCI_REGISTER_READ,
|
|
|
|
//EfiPciWidthUint8,
|
|
|
|
//0,
|
|
|
|
//0xFF,
|
|
|
|
//EfiPciWidthUint32,
|
|
|
|
//
|
|
|
|
|
|
|
|
//
|
|
|
|
// The end of the list
|
|
|
|
//
|
|
|
|
LIST_END_TAG
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|