Add a boot menu for devices with a framebuffer where the only inputs are
the volume and power buttons. The menu is SoC independent and SoC specific
parts hook in through weak functions. Qualcomm implementation is provided
in the patch set.
1. Add helpers for several commands. dfu_pwr is needed because
the stock dfu loop only exits on Ctrl-C which a phone doesn't have.
2. The core for the menu which reuses bootmenu_loop() for navigation
so any board that maps its buttons to keys (BUTTON_REMAP_PHONE_KEYS)
works unchanged.
3. Phones often have no usable display during bring-up, or are driven
from a host so the same menu is also drawn with ANSI escapes.
4. Not specific to the menu: Qualcomm keeps A/B state in the GPT
attribute flags, not in "misc", so ab_select_slot() is wrong there.
5. Generic header info for the slot lookup which is a weak hook and
the block device comes from the "storage" env var.
6. The Snapdragon override of that hook kept out of the generic file.
7. Shows why the device booted (e.g. recovery, fastboot). Reads the BCB
from the "storage" device.
8. PMIC reister layout QPNP-PON specific for PM660 to decode the boot reason.
9. The USB ACM stdio device can be listed before it has been started
and puts() then dereferences NULL private data.
10. The weak default picks "mmc" from Kconfig, so on UFS boards
"fastboot reboot bootloader" could never write the BCB.
11. Usage documentation for the commands above.
Here's the URL with image of the menu on blueline, sargo and enchilada:
https://download.ixit.cz/u-boot.png
Signed-off-by: Petr Hodina <[email protected]>
---
Petr Hodina (11):
cmd: phone_util: add poweroff, dfu_pwr and USB Ethernet commands
cmd: phonemenu: pixel drawn boot menu rendering and navigation
cmd: phonemenu: mirror the menu to byte-stream consoles
boot: android_ab: read the A/B slot from the GPT on Snapdragon
cmd: phonemenu: show active A/B slot in the header
cmd: phonemenu: read the A/B slot on Snapdragon without "misc"
cmd: phonemenu: show Android boot reason in the header
cmd: phonemenu: show PMIC PON status in the header
usb: gadget: f_acm: check the acm_stdio_puts() against an unstarted device
cmd: phone_util: fix "Cannot set reboot flag" on fastboot reboot
doc: usage: add phonemenu command documentation
MAINTAINERS | 5 +
boot/android_ab.c | 42 ++++
cmd/Kconfig | 11 +
cmd/Makefile | 1 +
cmd/phone_util.c | 148 ++++++++++++
cmd/phonemenu.c | 550 ++++++++++++++++++++++++++++++++++++++++++++
cmd/phonemenu_qcom.c | 112 +++++++++
doc/usage/cmd/phonemenu.rst | 92 ++++++++
drivers/usb/gadget/f_acm.c | 3 +
include/phonemenu.h | 17 ++
10 files changed, 981 insertions(+)
---
base-commit: ece349ade2973e220f524ce59e59711cc919263f
change-id: 20261010-b4-phonemenu-series-15f574867344
Best regards,
--
Petr Hodina <[email protected]>