## @file
#  Debug Communication Library instance based on usb debug port.
#
#  Copyright (c) 2010 - 2013, 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
#  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]
  INF_VERSION                    = 0x00010005
  BASE_NAME                      = DebugCommunicationLibUsb
  FILE_GUID                      = 87438836-AD8D-4e3e-9249-895120A67240
  MODULE_TYPE                    = BASE
  VERSION_STRING                 = 0.7
  LIBRARY_CLASS                  = DebugCommunicationLib

#
#  VALID_ARCHITECTURES           = IA32 X64
#

[Sources.common]
  DebugCommunicationLibUsb.c

[Packages]
  MdePkg/MdePkg.dec
  SourceLevelDebugPkg/SourceLevelDebugPkg.dec

[Pcd]
  ## 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.
  gEfiSourceLevelDebugPkgTokenSpaceGuid.PcdUsbDebugPortMemorySpaceBase

  ## 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.
  gEfiSourceLevelDebugPkgTokenSpaceGuid.PcdUsbEhciMemorySpaceBase

  ## The pci address of ehci host controller, in which usb debug feature is enabled.
  ## The format of pci address please refer to SourceLevelDebugPkg.dec
  gEfiSourceLevelDebugPkgTokenSpaceGuid.PcdUsbEhciPciAddress
  ## The value of data buffer size used for USB debug port handle.
  ## It should be equal to sizeof (USB_DEBUG_PORT_HANDLE).
  gEfiSourceLevelDebugPkgTokenSpaceGuid.PcdDebugPortHandleBufferSize|40

[LibraryClasses]
  TimerLib
  IoLib
  PciLib
  PcdLib
  DebugLib

