X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=MdeModulePkg%2FBus%2FScsi%2FScsiDiskDxe%2FScsiDisk.c;h=0928605dc4c49f87b4b055028449b8566f023506;hb=52199bf5326a8355d28b2d395db483f7c77d5a4d;hp=98e84b4ea8aae04ff02f004cc08155975c83aa2b;hpb=d98efb468211ab508710eac91761238e1f5c1d51;p=mirror_edk2.git
diff --git a/MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDisk.c b/MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDisk.c
index 98e84b4ea8..0928605dc4 100644
--- a/MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDisk.c
+++ b/MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDisk.c
@@ -2,6 +2,7 @@
SCSI disk driver that layers on every SCSI IO protocol in the system.
Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.
+Copyright (c) 1985 - 2022, American Megatrends International LLC.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
@@ -67,6 +68,33 @@ FreeAlignedBuffer (
}
}
+/**
+ Remove trailing spaces from the string.
+
+ @param String The ASCII string to remove the trailing spaces.
+
+ @retval the new length of the string.
+**/
+UINTN
+RemoveTrailingSpaces (
+ IN OUT CHAR8 *String
+ )
+{
+ UINTN Length;
+
+ Length = AsciiStrLen (String);
+ if (Length == 0) {
+ return 0;
+ }
+
+ while ((Length > 0) && (String[Length-1] == ' ')) {
+ Length--;
+ }
+
+ String[Length] = '\0';
+ return Length;
+}
+
/**
The user Entry Point for module ScsiDisk.
@@ -203,6 +231,9 @@ ScsiDiskDriverBindingStart (
UINT8 MaxRetry;
BOOLEAN NeedRetry;
BOOLEAN MustReadCapacity;
+ CHAR8 VendorStr[VENDOR_IDENTIFICATION_LENGTH + 1];
+ CHAR8 ProductStr[PRODUCT_IDENTIFICATION_LENGTH + 1];
+ CHAR16 DeviceStr[VENDOR_IDENTIFICATION_LENGTH + PRODUCT_IDENTIFICATION_LENGTH + 2];
MustReadCapacity = TRUE;
@@ -354,19 +385,37 @@ ScsiDiskDriverBindingStart (
}
}
+ CopyMem (
+ VendorStr,
+ &ScsiDiskDevice->InquiryData.Reserved_5_95[VENDOR_IDENTIFICATION_OFFSET],
+ VENDOR_IDENTIFICATION_LENGTH
+ );
+ VendorStr[VENDOR_IDENTIFICATION_LENGTH] = 0;
+ RemoveTrailingSpaces (VendorStr);
+
+ CopyMem (
+ ProductStr,
+ &ScsiDiskDevice->InquiryData.Reserved_5_95[PRODUCT_IDENTIFICATION_OFFSET],
+ PRODUCT_IDENTIFICATION_LENGTH
+ );
+ ProductStr[PRODUCT_IDENTIFICATION_LENGTH] = 0;
+ RemoveTrailingSpaces (ProductStr);
+
+ UnicodeSPrint (DeviceStr, sizeof (DeviceStr), L"%a %a", VendorStr, ProductStr);
+
ScsiDiskDevice->ControllerNameTable = NULL;
AddUnicodeString2 (
"eng",
gScsiDiskComponentName.SupportedLanguages,
&ScsiDiskDevice->ControllerNameTable,
- L"SCSI Disk Device",
+ DeviceStr,
TRUE
);
AddUnicodeString2 (
"en",
gScsiDiskComponentName2.SupportedLanguages,
&ScsiDiskDevice->ControllerNameTable,
- L"SCSI Disk Device",
+ DeviceStr,
FALSE
);
return EFI_SUCCESS;