#/** @file
# Intel Framework Module Package contains the definitions and module implementation
# which follows Intel EFI Framework Specification.
#
# Copyright (c) 2007 - 2009, 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.
#
#**/

[Defines]
  DEC_SPECIFICATION              = 0x00010005
  PACKAGE_NAME                   = IntelFrameworkModulePkg
  PACKAGE_GUID                   = 88894582-7553-4822-B484-624E24B6DECF
  PACKAGE_VERSION                = 0.90

[Includes]
  Include                        # Root include for the package

[LibraryClasses]
  ##  @libraryclass  OEM status code libary is used to report status code to OEM device.
  OemHookStatusCodeLib|Include/Library/OemHookStatusCodeLib.h

  ##  @libraryclass  Platform BDS library definition about platform specific behavior.
  PlatformBdsLib|Include/Library/PlatformBdsLib.h

  ##  @libraryclass  Generic BDS library definition, include the data structure and function.
  GenericBdsLib|Include/Library/GenericBdsLib.h

[Guids]
  ## IntelFrameworkModule package token space guid
  #  Include/Guid/IntelFrameworkModulePkgTokenSpace.h
  gEfiIntelFrameworkModulePkgTokenSpaceGuid = { 0xD3705011, 0xBC19, 0x4af7, { 0xBE, 0x16, 0xF6, 0x80, 0x30, 0x37, 0x8C, 0x15 }}

  ## GUID identifies status code records HOB that originate from the PEI status code
  #  Include/Guid/MemoryStatusCodeRecord.h
  gMemoryStatusCodeRecordGuid     = { 0x060CC026, 0x4C0D, 0x4DDA, { 0x8F, 0x41, 0x59, 0x5F, 0xEF, 0x00, 0xA5, 0x02 }}

  ## GUID identifies Data Hub records logged by Status Code Runtime Protocol.
  #  Include/Guid/DataHubStatusCodeRecord.h
  gEfiDataHubStatusCodeRecordGuid = { 0xD083E94C, 0x6560, 0x42E4, { 0xB6, 0xD4, 0x2D, 0xF7, 0x5A, 0xDF, 0x6A, 0x2A }}

  ## GUID indicates the tiano custom compress/decompress algorithm.
  #  Include/Guid/TianoDecompress.h
  gTianoCustomDecompressGuid     = { 0xA31280AD, 0x481E, 0x41B6, { 0x95, 0xE8, 0x12, 0x7F, 0x4C, 0x98, 0x47, 0x79 }}

  ## GUID indicates the LZMA custom compress/decompress algorithm.
  #  Include/Guid/LzmaDecompress.h
  gLzmaCustomDecompressGuid      = { 0xEE4E5898, 0x3914, 0x4259, { 0x9D, 0x6E, 0xDC, 0x7B, 0xD7, 0x94, 0x03, 0xCF }}

  ## GUID used to pass DEBUG() macro information through the Status Code Protocol and Status Code PPI
  #  Include/Guid/StatusCodeDataTypeDebug.h
  gEfiStatusCodeDataTypeDebugGuid  = { 0x9A4E9246, 0xD553, 0x11D5, { 0x87, 0xE2, 0x00, 0x06, 0x29, 0x45, 0xC3, 0xB9 }}

[Protocols]
  ## Vga Mini port binding for a VGA controller
  #  Include/Protocol/VgaMiniPort.h
  gEfiVgaMiniPortProtocolGuid    = { 0xc7735a2f, 0x88f5, 0x4882, { 0xae, 0x63, 0xfa, 0xac, 0x8c, 0x8b, 0x86, 0xb3 }}

  ## ISA I/O Protocol is used to perform ISA device Io/Mem operations.
  #  Include/Protocol/IsaIo.h
  gEfiIsaIoProtocolGuid          = { 0x7ee2bd44, 0x3da0, 0x11d4, { 0x9a, 0x38, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d }}

  ## ISA Acpi Protocol is used to operate and communicate with ISA device.
  #  Include/Protocol/IsaAcpi.h
  gEfiIsaAcpiProtocolGuid        = { 0x64a892dc, 0x5561, 0x4536, { 0x92, 0xc7, 0x79, 0x9b, 0xfc, 0x18, 0x33, 0x55 }}

  ## PS/2 policy protocol abstracts the specific platform initialization and setting.
  #  Include/Protocol/Ps2Policy.h
  gEfiPs2PolicyProtocolGuid      = { 0x4DF19259, 0xDC71, 0x4D46, { 0xBE, 0xF1, 0x35, 0x7B, 0xB5, 0x78, 0xC4, 0x18 }}

  ## OEM Badging Protocol defines the interface to get the OEM badging image with the dispaly attribute.
  #  Include/Protocol/OEMBadging.h
  gEfiOEMBadgingProtocolGuid     = { 0x170E13C0, 0xBF1B, 0x4218, { 0x87, 0x1D, 0x2A, 0xBD, 0xC6, 0xF8, 0x87, 0xBC }}

