## @file
# dec file for Dynamic Tables Framework.
#
# Copyright (c) 2017 - 2022, Arm Limited. All rights reserved.<BR>
#
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
##

[Defines]
  DEC_SPECIFICATION              = 0x00010005
  PACKAGE_NAME                   = DynamicTablesPkg
  PACKAGE_GUID                   = 188EB346-8ABA-460E-A105-0F9D76F7324A
  PACKAGE_VERSION                = 1.0

[Includes]
  Include

[LibraryClasses]
  ##  @libraryclass  Defines a set of Acpi helper methods
  #   independent from the Dynamic Tables Framework.
  AcpiHelperLib|Include/Library/AcpiHelperLib.h

  ##  @libraryclass  Defines a set of APIs for Dynamic AML generation.
  AmlLib|Include/Library/AmlLib/AmlLib.h

  ##  @libraryclass  Defines a set of APIs to handle dynamically created CmObj.
  DynamicPlatRepoLib|Include/Library/DynamicPlatRepoLib.h

  ##  @libraryclass  Defines a set of APIs to a hardware information parser.
  HwInfoParserLib|Include/Library/HwInfoParserLib.h

  ##  @libraryclass Defines functions for customizing the generation of _OSC and slot info.
  SsdtPcieSupportLib|Include/Library/SsdtPcieSupportLib.h

  ##  @libraryclass  Defines a set of methods for fixing up a SSDT Serial Port.
  SsdtSerialPortFixupLib|Include/Library/SsdtSerialPortFixupLib.h

  ##  @libraryclass  Defines a set of helper methods.
  TableHelperLib|Include/Library/TableHelperLib.h

  ##  @libraryclass  Defines a set of SMBIOS string helper methods.
  SmbiosStringTableLib|Include/Library/SmbiosStringTableLib.h

[LibraryClasses.AARCH64]
  ##  @libraryclass  Defines a set of APIs to populate CmObj using SCMI.
  DynamicTablesScmiInfoLib|Include/Library/DynamicTablesScmiInfoLib.h

[Protocols]
  # Configuration Manager Protocol GUID
  gEdkiiConfigurationManagerProtocolGuid = { 0xd85a4835, 0x5a82, 0x4894, { 0xac, 0x2, 0x70, 0x6f, 0x43, 0xd5, 0x97, 0x8e } }

  # Dynamic Table Factory Protocol GUID
  gEdkiiDynamicTableFactoryProtocolGuid = { 0x91d1e327, 0xfe5a, 0x49b8, { 0xab, 0x65, 0xe, 0xce, 0x2d, 0xdb, 0x45, 0xec } }

[PcdsFixedAtBuild]

  # Maximum number of Custom ACPI Generators
  gEdkiiDynamicTablesPkgTokenSpaceGuid.PcdMaxCustomACPIGenerators|1|UINT16|0xC0000001

  # Maximum number of Custom SMBIOS Generators
  gEdkiiDynamicTablesPkgTokenSpaceGuid.PcdMaxCustomSMBIOSGenerators|1|UINT16|0xC0000002

  # Maximum number of Custom DT Generators
  gEdkiiDynamicTablesPkgTokenSpaceGuid.PcdMaxCustomDTGenerators|1|UINT16|0xC0000003

  # Non BSA Compliant 16550 Serial HID
  gEdkiiDynamicTablesPkgTokenSpaceGuid.PcdNonBsaCompliant16550SerialHid|""|VOID*|0x40000008

  # Use PCI segment numbers as UID
  gEdkiiDynamicTablesPkgTokenSpaceGuid.PcdPciUseSegmentAsUid|FALSE|BOOLEAN|0x40000009

  # Allow some relaxation on some specific points for the platforms that desire it.
  #   BIT0: Allow the absence of some registers in the _CPC object.
  gEdkiiDynamicTablesPkgTokenSpaceGuid.PcdDevelopmentPlatformRelaxations|0|UINT64|0x4000000A

[Guids]
  gEdkiiDynamicTablesPkgTokenSpaceGuid = { 0xab226e66, 0x31d8, 0x4613, { 0x87, 0x9d, 0xd2, 0xfa, 0xb6, 0x10, 0x26, 0x3c } }
