1 /** @file 2 Support for PCI 3.0 standard. 3 4 Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR> 5 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 9 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. 12 13 **/ 14 15 #ifndef __PCI30_H__ 16 #define __PCI30_H__ 17 18 19 #include <IndustryStandard/Pci23.h> 20 21 /// 22 /// PCI_CLASS_MASS_STORAGE, Base Class 01h. 23 /// 24 ///@{ 25 #define PCI_CLASS_MASS_STORAGE_SATADPA 0x06 26 #define PCI_IF_MASS_STORAGE_SATA 0x00 27 #define PCI_IF_MASS_STORAGE_AHCI 0x01 28 ///@} 29 30 /// 31 /// PCI_CLASS_WIRELESS, Base Class 0Dh. 32 /// 33 ///@{ 34 #define PCI_SUBCLASS_ETHERNET_80211A 0x20 35 #define PCI_SUBCLASS_ETHERNET_80211B 0x21 36 ///@} 37 38 /** 39 Macro that checks whether device is a SATA controller. 40 41 @param _p Specified device. 42 43 @retval TRUE Device is a SATA controller. 44 @retval FALSE Device is not a SATA controller. 45 46 **/ 47 #define IS_PCI_SATADPA(_p) IS_CLASS2 (_p, PCI_CLASS_MASS_STORAGE, PCI_CLASS_MASS_STORAGE_SATADPA) 48 49 /// 50 /// PCI Capability List IDs and records 51 /// 52 #define EFI_PCI_CAPABILITY_ID_PCIEXP 0x10 53 54 #pragma pack(1) 55 56 /// 57 /// PCI Data Structure Format 58 /// Section 5.1.2, PCI Firmware Specification, Revision 3.0 59 /// 60 typedef struct { 61 UINT32 Signature; ///< "PCIR" 62 UINT16 VendorId; 63 UINT16 DeviceId; 64 UINT16 DeviceListOffset; 65 UINT16 Length; 66 UINT8 Revision; 67 UINT8 ClassCode[3]; 68 UINT16 ImageLength; 69 UINT16 CodeRevision; 70 UINT8 CodeType; 71 UINT8 Indicator; 72 UINT16 MaxRuntimeImageLength; 73 UINT16 ConfigUtilityCodeHeaderOffset; 74 UINT16 DMTFCLPEntryPointOffset; 75 } PCI_3_0_DATA_STRUCTURE; 76 77 #pragma pack() 78 79 #endif 80