[PcdsFeatureFlag]
  ## This PCD specifies whether StatusCode is reported via Serial port.
  gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdStatusCodeUseSerial|TRUE|BOOLEAN|0x00010022

  ## This PCD specifies whether StatusCode is stored in memory.
  #  The memory is boot time memory in PEI Phase and is runtime memory in DXE Phase.
  gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdStatusCodeUseMemory|FALSE|BOOLEAN|0x00010023

  ## This PCD specifies whether StatusCode is reported via OEM device.
  gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdStatusCodeUseOEM|FALSE|BOOLEAN|0x00010024

  ## This PCD specifies whether StatusCode is loged into DataHub.
  gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdStatusCodeUseDataHub|FALSE|BOOLEAN|0x00010029

  ## This PCD specifies whether Peiphase StatusCode is replayed in DxePhase.
  gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdStatusCodeReplayIn|FALSE|BOOLEAN|0x0001002d

  ## This PCD specifies whether PciBus supports the hot plug device.
  gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdPciBusHotplugDeviceSupport|TRUE|BOOLEAN|0x0001003d

  ## This PCD specifies whether Serial device use half hand shake.
  gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdIsaBusSerialUseHalfHandshake|FALSE|BOOLEAN|0x00010043

  ## This PCD specifies whether the PCI bus driver probes non-standard, 
  #  such as 2K/1K/512, granularity for PCI to PCI bridge I/O window.
  gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdPciBridgeIoAlignmentProbe|FALSE|BOOLEAN|0x10000044

[PcdsFixedAtBuild]
  ## FFS filename to find the default BMP Logo file.
  gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdLogoFile |{ 0x99, 0x8b, 0xB2, 0x7B, 0xBB, 0x61, 0xD5, 0x11, 0x9A, 0x5D, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D }|VOID*|16

  ## FFS filename to find the shell application.
  gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdShellFile|{ 0xB7, 0xD6, 0x7A, 0xC5, 0x15, 0x05, 0xA8, 0x40, 0x9D, 0x21, 0x55, 0x16, 0x52, 0x85, 0x4E, 0x37 }|VOID*|16

  ## ISA bus related PCD to support DMA, SlaveDMA and ISA Memory features.
  #  BIT0 indicates if DMA is supported
  #  BIT1 indicates if only slave DMA is supported
  #  BIT2 indicates if ISA memory is supported
  gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdIsaBusSupportedFeatures|0x05|UINT8|0x00010040

[PcdsFixedAtBuild,PcdsPatchableInModule,PcdsDynamic]
  ## PcdStatusCodeMemorySize is used when PcdStatusCodeUseMemory is set to true
  #  (PcdStatusCodeMemorySize * KBytes) is the total taken memory size.
  #  The default value in PeiPhase is 1 KBytes.
  #  The default value in DxePhase is 128 KBytes.
  gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdStatusCodeMemorySize|1|UINT16|0x00010025

[PcdsDynamic]
  ## PCD is used to mark if the machine has complete one boot cycle before.
  #  After the complete boot, the variable BootState will be set to TRUE.
  gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdBootState|TRUE|BOOLEAN|0x0001002f

  ## Timeout value for displaying progressing bar in before boot OS.
  #  According to UEFI 2.0 spec, the default TimeOut should be 0xffff.
  gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdPlatformBootTimeOut|0xffff|UINT16|0x40000001

  ## Error level for hardware recorder. If value 0, platform does not support feature of hardware error record.
  #  This PCD should be set as HII type PCD by platform integrator mapped to variable L"HwErrRecSupport"
  gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdHardwareErrorRecordLevel|0|UINT16|0x40000002
