## @file
#  Debug Communication Library instance based on usb3 debug port.
#
#  Copyright (c) 2014 - 2018, 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                      = DebugCommunicationLibUsb3Dxe
  MODULE_UNI_FILE                = DebugCommunicationLibUsb3Dxe.uni
  FILE_GUID                      = C41F8C82-B3E6-47e0-A61D-0F9E429E6996
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0
  LIBRARY_CLASS                  = DebugCommunicationLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER SMM_CORE
  CONSTRUCTOR                    = DebugCommunicationUsb3DxeConstructor
  DESTRUCTOR                     = DebugCommunicationUsb3DxeDestructor

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64
#

[Sources]
  DebugCommunicationLibUsb3Dxe.c
  DebugCommunicationLibUsb3Transfer.c
  DebugCommunicationLibUsb3Common.c
  DebugCommunicationLibUsb3Internal.h

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
  SourceLevelDebugPkg/SourceLevelDebugPkg.dec

[Pcd]
  # 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.PcdUsbXhciMemorySpaceBase          ## SOMETIMES_CONSUMES

  # 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.PcdUsbXhciPciAddress               ## CONSUMES

  # 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.
  gEfiSourceLevelDebugPkgTokenSpaceGuid.PcdUsbXhciDebugDetectTimeout       ## SOMETIMES_CONSUMES

  # The value of data buffer size used for USB debug port handle.
  # It should be equal to sizeof (USB3_DEBUG_PORT_HANDLE).
  gEfiSourceLevelDebugPkgTokenSpaceGuid.PcdDebugPortHandleBufferSize|249   ## SOMETIMES_CONSUMES

[Protocols]
   ## NOTIFY
   ## SOMETIMES_CONSUMES
  gEfiPciIoProtocolGuid
  gEdkiiIoMmuProtocolGuid               ## SOMETIMES_CONSUMES
   ## NOTIFY
   ## SOMETIMES_CONSUMES
  gEfiDxeSmmReadyToLockProtocolGuid

[LibraryClasses]
  BaseLib
  PcdLib
  IoLib
  PciLib
  TimerLib
  UefiBootServicesTableLib
  UefiLib
  BaseMemoryLib
  HobLib
