/* Set a usb device with a specified address. */
EFI_STATUS PeiUsbSetDeviceAddress(IN EFI_PEI_SERVICES **PeiServices, IN PEI_USB_IO_PPI *UsbIoPpi, IN UINT16 AddressValue)
/* Set a usb device with a specified address. */
EFI_STATUS PeiUsbSetDeviceAddress(IN EFI_PEI_SERVICES **PeiServices, IN PEI_USB_IO_PPI *UsbIoPpi, IN UINT16 AddressValue)
{
  EFI_USB_DEVICE_REQUEST  DevReq;
  ASSERT (UsbIoPpi != NULL);
  DevReq.RequestType = USB_DEV_SET_ADDRESS_REQ_TYPE;
  DevReq.Request     = USB_DEV_SET_ADDRESS;
  DevReq.Value       = AddressValue;
  DevReq.Index       = 0;
  DevReq.Length      = 0;
  return UsbIoPpi->UsbControlTransfer (
                     PeiServices,
                     UsbIoPpi,
                     &DevReq,
                     EfiUsbNoData,
                     PcdGet32 (PcdUsbTransferTimeoutValue),
                     NULL,
                     0
                     );
}