[v2,0/6] efi_loader: add HII database protocol

Message ID 20181116011837.27542-1-takahiro.akashi@linaro.org
Headers show
Series
  • efi_loader: add HII database protocol
Related show

Message

AKASHI Takahiro Nov. 16, 2018, 1:18 a.m.
HII database protocol is the last missing (major?) piece of code so that
we can run unmodified EDKII's shell and UEFI SCT on EFI-enabled u-boot.

The original code was initially written by Leif and Rob a year ago[1],
and now I'm reworking it. The implementation has not been much
enhanced from the original, but I tried to give it clearer implementation
to be able to add more functionality easily later on.
I also addressed the comments by Alex[2] and added a self test on
request of Heinrich.

HII configuration routing protocol and access protocol have only
a skeleton and should be implemented when we need to have *drivers*
that require configuration mechanism.

# Please note that a bunch of warnings are generated by checkpatch.pl,
# but there are also good reasons for not fixing them.

Concerns (if any):
* missing features (see the commit log of patch#2)
* unaligned access to *packed* structure in a package list should be
  cared?

Changes in v2 (Nov 16, 2018)
* add some descriptions to newly added functions
* rename EFI_HII_PACKAGE_[TYPE|LEN]_* to __EFI_HII_PACKAGE_[TYPE|LEN]_*
  as they are of internal use only
* cast a return value (of efi_status_t) to "unsigned int" for printing

[1] https://lists.denx.de/pipermail/u-boot/2017-October/308999.html
[2] https://lists.denx.de/pipermail/u-boot/2017-October/309116.html

AKASHI Takahiro (4):
  efi: hii: add guid package support
  efi: hii: add keyboard layout package support
  efi: hii: add HII config routing/access protocols
  efi_selftest: add HII database protocols test

Akashi, Takahiro (1):
  lib: add u16_strcpy/strdup functions

Leif Lindholm (1):
  efi_loader: Initial HII database protocols

 include/charset.h                        |   23 +
 include/efi_api.h                        |  419 +++++++++
 include/efi_loader.h                     |    8 +
 lib/charset.c                            |   29 +
 lib/efi_loader/Makefile                  |    1 +
 lib/efi_loader/efi_boottime.c            |   18 +
 lib/efi_loader/efi_hii.c                 | 1053 ++++++++++++++++++++++
 lib/efi_loader/efi_hii_config.c          |  146 +++
 lib/efi_selftest/Makefile                |    1 +
 lib/efi_selftest/efi_selftest_hii.c      | 1046 +++++++++++++++++++++
 lib/efi_selftest/efi_selftest_hii_data.c |  452 ++++++++++
 11 files changed, 3196 insertions(+)
 create mode 100644 lib/efi_loader/efi_hii.c
 create mode 100644 lib/efi_loader/efi_hii_config.c
 create mode 100644 lib/efi_selftest/efi_selftest_hii.c
 create mode 100644 lib/efi_selftest/efi_selftest_hii_data.c