diff options
author | Mattijs Korpershoek <mkorpershoek@baylibre.com> | 2021-07-30 15:28:09 +0300 |
---|---|---|
committer | Neil Armstrong <narmstrong@baylibre.com> | 2021-07-30 15:54:03 +0300 |
commit | 72d7c03074f0dec67fe68ea268112bb820d7e82f (patch) | |
tree | 464fd280444237373e5b3187b64c6605a86143e8 /include/configs/meson64_android.h | |
parent | 9d0ac61642a9f4a627ce43760e45987859772a73 (diff) | |
download | u-boot-72d7c03074f0dec67fe68ea268112bb820d7e82f.tar.xz |
configs: meson64_android: implement recovery boot via BCB
Right now meson64_android does not know how to boot into Android
Recovery: it simply falls back to "fastboot" mode in the bootloader.
Implement the boot to recovery.
While at it, use the standard BCB way instead of a sm for consistency.
Signed-off-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
Acked-by: Neil Armstrong <narmstrong@baylibre.com>
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
Diffstat (limited to 'include/configs/meson64_android.h')
-rw-r--r-- | include/configs/meson64_android.h | 30 |
1 files changed, 23 insertions, 7 deletions
diff --git a/include/configs/meson64_android.h b/include/configs/meson64_android.h index d732032d1f..ce08346b70 100644 --- a/include/configs/meson64_android.h +++ b/include/configs/meson64_android.h @@ -21,6 +21,10 @@ #define CONTROL_PARTITION "misc" #endif +#ifndef RECOVERY_PARTITION +#define RECOVERY_PARTITION "recovery" +#endif + #define BOOTENV_DEV_FASTBOOT(devtypeu, devtypel, instance) \ "bootcmd_fastboot=" \ "setenv run_fastboot 0;" \ @@ -51,20 +55,23 @@ #define BOOTENV_DEV_NAME_FASTBOOT(devtypeu, devtypel, instance) \ "fastboot " -/* TOFIX: Run actual recovery instead of fastboot */ #define BOOTENV_DEV_RECOVERY(devtypeu, devtypel, instance) \ "bootcmd_recovery=" \ "pinmux dev pinctrl@14;" \ "pinmux dev pinctrl@40;" \ - "sm reboot_reason reason;" \ "setenv run_recovery 0;" \ "if run check_button; then " \ "echo Recovery button is pressed;" \ "setenv run_recovery 1;" \ - "elif test \"${reason}\" = \"recovery\" -o " \ - "\"${reason}\" = \"update\"; then " \ - "echo Recovery asked by reboot reason;" \ - "setenv run_recovery 1;" \ + "fi; " \ + "if bcb load " __stringify(CONFIG_FASTBOOT_FLASH_MMC_DEV) " " \ + CONTROL_PARTITION "; then " \ + "if bcb test command = boot-recovery; then " \ + "echo BCB: Recovery boot...; " \ + "setenv run_recovery 1;" \ + "fi;" \ + "else " \ + "echo Warning: BCB is corrupted or does not exist; " \ "fi;" \ "if test \"${skip_recovery}\" -eq 1; then " \ "echo Recovery skipped by environment;" \ @@ -76,7 +83,16 @@ "fi;" \ "if test \"${run_recovery}\" -eq 1; then " \ "echo Running Recovery...;" \ - "fastboot " __stringify(CONFIG_FASTBOOT_USB_DEV) "; " \ + "mmc dev ${mmcdev};" \ + "setenv bootargs \"${bootargs} androidboot.serialno=${serial#}\";" \ + "part start mmc ${mmcdev} " RECOVERY_PARTITION " boot_start;" \ + "part size mmc ${mmcdev} " RECOVERY_PARTITION " boot_size;" \ + "if mmc read ${loadaddr} ${boot_start} ${boot_size}; then " \ + "echo Running Android Recovery...;" \ + "bootm ${loadaddr};" \ + "fi;" \ + "echo Failed to boot Android...;" \ + "reset;" \ "fi\0" #define BOOTENV_DEV_NAME_RECOVERY(devtypeu, devtypel, instance) \ |