]>
Commit | Line | Data |
---|---|---|
e497432c LA |
1 | /** @file\r |
2 | \r | |
3 | Internal definitions for the PVSCSI driver, which produces Extended SCSI\r | |
4 | Pass Thru Protocol instances for pvscsi devices.\r | |
5 | \r | |
6 | Copyright (C) 2020, Oracle and/or its affiliates.\r | |
7 | \r | |
8 | SPDX-License-Identifier: BSD-2-Clause-Patent\r | |
9 | \r | |
10 | **/\r | |
11 | \r | |
12 | #ifndef __PVSCSI_DXE_H_\r | |
13 | #define __PVSCSI_DXE_H_\r | |
14 | \r | |
15 | #include <Library/DebugLib.h>\r | |
16 | #include <Protocol/ScsiPassThruExt.h>\r | |
17 | \r | |
b654edec | 18 | typedef struct {\r |
ac0a286f MK |
19 | EFI_PHYSICAL_ADDRESS DeviceAddress;\r |
20 | VOID *Mapping;\r | |
b654edec LA |
21 | } PVSCSI_DMA_DESC;\r |
22 | \r | |
23 | typedef struct {\r | |
ac0a286f MK |
24 | PVSCSI_RINGS_STATE *RingState;\r |
25 | PVSCSI_DMA_DESC RingStateDmaDesc;\r | |
b654edec | 26 | \r |
ac0a286f MK |
27 | PVSCSI_RING_REQ_DESC *RingReqs;\r |
28 | PVSCSI_DMA_DESC RingReqsDmaDesc;\r | |
b654edec | 29 | \r |
ac0a286f MK |
30 | PVSCSI_RING_CMP_DESC *RingCmps;\r |
31 | PVSCSI_DMA_DESC RingCmpsDmaDesc;\r | |
b654edec LA |
32 | } PVSCSI_RING_DESC;\r |
33 | \r | |
6510e197 LA |
34 | typedef struct {\r |
35 | //\r | |
36 | // As EFI_EXT_SCSI_PASS_THRU_SCSI_REQUEST_PACKET.SenseDataLength is defined\r | |
37 | // as UINT8, defining here SenseData size to MAX_UINT8 will guarantee it\r | |
38 | // cannot overflow when passed to device.\r | |
39 | //\r | |
ac0a286f | 40 | UINT8 SenseData[MAX_UINT8];\r |
6510e197 LA |
41 | //\r |
42 | // This size of the data is arbitrarily chosen.\r | |
43 | // It seems to be sufficient for all I/O requests sent through\r | |
44 | // EFI_SCSI_PASS_THRU_PROTOCOL.PassThru() for common boot scenarios.\r | |
45 | //\r | |
ac0a286f | 46 | UINT8 Data[0x2000];\r |
6510e197 LA |
47 | } PVSCSI_DMA_BUFFER;\r |
48 | \r | |
ac0a286f | 49 | #define PVSCSI_SIG SIGNATURE_32 ('P', 'S', 'C', 'S')\r |
e497432c LA |
50 | \r |
51 | typedef struct {\r | |
ac0a286f MK |
52 | UINT32 Signature;\r |
53 | EFI_PCI_IO_PROTOCOL *PciIo;\r | |
54 | EFI_EVENT ExitBoot;\r | |
55 | UINT64 OriginalPciAttributes;\r | |
56 | PVSCSI_RING_DESC RingDesc;\r | |
57 | PVSCSI_DMA_BUFFER *DmaBuf;\r | |
58 | PVSCSI_DMA_DESC DmaBufDmaDesc;\r | |
59 | UINT8 MaxTarget;\r | |
60 | UINT8 MaxLun;\r | |
61 | UINTN WaitForCmpStallInUsecs;\r | |
62 | EFI_EXT_SCSI_PASS_THRU_PROTOCOL PassThru;\r | |
63 | EFI_EXT_SCSI_PASS_THRU_MODE PassThruMode;\r | |
e497432c LA |
64 | } PVSCSI_DEV;\r |
65 | \r | |
66 | #define PVSCSI_FROM_PASS_THRU(PassThruPointer) \\r | |
67 | CR (PassThruPointer, PVSCSI_DEV, PassThru, PVSCSI_SIG)\r | |
68 | \r | |
6510e197 LA |
69 | #define PVSCSI_DMA_BUF_DEV_ADDR(Dev, MemberName) \\r |
70 | (Dev->DmaBufDmaDesc.DeviceAddress + OFFSET_OF(PVSCSI_DMA_BUFFER, MemberName))\r | |
71 | \r | |
e497432c | 72 | #endif // __PVSCSI_DXE_H_\r |