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