efi_hii_config.c 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  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. #include <common.h>
  9. #include <efi_loader.h>
  10. const efi_guid_t efi_guid_hii_config_routing_protocol
  11. = EFI_HII_CONFIG_ROUTING_PROTOCOL_GUID;
  12. const efi_guid_t efi_guid_hii_config_access_protocol
  13. = EFI_HII_CONFIG_ACCESS_PROTOCOL_GUID;
  14. /*
  15. * EFI_HII_CONFIG_ROUTING_PROTOCOL
  16. */
  17. static efi_status_t EFIAPI
  18. extract_config(const struct efi_hii_config_routing_protocol *this,
  19. const efi_string_t request,
  20. efi_string_t *progress,
  21. efi_string_t *results)
  22. {
  23. EFI_ENTRY("%p, \"%ls\", %p, %p", this, request, progress, results);
  24. return EFI_EXIT(EFI_OUT_OF_RESOURCES);
  25. }
  26. static efi_status_t EFIAPI
  27. export_config(const struct efi_hii_config_routing_protocol *this,
  28. efi_string_t *results)
  29. {
  30. EFI_ENTRY("%p, %p", this, results);
  31. return EFI_EXIT(EFI_OUT_OF_RESOURCES);
  32. }
  33. static efi_status_t EFIAPI
  34. route_config(const struct efi_hii_config_routing_protocol *this,
  35. const efi_string_t configuration,
  36. efi_string_t *progress)
  37. {
  38. EFI_ENTRY("%p, \"%ls\", %p", this, configuration, progress);
  39. return EFI_EXIT(EFI_OUT_OF_RESOURCES);
  40. }
  41. static efi_status_t EFIAPI
  42. block_to_config(const struct efi_hii_config_routing_protocol *this,
  43. const efi_string_t config_request,
  44. const u8 *block,
  45. const efi_uintn_t block_size,
  46. efi_string_t *config,
  47. efi_string_t *progress)
  48. {
  49. EFI_ENTRY("%p, \"%ls\", %p, %zu, %p, %p", this, config_request,
  50. block, block_size, config, progress);
  51. return EFI_EXIT(EFI_OUT_OF_RESOURCES);
  52. }
  53. static efi_status_t EFIAPI
  54. config_to_block(const struct efi_hii_config_routing_protocol *this,
  55. const efi_string_t config_resp,
  56. const u8 *block,
  57. const efi_uintn_t *block_size,
  58. efi_string_t *progress)
  59. {
  60. EFI_ENTRY("%p, \"%ls\", %p, %p, %p", this, config_resp,
  61. block, block_size, progress);
  62. return EFI_EXIT(EFI_OUT_OF_RESOURCES);
  63. }
  64. static efi_status_t EFIAPI
  65. get_alt_config(const struct efi_hii_config_routing_protocol *this,
  66. const efi_string_t config_resp,
  67. const efi_guid_t *guid,
  68. const efi_string_t name,
  69. const struct efi_device_path *device_path,
  70. const efi_string_t alt_cfg_id,
  71. efi_string_t *alt_cfg_resp)
  72. {
  73. EFI_ENTRY("%p, \"%ls\", %pUl, \"%ls\", %p, \"%ls\", %p",
  74. this, config_resp, guid, name, device_path,
  75. alt_cfg_id, alt_cfg_resp);
  76. return EFI_EXIT(EFI_OUT_OF_RESOURCES);
  77. }
  78. /*
  79. * EFI_HII_ACCESS_PROTOCOL
  80. */
  81. efi_status_t EFIAPI
  82. extract_config_access(const struct efi_hii_config_access_protocol *this,
  83. const efi_string_t request,
  84. efi_string_t *progress,
  85. efi_string_t *results)
  86. {
  87. EFI_ENTRY("%p, \"%ls\", %p, %p", this, request, progress, results);
  88. return EFI_EXIT(EFI_OUT_OF_RESOURCES);
  89. };
  90. efi_status_t EFIAPI
  91. route_config_access(const struct efi_hii_config_access_protocol *this,
  92. const efi_string_t configuration,
  93. efi_string_t *progress)
  94. {
  95. EFI_ENTRY("%p, \"%ls\", %p", this, configuration, progress);
  96. return EFI_EXIT(EFI_OUT_OF_RESOURCES);
  97. };
  98. efi_status_t EFIAPI
  99. form_callback(const struct efi_hii_config_access_protocol *this,
  100. efi_browser_action_t action,
  101. efi_question_id_t question_id,
  102. u8 type,
  103. union efi_ifr_type_value *value,
  104. efi_browser_action_request_t *action_request)
  105. {
  106. EFI_ENTRY("%p, 0x%zx, 0x%x, 0x%x, %p, %p", this, action,
  107. question_id, type, value, action_request);
  108. return EFI_EXIT(EFI_DEVICE_ERROR);
  109. };
  110. const struct efi_hii_config_routing_protocol efi_hii_config_routing = {
  111. .extract_config = extract_config,
  112. .export_config = export_config,
  113. .route_config = route_config,
  114. .block_to_config = block_to_config,
  115. .config_to_block = config_to_block,
  116. .get_alt_config = get_alt_config
  117. };
  118. const struct efi_hii_config_access_protocol efi_hii_config_access = {
  119. .extract_config_access = extract_config_access,
  120. .route_config_access = route_config_access,
  121. .form_callback = form_callback
  122. };