[gbl] Implement GBL EFI Fastboot protocol for bootloader flashing and EFI execution

Implement the GblEfiFastbootProtocol in U-Boot to allow GBL to delegate
certain fastboot commands to the firmware.

Specifically, implement the command_exec method to handle:
- 'fastboot flash bootloader': Delegates to amlmmc_write_bootloader to
  flash both eMMC boot partitions (boot0/boot1).
- 'fastboot oem run-staged-efi': Executes the staged EFI image from GBL's
  download buffer using U-Boot's bootefi command.

This enables GBL to support bootloader updates and recovery EFI execution
over fastboot.

Bug: 496295142
TAG=agy
CONV=236c2e4e-69e4-48b6-a8ea-8986bc68bb04

Change-Id: I42dc35148d5d52c9860a7f6bd5a44124f3b4eec1
Reviewed-on: https://turquoise-internal-review.googlesource.com/c/third_party/u-boot/+/1351452
Reviewed-by: Dov Shlachter <dovs@google.com>
Commit-Queue: Sergii Parubochyi <sergiip@google.com>
GitOrigin-RevId: 9c97c64467406120f97c29cc138527d9572145f5
8 files changed
tree: 3122f892065d5d620fe75347b0e236943a1e21f8
  1. api/
  2. arch/
  3. bl2/
  4. bl30/
  5. bl31/
  6. bl31_1.3/
  7. board/
  8. common/
  9. configs/
  10. disk/
  11. doc/
  12. drivers/
  13. dts/
  14. examples/
  15. fip/
  16. fs/
  17. include/
  18. lib/
  19. Licenses/
  20. net/
  21. post/
  22. scripts/
  23. test/
  24. tools/
  25. vim3_aml_tools/
  26. .checkpatch.conf
  27. .clang-format
  28. .gitignore
  29. .mailmap
  30. amlogic_help.sh
  31. check_compile.sh
  32. config.mk
  33. fuchsia_build.py
  34. fuchsia_upload.py
  35. Kbuild
  36. Kconfig
  37. MAINTAINERS
  38. MAKEALL
  39. Makefile
  40. mk
  41. README
  42. README.md
  43. snapshot.commit
README.md

SPDX-License-Identifier: GPL-2.0+

u-boot

This is a version of u-boot, modified to support Fuchsia on the Khadas vim3

Building vim3 Bootloader for Fuchsia

To build the vim3 bootloader for Fuchsia:

CIPD access. All build tools are downloaded to cipd_deps.

Run the build script from repo root

./fuchsia_build.py

--clean-cipd option can be used to make sure CIPD checkout is clean. It will remove cipd_deps directory and download dependencies again.

You now have a build/u-boot.bin.unsigned that you can flash to a target using fastboot.

fuchsia_upload.py is used to upload commits to open repository. And upload binaries to CIPD.