efi_loader: selftest: enable APPEND_WRITE tests
[oweals/u-boot.git] / lib / efi_loader / efi_hii_config.c
1 // SPDX-License-Identifier:     GPL-2.0+
2 /*
3  *  EFI Human Interface Infrastructure ... Configuration
4  *
5  *  Copyright (c) 2017 Leif Lindholm
6  *  Copyright (c) 2018 AKASHI Takahiro, Linaro Limited
7  */
8
9 #include <common.h>
10 #include <efi_loader.h>
11
12 const efi_guid_t efi_guid_hii_config_routing_protocol
13                 = EFI_HII_CONFIG_ROUTING_PROTOCOL_GUID;
14 const efi_guid_t efi_guid_hii_config_access_protocol
15                 = EFI_HII_CONFIG_ACCESS_PROTOCOL_GUID;
16
17 /*
18  * EFI_HII_CONFIG_ROUTING_PROTOCOL
19  */
20
21 static efi_status_t EFIAPI
22 extract_config(const struct efi_hii_config_routing_protocol *this,
23                const efi_string_t request,
24                efi_string_t *progress,
25                efi_string_t *results)
26 {
27         EFI_ENTRY("%p, \"%ls\", %p, %p", this, request, progress, results);
28
29         return EFI_EXIT(EFI_OUT_OF_RESOURCES);
30 }
31
32 static efi_status_t EFIAPI
33 export_config(const struct efi_hii_config_routing_protocol *this,
34               efi_string_t *results)
35 {
36         EFI_ENTRY("%p, %p", this, results);
37
38         return EFI_EXIT(EFI_OUT_OF_RESOURCES);
39 }
40
41 static efi_status_t EFIAPI
42 route_config(const struct efi_hii_config_routing_protocol *this,
43              const efi_string_t configuration,
44              efi_string_t *progress)
45 {
46         EFI_ENTRY("%p, \"%ls\", %p", this, configuration, progress);
47
48         return EFI_EXIT(EFI_OUT_OF_RESOURCES);
49 }
50
51 static efi_status_t EFIAPI
52 block_to_config(const struct efi_hii_config_routing_protocol *this,
53                 const efi_string_t config_request,
54                 const u8 *block,
55                 const efi_uintn_t block_size,
56                 efi_string_t *config,
57                 efi_string_t *progress)
58 {
59         EFI_ENTRY("%p, \"%ls\", %p, %zu, %p, %p", this, config_request,
60                   block, block_size, config, progress);
61
62         return EFI_EXIT(EFI_OUT_OF_RESOURCES);
63 }
64
65 static efi_status_t EFIAPI
66 config_to_block(const struct efi_hii_config_routing_protocol *this,
67                 const efi_string_t config_resp,
68                 const u8 *block,
69                 const efi_uintn_t *block_size,
70                 efi_string_t *progress)
71 {
72         EFI_ENTRY("%p, \"%ls\", %p, %p, %p", this, config_resp,
73                   block, block_size, progress);
74
75         return EFI_EXIT(EFI_OUT_OF_RESOURCES);
76 }
77
78 static efi_status_t EFIAPI
79 get_alt_config(const struct efi_hii_config_routing_protocol *this,
80                const efi_string_t config_resp,
81                const efi_guid_t *guid,
82                const efi_string_t name,
83                const struct efi_device_path *device_path,
84                const efi_string_t alt_cfg_id,
85                efi_string_t *alt_cfg_resp)
86 {
87         EFI_ENTRY("%p, \"%ls\", %pUl, \"%ls\", %p, \"%ls\", %p",
88                   this, config_resp, guid, name, device_path,
89                   alt_cfg_id, alt_cfg_resp);
90
91         return EFI_EXIT(EFI_OUT_OF_RESOURCES);
92 }
93
94 /*
95  * EFI_HII_ACCESS_PROTOCOL
96  */
97
98 efi_status_t EFIAPI
99 extract_config_access(const struct efi_hii_config_access_protocol *this,
100                       const efi_string_t request,
101                       efi_string_t *progress,
102                       efi_string_t *results)
103 {
104         EFI_ENTRY("%p, \"%ls\", %p, %p", this, request, progress, results);
105
106         return EFI_EXIT(EFI_OUT_OF_RESOURCES);
107 };
108
109 efi_status_t EFIAPI
110 route_config_access(const struct efi_hii_config_access_protocol *this,
111                     const efi_string_t configuration,
112                     efi_string_t *progress)
113 {
114         EFI_ENTRY("%p, \"%ls\", %p", this, configuration, progress);
115
116         return EFI_EXIT(EFI_OUT_OF_RESOURCES);
117 };
118
119 efi_status_t EFIAPI
120 form_callback(const struct efi_hii_config_access_protocol *this,
121               efi_browser_action_t action,
122               efi_question_id_t question_id,
123               u8 type,
124               union efi_ifr_type_value *value,
125               efi_browser_action_request_t *action_request)
126 {
127         EFI_ENTRY("%p, 0x%zx, 0x%x, 0x%x, %p, %p", this, action,
128                   question_id, type, value, action_request);
129
130         return EFI_EXIT(EFI_DEVICE_ERROR);
131 };
132
133 const struct efi_hii_config_routing_protocol efi_hii_config_routing = {
134         .extract_config = extract_config,
135         .export_config = export_config,
136         .route_config = route_config,
137         .block_to_config = block_to_config,
138         .config_to_block = config_to_block,
139         .get_alt_config = get_alt_config
140 };
141
142 const struct efi_hii_config_access_protocol efi_hii_config_access = {
143         .extract_config_access = extract_config_access,
144         .route_config_access = route_config_access,
145         .form_callback = form_callback
146 };