{"id":812859,"url":"http://patchwork.ozlabs.org/api/patches/812859/?format=json","web_url":"http://patchwork.ozlabs.org/project/uboot/patch/1505224679-30046-1-git-send-email-andy.yan@rock-chips.com/","project":{"id":18,"url":"http://patchwork.ozlabs.org/api/projects/18/?format=json","name":"U-Boot","link_name":"uboot","list_id":"u-boot.lists.denx.de","list_email":"u-boot@lists.denx.de","web_url":null,"scm_url":null,"webscm_url":null,"list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<1505224679-30046-1-git-send-email-andy.yan@rock-chips.com>","list_archive_url":null,"date":"2017-09-12T13:57:59","name":"[U-Boot,2/3] rockchip: add support for backing to bootrom download mode","commit_ref":null,"pull_url":null,"state":"superseded","archived":false,"hash":"963660cf26392e5810df7def6be82845da49e198","submitter":{"id":65124,"url":"http://patchwork.ozlabs.org/api/people/65124/?format=json","name":"Andy Yan","email":"andy.yan@rock-chips.com"},"delegate":{"id":69486,"url":"http://patchwork.ozlabs.org/api/users/69486/?format=json","username":"ptomsich","first_name":"Philipp","last_name":"Tomsich","email":"philipp.tomsich@theobroma-systems.com"},"mbox":"http://patchwork.ozlabs.org/project/uboot/patch/1505224679-30046-1-git-send-email-andy.yan@rock-chips.com/mbox/","series":[{"id":2709,"url":"http://patchwork.ozlabs.org/api/series/2709/?format=json","web_url":"http://patchwork.ozlabs.org/project/uboot/list/?series=2709","date":"2017-09-12T13:55:49","name":"support enter download mode on rockchip platform","version":1,"mbox":"http://patchwork.ozlabs.org/series/2709/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/812859/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/812859/checks/","tags":{},"related":[],"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>)","Received":["from lists.denx.de (dione.denx.de [81.169.180.215])\n\tby ozlabs.org (Postfix) with ESMTP id 3xs5yQ62GZz9s7B\n\tfor <incoming@patchwork.ozlabs.org>;\n\tTue, 12 Sep 2017 23:59:42 +1000 (AEST)","by lists.denx.de (Postfix, from userid 105)\n\tid 58E38C22226; Tue, 12 Sep 2017 13:59:39 +0000 (UTC)","from lists.denx.de (localhost [IPv6:::1])\n\tby lists.denx.de (Postfix) with ESMTP id C0D32C22174;\n\tTue, 12 Sep 2017 13:59:35 +0000 (UTC)","by lists.denx.de (Postfix, from userid 105)\n\tid B69ECC221E9; Tue, 12 Sep 2017 13:58:11 +0000 (UTC)","from regular1.263xmail.com (regular1.263xmail.com [211.150.99.139])\n\tby lists.denx.de (Postfix) with ESMTPS id 438A2C221DA\n\tfor <u-boot@lists.denx.de>; Tue, 12 Sep 2017 13:58:10 +0000 (UTC)","from andy.yan?rock-chips.com (unknown [192.168.167.192])\n\tby regular1.263xmail.com (Postfix) with ESMTP id AB0A35523\n\tfor <u-boot@lists.denx.de>; Tue, 12 Sep 2017 21:58:03 +0800 (CST)","from localhost.localdomain (localhost [127.0.0.1])\n\tby smtp.263.net (Postfix) with ESMTPA id CA71339E;\n\tTue, 12 Sep 2017 21:58:04 +0800 (CST)","from localhost.localdomain (unknown [58.22.7.114])\n\tby smtp.263.net (Postfix) whith ESMTP id 1931LQ241F;\n\tTue, 12 Sep 2017 21:58:05 +0800 (CST)"],"X-Spam-Checker-Version":"SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de","X-Spam-Level":"","X-Spam-Status":"No, score=0.6 required=5.0 tests=RCVD_IN_DNSWL_NONE,\n\tRCVD_IN_SORBS_WEB autolearn=no autolearn_force=no version=3.4.0","X-263anti-spam":"KSV:0;","X-MAIL-GRAY":"0","X-MAIL-DELIVERY":"1","X-KSVirus-check":"0","X-ABS-CHECKED":"4","X-RL-SENDER":"andy.yan@rock-chips.com","X-FST-TO":"philipp.tomsich@theobroma-systems.com","X-SENDER-IP":"58.22.7.114","X-LOGIN-NAME":"andy.yan@rock-chips.com","X-UNIQUE-TAG":"<f1971459af1cf70beef901c7a4c73b99>","X-ATTACHMENT-NUM":"0","X-SENDER":"yxj@rock-chips.com","X-DNS-TYPE":"0","From":"Andy Yan <andy.yan@rock-chips.com>","To":"philipp.tomsich@theobroma-systems.com,\n\tsjg@chromium.org","Date":"Tue, 12 Sep 2017 21:57:59 +0800","Message-Id":"<1505224679-30046-1-git-send-email-andy.yan@rock-chips.com>","X-Mailer":"git-send-email 2.7.4","In-Reply-To":"<1505224549-29936-1-git-send-email-andy.yan@rock-chips.com>","References":"<1505224549-29936-1-git-send-email-andy.yan@rock-chips.com>","Cc":"u-boot@lists.denx.de, Andy Yan <andy.yan@rock-chips.com>","Subject":"[U-Boot] [PATCH 2/3] rockchip: add support for backing to bootrom\n\tdownload 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>","MIME-Version":"1.0","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>"},"content":"Rockchip bootrom will enter download mode if it returns from\nspl/tpl with a none-zero value and couldn't find a valid image\nin the backup partition.\nThis patch provide a method to instruct the system to back to\nbootrom download mode by checking the BROM_DOWNLOAD_FLAG register.\nAs the bootrom download function relys on some modules such as\ninterrupts, so we need to back to bootrom as early as possbile\nbefore the tpl/tps code override the interrupt settings.\n\nSigned-off-by: Andy Yan <andy.yan@rock-chips.com>\nReviewed-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(-)","diff":"diff --git a/arch/arm/include/asm/arch-rockchip/boot_mode.h b/arch/arm/include/asm/arch-rockchip/boot_mode.h\nindex 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\t\t(REBOOT_FLAG + 11)\n /* enter usb mass storage mode */\n #define BOOT_UMS\t\t(REBOOT_FLAG + 12)\n+/* enter bootrom download mode */\n+#define BOOT_BROM_DOWNLOAD\t0xEF08A53C\n \n+#ifndef __ASSEMBLY__\n int setup_boot_mode(void);\n+#endif\n \n #endif\ndiff --git a/arch/arm/include/asm/arch-rockchip/bootrom.h b/arch/arm/include/asm/arch-rockchip/bootrom.h\nindex 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 \n #endif\ndiff --git a/arch/arm/mach-rockchip/Kconfig b/arch/arm/mach-rockchip/Kconfig\nindex 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 \tselect SPL_SERIAL_SUPPORT\n \tselect SPL_DRIVERS_MISC_SUPPORT\n \tselect ENABLE_ARM_SOC_BOOT0_HOOK\n+\tselect ROCKCHIP_BROM_HELPER\n \tselect DEBUG_UART_BOARD_INIT\n \tselect BOARD_LATE_INIT\n \thelp\ndiff --git a/arch/arm/mach-rockchip/bootrom.c b/arch/arm/mach-rockchip/bootrom.c\nindex 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 \tputs(\"Returning to boot ROM...\\n\");\n #endif\n-\t_back_to_bootrom_s();\n+\t_back_to_bootrom_s(0);\n }\ndiff --git a/arch/arm/mach-rockchip/save_boot_param.S b/arch/arm/mach-rockchip/save_boot_param.S\nindex 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\tSAVE_SP_ADDR\n SAVE_SP_ADDR:\n \t.quad 0\n \n+ENTRY(check_back_to_brom_dnl_flag)\n+\tldr\tx8, =CONFIG_ROCKCHIP_BOOT_MODE_REG\n+\tldr\tx9, [x8]\n+\tldr\tx0, =BOOT_BROM_DOWNLOAD\n+\tcmp\tx9, x0\n+\tb.ne\tsave_boot_params_ret\n+\tmov\tx9, xzr\n+\tstr\tx9, [x8]\t/* clear flag */\n+\tmov\tx0, #1          /* indicate the bootrom to enter download mode */\n+\tb\t_back_to_bootrom_s\n+ENDPROC(check_back_to_brom_dnl_flag)\n+\n ENTRY(save_boot_params)\n \tsub\tsp, sp, #0x60\n \tstp\tx29, x30, [sp, #0x50]\n@@ -23,14 +36,22 @@ ENTRY(save_boot_params)\n \tldr\tx8, =SAVE_SP_ADDR\n \tmov\tx9, sp\n \tstr\tx9, [x8]\n+#if CONFIG_ROCKCHIP_BOOT_MODE_REG\n+\tb\tcheck_back_to_brom_dnl_flag\n+#else\n \tb\tsave_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-\tldr\tx0, =SAVE_SP_ADDR\n-\tldr\tx0, [x0]\n-\tmov\tsp, x0\n+\tldr\tx1, =SAVE_SP_ADDR\n+\tldr\tx1, [x1]\n+\tmov\tsp, x1\n \tldp\tx29, x30, [sp, #0x50]\n \tldp\tx27, x28, [sp, #0x40]\n \tldp\tx25, x26, [sp, #0x30]\n@@ -38,7 +59,6 @@ ENTRY(_back_to_bootrom_s)\n \tldp\tx21, x22, [sp, #0x10]\n \tldp\tx19, x20, [sp]\n \tadd\tsp, sp, #0x60\n-\tmov\tx0, xzr\n \tret\n ENDPROC(_back_to_bootrom_s)\n #else\n@@ -46,6 +66,18 @@ ENDPROC(_back_to_bootrom_s)\n SAVE_SP_ADDR:\n \t.word 0\n \n+ENTRY(check_back_to_brom_dnl_flag)\n+\tldr\tr0, =CONFIG_ROCKCHIP_BOOT_MODE_REG\n+\tldr\tr1, [r0]\n+\tldr\tr2, =BOOT_BROM_DOWNLOAD\n+\tcmp\tr1, r2\n+\tbne\tsave_boot_params_ret\n+\tmov\tr3, #0\n+\tstr\tr3, [r0]        @clear flag\n+\tmov\tr0, #1          @indicate the bootrom to enter download mode\n+\tb\t_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 \tpush\t{r1-r12, lr}\n \tldr\tr0, =SAVE_SP_ADDR\n \tstr\tsp, [r0]\n-\tb\tsave_boot_params_ret\t\t@ back to my caller\n+#if CONFIG_ROCKCHIP_BOOT_MODE_REG\n+\tb\tcheck_back_to_brom_dnl_flag\n+#else\n+\tb       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-\tldr\tr0, =SAVE_SP_ADDR\n-\tldr\tsp, [r0]\n-\tmov\tr0, #0\n+\tldr\tr1, =SAVE_SP_ADDR\n+\tldr\tsp, [r1]\n \tpop\t{r1-r12, pc}\n ENDPROC(_back_to_bootrom_s)\n #endif\n","prefixes":["U-Boot","2/3"]}