The UEFI2.5 Errata (Mantis ticket 1472 -
https://mantis.uefi.org/mantis/view.php?id=1472) updated
'PortMultiplierPort' parameter description for the following services in
EFI_ATA_PASS_THRU_PROTOCOL:

1. PassThru
2. BuildDevicePath
3. ResetDevice

Now, if there is no port multiplier on a ATA controller port, the
PortMultiplierPort parameter should be set to 0xFFFF instead of 0.

Please note that this is an incompatible semantic change. The consumer of
EFI_ATA_PASS_THRU_PROTOCOL needs to re-examine its usage to follow UEFI
2.5 Errata mantis 1472.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Hao Wu <[email protected]>
---
 MdePkg/Include/Protocol/AtaPassThru.h | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/MdePkg/Include/Protocol/AtaPassThru.h 
b/MdePkg/Include/Protocol/AtaPassThru.h
index 6153b70..c054554 100644
--- a/MdePkg/Include/Protocol/AtaPassThru.h
+++ b/MdePkg/Include/Protocol/AtaPassThru.h
@@ -3,7 +3,7 @@
   to send ATA Command Blocks to any ATA device attached to that ATA 
controller. The information
   includes the attributes of the ATA controller.
 
-  Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR>
+  Copyright (c) 2009 - 2016, 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         
   which accompanies this distribution.  The full text of the license may be 
found at        
@@ -180,7 +180,7 @@ typedef struct {
   @param[in]     This                A pointer to the 
EFI_ATA_PASS_THRU_PROTOCOL instance. 
   @param[in]     Port                The port number of the ATA device to send 
the command. 
   @param[in]     PortMultiplierPort  The port multiplier port number of the 
ATA device to send the command.
-                                     If there is no port multiplier, then 
specify 0.
+                                     If there is no port multiplier, then 
specify 0xFFFF.
   @param[in,out] Packet              A pointer to the ATA command to send to 
the ATA device specified by Port
                                      and PortMultiplierPort.
   @param[in]     Event               If non-blocking I/O is not supported then 
Event is ignored, and blocking
@@ -317,7 +317,7 @@ EFI_STATUS
                                      device path node is to be allocated and 
built.
   @param[in]     PortMultiplierPort  The port multiplier port number of the 
ATA device for which a
                                      device path node is to be allocated and 
built. If there is no
-                                     port multiplier, then specify 0.
+                                     port multiplier, then specify 0xFFFF.
   @param[in,out] DevicePath          A pointer to a single device path node 
that describes the ATA
                                      device specified by Port and 
PortMultiplierPort. This function
                                      is responsible for allocating the buffer 
DevicePath with the
@@ -437,7 +437,7 @@ EFI_STATUS
   @param[in] This                A pointer to the EFI_ATA_PASS_THRU_PROTOCOL 
instance.
   @param[in] Port                Port represents the port number of the ATA 
device to be reset.
   @param[in] PortMultiplierPort  The port multiplier port number of the ATA 
device to reset.
-                                 If there is no port multiplier, then specify 
0.
+                                 If there is no port multiplier, then specify 
0xFFFF.
   @retval EFI_SUCCESS            The ATA device specified by Port and 
PortMultiplierPort was reset.
   @retval EFI_UNSUPPORTED        The ATA controller does not support a device 
reset operation.
   @retval EFI_INVALID_PARAMETER  Port or PortMultiplierPort are invalid.
-- 
1.9.5.msysgit.0

_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to