for Security Protocol Specific layout. This implementation uses big endian for\r
Cylinder register.\r
\r
- Copyright (c) 2009 - 2013, 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 - 2018, Intel Corporation. All rights reserved.<BR>\r
+ (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>\r
+ SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
\r
**/\r
//\r
Acb = ZeroMem (&AtaDevice->Acb, sizeof (EFI_ATA_COMMAND_BLOCK));\r
Acb->AtaCommand = ATA_CMD_IDENTIFY_DRIVE;\r
- Acb->AtaDeviceHead = (UINT8) (BIT7 | BIT6 | BIT5 | (AtaDevice->PortMultiplierPort << 4));\r
+ Acb->AtaDeviceHead = (UINT8) (BIT7 | BIT6 | BIT5 | (AtaDevice->PortMultiplierPort == 0xFFFF ? 0 : (AtaDevice->PortMultiplierPort << 4)));\r
\r
//\r
// Prepare for ATA pass through packet.\r
Acb->AtaSectorNumber = (UINT8) StartLba;\r
Acb->AtaCylinderLow = (UINT8) RShiftU64 (StartLba, 8);\r
Acb->AtaCylinderHigh = (UINT8) RShiftU64 (StartLba, 16);\r
- Acb->AtaDeviceHead = (UINT8) (BIT7 | BIT6 | BIT5 | (AtaDevice->PortMultiplierPort << 4));\r
+ Acb->AtaDeviceHead = (UINT8) (BIT7 | BIT6 | BIT5 | (AtaDevice->PortMultiplierPort == 0xFFFF ? 0 : (AtaDevice->PortMultiplierPort << 4)));\r
Acb->AtaSectorCount = (UINT8) TransferLength;\r
if (AtaDevice->Lba48Bit) {\r
Acb->AtaSectorNumberExp = (UINT8) RShiftU64 (StartLba, 24);\r
\r
//\r
// Aborting operation has been done. From now on, don't need to abort normal operation.\r
- // \r
+ //\r
OldTpl = gBS->RaiseTPL (TPL_NOTIFY);\r
AtaDevice->Abort = FALSE;\r
gBS->RestoreTPL (OldTpl);\r
//\r
Acb->AtaCylinderHigh = (UINT8) SecurityProtocolSpecificData;\r
Acb->AtaCylinderLow = (UINT8) (SecurityProtocolSpecificData >> 8);\r
- Acb->AtaDeviceHead = (UINT8) (BIT7 | BIT6 | BIT5 | (AtaDevice->PortMultiplierPort << 4));\r
+ Acb->AtaDeviceHead = (UINT8) (BIT7 | BIT6 | BIT5 | (AtaDevice->PortMultiplierPort == 0xFFFF ? 0 : (AtaDevice->PortMultiplierPort << 4)));\r
\r
//\r
// Prepare for ATA pass through packet.\r