aboutsummaryrefslogtreecommitdiff
path: root/src/vendorcode/intel/edk2/UDK2017/MdePkg/Include/Protocol/TapeIo.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/vendorcode/intel/edk2/UDK2017/MdePkg/Include/Protocol/TapeIo.h')
-rw-r--r--src/vendorcode/intel/edk2/UDK2017/MdePkg/Include/Protocol/TapeIo.h237
1 files changed, 237 insertions, 0 deletions
diff --git a/src/vendorcode/intel/edk2/UDK2017/MdePkg/Include/Protocol/TapeIo.h b/src/vendorcode/intel/edk2/UDK2017/MdePkg/Include/Protocol/TapeIo.h
new file mode 100644
index 0000000000..74c7b3f658
--- /dev/null
+++ b/src/vendorcode/intel/edk2/UDK2017/MdePkg/Include/Protocol/TapeIo.h
@@ -0,0 +1,237 @@
+/** @file
+ EFI_TAPE_IO_PROTOCOL as defined in the UEFI 2.0.
+ Provide services to control and access a tape device.
+
+Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
+This program and the accompanying materials are licensed and made available under
+the terms and conditions of the BSD License that accompanies this distribution.
+The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php.
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+**/
+
+#ifndef __EFI_TAPE_IO_PROTOCOL_H__
+#define __EFI_TAPE_IO_PROTOCOL_H__
+
+#define EFI_TAPE_IO_PROTOCOL_GUID \
+ { \
+ 0x1e93e633, 0xd65a, 0x459e, {0xab, 0x84, 0x93, 0xd9, 0xec, 0x26, 0x6d, 0x18 } \
+ }
+
+typedef struct _EFI_TAPE_IO_PROTOCOL EFI_TAPE_IO_PROTOCOL;
+
+typedef struct _EFI_TAPE_HEADER {
+ UINT64 Signature;
+ UINT32 Revision;
+ UINT32 BootDescSize;
+ UINT32 BootDescCRC;
+ EFI_GUID TapeGUID;
+ EFI_GUID TapeType;
+ EFI_GUID TapeUnique;
+ UINT32 BLLocation;
+ UINT32 BLBlocksize;
+ UINT32 BLFilesize;
+ CHAR8 OSVersion[40];
+ CHAR8 AppVersion[40];
+ CHAR8 CreationDate[10];
+ CHAR8 CreationTime[10];
+ CHAR8 SystemName[256]; // UTF-8
+ CHAR8 TapeTitle[120]; // UTF-8
+ CHAR8 pad[468]; // pad to 1024
+} EFI_TAPE_HEADER;
+
+/**
+ Reads from the tape.
+
+ @param This A pointer to the EFI_TAPE_IO_PROTOCOL instance.
+ @param BufferSize The size of the buffer in bytes pointed to by Buffer.
+ @param Buffer The pointer to the buffer for data to be read into.
+
+ @retval EFI_SUCCESS Data was successfully transferred from the media.
+ @retval EFI_END_OF_FILE A filemark was encountered which limited the data
+ transferred by the read operation or the head is positioned
+ just after a filemark.
+ @retval EFI_NO_MEDIA No media is loaded in the device.
+ @retval EFI_NOT_READY The transfer failed since the device was not ready (e.g. not
+ online). The transfer may be retried at a later time.
+ @retval EFI_UNSUPPORTED The device does not support this type of transfer.
+ @retval EFI_TIMEOUT The transfer failed to complete within the timeout specified.
+ @retval EFI_MEDIA_CHANGED The media in the device was changed since the last access.
+ The transfer was aborted since the current position of the
+ media may be incorrect.
+ @retval EFI_INVALID_PARAMETER A NULL Buffer was specified with a non-zero
+ BufferSize, or the device is operating in fixed block
+ size mode and the BufferSize was not a multiple of
+ device's fixed block size
+ @retval EFI_DEVICE_ERROR A device error occurred while attempting to transfer data
+ from the media.
+
+**/
+typedef
+EFI_STATUS
+(EFIAPI *EFI_TAPE_READ)(
+ IN EFI_TAPE_IO_PROTOCOL *This,
+ IN OUT UINTN *BufferSize,
+ OUT VOID *Buffer
+ );
+
+/**
+ Writes to the tape.
+
+ @param This A pointer to the EFI_TAPE_IO_PROTOCOL instance.
+ @param BufferSize Size of the buffer in bytes pointed to by Buffer.
+ @param Buffer The pointer to the buffer for data to be written from.
+
+ @retval EFI_SUCCESS Data was successfully transferred to the media.
+ @retval EFI_END_OF_MEDIA The logical end of media has been reached. Data may have
+ been successfully transferred to the media.
+ @retval EFI_NO_MEDIA No media is loaded in the device.
+ @retval EFI_NOT_READY The transfer failed since the device was not ready (e.g. not
+ online). The transfer may be retried at a later time.
+ @retval EFI_UNSUPPORTED The device does not support this type of transfer.
+ @retval EFI_TIMEOUT The transfer failed to complete within the timeout specified.
+ @retval EFI_MEDIA_CHANGED The media in the device was changed since the last access.
+ The transfer was aborted since the current position of the
+ media may be incorrect.
+ @retval EFI_WRITE_PROTECTED The media in the device is write-protected. The transfer
+ was aborted since a write cannot be completed.
+ @retval EFI_INVALID_PARAMETER A NULL Buffer was specified with a non-zero
+ BufferSize, or the device is operating in fixed block
+ size mode and the BufferSize was not a multiple of
+ device's fixed block size
+ @retval EFI_DEVICE_ERROR A device error occurred while attempting to transfer data
+ from the media.
+
+**/
+typedef
+EFI_STATUS
+(EFIAPI *EFI_TAPE_WRITE)(
+ IN EFI_TAPE_IO_PROTOCOL *This,
+ IN UINTN *BufferSize,
+ IN VOID *Buffer
+ );
+
+
+/**
+ Rewinds the tape.
+
+ @param This A pointer to the EFI_TAPE_IO_PROTOCOL instance.
+
+ @retval EFI_SUCCESS The media was successfully repositioned.
+ @retval EFI_NO_MEDIA No media is loaded in the device.
+ @retval EFI_NOT_READY Repositioning the media failed since the device was not
+ ready (e.g. not online). The transfer may be retried at a later time.
+ @retval EFI_UNSUPPORTED The device does not support this type of media repositioning.
+ @retval EFI_TIMEOUT Repositioning of the media did not complete within the timeout specified.
+ @retval EFI_DEVICE_ERROR A device error occurred while attempting to reposition the media.
+
+**/
+typedef
+EFI_STATUS
+(EFIAPI *EFI_TAPE_REWIND)(
+ IN EFI_TAPE_IO_PROTOCOL *This
+ );
+
+
+/**
+ Positions the tape.
+
+ @param This A pointer to the EFI_TAPE_IO_PROTOCOL instance.
+ @param Direction Direction and number of data blocks or filemarks to space over on media.
+ @param Type Type of mark to space over on media.
+ The following Type marks are mandatory:
+ BLOCK type : 0
+ FILEMARK type : 1
+
+ @retval EFI_SUCCESS The media was successfully repositioned.
+ @retval EFI_END_OF_MEDIA Beginning or end of media was reached before the
+ indicated number of data blocks or filemarks were found.
+ @retval EFI_NO_MEDIA No media is loaded in the device.
+ @retval EFI_NOT_READY The reposition failed since the device was not ready (e.g. not
+ online). The reposition may be retried at a later time.
+ @retval EFI_UNSUPPORTED The device does not support this type of repositioning.
+ @retval EFI_TIMEOUT The repositioning failed to complete within the timeout specified.
+ @retval EFI_MEDIA_CHANGED The media in the device was changed since the last access.
+ Repositioning the media was aborted since the current
+ position of the media may be incorrect.
+ @retval EFI_DEVICE_ERROR A device error occurred while attempting to reposition the media.
+
+**/
+typedef
+EFI_STATUS
+(EFIAPI *EFI_TAPE_SPACE)(
+ IN EFI_TAPE_IO_PROTOCOL *This,
+ IN INTN Direction,
+ IN UINTN Type
+ );
+
+
+/**
+ Writes filemarks to the media.
+
+ @param This A pointer to the EFI_TAPE_IO_PROTOCOL instance.
+ @param Count Number of filemarks to write to the media.
+
+ @retval EFI_SUCCESS Data was successfully transferred from the media.
+ @retval EFI_NO_MEDIA No media is loaded in the device.
+ @retval EFI_NOT_READY The transfer failed since the device was not ready (e.g. not
+ online). The transfer may be retried at a later time.
+ @retval EFI_UNSUPPORTED The device does not support this type of repositioning.
+ @retval EFI_TIMEOUT The transfer failed to complete within the timeout specified.
+ @retval EFI_MEDIA_CHANGED The media in the device was changed since the last access.
+ The transfer was aborted since the current position of the
+ media may be incorrect.
+ @retval EFI_DEVICE_ERROR A device error occurred while attempting to transfer data from the media.
+
+**/
+typedef
+EFI_STATUS
+(EFIAPI *EFI_TAPE_WRITEFM)(
+ IN EFI_TAPE_IO_PROTOCOL *This,
+ IN UINTN Count
+ );
+
+
+/**
+ Resets the tape device.
+
+ @param This A pointer to the EFI_TAPE_IO_PROTOCOL instance.
+ @param ExtendedVerification Indicates whether the parent bus should also be reset.
+
+ @retval EFI_SUCCESS The bus and/or device were successfully reset.
+ @retval EFI_NO_MEDIA No media is loaded in the device.
+ @retval EFI_NOT_READY The reset failed since the device and/or bus was not ready.
+ The reset may be retried at a later time.
+ @retval EFI_UNSUPPORTED The device does not support this type of reset.
+ @retval EFI_TIMEOUT The reset did not complete within the timeout allowed.
+ @retval EFI_DEVICE_ERROR A device error occurred while attempting to reset the bus and/or device.
+
+**/
+typedef
+EFI_STATUS
+(EFIAPI *EFI_TAPE_RESET)(
+ IN EFI_TAPE_IO_PROTOCOL *This,
+ IN BOOLEAN ExtendedVerification
+ );
+
+///
+/// The EFI_TAPE_IO_PROTOCOL provides basic sequential operations for tape devices.
+/// These include read, write, rewind, space, write filemarks and reset functions.
+/// Per this specification, a boot application uses the services of this protocol
+/// to load the bootloader image from tape.
+///
+struct _EFI_TAPE_IO_PROTOCOL {
+ EFI_TAPE_READ TapeRead;
+ EFI_TAPE_WRITE TapeWrite;
+ EFI_TAPE_REWIND TapeRewind;
+ EFI_TAPE_SPACE TapeSpace;
+ EFI_TAPE_WRITEFM TapeWriteFM;
+ EFI_TAPE_RESET TapeReset;
+};
+
+extern EFI_GUID gEfiTapeIoProtocolGuid;
+
+#endif