]> git.proxmox.com Git - mirror_edk2.git/commitdiff
MdePkg: Add UFS (Universal Flash Storage) related definitions
authorFeng Tian <feng.tian@intel.com>
Wed, 29 Apr 2015 02:37:30 +0000 (02:37 +0000)
committererictian <erictian@Edk2>
Wed, 29 Apr 2015 02:37:30 +0000 (02:37 +0000)
These definitions are defined in UEFI2.5/PI1.4 spec.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Feng Tian <feng.tian@intel.com>
Reviewed-by: Star Zeng <star.zeng@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17245 6f19259b-4bc3-4df7-8a09-765794883524

MdePkg/Include/Ppi/BlockIo.h
MdePkg/Include/Protocol/DevicePath.h
MdePkg/Include/Protocol/DiskInfo.h
MdePkg/Library/UefiDevicePathLib/DevicePathFromText.c
MdePkg/Library/UefiDevicePathLib/DevicePathToText.c
MdePkg/MdePkg.dec

index f2980f52c02405492fae68d83a96841bc786ee82..a69419e284708c802fb0f9b7180656573f59a143 100644 (file)
@@ -10,7 +10,7 @@
   Block I/O PPIs that are provided by the PEI ATAPI driver and PEI legacy floppy \r
   driver are the same, here we define a set of general PPIs for both drivers to use.\r
   \r
-Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2007 - 2015, Intel Corporation. All rights reserved.<BR>\r
 This program and the accompanying materials are licensed and made available under \r
 the terms and conditions of the BSD License that accompanies this distribution.  \r
 The full text of the license may be found at\r
@@ -54,6 +54,9 @@ typedef enum {
   IdeCDROM      = 1,   ///< The recovery device is an IDE CD-ROM\r
   IdeLS120      = 2,   ///< The recovery device is an IDE LS-120\r
   UsbMassStorage= 3,   ///< The recovery device is a USB Mass Storage device\r
+  SD            = 4,   ///< The recovery device is a Secure Digital device\r
+  EMMC          = 5,   ///< The recovery device is a eMMC device\r
+  UfsDevice     = 6,   ///< The recovery device is a Universal Flash Storage device\r
   MaxDeviceType\r
 } EFI_PEI_BLOCK_DEVICE_TYPE;\r
 \r
index a27ea5d420b79590d4d0f3cdf458ef579aaee80b..3c9b1ec6d3e6be3c25d34797739d0ee8ade9a2e5 100644 (file)
@@ -795,6 +795,22 @@ typedef struct {
   UINT64                          NamespaceUuid;\r
 } NVME_NAMESPACE_DEVICE_PATH;\r
 \r
+///\r
+/// Universal Flash Storage (UFS) Device Path SubType.\r
+///\r
+#define MSG_UFS_DP                0x19\r
+typedef struct {\r
+  EFI_DEVICE_PATH_PROTOCOL        Header;\r
+  ///\r
+  /// Target ID on the UFS bus (PUN).\r
+  ///\r
+  UINT8                           Pun;\r
+  ///\r
+  /// Logical Unit Number (LUN).\r
+  ///\r
+  UINT8                           Lun;\r
+} UFS_DEVICE_PATH;\r
+\r
 ///\r
 /// iSCSI Device Path SubType\r
 ///\r
