13eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/*++ 23eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 33e99020dbf0a159e34b84e7ae9125f2e368d5390lgaoCopyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR> 4f57387d54bd8f2c0261834b2ad16155f1db63291hhtianThis program and the accompanying materials 53eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangare licensed and made available under the terms and conditions of the BSD License 63eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangwhich accompanies this distribution. The full text of the license may be found at 73eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwanghttp://opensource.org/licenses/bsd-license.php 83eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 93eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTHE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 103eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangWITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 113eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 123eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangModule Name: 133eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 143eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EfiPciCfg.h 153eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 163eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangAbstract: 173eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 183eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang Abstract the common fields of PciCfg definition between Framework 0.9x 193eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang and PI 1.0. 203eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 213eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang--*/ 223eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 233eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#ifndef _EFI_PCI_CFG_H_ 243eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define _EFI_PCI_CFG_H_ 253eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 263eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// 273eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// Framework specification 0.9x definition. 283eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// 293eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef enum { 303eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang PeiPciCfgWidthUint8 = 0, 313eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang PeiPciCfgWidthUint16 = 1, 323eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang PeiPciCfgWidthUint32 = 2, 333eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang PeiPciCfgWidthUint64 = 3, 343eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang PeiPciCfgWidthMaximum 353eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} PEI_PCI_CFG_PPI_WIDTH; 363eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 373eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define PEI_PCI_CFG_ADDRESS(bus, dev, func, reg) ( \ 383eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang (UINT64) ((((UINTN) bus) << 24) + (((UINTN) dev) << 16) + (((UINTN) func) << 8) + ((UINTN) reg)) \ 393eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang ) & 0x00000000ffffffff 403eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 413eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// 423eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// PI 1.0 definition. 433eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// 443eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef enum { 453eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EfiPeiPciCfgWidthUint8 = 0, 463eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EfiPeiPciCfgWidthUint16 = 1, 473eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EfiPeiPciCfgWidthUint32 = 2, 483eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EfiPeiPciCfgWidthUint64 = 3, 493eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang EfiPeiPciCfgWidthMaximum 503eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} EFI_PEI_PCI_CFG_PPI_WIDTH; 513eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 523eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define EFI_PEI_PCI_CFG_ADDRESS(bus, dev, func, reg) \ 533e99020dbf0a159e34b84e7ae9125f2e368d5390lgao (UINT64) ((((UINTN) (bus)) << 24) | \ 543e99020dbf0a159e34b84e7ae9125f2e368d5390lgao (((UINTN) (dev)) << 16) | \ 553e99020dbf0a159e34b84e7ae9125f2e368d5390lgao (((UINTN) (func)) << 8) | \ 563e99020dbf0a159e34b84e7ae9125f2e368d5390lgao ((reg) < 256 ? ((UINTN) (reg)): ((UINT64) (reg) << 32))) 573eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 583eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#if (PI_SPECIFICATION_VERSION < 0x00010000) 593eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 603eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef struct { 613eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang UINT8 Register; 623eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang UINT8 Function; 633eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang UINT8 Device; 643eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang UINT8 Bus; 653eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang UINT8 Reserved[4]; 663eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} PEI_PCI_CFG_PPI_PCI_ADDRESS; 673eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 683eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef PEI_PCI_CFG_PPI_PCI_ADDRESS EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS; 693eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 703eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#else 713eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 723eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtypedef struct { 733eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang UINT8 Register; 743eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang UINT8 Function; 753eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang UINT8 Device; 763eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang UINT8 Bus; 773eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang UINT32 ExtendedRegister; 783eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang} EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS; 793eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#endif 803eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 813eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#endif 82