summaryrefslogtreecommitdiff
path: root/EdkModulePkg/Universal/DevicePath/Dxe/DevicePath.c
diff options
context:
space:
mode:
Diffstat (limited to 'EdkModulePkg/Universal/DevicePath/Dxe/DevicePath.c')
-rw-r--r--EdkModulePkg/Universal/DevicePath/Dxe/DevicePath.c107
1 files changed, 107 insertions, 0 deletions
diff --git a/EdkModulePkg/Universal/DevicePath/Dxe/DevicePath.c b/EdkModulePkg/Universal/DevicePath/Dxe/DevicePath.c
new file mode 100644
index 0000000000..79741a4615
--- /dev/null
+++ b/EdkModulePkg/Universal/DevicePath/Dxe/DevicePath.c
@@ -0,0 +1,107 @@
+/*++
+
+Copyright (c) 2006, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ DevicePathDriver.c
+
+Abstract:
+
+ Device Path Driver to produce DevPathUtilities Protocol, DevPathFromText Protocol
+ and DevPathToText Protocol.
+
+--*/
+
+#include <Uefi/UefiSpec.h>
+#include <Protocol/DevicePath.h>
+#include "DevicePath.h"
+
+DEVICE_PATH_DRIVER_PRIVATE_DATA mPrivateData;
+
+EFI_GUID mEfiDevicePathMessagingUartFlowControlGuid = DEVICE_PATH_MESSAGING_UART_FLOW_CONTROL;
+EFI_GUID mEfiDevicePathMessagingSASGuid = DEVICE_PATH_MESSAGING_SAS;
+
+STATIC EFI_DEVICE_PATH_UTILITIES_PROTOCOL mDevicePathUtilitiesProtocol = {
+ GetDevicePathSize,
+ DuplicateDevicePath,
+ AppendDevicePath,
+ AppendDeviceNode,
+ AppendDevicePathInstance,
+ GetNextDevicePathInstance,
+ IsDevicePathMultiInstance,
+ CreateDeviceNode
+};
+
+STATIC EFI_DEVICE_PATH_TO_TEXT_PROTOCOL mDevicePathToTextProtocol = {
+ ConvertDeviceNodeToText,
+ ConvertDevicePathToText
+};
+
+STATIC EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL mDevicePathFromTextProtocol = {
+ ConvertTextToDeviceNode,
+ ConvertTextToDevicePath
+};
+
+EFI_STATUS
+EFIAPI
+DevicePathEntryPoint (
+ IN EFI_HANDLE ImageHandle,
+ IN EFI_SYSTEM_TABLE *SystemTable
+ )
+/*++
+
+ Routine Description:
+ Entry point for EFI drivers.
+
+ Arguments:
+ ImageHandle - EFI_HANDLE
+ SystemTable - EFI_SYSTEM_TABLE
+
+ Returns:
+ EFI_SUCCESS
+ others
+
+--*/
+{
+ EFI_STATUS Status;
+
+ mPrivateData.Signature = DEVICE_PATH_DRIVER_SIGNATURE;
+
+ mPrivateData.DevicePathUtilities.GetDevicePathSize = GetDevicePathSize;
+ mPrivateData.DevicePathUtilities.DuplicateDevicePath = DuplicateDevicePath;
+ mPrivateData.DevicePathUtilities.AppendDevicePath = AppendDevicePath;
+ mPrivateData.DevicePathUtilities.AppendDeviceNode = AppendDeviceNode;
+ mPrivateData.DevicePathUtilities.AppendDevicePathInstance = AppendDevicePathInstance;
+ mPrivateData.DevicePathUtilities.GetNextDevicePathInstance = GetNextDevicePathInstance;
+ mPrivateData.DevicePathUtilities.IsDevicePathMultiInstance = IsDevicePathMultiInstance;
+ mPrivateData.DevicePathUtilities.CreateDeviceNode = CreateDeviceNode;
+
+ mPrivateData.DevicePathToText.ConvertDeviceNodeToText = ConvertDeviceNodeToText;
+ mPrivateData.DevicePathToText.ConvertDevicePathToText = ConvertDevicePathToText;
+
+ mPrivateData.DevicePathFromText.ConvertTextToDeviceNode = ConvertTextToDeviceNode;
+ mPrivateData.DevicePathFromText.ConvertTextToDevicePath = ConvertTextToDevicePath;
+
+ mPrivateData.Handle = NULL;
+
+ Status = gBS->InstallMultipleProtocolInterfaces (
+ &mPrivateData.Handle,
+ &gEfiDevicePathUtilitiesProtocolGuid,
+ &mPrivateData.DevicePathUtilities,
+ &gEfiDevicePathToTextProtocolGuid,
+ &mPrivateData.DevicePathToText,
+ &gEfiDevicePathFromTextProtocolGuid,
+ &mPrivateData.DevicePathFromText,
+ NULL
+ );
+
+ return Status;
+}