Message ID | 20241004-qcom-phones-v2-1-c7ab67ac3043@linaro.org |
---|---|
State | New |
Headers | show |
Series | Better smartphone support (Qualcomm) | expand |
On Fri, 4 Oct 2024 at 06:46, Caleb Connolly <caleb.connolly@linaro.org> wrote: > > 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. > > Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org> > --- > board/qualcomm/qcom-phone.config | 12 ++++++++++ > board/qualcomm/qcom-phone.env | 49 ++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 61 insertions(+) > Reviewed-by: Simon Glass <sjg@chromium.org>
On 04.10.24 14:46, Caleb Connolly wrote: > 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. > > Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org> > --- > board/qualcomm/qcom-phone.config | 12 ++++++++++ > board/qualcomm/qcom-phone.env | 49 ++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 61 insertions(+) > > diff --git a/board/qualcomm/qcom-phone.config b/board/qualcomm/qcom-phone.config > new file mode 100644 > index 000000000000..388d4c3e7398 > --- /dev/null > +++ b/board/qualcomm/qcom-phone.config > @@ -0,0 +1,12 @@ > +# Settings for phones > +CONFIG_USE_DEFAULT_ENV_FILE=y > +CONFIG_DEFAULT_ENV_FILE="board/qualcomm/qcom-phone.env" > +CONFIG_PANIC_HANG=y > +CONFIG_CMD_PAUSE=y > +CONFIG_BOOTSTD=y > +CONFIG_BOOT_RETRY=y > +CONFIG_BOOT_RETRY_TIME=1 > +CONFIG_BUTTON_REMAP_PHONE_KEYS=y should also include fastboot, serial gadget and CONFIG_CMD_USB_MASS_STORAGE. otherwise some menu options wouldn't work. > + > +# Many phones don't actually define a serial port in their DTS > +# CONFIG_REQUIRE_SERIAL_CONSOLE is not set > diff --git a/board/qualcomm/qcom-phone.env b/board/qualcomm/qcom-phone.env > new file mode 100644 > index 000000000000..2a0791c888c6 > --- /dev/null > +++ b/board/qualcomm/qcom-phone.env > @@ -0,0 +1,49 @@ > +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 > + > +# 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 this doesn't work. according to doc (https://docs.u-boot.org/en/latest/usage/environment.html), multiline variables don't need "\". but even without "\" it only executes the first line. > + > +# 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=ums 0 scsi 0 > +bootmenu_3=Reset device=reset > +bootmenu_4=Dump clocks=clk dump; pause > +bootmenu_5=Dump environment=printenv; pause > +bootmenu_6=Board info=bdinfo; pause > +bootmenu_7=Dump bootargs=fdt print /chosen bootargs; pause > +bootmenu_8=Enable fastboot mode=run fastboot > +# Disabling bootretry means we'll just drop the shell > +bootmenu_9=Drop to shell=setenv bootretry -1 maybe at an entry for ufetch? ;) > + > +# Allow holding the power button while U-Boot loads to enter > +# the boot menu > +button_cmd_0_name=pwrkey > +button_cmd_0=run menucmd > + > +# Hold volume down to drop to a shell with the USB serial gadget > +# enabled for debugging > +button_cmd_1_name=Volume down > +button_cmd_1=run serial_gadget >
On 12/6/24 19:50, Julius Lehmann wrote: > On 04.10.24 14:46, Caleb Connolly wrote: >> 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. >> >> Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org> >> --- >> board/qualcomm/qcom-phone.config | 12 ++++++++++ >> board/qualcomm/qcom-phone.env | 49 ++++++++++++++++++++++++++++++ >> ++++++++++ >> 2 files changed, 61 insertions(+) >> >> diff --git a/board/qualcomm/qcom-phone.config b/board/qualcomm/qcom- >> phone.config >> new file mode 100644 >> index 000000000000..388d4c3e7398 >> --- /dev/null >> +++ b/board/qualcomm/qcom-phone.config >> @@ -0,0 +1,12 @@ >> +# Settings for phones >> +CONFIG_USE_DEFAULT_ENV_FILE=y >> +CONFIG_DEFAULT_ENV_FILE="board/qualcomm/qcom-phone.env" >> +CONFIG_PANIC_HANG=y >> +CONFIG_CMD_PAUSE=y >> +CONFIG_BOOTSTD=y >> +CONFIG_BOOT_RETRY=y >> +CONFIG_BOOT_RETRY_TIME=1 >> +CONFIG_BUTTON_REMAP_PHONE_KEYS=y > > should also include fastboot, serial gadget and > CONFIG_CMD_USB_MASS_STORAGE. otherwise some menu options wouldn't work. +1, should probably include CONFIG_USB_FUNCTION_ACM to enable output to usbacm?
diff --git a/board/qualcomm/qcom-phone.config b/board/qualcomm/qcom-phone.config new file mode 100644 index 000000000000..388d4c3e7398 --- /dev/null +++ b/board/qualcomm/qcom-phone.config @@ -0,0 +1,12 @@ +# Settings for phones +CONFIG_USE_DEFAULT_ENV_FILE=y +CONFIG_DEFAULT_ENV_FILE="board/qualcomm/qcom-phone.env" +CONFIG_PANIC_HANG=y +CONFIG_CMD_PAUSE=y +CONFIG_BOOTSTD=y +CONFIG_BOOT_RETRY=y +CONFIG_BOOT_RETRY_TIME=1 +CONFIG_BUTTON_REMAP_PHONE_KEYS=y + +# Many phones don't actually define a serial port in their DTS +# CONFIG_REQUIRE_SERIAL_CONSOLE is not set diff --git a/board/qualcomm/qcom-phone.env b/board/qualcomm/qcom-phone.env new file mode 100644 index 000000000000..2a0791c888c6 --- /dev/null +++ b/board/qualcomm/qcom-phone.env @@ -0,0 +1,49 @@ +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 + +# 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=ums 0 scsi 0 +bootmenu_3=Reset device=reset +bootmenu_4=Dump clocks=clk dump; pause +bootmenu_5=Dump environment=printenv; pause +bootmenu_6=Board info=bdinfo; pause +bootmenu_7=Dump bootargs=fdt print /chosen bootargs; pause +bootmenu_8=Enable fastboot mode=run fastboot +# Disabling bootretry means we'll just drop the shell +bootmenu_9=Drop to shell=setenv bootretry -1 + +# Allow holding the power button while U-Boot loads to enter +# the boot menu +button_cmd_0_name=pwrkey +button_cmd_0=run menucmd + +# Hold volume down to drop to a shell with the USB serial gadget +# enabled for debugging +button_cmd_1_name=Volume down +button_cmd_1=run serial_gadget
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. Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org> --- board/qualcomm/qcom-phone.config | 12 ++++++++++ board/qualcomm/qcom-phone.env | 49 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+)