[{"id":1767567,"web_url":"http://patchwork.ozlabs.org/comment/1767567/","msgid":"<CAPnjgZ2jJuYrK3Ow3omGRKep=10rYt9sBueOcGHY28dDwGAzBQ@mail.gmail.com>","list_archive_url":null,"date":"2017-09-13T04:26:35","subject":"Re: [U-Boot] [PATCH 2/3] rockchip: add support for backing to\n\tbootrom download mode","submitter":{"id":6170,"url":"http://patchwork.ozlabs.org/api/people/6170/","name":"Simon Glass","email":"sjg@chromium.org"},"content":"Hi Andy,\n\nOn 12 September 2017 at 07:57, Andy Yan <andy.yan@rock-chips.com> wrote:\n> Rockchip bootrom will enter download mode if it returns from\n> spl/tpl with a none-zero value and couldn't find a valid image\n> in the backup partition.\n> This patch provide a method to instruct the system to back to\n> bootrom download mode by checking the BROM_DOWNLOAD_FLAG register.\n> As the bootrom download function relys on some modules such as\n> interrupts, so we need to back to bootrom as early as possbile\n> before the tpl/tps code override the interrupt settings.\n>\n> Signed-off-by: Andy Yan <andy.yan@rock-chips.com>\n> Reviewed-by: Kever Yang <kever.yang@rock-chips.com>\n> ---\n>\n>  arch/arm/include/asm/arch-rockchip/boot_mode.h |  4 ++\n>  arch/arm/include/asm/arch-rockchip/bootrom.h   |  2 +-\n>  arch/arm/mach-rockchip/Kconfig                 |  1 +\n>  arch/arm/mach-rockchip/bootrom.c               |  2 +-\n>  arch/arm/mach-rockchip/save_boot_param.S       | 56 +++++++++++++++++++++-----\n>  5 files changed, 54 insertions(+), 11 deletions(-)\n>\n> diff --git a/arch/arm/include/asm/arch-rockchip/boot_mode.h b/arch/arm/include/asm/arch-rockchip/boot_mode.h\n> index 163b2e7..6b2a610 100644\n> --- a/arch/arm/include/asm/arch-rockchip/boot_mode.h\n> +++ b/arch/arm/include/asm/arch-rockchip/boot_mode.h\n> @@ -15,7 +15,11 @@\n>  #define BOOT_CHARGING          (REBOOT_FLAG + 11)\n>  /* enter usb mass storage mode */\n>  #define BOOT_UMS               (REBOOT_FLAG + 12)\n> +/* enter bootrom download mode */\n> +#define BOOT_BROM_DOWNLOAD     0xEF08A53C\n>\n> +#ifndef __ASSEMBLY__\n>  int setup_boot_mode(void);\n> +#endif\n>\n>  #endif\n> diff --git a/arch/arm/include/asm/arch-rockchip/bootrom.h b/arch/arm/include/asm/arch-rockchip/bootrom.h\n> index 92eb878..6ae3e94 100644\n> --- a/arch/arm/include/asm/arch-rockchip/bootrom.h\n> +++ b/arch/arm/include/asm/arch-rockchip/bootrom.h\n> @@ -22,6 +22,6 @@ void back_to_bootrom(void);\n>  /**\n>   * Assembler component for the above (do not call this directly)\n>   */\n> -void _back_to_bootrom_s(void);\n> +void _back_to_bootrom_s(int mode);\n\nPlease document the arg\n\n>\n>  #endif\n> diff --git a/arch/arm/mach-rockchip/Kconfig b/arch/arm/mach-rockchip/Kconfig\n> index 527ca60..a2b7a7e 100644\n> --- a/arch/arm/mach-rockchip/Kconfig\n> +++ b/arch/arm/mach-rockchip/Kconfig\n> @@ -113,6 +113,7 @@ config ROCKCHIP_RK3399\n>         select SPL_SERIAL_SUPPORT\n>         select SPL_DRIVERS_MISC_SUPPORT\n>         select ENABLE_ARM_SOC_BOOT0_HOOK\n> +       select ROCKCHIP_BROM_HELPER\n>         select DEBUG_UART_BOARD_INIT\n>         select BOARD_LATE_INIT\n>         help\n> diff --git a/arch/arm/mach-rockchip/bootrom.c b/arch/arm/mach-rockchip/bootrom.c\n> index 8380e4e..6f0d583 100644\n> --- a/arch/arm/mach-rockchip/bootrom.c\n> +++ b/arch/arm/mach-rockchip/bootrom.c\n> @@ -12,5 +12,5 @@ void back_to_bootrom(void)\n>  #if CONFIG_IS_ENABLED(LIBCOMMON_SUPPORT)\n>         puts(\"Returning to boot ROM...\\n\");\n>  #endif\n> -       _back_to_bootrom_s();\n> +       _back_to_bootrom_s(0);\n\nWhat does 0 mean? Should this be an enum / #define ?\n\n>  }\n> diff --git a/arch/arm/mach-rockchip/save_boot_param.S b/arch/arm/mach-rockchip/save_boot_param.S\n> index 50fce20..325e81e 100644\n> --- a/arch/arm/mach-rockchip/save_boot_param.S\n> +++ b/arch/arm/mach-rockchip/save_boot_param.S\n> @@ -6,12 +6,25 @@\n>   */\n>\n>  #include <linux/linkage.h>\n> +#include <asm/arch/boot_mode.h>\n>\n>  #if defined(CONFIG_ARM64)\n>  .globl SAVE_SP_ADDR\n>  SAVE_SP_ADDR:\n>         .quad 0\n>\n> +ENTRY(check_back_to_brom_dnl_flag)\n> +       ldr     x8, =CONFIG_ROCKCHIP_BOOT_MODE_REG\n> +       ldr     x9, [x8]\n> +       ldr     x0, =BOOT_BROM_DOWNLOAD\n> +       cmp     x9, x0\n> +       b.ne    save_boot_params_ret\n> +       mov     x9, xzr\n> +       str     x9, [x8]        /* clear flag */\n> +       mov     x0, #1          /* indicate the bootrom to enter download mode */\n> +       b       _back_to_bootrom_s\n> +ENDPROC(check_back_to_brom_dnl_flag)\n> +\n>  ENTRY(save_boot_params)\n>         sub     sp, sp, #0x60\n>         stp     x29, x30, [sp, #0x50]\n> @@ -23,14 +36,22 @@ ENTRY(save_boot_params)\n>         ldr     x8, =SAVE_SP_ADDR\n>         mov     x9, sp\n>         str     x9, [x8]\n> +#if CONFIG_ROCKCHIP_BOOT_MODE_REG\n> +       b       check_back_to_brom_dnl_flag\n> +#else\n>         b       save_boot_params_ret  /* back to my caller */\n> +#endif\n>  ENDPROC(save_boot_params)\n>\n> +/*\n> + * x0: return value for bootrom, none-zero for bootrom download\n> + *     mode and zero for normal boot mode\n> + */\n>  .globl _back_to_bootrom_s\n>  ENTRY(_back_to_bootrom_s)\n> -       ldr     x0, =SAVE_SP_ADDR\n> -       ldr     x0, [x0]\n> -       mov     sp, x0\n> +       ldr     x1, =SAVE_SP_ADDR\n> +       ldr     x1, [x1]\n> +       mov     sp, x1\n>         ldp     x29, x30, [sp, #0x50]\n>         ldp     x27, x28, [sp, #0x40]\n>         ldp     x25, x26, [sp, #0x30]\n> @@ -38,7 +59,6 @@ ENTRY(_back_to_bootrom_s)\n>         ldp     x21, x22, [sp, #0x10]\n>         ldp     x19, x20, [sp]\n>         add     sp, sp, #0x60\n> -       mov     x0, xzr\n>         ret\n>  ENDPROC(_back_to_bootrom_s)\n>  #else\n> @@ -46,6 +66,18 @@ ENDPROC(_back_to_bootrom_s)\n>  SAVE_SP_ADDR:\n>         .word 0\n>\n> +ENTRY(check_back_to_brom_dnl_flag)\n\nPlease document what this function does\n\n> +       ldr     r0, =CONFIG_ROCKCHIP_BOOT_MODE_REG\n> +       ldr     r1, [r0]\n> +       ldr     r2, =BOOT_BROM_DOWNLOAD\n> +       cmp     r1, r2\n> +       bne     save_boot_params_ret\n> +       mov     r3, #0\n> +       str     r3, [r0]        @clear flag\n> +       mov     r0, #1          @indicate the bootrom to enter download mode\n> +       b       _back_to_bootrom_s\n> +ENDPROC(check_back_to_brom_dnl_flag)\n> +\n>  /*\n>   * void save_boot_params\n>   *\n> @@ -55,15 +87,21 @@ ENTRY(save_boot_params)\n>         push    {r1-r12, lr}\n>         ldr     r0, =SAVE_SP_ADDR\n>         str     sp, [r0]\n> -       b       save_boot_params_ret            @ back to my caller\n> +#if CONFIG_ROCKCHIP_BOOT_MODE_REG\n> +       b       check_back_to_brom_dnl_flag\n> +#else\n> +       b       save_boot_params_ret\n> +#endif\n>  ENDPROC(save_boot_params)\n>\n> -\n> +/*\n> + * r0: return value for bootrom, none-zero for bootrom download\n> + *     mode and zero for normal boot mode\n> + */\n>  .globl _back_to_bootrom_s\n>  ENTRY(_back_to_bootrom_s)\n> -       ldr     r0, =SAVE_SP_ADDR\n> -       ldr     sp, [r0]\n> -       mov     r0, #0\n> +       ldr     r1, =SAVE_SP_ADDR\n> +       ldr     sp, [r1]\n>         pop     {r1-r12, pc}\n>  ENDPROC(_back_to_bootrom_s)\n>  #endif\n> --\n> 2.7.4\n>\n>\n\nRegards,\nSimon","headers":{"Return-Path":"<u-boot-bounces@lists.denx.de>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=lists.denx.de\n\t(client-ip=81.169.180.215; helo=lists.denx.de;\n\tenvelope-from=u-boot-bounces@lists.denx.de;\n\treceiver=<UNKNOWN>)","ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=google.com header.i=@google.com\n\theader.b=\"rxE7E7Io\"; \n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=chromium.org header.i=@chromium.org\n\theader.b=\"ObXcGvTh\"; dkim-atps=neutral"],"Received":["from lists.denx.de (dione.denx.de [81.169.180.215])\n\tby ozlabs.org (Postfix) with ESMTP id 3xsTdZ0759z9sNV\n\tfor <incoming@patchwork.ozlabs.org>;\n\tWed, 13 Sep 2017 14:46:25 +1000 (AEST)","by lists.denx.de (Postfix, from userid 105)\n\tid 901CEC2253D; Wed, 13 Sep 2017 04:34:46 +0000 (UTC)","from lists.denx.de (localhost [IPv6:::1])\n\tby lists.denx.de (Postfix) with ESMTP id 9087EC224CF;\n\tWed, 13 Sep 2017 04:32:30 +0000 (UTC)","by lists.denx.de (Postfix, from userid 105)\n\tid 03247C224CF; Wed, 13 Sep 2017 04:27:01 +0000 (UTC)","from mail-qt0-f181.google.com (mail-qt0-f181.google.com\n\t[209.85.216.181])\n\tby lists.denx.de (Postfix) with ESMTPS id A1A8AC22352\n\tfor <u-boot@lists.denx.de>; Wed, 13 Sep 2017 04:26:57 +0000 (UTC)","by mail-qt0-f181.google.com with SMTP id m35so29979098qte.1\n\tfor <u-boot@lists.denx.de>; Tue, 12 Sep 2017 21:26:57 -0700 (PDT)","by 10.200.37.200 with HTTP; Tue, 12 Sep 2017 21:26:35 -0700 (PDT)"],"X-Spam-Checker-Version":"SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de","X-Spam-Level":"","X-Spam-Status":"No, score=-0.7 required=5.0 tests=RCVD_IN_DNSWL_LOW,\n\tRCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,\n\tT_DKIM_INVALID autolearn=unavailable\n\tautolearn_force=no version=3.4.0","DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;\n\ts=20161025; \n\th=mime-version:sender:in-reply-to:references:from:date:message-id\n\t:subject:to:cc;\n\tbh=nHc6XD4BsnyPCx2i91FVYS/bsIpkvk8DkChix5u6xus=;\n\tb=rxE7E7IoR1UBUTUndDUSmq1r98wacfeTDXq61fqzDfvmCmmL6UE+ljTDpqFLlMnyXH\n\t438S8B1ABGkiNHEZ7zrjFFllLT6nrLPidNXxjR/GgJ4zWVo80LxZlIGf+lZxeSrvqubG\n\t8kw5kxyq4i5+BT6MoHndAbj5SFwW9vPXJif97apv1AjMmZmJrMNizR8Z/hjHXOH0hg3n\n\t2ZUYufPp6a4SnNO/zR8WKWP+A4SOLYkFyXeAP4ySpt6gd+XDE8rjoaejghx/8i/YAn9W\n\tosDpwsJg2v7KjOmSlVKp0ZRbp+ue07YJX9nSYU2P7j56QUi3NIvl1QztZzUhy6yZA+rK\n\tBFyA==","v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org;\n\ts=google; \n\th=mime-version:sender:in-reply-to:references:from:date:message-id\n\t:subject:to:cc;\n\tbh=nHc6XD4BsnyPCx2i91FVYS/bsIpkvk8DkChix5u6xus=;\n\tb=ObXcGvThWSmG+7Sdl2nCxW2TS5poKRQmHeBGFeXH1Get3tVFpNUVvFYLavlG93g5Iu\n\tUw5r+jBmQLszm+H7K0DELjwqIsytXc9zCILdT6EFml0O+zkdhGl+qcJLnrEMkAc9ZoSO\n\tHvfCxa5x7mqcgAlxsOim1m3kGq7B9/2qK1mNg="],"X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:mime-version:sender:in-reply-to:references:from\n\t:date:message-id:subject:to:cc;\n\tbh=nHc6XD4BsnyPCx2i91FVYS/bsIpkvk8DkChix5u6xus=;\n\tb=rvlYEf2CnxDHqh8CI6seL7JNo61bL4Z+/EPWXzE4MAxandeqxTOe8OPUyDvtPzgev5\n\tjvvCp7G/CTtAsJQfieEFXp89suWmI6tdGKSutWCQh2jJJ08AhATupfSqNx2Vzfx+mHbZ\n\taslXm9/xOlwZMD0PtFRSuYQyi1GP2Kaokej5ccrCI0bWHHEeucQ7naV2ck/yM4h63Lvu\n\tifERobuDM0OEknyQfkWLMzr0CLSm5+4lxqQQ+5VKY0s0mmhDWp7h674o0Jbxv2Jhj9zZ\n\taNZTSw9GxavCKDP3VJEfjI2Ym6wjT4hPNMpdr9bYUdLBC7+oaz5snWKY6H26aW4spp1u\n\tPHzA==","X-Gm-Message-State":"AHPjjUhVDQh82z/+Alm5XYQ1QLzBmyvlQwzFGqMXMUoqUu67+k0ZB2q3\n\twTWMe54vCQO5SOx6ftFk01O1uee9I8nulkPU1uV2Nw==","X-Google-Smtp-Source":"AOwi7QDpy3/hOkDguTA/bslVXgS2gneV9ZIRB4nSPZBDCaiH3z6pC5yx1S++9ZYMKRdoe/gOWIUzX61axnCpLSQULGI=","X-Received":"by 10.200.23.252 with SMTP id r57mr25504076qtk.76.1505276816296; \n\tTue, 12 Sep 2017 21:26:56 -0700 (PDT)","MIME-Version":"1.0","In-Reply-To":"<1505224679-30046-1-git-send-email-andy.yan@rock-chips.com>","References":"<1505224549-29936-1-git-send-email-andy.yan@rock-chips.com>\n\t<1505224679-30046-1-git-send-email-andy.yan@rock-chips.com>","From":"Simon Glass <sjg@chromium.org>","Date":"Tue, 12 Sep 2017 22:26:35 -0600","X-Google-Sender-Auth":"4ADBU97UQSJQ_cxhMl8aj3zsgV4","Message-ID":"<CAPnjgZ2jJuYrK3Ow3omGRKep=10rYt9sBueOcGHY28dDwGAzBQ@mail.gmail.com>","To":"Andy Yan <andy.yan@rock-chips.com>","Cc":"U-Boot Mailing List <u-boot@lists.denx.de>","Subject":"Re: [U-Boot] [PATCH 2/3] rockchip: add support for backing to\n\tbootrom download mode","X-BeenThere":"u-boot@lists.denx.de","X-Mailman-Version":"2.1.18","Precedence":"list","List-Id":"U-Boot discussion <u-boot.lists.denx.de>","List-Unsubscribe":"<https://lists.denx.de/options/u-boot>,\n\t<mailto:u-boot-request@lists.denx.de?subject=unsubscribe>","List-Archive":"<http://lists.denx.de/pipermail/u-boot/>","List-Post":"<mailto:u-boot@lists.denx.de>","List-Help":"<mailto:u-boot-request@lists.denx.de?subject=help>","List-Subscribe":"<https://lists.denx.de/listinfo/u-boot>,\n\t<mailto:u-boot-request@lists.denx.de?subject=subscribe>","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"base64","Errors-To":"u-boot-bounces@lists.denx.de","Sender":"\"U-Boot\" <u-boot-bounces@lists.denx.de>"}}]