]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBus.h
MdeModulePkg/Bus/Ata: Fix various typos
[mirror_edk2.git] / MdeModulePkg / Bus / Ata / AtaBusDxe / AtaBus.h
index b64a3d39281efa1c2efe76a90a0886c60bd7dbdc..a5a8652099426fb7d0cd617a7a9728558213e279 100644 (file)
@@ -4,14 +4,8 @@
   This file defines common data structures, macro definitions and some module\r
   internal function header files.\r
 \r
-  Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.<BR>\r
-  This program and the accompanying materials\r
-  are licensed and made available under the terms and conditions of the BSD License\r
-  which accompanies this distribution.  The full text of the license may be found at\r
-  http://opensource.org/licenses/bsd-license.php\r
-\r
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+  Copyright (c) 2009 - 2015, Intel Corporation. All rights reserved.<BR>\r
+  SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
@@ -35,7 +29,9 @@
 #include <Library/MemoryAllocationLib.h>\r
 #include <Library/UefiBootServicesTableLib.h>\r
 #include <Library/DevicePathLib.h>\r
+#include <Library/UefiRuntimeServicesTableLib.h>\r
 #include <Library/TimerLib.h>\r
+#include <Library/ReportStatusCodeLib.h>\r
 \r
 #include <IndustryStandard/Atapi.h>\r
 \r
@@ -130,6 +126,7 @@ typedef struct {
 \r
   LIST_ENTRY                            AtaTaskList;\r
   LIST_ENTRY                            AtaSubTaskList;\r
+  BOOLEAN                               Abort;\r
 } ATA_DEVICE;\r
 \r
 //\r
