return (EFI_DEVICE_PATH_PROTOCOL *) SasEx;\r
}\r
\r
+/**\r
+ Converts a text device path node to NVM Express Namespace device path structure.\r
+\r
+ @param TextDeviceNode The input Text device path node.\r
+\r
+ @return A pointer to the newly-created NVM Express Namespace device path structure.\r
+\r
+**/\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextNVMe (\r
+ IN CHAR16 *TextDeviceNode\r
+ )\r
+{\r
+ CHAR16 *NamespaceIdStr;\r
+ CHAR16 *NamespaceUuidStr;\r
+ NVME_NAMESPACE_DEVICE_PATH *Nvme;\r
+ UINT8 *Uuid;\r
+ UINTN Index;\r
+\r
+ NamespaceIdStr = GetNextParamStr (&TextDeviceNode);\r
+ NamespaceUuidStr = GetNextParamStr (&TextDeviceNode);\r
+ Nvme = (NVME_NAMESPACE_DEVICE_PATH *) CreateDeviceNode (\r
+ MESSAGING_DEVICE_PATH,\r
+ MSG_NVME_NAMESPACE_DP,\r
+ (UINT16) sizeof (NVME_NAMESPACE_DEVICE_PATH)\r
+ );\r
+\r
+ Nvme->NamespaceId = (UINT32) Strtoi (NamespaceIdStr);\r
+ Uuid = (UINT8 *) &Nvme->NamespaceUuid;\r
+\r
+ Index = sizeof (Nvme->NamespaceUuid) / sizeof (UINT8);\r
+ while (Index-- != 0) {\r
+ Uuid[Index] = (UINT8) StrHexToUintn (SplitStr (&NamespaceUuidStr, L'-'));\r
+ }\r
+\r
+ return (EFI_DEVICE_PATH_PROTOCOL *) Nvme;\r
+}\r
+\r
/**\r
Converts a text device path node to Debug Port device path structure.\r
\r
{L"UartFlowCtrl", DevPathFromTextUartFlowCtrl },\r
{L"SAS", DevPathFromTextSAS },\r
{L"SasEx", DevPathFromTextSasEx },\r
+ {L"NVMe", DevPathFromTextNVMe },\r
{L"DebugPort", DevPathFromTextDebugPort },\r
{L"MAC", DevPathFromTextMAC },\r
{L"IPv4", DevPathFromTextIPv4 },\r