Home | History | Annotate | Download | only in IndustryStandard
      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