@@ -163,8 +160,8 @@ typedef struct {
 #define ATA_DEVICE_FROM_BLOCK_IO2(a)        CR (a, ATA_DEVICE, BlockIo2, ATA_DEVICE_SIGNATURE)\r
 #define ATA_DEVICE_FROM_DISK_INFO(a)        CR (a, ATA_DEVICE, DiskInfo, ATA_DEVICE_SIGNATURE)\r
 #define ATA_DEVICE_FROM_STORAGE_SECURITY(a) CR (a, ATA_DEVICE, StorageSecurity, ATA_DEVICE_SIGNATURE)\r
-#define ATA_AYNS_SUB_TASK_FROM_ENTRY(a)     CR (a, ATA_BUS_ASYN_SUB_TASK, TaskEntry, ATA_SUB_TASK_SIGNATURE)\r
-#define ATA_AYNS_TASK_FROM_ENTRY(a)         CR (a, ATA_BUS_ASYN_TASK, TaskEntry, ATA_TASK_SIGNATURE)\r
+#define ATA_ASYN_SUB_TASK_FROM_ENTRY(a)     CR (a, ATA_BUS_ASYN_SUB_TASK, TaskEntry, ATA_SUB_TASK_SIGNATURE)\r
+#define ATA_ASYN_TASK_FROM_ENTRY(a)         CR (a, ATA_BUS_ASYN_TASK, TaskEntry, ATA_TASK_SIGNATURE)\r
 \r
 //\r
 // Global Variables\r
@@ -283,6 +280,7 @@ AccessAtaDevice(
   IN BOOLEAN                        IsWrite,\r
   IN OUT EFI_BLOCK_IO2_TOKEN        *Token\r
   );\r
+\r
 /**\r
   Trust transfer data from/to ATA device.\r
 \r
@@ -410,7 +408,7 @@ AtaBusDriverBindingSupported (
   @retval EFI_SUCCESS              The device was started.\r
   @retval EFI_DEVICE_ERROR         The device could not be started due to a device error.Currently not implemented.\r
   @retval EFI_OUT_OF_RESOURCES     The request could not be completed due to a lack of resources.\r
-  @retval Others                   The driver failded to start the device.\r
+  @retval Others                   The driver failed to start the device.\r
 \r
 **/\r
 EFI_STATUS\r
@@ -616,7 +614,7 @@ AtaBlockIoReset (
   @retval EFI_SUCCESS           The data was read correctly from the device.\r
   @retval EFI_DEVICE_ERROR      The device reported an error while performing the read.\r
   @retval EFI_NO_MEDIA          There is no media in the device.\r
-  @retval EFI_MEDIA_CHANGED     The MediaId does not matched the current device.\r
+  @retval EFI_MEDIA_CHANGED     The MediaId does not match the current device.\r
   @retval EFI_BAD_BUFFER_SIZE   The Buffer was not a multiple of the block size of the device.\r
   @retval EFI_INVALID_PARAMETER The read request contains LBAs that are not valid,\r
                                 or the buffer is not on proper alignment.\r
@@ -647,7 +645,7 @@ AtaBlockIoReadBlocks (
   @retval EFI_WRITE_PROTECTED   The device can not be written to.\r
   @retval EFI_DEVICE_ERROR      The device reported an error while performing the write.\r
   @retval EFI_NO_MEDIA          There is no media in the device.\r
-  @retval EFI_MEDIA_CHNAGED     The MediaId does not matched the current device.\r
+  @retval EFI_MEDIA_CHANGED     The MediaId does not match the current device.\r
   @retval EFI_BAD_BUFFER_SIZE   The Buffer was not a multiple of the block size of the device.\r
   @retval EFI_INVALID_PARAMETER The write request contains LBAs that are not valid,\r
                                 or the buffer is not on proper alignment.\r
@@ -681,7 +679,7 @@ AtaBlockIoFlushBlocks (
   );\r
 \r
 /**\r
-  Reset the Block Device throught Block I/O2 protocol.\r
+  Reset the Block Device through Block I/O2 protocol.\r
 \r
   @param[in]  This                 Indicates a pointer to the calling context.\r
   @param[in]  ExtendedVerification Driver may perform diagnostics on reset.\r
@@ -751,7 +749,7 @@ AtaBlockIoReadBlocksEx (
   @retval EFI_WRITE_PROTECTED   The device can not be written to.\r
   @retval EFI_DEVICE_ERROR      The device reported an error while performing the write.\r
   @retval EFI_NO_MEDIA          There is no media in the device.\r
-  @retval EFI_MEDIA_CHNAGED     The MediaId does not matched the current device.\r
+  @retval EFI_MEDIA_CHANGED     The MediaId does not match the current device.\r
   @retval EFI_BAD_BUFFER_SIZE   The Buffer was not a multiple of the block size of the device.\r
   @retval EFI_INVALID_PARAMETER The write request contains LBAs that are not valid,\r
                                 or the buffer is not on proper alignment.\r
@@ -786,6 +784,22 @@ AtaBlockIoFlushBlocksEx (
   IN OUT EFI_BLOCK_IO2_TOKEN  *Token\r
   );\r
 \r
+/**\r
+  Terminate any in-flight non-blocking I/O requests by signaling an EFI_ABORTED\r
+  in the TransactionStatus member of the EFI_BLOCK_IO2_TOKEN for the non-blocking\r
+  I/O. After that it is safe to free any Token or Buffer data structures that\r
+  were allocated to initiate the non-blockingI/O requests that were in-flight for\r
+  this device.\r
+\r
+  @param[in]  AtaDevice     The ATA child device involved for the operation.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+AtaTerminateNonBlockingTask (\r
+  IN ATA_DEVICE               *AtaDevice\r
+  );\r
+\r
 /**\r
   Provides inquiry information for the controller type.\r
 \r
@@ -922,20 +936,20 @@ AtaDiskInfoWhichIde (
   return EFI_SUCCESS. If the security protocol command completes with an error, the\r
   function shall return EFI_DEVICE_ERROR.\r
 \r
-  @param  This                              Indicates a pointer to the calling context.\r
-  @param  MediaId                           ID of the medium to receive data from.\r
-  @param  Timeout                                 The timeout, in 100ns units, to use for the execution\r
+  @param  This                         Indicates a pointer to the calling context.\r
+  @param  MediaId                      ID of the medium to receive data from.\r
+  @param  Timeout                      The timeout, in 100ns units, to use for the execution\r
                                        of the security protocol command. A Timeout value of 0\r
                                        means that this function will wait indefinitely for the\r
                                        security protocol command to execute. If Timeout is greater\r
                                        than zero, then this function will return EFI_TIMEOUT\r
-                                                              if the time required to execute the receive data command\r
-                                                              is greater than Timeout.\r
+                                       if the time required to execute the receive data command\r
+                                       is greater than Timeout.\r
   @param  SecurityProtocolId           The value of the "Security Protocol" parameter of\r
                                        the security protocol command to be sent.\r
   @param  SecurityProtocolSpecificData The value of the "Security Protocol Specific" parameter\r
                                        of the security protocol command to be sent.\r
-  @param  PayloadBufferSize                     Size in bytes of the payload data buffer.\r
+  @param  PayloadBufferSize            Size in bytes of the payload data buffer.\r
   @param  PayloadBuffer                A pointer to a destination buffer to store the security\r
                                        protocol command specific payload data for the security\r
                                        protocol command. The caller is responsible for having\r
@@ -1002,20 +1016,20 @@ AtaStorageSecurityReceiveData (
   EFI_SUCCESS. If the security protocol command completes with an error, the function\r
   shall return EFI_DEVICE_ERROR.\r
 \r
-  @param  This                              Indicates a pointer to the calling context.\r
-  @param  MediaId                           ID of the medium to receive data from.\r
-  @param  Timeout                                 The timeout, in 100ns units, to use for the execution\r
+  @param  This                         Indicates a pointer to the calling context.\r
+  @param  MediaId                      ID of the medium to receive data from.\r
+  @param  Timeout                      The timeout, in 100ns units, to use for the execution\r
                                        of the security protocol command. A Timeout value of 0\r
                                        means that this function will wait indefinitely for the\r
                                        security protocol command to execute. If Timeout is greater\r
                                        than zero, then this function will return EFI_TIMEOUT\r
-                                                              if the time required to execute the receive data command\r
-                                                              is greater than Timeout.\r
+                                       if the time required to execute the receive data command\r
+                                       is greater than Timeout.\r
   @param  SecurityProtocolId           The value of the "Security Protocol" parameter of\r
                                        the security protocol command to be sent.\r
   @param  SecurityProtocolSpecificData The value of the "Security Protocol Specific" parameter\r
                                        of the security protocol command to be sent.\r
-  @param  PayloadBufferSize                     Size in bytes of the payload data buffer.\r
+  @param  PayloadBufferSize            Size in bytes of the payload data buffer.\r
   @param  PayloadBuffer                A pointer to a destination buffer to store the security\r
                                        protocol command specific payload data for the security\r
                                        protocol command.\r
@@ -1042,4 +1056,20 @@ AtaStorageSecuritySendData (
   IN VOID                                     *PayloadBuffer\r
   );\r
 \r
+/**\r
+  Send TPer Reset command to reset eDrive to lock all protected bands.\r
+  Typically, there are 2 mechanism for resetting eDrive. They are:\r
+  1. TPer Reset through IEEE 1667 protocol.\r
+  2. TPer Reset through native TCG protocol.\r
+  This routine will detect what protocol the attached eDrive conform to, TCG or\r
+  IEEE 1667 protocol. Then send out TPer Reset command separately.\r
+\r
+  @param[in] AtaDevice    ATA_DEVICE pointer.\r
+\r
+**/\r
+VOID\r
+InitiateTPerReset (\r
+  IN   ATA_DEVICE       *AtaDevice\r
+  );\r
+\r
 #endif\r