]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OvmfPkg/LsiScsiDxe/LsiScsi.h
OvmfPkg/LsiScsiDxe: Process the SCSI Request Packet
[mirror_edk2.git] / OvmfPkg / LsiScsiDxe / LsiScsi.h
index 05deeed379fea24fc4a8fec708b59509010c3529..6ecf523f5a9ea68cd14244f62ea6163572e9794d 100644 (file)
 #define _LSI_SCSI_DXE_H_\r
 \r
 typedef struct {\r
+  //\r
+  // Allocate 32 UINT32 entries for the script and it's sufficient for\r
+  // 16 instructions.\r
+  //\r
+  UINT32                          Script[32];\r
   //\r
   // The max size of CDB is 32.\r
   //\r
@@ -25,6 +30,18 @@ typedef struct {
   //       Count (DBC), a 24-bit register, so the maximum is 0xFFFFFF (16MB-1).\r
   //\r
   UINT8                           Data[SIZE_64KB];\r
+  //\r
+  // For SCSI Message In phase\r
+  //\r
+  UINT8                           MsgIn[2];\r
+  //\r
+  // For SCSI Message Out phase\r
+  //\r
+  UINT8                           MsgOut;\r
+  //\r
+  // For SCSI Status phase\r
+  //\r
+  UINT8                           Status;\r
 } LSI_SCSI_DMA_BUFFER;\r
 \r
 typedef struct {\r
@@ -34,6 +51,7 @@ typedef struct {
   EFI_PCI_IO_PROTOCOL             *PciIo;\r
   UINT8                           MaxTarget;\r
   UINT8                           MaxLun;\r
+  UINT32                          StallPerPollUsec;\r
   LSI_SCSI_DMA_BUFFER             *Dma;\r
   EFI_PHYSICAL_ADDRESS            DmaPhysical;\r
   VOID                            *DmaMapping;\r
@@ -46,6 +64,9 @@ typedef struct {
 #define LSI_SCSI_FROM_PASS_THRU(PassThruPtr) \\r
   CR (PassThruPtr, LSI_SCSI_DEV, PassThru, LSI_SCSI_DEV_SIGNATURE)\r
 \r
+#define LSI_SCSI_DMA_ADDR(Dev, MemberName) \\r
+  ((UINT32)(Dev->DmaPhysical + OFFSET_OF (LSI_SCSI_DMA_BUFFER, MemberName)))\r
+\r
 \r
 //\r
 // Probe, start and stop functions of this driver, called by the DXE core for\r