@@ -1094,6 +1110,7 @@ typedef union {
   SAS_DEVICE_PATH                            Sas;\r
   SASEX_DEVICE_PATH                          SasEx;\r
   NVME_NAMESPACE_DEVICE_PATH                 NvmeNamespace;\r
+  UFS_DEVICE_PATH                            Ufs;\r
   HARDDRIVE_DEVICE_PATH                      HardDrive;\r
   CDROM_DEVICE_PATH                          CD;\r
 \r
@@ -1144,6 +1161,7 @@ typedef union {
   SAS_DEVICE_PATH                            *Sas;\r
   SASEX_DEVICE_PATH                          *SasEx;\r
   NVME_NAMESPACE_DEVICE_PATH                 *NvmeNamespace;\r
+  UFS_DEVICE_PATH                            *Ufs;\r
   HARDDRIVE_DEVICE_PATH                      *HardDrive;\r
   CDROM_DEVICE_PATH                          *CD;\r
 \r
index bce27e84da5cf49cd74ce9d657a7a3d3a4607df9..a094bc8251fe845f1a4b0635199edd27c4c4a6f9 100644 (file)
@@ -2,7 +2,7 @@
   Provides the basic interfaces to abstract platform information regarding an \r
   IDE controller.  \r
 \r
-  Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2006 - 2014, 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
@@ -73,6 +73,14 @@ typedef struct _EFI_DISK_INFO_PROTOCOL  EFI_DISK_INFO_PROTOCOL;
     0x3ab14680, 0x5d3f, 0x4a4d, {0xbc, 0xdc, 0xcc, 0x38, 0x0, 0x18, 0xc7, 0xf7 } \\r
   }\r
 \r
+///\r
+/// Global ID for a UFS interface.  Used to fill in EFI_DISK_INFO_PROTOCOL.Interface\r
+///\r
+#define EFI_DISK_INFO_UFS_INTERFACE_GUID \\r
+  { \\r
+    0x4b3029cc, 0x6b98, 0x47fb, { 0xbc, 0x96, 0x76, 0xdc, 0xb8, 0x4, 0x41, 0xf0 } \\r
+  }\r
+\r
 /**\r
   Provides inquiry information for the controller type.\r
   \r
@@ -205,5 +213,6 @@ extern EFI_GUID gEfiDiskInfoScsiInterfaceGuid;
 extern EFI_GUID gEfiDiskInfoUsbInterfaceGuid;\r
 extern EFI_GUID gEfiDiskInfoAhciInterfaceGuid;\r
 extern EFI_GUID gEfiDiskInfoNvmeInterfaceGuid;\r
+extern EFI_GUID gEfiDiskInfoUfsInterfaceGuid;\r
 \r
 #endif\r
index 6ec0a4c0bdbc2956387a135924bc0befdb9f379b..f688c1af7494ef3c5f61d6ae8526698269452795 100644 (file)
@@ -1809,6 +1809,37 @@ DevPathFromTextNVMe (
   return (EFI_DEVICE_PATH_PROTOCOL *) Nvme;\r
 }\r
 \r
+/**\r
+  Converts a text device path node to UFS device path structure.\r
+\r
+  @param TextDeviceNode  The input Text device path node.\r
+\r
+  @return A pointer to the newly-created UFS device path structure.\r
+\r
+**/\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextUfs (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  CHAR16            *PunStr;\r
+  CHAR16            *LunStr;\r
+  UFS_DEVICE_PATH   *Ufs;\r
+\r
+  PunStr = GetNextParamStr (&TextDeviceNode);\r
+  LunStr = GetNextParamStr (&TextDeviceNode);\r
+  Ufs    = (UFS_DEVICE_PATH *) CreateDeviceNode (\r
+                                 MESSAGING_DEVICE_PATH,\r
+                                 MSG_UFS_DP,\r
+                                 (UINT16) sizeof (UFS_DEVICE_PATH)\r
+                                 );\r
+\r
+  Ufs->Pun = (UINT8) Strtoi (PunStr);\r
+  Ufs->Lun = (UINT8) Strtoi (LunStr);\r
+\r
+  return (EFI_DEVICE_PATH_PROTOCOL *) Ufs;\r
+}\r
+\r
 /**\r
   Converts a text device path node to Debug Port device path structure.\r
 \r
@@ -3079,6 +3110,7 @@ GLOBAL_REMOVE_IF_UNREFERENCED DEVICE_PATH_FROM_TEXT_TABLE mUefiDevicePathLibDevP
   {L"SAS",                     DevPathFromTextSAS                     },\r
   {L"SasEx",                   DevPathFromTextSasEx                   },\r
   {L"NVMe",                    DevPathFromTextNVMe                    },\r
+  {L"UFS",                     DevPathFromTextUfs                     },\r
   {L"DebugPort",               DevPathFromTextDebugPort               },\r
   {L"MAC",                     DevPathFromTextMAC                     },\r
   {L"IPv4",                    DevPathFromTextIPv4                    },\r
index 030001905b0464173e0ebd05257dd0ff3cffaf7d..2dbbddaf097088379a6bde0e893ba8fe775ecf33 100644 (file)
@@ -731,6 +731,33 @@ DevPathToTextNVMe (
     );\r
 }\r
 \r
+/**\r
+  Converts a UFS device path structure to its string representative.\r
+\r
+  @param Str             The string representative of input device.\r
+  @param DevPath         The input device path structure.\r
+  @param DisplayOnly     If DisplayOnly is TRUE, then the shorter text representation\r
+                         of the display node is used, where applicable. If DisplayOnly\r
+                         is FALSE, then the longer text representation of the display node\r
+                         is used.\r
+  @param AllowShortcuts  If AllowShortcuts is TRUE, then the shortcut forms of text\r
+                         representation for a device node can be used, where applicable.\r
+\r
+**/\r
+VOID\r
+DevPathToTextUfs (\r
+  IN OUT POOL_PRINT  *Str,\r
+  IN VOID            *DevPath,\r
+  IN BOOLEAN         DisplayOnly,\r
+  IN BOOLEAN         AllowShortcuts\r
+  )\r
+{\r
+  UFS_DEVICE_PATH  *Ufs;\r
+\r
+  Ufs = DevPath;\r
+  UefiDevicePathLibCatPrint (Str, L"UFS(0x%x,0x%x)", Ufs->Pun, Ufs->Lun);\r
+}\r
+\r
 /**\r
   Converts a 1394 device path structure to its string representative.\r
 \r
@@ -1869,6 +1896,7 @@ GLOBAL_REMOVE_IF_UNREFERENCED const DEVICE_PATH_TO_TEXT_TABLE mUefiDevicePathLib
   {MESSAGING_DEVICE_PATH, MSG_FIBRECHANNELEX_DP,            DevPathToTextFibreEx        },\r
   {MESSAGING_DEVICE_PATH, MSG_SASEX_DP,                     DevPathToTextSasEx          },\r
   {MESSAGING_DEVICE_PATH, MSG_NVME_NAMESPACE_DP,            DevPathToTextNVMe           },\r
+  {MESSAGING_DEVICE_PATH, MSG_UFS_DP,                       DevPathToTextUfs            },\r
   {MESSAGING_DEVICE_PATH, MSG_1394_DP,                      DevPathToText1394           },\r
   {MESSAGING_DEVICE_PATH, MSG_USB_DP,                       DevPathToTextUsb            },\r
   {MESSAGING_DEVICE_PATH, MSG_USB_WWID_DP,                  DevPathToTextUsbWWID        },\r
index 04c285b6109b51441504d263bbda7b2da1c3fd45..644f2ba9782803f4ecbf7ca9f7847049e13f839e 100644 (file)
   ## Include/Guid/GraphicsInfoHob.h\r
   gEfiGraphicsInfoHobGuid           = { 0x39f62cce, 0x6825, 0x4669, { 0xbb, 0x56, 0x54, 0x1a, 0xba, 0x75, 0x3a, 0x07 }}\r
 \r
+  ## Guid for EFI_DISK_INFO_PROTOCOL.Interface to specify UFS interface.\r
+  ## Include/Protocol/DiskInfo.h\r
+  gEfiDiskInfoUfsInterfaceGuid   = { 0x4b3029cc, 0x6b98, 0x47fb, { 0xbc, 0x96, 0x76, 0xdc, 0xb8, 0x4, 0x41, 0xf0 }}\r
+\r
 [Guids.IA32, Guids.X64]\r
   ## Include/Guid/Cper.h\r
   gEfiIa32X64ErrorTypeCacheCheckGuid = { 0xA55701F5, 0xE3EF, 0x43de, { 0xAC, 0x72, 0x24, 0x9B, 0x57, 0x3F, 0xAD, 0x2C }}\r