board/qualcomm: introduce phone config

Phones don't have keyboards! Introduce a phone-specific config fragment
and associated environment file to make U-Boot more useful on these
devices. This allows for navigating via the buttons and enabling
various USB gadget modes or displaying info about U-Boot.

Reviewed-by: Simon Glass <sjg@chromium.org>
Tested-by: Danila Tikhonov <danila@jiaxyga.com> # google-sunfish
Tested-by: Jens Reidel <adrian@mainlining.org> # xiaomi-davinci
Link: https://lore.kernel.org/r/20250331-qcom-phones-v4-1-f52e57d3b8c6@linaro.org
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
This commit is contained in:
Caleb Connolly
2025-03-31 14:23:18 +02:00
parent b4420a0c9e
commit fd775fb7af
2 changed files with 76 additions and 0 deletions

View File

@@ -0,0 +1,29 @@
# Settings for phones
CONFIG_DEFAULT_ENV_FILE="board/qualcomm/qcom-phone.env"
# Hang on panic so the error message can be read
CONFIG_PANIC_HANG=y
# We use pause in various places to allow text to be read
# before it scrolls off the screen
CONFIG_CMD_PAUSE=y
CONFIG_BOOT_RETRY=y
CONFIG_BOOT_RETRY_TIME=1
CONFIG_BUTTON_REMAP_PHONE_KEYS=y
CONFIG_RETRY_BOOTCMD=y
CONFIG_FASTBOOT_BUF_ADDR=0x1A000000
CONFIG_USB_FUNCTION_FASTBOOT=y
CONFIG_USB_FUNCTION_ACM=y
CONFIG_CMD_UMS_ABORT_KEYED=y
# Record all console output and let it be dumped via fastboot
CONFIG_CONSOLE_RECORD=y
CONFIG_CONSOLE_RECORD_INIT_F=y
CONFIG_CONSOLE_RECORD_OUT_SIZE=0x6000
CONFIG_FASTBOOT_CMD_OEM_CONSOLE=y
# Only MMC is supported by fastboot currently, but this is still useful.
CONFIG_FASTBOOT_FLASH=y
CONFIG_FASTBOOT_FLASH_MMC_DEV=0
CONFIG_FASTBOOT_OEM_RUN=y
# Many phones don't actually define a serial port in their DTS
# CONFIG_REQUIRE_SERIAL_CONSOLE is not set

View File

@@ -0,0 +1,47 @@
bootdelay=0
bootretry=1
stdin=serial,button-kbd
stdout=serial,vidconsole
stderr=serial,vidconsole
# Fastboot is keen to use the address from kconfig, but we
# allocate its buffer at runtime.
fastboot=fastboot -l $fastboot_addr_r usb 0
# Always probe for UFS storage, though it should be done by board code.
preboot=scsi scan
# Shortcut to enable USB serial gadget and disable bootretry
serial_gadget=setenv stdin serial,button-kbd,usbacm; \
setenv stdout serial,vidconsole,usbacm; \
setenv stderr serial,vidconsole,usbacm; \
setenv bootretry -1; \
echo Enabled U-Boot console serial gadget
# bootretry will run this command over and over, if we fail once
# then bail out to the boot menu instead (with a pause to read
# the error message)
bootcmd=bootefi bootmgr; pause; run menucmd
# When entering the menu (either from button press or failed boot)
# remap bootcmd so it will re-open the menu and we won't get stuck
# at the console with no way to type
menucmd=setenv bootcmd run menucmd; bootmenu -1
# Pause is used so the output can be read on the display
bootmenu_0=Boot=bootefi bootmgr; pause
bootmenu_1=Enable serial console gadget=run serial_gadget
bootmenu_2=Enable USB mass storage=echo "Press any key to exit UMS mode"; ums 0 scsi 0
bootmenu_3=Enable fastboot mode=run fastboot
# Disabling bootretry means we'll just drop the shell
bootmenu_4=Drop to shell=setenv bootretry -1
bootmenu_5=Reset device=reset
bootmenu_6=Dump clocks=clk dump; pause
bootmenu_7=Dump environment=printenv; pause
bootmenu_8=Board info=bdinfo; pause
bootmenu_9=Dump bootargs=fdt print /chosen bootargs; pause
# Allow holding the volume down button while U-Boot loads to enter
# the boot menu
button_cmd_0_name=Volume Down
button_cmd_0=run menucmd