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