1*22ce4affSfengbojiang /** @file
2*22ce4affSfengbojiang   EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL as defined in UEFI 2.0.
3*22ce4affSfengbojiang   This protocol provides service to convert text to device paths and device nodes.
4*22ce4affSfengbojiang 
5*22ce4affSfengbojiang   Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
6*22ce4affSfengbojiang   SPDX-License-Identifier: BSD-2-Clause-Patent
7*22ce4affSfengbojiang 
8*22ce4affSfengbojiang **/
9*22ce4affSfengbojiang 
10*22ce4affSfengbojiang #ifndef __DEVICE_PATH_FROM_TEXT_PROTOCOL_H__
11*22ce4affSfengbojiang #define __DEVICE_PATH_FROM_TEXT_PROTOCOL_H__
12*22ce4affSfengbojiang 
13*22ce4affSfengbojiang ///
14*22ce4affSfengbojiang /// Device Path From Text protocol
15*22ce4affSfengbojiang ///
16*22ce4affSfengbojiang #define EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL_GUID \
17*22ce4affSfengbojiang   { \
18*22ce4affSfengbojiang     0x5c99a21, 0xc70f, 0x4ad2, {0x8a, 0x5f, 0x35, 0xdf, 0x33, 0x43, 0xf5, 0x1e  } \
19*22ce4affSfengbojiang   }
20*22ce4affSfengbojiang 
21*22ce4affSfengbojiang /**
22*22ce4affSfengbojiang   Convert text to the binary representation of a device node.
23*22ce4affSfengbojiang 
24*22ce4affSfengbojiang   @param  TextDeviceNode TextDeviceNode points to the text representation of a device
25*22ce4affSfengbojiang                          node. Conversion starts with the first character and continues
26*22ce4affSfengbojiang                          until the first non-device node character.
27*22ce4affSfengbojiang 
28*22ce4affSfengbojiang   @retval a_pointer      Pointer to the EFI device node.
29*22ce4affSfengbojiang   @retval NULL           if TextDeviceNode is NULL or there was insufficient memory.
30*22ce4affSfengbojiang 
31*22ce4affSfengbojiang **/
32*22ce4affSfengbojiang typedef
33*22ce4affSfengbojiang EFI_DEVICE_PATH_PROTOCOL*
34*22ce4affSfengbojiang (EFIAPI *EFI_DEVICE_PATH_FROM_TEXT_NODE)(
35*22ce4affSfengbojiang   IN CONST CHAR16                 *TextDeviceNode
36*22ce4affSfengbojiang   );
37*22ce4affSfengbojiang 
38*22ce4affSfengbojiang 
39*22ce4affSfengbojiang /**
40*22ce4affSfengbojiang   Convert text to the binary representation of a device node.
41*22ce4affSfengbojiang 
42*22ce4affSfengbojiang   @param  TextDeviceNode TextDevicePath points to the text representation of a device
43*22ce4affSfengbojiang                          path. Conversion starts with the first character and continues
44*22ce4affSfengbojiang                          until the first non-device path character.
45*22ce4affSfengbojiang 
46*22ce4affSfengbojiang   @retval a_pointer      Pointer to the allocated device path.
47*22ce4affSfengbojiang   @retval NULL           if TextDeviceNode is NULL or there was insufficient memory.
48*22ce4affSfengbojiang 
49*22ce4affSfengbojiang **/
50*22ce4affSfengbojiang typedef
51*22ce4affSfengbojiang EFI_DEVICE_PATH_PROTOCOL*
52*22ce4affSfengbojiang (EFIAPI *EFI_DEVICE_PATH_FROM_TEXT_PATH)(
53*22ce4affSfengbojiang   IN CONST CHAR16                 *TextDevicePath
54*22ce4affSfengbojiang   );
55*22ce4affSfengbojiang 
56*22ce4affSfengbojiang ///
57*22ce4affSfengbojiang /// This protocol converts text to device paths and device nodes.
58*22ce4affSfengbojiang ///
59*22ce4affSfengbojiang typedef struct {
60*22ce4affSfengbojiang   EFI_DEVICE_PATH_FROM_TEXT_NODE  ConvertTextToDeviceNode;
61*22ce4affSfengbojiang   EFI_DEVICE_PATH_FROM_TEXT_PATH  ConvertTextToDevicePath;
62*22ce4affSfengbojiang } EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL;
63*22ce4affSfengbojiang 
64*22ce4affSfengbojiang extern EFI_GUID gEfiDevicePathFromTextProtocolGuid;
65*22ce4affSfengbojiang 
66*22ce4affSfengbojiang #endif
67