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