/* Reads multiple words of data from the IDE data port. Call the IO abstraction once to do the complete read, not one word at a time */
VOID EFIAPI IdeReadPortWMultiple(IN EFI_PCI_IO_PROTOCOL *PciIo, IN UINT16 Port, IN UINTN Count, IN VOID *Buffer)
/* Reads multiple words of data from the IDE data port. Call the IO abstraction once to do the complete read, not one word at a time */
VOID EFIAPI IdeReadPortWMultiple(IN EFI_PCI_IO_PROTOCOL *PciIo, IN UINT16 Port, IN UINTN Count, IN VOID *Buffer)
{
  ASSERT (PciIo  != NULL);
  ASSERT (Buffer != NULL);
  PciIo->Io.Read (
              PciIo,
              EfiPciIoWidthFifoUint16,
              EFI_PCI_IO_PASS_THROUGH_BAR,
              (UINT64)Port,
              Count,
              (UINT16 *)Buffer
              );
}