14#ifndef _UEFI_NVM_EXPRESS_PASS_THRU_H_
15#define _UEFI_NVM_EXPRESS_PASS_THRU_H_
17#define EFI_NVM_EXPRESS_PASS_THRU_PROTOCOL_GUID \
19 0x52c78312, 0x8edc, 0x4233, { 0x98, 0xf2, 0x1a, 0x1a, 0xa5, 0xe3, 0x88, 0xa5 } \
34#define EFI_NVM_EXPRESS_PASS_THRU_ATTRIBUTES_PHYSICAL 0x0001
39#define EFI_NVM_EXPRESS_PASS_THRU_ATTRIBUTES_LOGICAL 0x0002
44#define EFI_NVM_EXPRESS_PASS_THRU_ATTRIBUTES_NONBLOCKIO 0x0004
49#define EFI_NVM_EXPRESS_PASS_THRU_ATTRIBUTES_CMD_SET_NVM 0x0008
54#define NORMAL_CMD 0x00
55#define FUSED_FIRST_CMD 0x01
56#define FUSED_SECOND_CMD 0x02
60 UINT32 FusedOperation : 2;
67#define CDW2_VALID 0x01
68#define CDW3_VALID 0x02
69#define CDW10_VALID 0x04
70#define CDW11_VALID 0x08
71#define CDW12_VALID 0x10
72#define CDW13_VALID 0x20
73#define CDW14_VALID 0x40
74#define CDW15_VALID 0x80
79#define NVME_ADMIN_QUEUE 0x00
80#define NVME_IO_QUEUE 0x01
104 UINT64 CommandTimeout;
105 VOID *TransferBuffer;
106 UINT32 TransferLength;
107 VOID *MetadataBuffer;
108 UINT32 MetadataLength;
154 IN UINT32 NamespaceId,
196 IN OUT UINT32 *NamespaceId
234 IN UINT32 NamespaceId,
267 OUT UINT32 *NamespaceId
281extern EFI_GUID gEfiNvmExpressPassThruProtocolGuid;
EFI_STATUS(EFIAPI * EFI_NVM_EXPRESS_PASS_THRU_GET_NEXT_NAMESPACE)(IN EFI_NVM_EXPRESS_PASS_THRU_PROTOCOL *This, IN OUT UINT32 *NamespaceId)
EFI_STATUS(EFIAPI * EFI_NVM_EXPRESS_PASS_THRU_BUILD_DEVICE_PATH)(IN EFI_NVM_EXPRESS_PASS_THRU_PROTOCOL *This, IN UINT32 NamespaceId, OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath)
EFI_STATUS(EFIAPI * EFI_NVM_EXPRESS_PASS_THRU_GET_NAMESPACE)(IN EFI_NVM_EXPRESS_PASS_THRU_PROTOCOL *This, IN EFI_DEVICE_PATH_PROTOCOL *DevicePath, OUT UINT32 *NamespaceId)
EFI_STATUS(EFIAPI * EFI_NVM_EXPRESS_PASS_THRU_PASSTHRU)(IN EFI_NVM_EXPRESS_PASS_THRU_PROTOCOL *This, IN UINT32 NamespaceId, IN OUT EFI_NVM_EXPRESS_PASS_THRU_COMMAND_PACKET *Packet, IN EFI_EVENT Event OPTIONAL)