rockchip: make avb boot flow uninterruptable

- only allow "boot_android" as bootcmd;
- enter rockusb or fastboot when boot failed;
- don't allow ctrl+c to enter hush;

Change-Id: I7a67f4b738ed78370f19fe2c8c920a5abc104b4b
Signed-off-by: Joseph Chen <chenjh@rock-chips.com>
This commit is contained in:
Joseph Chen 2018-12-11 16:02:12 +08:00 committed by Kever Yang
parent a349065b9f
commit caed6b4f82
3 changed files with 24 additions and 2 deletions

View File

@ -412,6 +412,13 @@ int getc(void)
int tstc(void)
{
/* Don't allow drivers call tstc() to do some "exit" event(maybe enter hush) */
#if defined(CONFIG_ARCH_ROCKCHIP) && \
defined(CONFIG_AVB_VBMETA_PUBLIC_KEY_VALIDATE) && \
defined(CONFIG_BOOTDELAY) && (CONFIG_BOOTDELAY <= 0)
return 0;
#endif
#ifdef CONFIG_DISABLE_CONSOLE
if (gd->flags & GD_FLG_DISABLE_CONSOLE)
return 0;
@ -594,6 +601,12 @@ static int ctrlc_disabled = 0; /* see disable_ctrl() */
static int ctrlc_was_pressed = 0;
int ctrlc(void)
{
/* Don't allow drivers call ctrlc() to do some "exit" event(maybe enter hush) */
#if defined(CONFIG_ARCH_ROCKCHIP) && \
defined(CONFIG_AVB_VBMETA_PUBLIC_KEY_VALIDATE)
return 0;
#endif
#ifndef CONFIG_SANDBOX
if (!ctrlc_disabled && gd->have_console) {
if (tstc()) {

View File

@ -123,11 +123,18 @@
"setenv devtype spinor; setenv devnum 1;" \
"fi; \0"
#ifdef CONFIG_AVB_VBMETA_PUBLIC_KEY_VALIDATE
#define RKIMG_BOOTCOMMAND \
"boot_android ${devtype} ${devnum};" \
"echo AVB boot failed and enter rockusb or fastboot!;" \
"rockusb 0 ${devtype} ${devnum};" \
"fastboot usb 0;"
#else
#define RKIMG_BOOTCOMMAND \
"boot_android ${devtype} ${devnum};" \
"bootrkp;" \
"run distro_bootcmd;"
#endif
#endif
#define CONFIG_DISPLAY_BOARDINFO_LATE

View File

@ -160,7 +160,9 @@ validate_vbmeta_public_key(AvbOps *ops,
size_t public_key_metadata_length,
bool *out_is_trusted)
{
#ifdef AVB_VBMETA_PUBLIC_KEY_VALIDATE
/* remain AVB_VBMETA_PUBLIC_KEY_VALIDATE to compatible legacy code */
#if defined(CONFIG_AVB_VBMETA_PUBLIC_KEY_VALIDATE) || \
defined(AVB_VBMETA_PUBLIC_KEY_VALIDATE)
if (out_is_trusted) {
avb_atx_validate_vbmeta_public_key(ops,
public_key_data,