From f1d6c1eba1b76e57568c8d7c947f60041939f1f9 Mon Sep 17 00:00:00 2001 From: Gary Lin Date: Fri, 17 Jul 2020 14:11:27 +0800 Subject: OvmfPkg/LsiScsiDxe: Map DMA buffer Map DMA buffer and perpare for the implementation of LsiScsiPassThru(). v2: - Replace 0x10000 with SIZE_64KB macro for the DMA buffer data array - Remove DUAL_ADDRESS_CYCLE from PciIo since we don't really need 64-bit DMA address Cc: Jordan Justen Cc: Laszlo Ersek Cc: Ard Biesheuvel Signed-off-by: Gary Lin Reviewed-by: Laszlo Ersek Message-Id: <20200717061130.8881-9-glin@suse.com> --- OvmfPkg/LsiScsiDxe/LsiScsi.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'OvmfPkg/LsiScsiDxe/LsiScsi.h') diff --git a/OvmfPkg/LsiScsiDxe/LsiScsi.h b/OvmfPkg/LsiScsiDxe/LsiScsi.h index 8c2acff6e8..9f9e5c7fed 100644 --- a/OvmfPkg/LsiScsiDxe/LsiScsi.h +++ b/OvmfPkg/LsiScsiDxe/LsiScsi.h @@ -12,6 +12,17 @@ #ifndef _LSI_SCSI_DXE_H_ #define _LSI_SCSI_DXE_H_ +typedef struct { + // + // Allocate 64KB for read/write buffer. It seems sufficient for the common + // boot scenarios. + // + // NOTE: The number of bytes for data transmission is bounded by DMA Byte + // Count (DBC), a 24-bit register, so the maximum is 0xFFFFFF (16MB-1). + // + UINT8 Data[SIZE_64KB]; +} LSI_SCSI_DMA_BUFFER; + typedef struct { UINT32 Signature; UINT64 OrigPciAttrs; @@ -19,6 +30,9 @@ typedef struct { EFI_PCI_IO_PROTOCOL *PciIo; UINT8 MaxTarget; UINT8 MaxLun; + LSI_SCSI_DMA_BUFFER *Dma; + EFI_PHYSICAL_ADDRESS DmaPhysical; + VOID *DmaMapping; EFI_EXT_SCSI_PASS_THRU_MODE PassThruMode; EFI_EXT_SCSI_PASS_THRU_PROTOCOL PassThru; } LSI_SCSI_DEV; -- cgit v1.2.3