## @file  SourceLevelDebugPkg.dec
# This package provides target side modules to support source level debug.
# The target side components includes the Debug Agent Library instance
# to communicate with host side modules, Debug Communication Library and
# instances to provide the communication I/O functions between Debug Agent
# and host, PeCoffExtraActionLib instance to report symbol path information,
# etc.
#
# Copyright (c) 2010 - 2015, Intel Corporation. All rights reserved.<BR>
# This program and the accompanying materials are licensed and made available under 
# the terms and conditions of the BSD License that 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                   = SourceLevelDebugPkg
  PACKAGE_UNI_FILE               = SourceLevelDebugPkg.uni
  PACKAGE_GUID                   = DBF00C27-D8D7-443d-918B-4E85CDA1373B
  PACKAGE_VERSION                = 0.96

[Includes]
  Include

[Includes.IA32]
  Include/Ia32

[Includes.X64]
  Include/Ia32

[LibraryClasses]
  ##  @libraryclass  Provides communication I/O functions between Debug Agent and HOST.
  ##
  DebugCommunicationLib|Include/Library/DebugCommunicationLib.h

[Guids]
  ## MdeModule package token space guid
  # Include/Guid/DebugAgentGuid.h
  gEfiDebugAgentGuid       = {0x865a5a9b, 0xb85d, 0x474c, { 0x84, 0x55, 0x65, 0xd1, 0xbe, 0x84, 0x4b, 0xe2 }}
  gEfiSourceLevelDebugPkgTokenSpaceGuid = {0x865a5aab, 0xb85d, 0x474c, { 0x84, 0x55, 0x65, 0xd1, 0xbe, 0x84, 0x4b, 0xe2 }}

#
# [Error.gEfiSourceLevelDebugPkgTokenSpaceGuid]
#   0x80000001 | Invalid value provided.
#

[PcdsFixedAtBuild, PcdsPatchableInModule]
  ## The memory BAR of usb debug port, it may be different with the memory bar of ehci host controller.
  #  Note that the memory BAR address is only used before Pci bus resource allocation.
  # @Prompt Configure usb debug port memory BAR.
  gEfiSourceLevelDebugPkgTokenSpaceGuid.PcdUsbDebugPortMemorySpaceBase|0xd0000000|UINT32|0x00000001

  ## The memory BAR of ehci host controller, in which usb debug feature is enabled.
  #  Note that the memory BAR address is only used before Pci bus resource allocation.
  # @Prompt Configure ehci host controller memory BAR.
  gEfiSourceLevelDebugPkgTokenSpaceGuid.PcdUsbEhciMemorySpaceBase|0xd0000000|UINT32|0x00000002

  ## The pci address of ehci host controller, in which usb debug feature is enabled.
  #  The format of pci address is :<BR>
  #      -----------------------------------------------------------------------<BR>
  #      | Bits 28..31 | Bits 20..27 | Bits 15..19 | Bits 12..14 | Bits 00..11 |<BR>
  #      -----------------------------------------------------------------------<BR>
  #      |      0      |     Bus     |   Device    |   Function  |      0      |<BR>
  #      -----------------------------------------------------------------------<BR>
  #  For the value 0x000EF000, it means the pci address at bus 0x0, device 0x1D, function 0x7.
  # @Prompt Configure ehci host controller pci address.
  # @Expression  0x80000001 | (gEfiSourceLevelDebugPkgTokenSpaceGuid.PcdUsbEhciPciAddress & 0xF0000FFF) == 0
  gEfiSourceLevelDebugPkgTokenSpaceGuid.PcdUsbEhciPciAddress|0x000EF000|UINT32|0x00000003

  ## The mask of exception numbers whose handlers would be ignored and cannot be replaced or 
  #  hooked by Debug Agent Library. Masking INT1/INT3 is invalid.
  # @Prompt Configure exception numbers not to be hooked by Debug Agent.
  # @Expression  0x80000001 | (gEfiSourceLevelDebugPkgTokenSpaceGuid.PcdExceptionsIgnoredByDebugger & 0xA) == 0
  gEfiSourceLevelDebugPkgTokenSpaceGuid.PcdExceptionsIgnoredByDebugger|0x00000000|UINT32|0x00000004

  ## The method to issue break point to Debug Agent Library when Loading/UnLoading image.<BR><BR>
  #  1: Use I/O Port 84 to issue hardware break point<BR>
  #  2: Use INT3 to issue software break point<BR>
  # @Prompt Configure Loading/UnLoading image break method.
  # @ValidRange  0x80000001 | 1 - 2
  gEfiSourceLevelDebugPkgTokenSpaceGuid.PcdDebugLoadImageMethod|0x1|UINT8|0x00000005

  ## The data buffer size used by debug port in debug communication library instances.
  #  Its value is not suggested to be changed in platform DSC file.
  # @Prompt Assign debug port buffer size.
  gEfiSourceLevelDebugPkgTokenSpaceGuid.PcdDebugPortHandleBufferSize|0x0|UINT16|0x00000006

  ## The memory BAR of xhci host controller, in which usb debug feature is enabled.
  ## Note that the memory BAR address is only used before Pci bus resource allocation.
  # @Prompt Configure ehci host controller memory BAR.
  gEfiSourceLevelDebugPkgTokenSpaceGuid.PcdUsbXhciMemorySpaceBase|0xD0000000|UINT64|0x00000007
  
  ## The pci address of xhci host controller, in which usb debug feature is enabled.
  #  The format of pci address is :<BR>
  #      -----------------------------------------------------------------------<BR>
  #      | Bits 28..31 | Bits 20..27 | Bits 15..19 | Bits 12..14 | Bits 00..11 |<BR>
  #      -----------------------------------------------------------------------<BR>
  #      |      0      |     Bus     |   Device    |   Function  |      0      |<BR>
  #      -----------------------------------------------------------------------<BR>
  #  For the value 0x000A0000, it means the pci address at bus 0x0, device 0x14, function 0x0.
  # @Prompt Configure xhci host controller pci address.
  # @Expression  0x80000001 | (gEfiSourceLevelDebugPkgTokenSpaceGuid.PcdUsbXhciPciAddress & 0xF0000FFF) == 0
  gEfiSourceLevelDebugPkgTokenSpaceGuid.PcdUsbXhciPciAddress|0x000A0000|UINT32|0x00000008
  
  ## Per XHCI spec, software shall impose a timeout between the detection of the Debug Host 
  ## connection and the DbC Run transition to 1. This PCD specifies the timeout value in microsecond.
  # @Prompt Configure debug device detection timeout value.
  gEfiSourceLevelDebugPkgTokenSpaceGuid.PcdUsbXhciDebugDetectTimeout|3000000|UINT64|0x00000009

[UserExtensions.TianoCore."ExtraFiles"]
  SourceLevelDebugPkgExtra.uni