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
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
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
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
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
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
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
extern EFI_GUID gEfiDiskInfoUsbInterfaceGuid;\r
extern EFI_GUID gEfiDiskInfoAhciInterfaceGuid;\r
extern EFI_GUID gEfiDiskInfoNvmeInterfaceGuid;\r
+extern EFI_GUID gEfiDiskInfoUfsInterfaceGuid;\r
\r
#endif\r
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
{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
);\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
{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
## 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