Re: [U-Boot] [PATCH v3] env: ti: boot: Handle reboot reason from BCB

2019-07-31 Thread Tom Rini
On Thu, Jul 25, 2019 at 04:20:41PM +0300, Sam Protsenko wrote:

> In case of Android boot, reboot reason can be written into BCB (usually
> it's an area in 'misc' partition). U-Boot then can obtain that reboot
> reason from BCB and handle it accordingly to achieve correct Android
> boot flow, like it was suggested in [1]:
>   - if it's empty: perform normal Android boot from eMMC
>   - if it contains "bootonce-bootloader": get into fastboot mode
>   - if it contains "boot-recovery": perform recovery boot
> 
> The latter is not implemented yet, as it depends on some features that
> are not implemented on TI platforms yet (in AOSP and in U-Boot).
> 
> [1] https://marc.info/?l=u-boot=152508418909737=2
> 
> Signed-off-by: Sam Protsenko 

Applied to u-boot/master, thanks!

-- 
Tom


signature.asc
Description: PGP signature
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


[U-Boot] [PATCH v3] env: ti: boot: Handle reboot reason from BCB

2019-07-25 Thread Sam Protsenko
In case of Android boot, reboot reason can be written into BCB (usually
it's an area in 'misc' partition). U-Boot then can obtain that reboot
reason from BCB and handle it accordingly to achieve correct Android
boot flow, like it was suggested in [1]:
  - if it's empty: perform normal Android boot from eMMC
  - if it contains "bootonce-bootloader": get into fastboot mode
  - if it contains "boot-recovery": perform recovery boot

The latter is not implemented yet, as it depends on some features that
are not implemented on TI platforms yet (in AOSP and in U-Boot).

[1] https://marc.info/?l=u-boot=152508418909737=2

Signed-off-by: Sam Protsenko 
---
Changes in v3:
  - clear BCB on boot-recovery for now, as it's not implemented yet
Changes in v2:
  - use CONTROL_PARTITION instead of "misc" to avoid hard code
  - add proper indentation

 include/environment/ti/boot.h | 29 +++--
 1 file changed, 27 insertions(+), 2 deletions(-)

diff --git a/include/environment/ti/boot.h b/include/environment/ti/boot.h
index e55a4aec57..684a744f31 100644
--- a/include/environment/ti/boot.h
+++ b/include/environment/ti/boot.h
@@ -98,6 +98,10 @@
 #define AB_SELECT ""
 #endif
 
+#define FASTBOOT_CMD \
+   "echo Booting into fastboot ...; " \
+   "fastboot " __stringify(CONFIG_FASTBOOT_USB_DEV) "; "
+
 #define DEFAULT_COMMON_BOOT_TI_ARGS \
"console=" CONSOLEDEV ",115200n8\0" \
"fdtfile=undefined\0" \
@@ -117,6 +121,28 @@
"setenv mmcroot /dev/mmcblk0p2 rw; " \
"run mmcboot;\0" \
"emmc_android_boot=" \
+   "if bcb load " __stringify(CONFIG_FASTBOOT_FLASH_MMC_DEV) " " \
+   CONTROL_PARTITION "; then " \
+   "if bcb test command = bootonce-bootloader; then " \
+   "echo BCB: Bootloader boot...; " \
+   "bcb clear command; bcb store; " \
+   FASTBOOT_CMD \
+   "elif bcb test command = boot-recovery; then " \
+   "echo BCB: Recovery boot...; " \
+   "echo Warning: recovery is not implemented; " \
+   "echo Performing normal boot for now...; " \
+   "bcb clear command; bcb store; " \
+   "run emmc_android_normal_boot; " \
+   "else " \
+   "echo BCB: Normal boot requested...; " \
+   "run emmc_android_normal_boot; " \
+   "fi; " \
+   "else " \
+   "echo Warning: BCB is corrupted or does not exist; " \
+   "echo Performing normal boot...; " \
+   "run emmc_android_normal_boot; " \
+   "fi;\0" \
+   "emmc_android_normal_boot=" \
"echo Trying to boot Android from eMMC ...; " \
"run update_to_fit; " \
"setenv eval_bootargs setenv bootargs $bootargs; " \
@@ -176,8 +202,7 @@
"if test ${dofastboot} -eq 1; then " \
"echo Boot fastboot requested, resetting dofastboot ...;" \
"setenv dofastboot 0; saveenv;" \
-   "echo Booting into fastboot ...; " \
-   "fastboot " __stringify(CONFIG_FASTBOOT_USB_DEV) "; " \
+   FASTBOOT_CMD \
"fi;" \
"if test ${boot_fit} -eq 1; then "  \
"run update_to_fit;"\
-- 
2.20.1

___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot