From patchwork Tue Mar 31 22:35:08 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Pali_Roh=C3=A1r?= X-Patchwork-Id: 237063 List-Id: U-Boot discussion From: pali at kernel.org (=?UTF-8?q?Pali=20Roh=C3=A1r?=) Date: Wed, 1 Apr 2020 00:35:08 +0200 Subject: [PATCH 01/11] Nokia RX-51: Update my email address In-Reply-To: <20200331223518.10936-1-pali@kernel.org> References: <20200331223518.10936-1-pali@kernel.org> Message-ID: <20200331223518.10936-2-pali@kernel.org> I'm using a new email address, so reflect this state also in U-Boot. Signed-off-by: Pali Roh?r --- board/nokia/rx51/MAINTAINERS | 2 +- board/nokia/rx51/lowlevel_init.S | 2 +- board/nokia/rx51/rx51.c | 2 +- board/nokia/rx51/rx51.h | 2 +- board/nokia/rx51/tag_omap.h | 4 ++-- cmd/bootmenu.c | 2 +- doc/README.bootmenu | 2 +- include/ansi.h | 2 +- include/configs/nokia_rx51.h | 2 +- 9 files changed, 10 insertions(+), 10 deletions(-) diff --git a/board/nokia/rx51/MAINTAINERS b/board/nokia/rx51/MAINTAINERS index 8bdddc1d83..4cf3dcce2e 100644 --- a/board/nokia/rx51/MAINTAINERS +++ b/board/nokia/rx51/MAINTAINERS @@ -1,5 +1,5 @@ RX51 BOARD -M: Pali Roh?r +M: Pali Roh?r S: Maintained F: board/nokia/rx51/ F: include/configs/nokia_rx51.h diff --git a/board/nokia/rx51/lowlevel_init.S b/board/nokia/rx51/lowlevel_init.S index 6871a5a74f..7b1e50d9bc 100644 --- a/board/nokia/rx51/lowlevel_init.S +++ b/board/nokia/rx51/lowlevel_init.S @@ -1,7 +1,7 @@ /* SPDX-License-Identifier: GPL-2.0+ */ /* * (C) Copyright 2011-2012 - * Pali Roh?r + * Pali Roh?r */ #include diff --git a/board/nokia/rx51/rx51.c b/board/nokia/rx51/rx51.c index 71ca79deab..80a0fc2696 100644 --- a/board/nokia/rx51/rx51.c +++ b/board/nokia/rx51/rx51.c @@ -4,7 +4,7 @@ * ?????? ???????? * * (C) Copyright 2011-2012 - * Pali Roh?r + * Pali Roh?r * * (C) Copyright 2010 * Alistair Buxton diff --git a/board/nokia/rx51/rx51.h b/board/nokia/rx51/rx51.h index fc336ee819..fa1b42bf21 100644 --- a/board/nokia/rx51/rx51.h +++ b/board/nokia/rx51/rx51.h @@ -4,7 +4,7 @@ * ?????? ???????? * * (C) Copyright 2011-2012 - * Pali Roh?r + * Pali Roh?r * * (C) Copyright 2008 * Dirk Behme diff --git a/board/nokia/rx51/tag_omap.h b/board/nokia/rx51/tag_omap.h index c445aafde0..b99d6b7de1 100644 --- a/board/nokia/rx51/tag_omap.h +++ b/board/nokia/rx51/tag_omap.h @@ -1,7 +1,7 @@ /* SPDX-License-Identifier: GPL-2.0+ */ /* * (C) Copyright 2011-2012 - * Pali Roh?r + * Pali Roh?r * * (C) Copyright 2011 * marcel at mesa.nl, Mesa Consulting B.V. @@ -182,7 +182,7 @@ struct omap_em_asic_bb5_config { * processing omap tag structures * * Copyright (C) 2011 marcel at mesa.nl, Mesa Consulting B.V. - * Copyright (C) 2012 Pali Roh?r + * Copyright (C) 2012 Pali Roh?r */ /* TI OMAP specific information */ diff --git a/cmd/bootmenu.c b/cmd/bootmenu.c index 3dc2c854ac..2f20bb88f3 100644 --- a/cmd/bootmenu.c +++ b/cmd/bootmenu.c @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0+ /* - * (C) Copyright 2011-2013 Pali Roh?r + * (C) Copyright 2011-2013 Pali Roh?r */ #include diff --git a/doc/README.bootmenu b/doc/README.bootmenu index ca5099089e..9ff89f2e55 100644 --- a/doc/README.bootmenu +++ b/doc/README.bootmenu @@ -1,6 +1,6 @@ SPDX-License-Identifier: GPL-2.0+ /* - * (C) Copyright 2011-2012 Pali Roh?r + * (C) Copyright 2011-2012 Pali Roh?r */ ANSI terminal bootmenu command diff --git a/include/ansi.h b/include/ansi.h index e90a697eaf..af1a3712c8 100644 --- a/include/ansi.h +++ b/include/ansi.h @@ -1,7 +1,7 @@ /* SPDX-License-Identifier: GPL-2.0+ */ /* * (C) Copyright 2012 - * Pali Roh?r + * Pali Roh?r */ /* diff --git a/include/configs/nokia_rx51.h b/include/configs/nokia_rx51.h index fd755bbcea..d2cafb0a8b 100644 --- a/include/configs/nokia_rx51.h +++ b/include/configs/nokia_rx51.h @@ -1,7 +1,7 @@ /* SPDX-License-Identifier: GPL-2.0+ */ /* * (C) Copyright 2011-2012 - * Pali Roh?r + * Pali Roh?r * * (C) Copyright 2010 * Alistair Buxton From patchwork Tue Mar 31 22:35:09 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Pali_Roh=C3=A1r?= X-Patchwork-Id: 237057 List-Id: U-Boot discussion From: pali at kernel.org (=?UTF-8?q?Pali=20Roh=C3=A1r?=) Date: Wed, 1 Apr 2020 00:35:09 +0200 Subject: [PATCH 02/11] Nokia RX-51: Add README.nokia_rx51 file to MAINTAINERS In-Reply-To: <20200331223518.10936-1-pali@kernel.org> References: <20200331223518.10936-1-pali@kernel.org> Message-ID: <20200331223518.10936-3-pali@kernel.org> This entry was missing in MAINTAINERS file. Signed-off-by: Pali Roh?r --- board/nokia/rx51/MAINTAINERS | 1 + 1 file changed, 1 insertion(+) diff --git a/board/nokia/rx51/MAINTAINERS b/board/nokia/rx51/MAINTAINERS index 4cf3dcce2e..f2a712620b 100644 --- a/board/nokia/rx51/MAINTAINERS +++ b/board/nokia/rx51/MAINTAINERS @@ -4,3 +4,4 @@ S: Maintained F: board/nokia/rx51/ F: include/configs/nokia_rx51.h F: configs/nokia_rx51_defconfig +F: doc/README.nokia_rx51 From patchwork Tue Mar 31 22:35:10 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Pali_Roh=C3=A1r?= X-Patchwork-Id: 237058 List-Id: U-Boot discussion From: pali at kernel.org (=?UTF-8?q?Pali=20Roh=C3=A1r?=) Date: Wed, 1 Apr 2020 00:35:10 +0200 Subject: [PATCH 03/11] Nokia RX-51: Move comment about CONFIG_SYS_TEXT_BASE to correct place In-Reply-To: <20200331223518.10936-1-pali@kernel.org> References: <20200331223518.10936-1-pali@kernel.org> Message-ID: <20200331223518.10936-4-pali@kernel.org> In commit commit 278b90ce786f ("configs: Migrate CONFIG_SYS_TEXT_BASE") was moved definition for CONFIG_SYS_TEXT_BASE option but author probably forgot to move also comment for lines which are moving. So do it now! Signed-off-by: Pali Roh?r --- board/nokia/rx51/lowlevel_init.S | 9 ++++++++- include/configs/nokia_rx51.h | 6 ------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/board/nokia/rx51/lowlevel_init.S b/board/nokia/rx51/lowlevel_init.S index 7b1e50d9bc..1466d976fc 100644 --- a/board/nokia/rx51/lowlevel_init.S +++ b/board/nokia/rx51/lowlevel_init.S @@ -155,7 +155,14 @@ copy_code_end: mov pc, r2 -/* Copy u-boot to address CONFIG_SYS_TEXT_BASE */ +/* + * Copy u-boot to address CONFIG_SYS_TEXT_BASE + * + * Nokia X-Loader loading secondary image to address 0x80400000 + * NOLO loading boot image to random place, so it doesn't really + * matter what is set in CONFIG_SYS_TEXT_BASE. We have to copy + * u-boot to CONFIG_SYS_TEXT_BASE address. + */ copy_uboot_start: /* r0 - start of u-boot before */ diff --git a/include/configs/nokia_rx51.h b/include/configs/nokia_rx51.h index d2cafb0a8b..858951ccf2 100644 --- a/include/configs/nokia_rx51.h +++ b/include/configs/nokia_rx51.h @@ -25,12 +25,6 @@ #define CONFIG_MACH_TYPE MACH_TYPE_NOKIA_RX51 -/* - * Nokia X-Loader loading secondary image to address 0x80400000 - * NOLO loading boot image to random place, so it doesn't really - * matter what we set this to. We have to copy u-boot to this address - */ - #include /* get chip and board defs */ #include #include From patchwork Tue Mar 31 22:35:11 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Pali_Roh=C3=A1r?= X-Patchwork-Id: 237061 List-Id: U-Boot discussion From: pali at kernel.org (=?UTF-8?q?Pali=20Roh=C3=A1r?=) Date: Wed, 1 Apr 2020 00:35:11 +0200 Subject: [PATCH 04/11] Nokia RX-51: Move code from defconfig back to C header file In-Reply-To: <20200331223518.10936-1-pali@kernel.org> References: <20200331223518.10936-1-pali@kernel.org> Message-ID: <20200331223518.10936-5-pali@kernel.org> In commit commit 37304aaf60bf ("Convert CONFIG_USE_PREBOOT and CONFIG_PREBOOT to Kconfig") was moved complicated multiline script code from C header to oneliner in defconfig. After this change multiline to wide oneliner it is hard to read this code and even harder to debug. Moreover this script code should be at place where are other scripts, so move it back to C header file. Define new env variable preboot which stores this script and in option CONFIG_PREBOOT calls this preboot variable. Signed-off-by: Pali Roh?r --- configs/nokia_rx51_defconfig | 2 +- include/configs/nokia_rx51.h | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/configs/nokia_rx51_defconfig b/configs/nokia_rx51_defconfig index f9e5b0e123..5ba9768d02 100644 --- a/configs/nokia_rx51_defconfig +++ b/configs/nokia_rx51_defconfig @@ -6,7 +6,7 @@ CONFIG_TARGET_NOKIA_RX51=y CONFIG_NR_DRAM_BANKS=2 CONFIG_BOOTDELAY=30 CONFIG_USE_PREBOOT=y -CONFIG_PREBOOT="setenv mmcnum 1; setenv mmcpart 1;setenv mmcscriptfile bootmenu.scr;if run switchmmc; then setenv mmcdone true;setenv mmctype fat;if run scriptload; then true; else setenv mmctype ext2;if run scriptload; then true; else setenv mmctype ext4;if run scriptload; then true; else setenv mmcdone false;fi;fi;fi;if ${mmcdone}; then run scriptboot;fi;fi;if run slide; then true; else setenv bootmenu_delay 0;setenv bootdelay 0;fi" +CONFIG_PREBOOT="run preboot" # CONFIG_CONSOLE_MUX is not set CONFIG_SYS_CONSOLE_IS_IN_ENV=y CONFIG_HUSH_PARSER=y diff --git a/include/configs/nokia_rx51.h b/include/configs/nokia_rx51.h index 858951ccf2..57bcbbaae1 100644 --- a/include/configs/nokia_rx51.h +++ b/include/configs/nokia_rx51.h @@ -239,6 +239,28 @@ int rx51_kp_getc(struct stdio_dev *sdev); "fi\0" \ "emmcboot=setenv mmcnum 1; run trymmcboot\0" \ "sdboot=setenv mmcnum 0; run trymmcboot\0" \ + "preboot=setenv mmcnum 1; setenv mmcpart 1;" \ + "setenv mmcscriptfile bootmenu.scr;" \ + "if run switchmmc; then " \ + "setenv mmcdone true;" \ + "setenv mmctype fat;" \ + "if run scriptload; then true; else " \ + "setenv mmctype ext2;" \ + "if run scriptload; then true; else " \ + "setenv mmctype ext4;" \ + "if run scriptload; then true; else " \ + "setenv mmcdone false;" \ + "fi;" \ + "fi;" \ + "fi;" \ + "if ${mmcdone}; then " \ + "run scriptboot;" \ + "fi;" \ + "fi;" \ + "if run slide; then true; else " \ + "setenv bootmenu_delay 0;" \ + "setenv bootdelay 0;" \ + "fi\0" \ "menucmd=bootmenu\0" \ "bootmenu_0=Attached kernel=run attachboot\0" \ "bootmenu_1=Internal eMMC=run emmcboot\0" \ From patchwork Tue Mar 31 22:35:12 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Pali_Roh=C3=A1r?= X-Patchwork-Id: 237060 List-Id: U-Boot discussion From: pali at kernel.org (=?UTF-8?q?Pali=20Roh=C3=A1r?=) Date: Wed, 1 Apr 2020 00:35:12 +0200 Subject: [PATCH 05/11] Nokia RX-51: Revert back onenand defitions In-Reply-To: <20200331223518.10936-1-pali@kernel.org> References: <20200331223518.10936-1-pali@kernel.org> Message-ID: <20200331223518.10936-6-pali@kernel.org> In commit commit 43ede0bca7fc ("Kconfig: Migrate MTDIDS_DEFAULT / MTDPARTS_DEFAULT") were removed definitions for onenand partitions. Revert them back and enable needed options for onenand support. Signed-off-by: Pali Roh?r --- configs/nokia_rx51_defconfig | 7 +++++++ include/configs/nokia_rx51.h | 10 ---------- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/configs/nokia_rx51_defconfig b/configs/nokia_rx51_defconfig index 5ba9768d02..13bb6d07b7 100644 --- a/configs/nokia_rx51_defconfig +++ b/configs/nokia_rx51_defconfig @@ -39,3 +39,10 @@ CONFIG_TWL4030_USB=y CONFIG_VIDEO=y CONFIG_CFB_CONSOLE_ANSI=y # CONFIG_VGA_AS_SINGLE_DEVICE is not set +CONFIG_MTD=y +CONFIG_MTDIDS_DEFAULT="onenand0=onenand" +CONFIG_MTDPARTS_DEFAULT="mtdparts=onenand:128k(bootloader)ro,384k(config),256k(log),2m(kernel),2m(initfs),-(rootfs)" +CONFIG_MTD_PARTITIONS=y +# CONFIG_MTD_RAW_NAND is not set +CONFIG_CMD_MTD=y +CONFIG_CMD_ONENAND=y diff --git a/include/configs/nokia_rx51.h b/include/configs/nokia_rx51.h index 57bcbbaae1..cfc4d0c1e5 100644 --- a/include/configs/nokia_rx51.h +++ b/include/configs/nokia_rx51.h @@ -133,12 +133,8 @@ #define PART6_OFFS 0x004c0000 #define PART6_MASK 0x00000000 -#ifdef ONENAND_SUPPORT - #define CONFIG_SYS_ONENAND_BASE ONENAND_MAP -#endif - /* Watchdog support */ #define CONFIG_HW_WATCHDOG @@ -163,13 +159,7 @@ int rx51_kp_getc(struct stdio_dev *sdev); #endif /* Environment information */ -#ifdef CONFIG_MTDPARTS_DEFAULT -#define MTDPARTS "mtdparts=" CONFIG_MTDPARTS_DEFAULT "\0" -#else -#define MTDPARTS -#endif #define CONFIG_EXTRA_ENV_SETTINGS \ - MTDPARTS \ "usbtty=cdc_acm\0" \ "stdin=vga\0" \ "stdout=vga\0" \ From patchwork Tue Mar 31 22:35:13 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Pali_Roh=C3=A1r?= X-Patchwork-Id: 237066 List-Id: U-Boot discussion From: pali at kernel.org (=?UTF-8?q?Pali=20Roh=C3=A1r?=) Date: Wed, 1 Apr 2020 00:35:13 +0200 Subject: [PATCH 06/11] Nokia RX-51: Remove PART* macros In-Reply-To: <20200331223518.10936-1-pali@kernel.org> References: <20200331223518.10936-1-pali@kernel.org> Message-ID: <20200331223518.10936-7-pali@kernel.org> Now when code for defining partitions is duplicated at two locations (option CONFIG_MTDPARTS_DEFAULT in nokia_rx51_defconfig file and macro OMAP_TAG_PARTITION_CONFIG in rx51.c file) there is no need to have common macros. Lets inline PART* macros to rx51.c file. Signed-off-by: Pali Roh?r --- board/nokia/rx51/rx51.c | 18 ++++++---------- include/configs/nokia_rx51.h | 42 ------------------------------------ 2 files changed, 6 insertions(+), 54 deletions(-) diff --git a/board/nokia/rx51/rx51.c b/board/nokia/rx51/rx51.c index 80a0fc2696..c8ef26f940 100644 --- a/board/nokia/rx51/rx51.c +++ b/board/nokia/rx51/rx51.c @@ -69,18 +69,12 @@ static struct tag_omap omap[] = { OMAP_TAG_GPIO_SWITCH_CONFIG("sleep_ind", 0xa2, 0x2, 0x2, 0x0), OMAP_TAG_GPIO_SWITCH_CONFIG("slide", GPIO_SLIDE, 0x0, 0x0, 0x0), OMAP_TAG_WLAN_CX3110X_CONFIG(0x25, 0xff, 87, 42, -1), - OMAP_TAG_PARTITION_CONFIG(PART1_NAME, PART1_SIZE * PART1_MULL, - PART1_OFFS, PART1_MASK), - OMAP_TAG_PARTITION_CONFIG(PART2_NAME, PART2_SIZE * PART2_MULL, - PART2_OFFS, PART2_MASK), - OMAP_TAG_PARTITION_CONFIG(PART3_NAME, PART3_SIZE * PART3_MULL, - PART3_OFFS, PART3_MASK), - OMAP_TAG_PARTITION_CONFIG(PART4_NAME, PART4_SIZE * PART4_MULL, - PART4_OFFS, PART4_MASK), - OMAP_TAG_PARTITION_CONFIG(PART5_NAME, PART5_SIZE * PART5_MULL, - PART5_OFFS, PART5_MASK), - OMAP_TAG_PARTITION_CONFIG(PART6_NAME, PART6_SIZE * PART6_MULL, - PART6_OFFS, PART6_MASK), + OMAP_TAG_PARTITION_CONFIG("bootloader", 128 * 1024, 0x00000000, 0x00000003), + OMAP_TAG_PARTITION_CONFIG("config", 384 * 1024, 0x00020000, 0x00000000), + OMAP_TAG_PARTITION_CONFIG("log", 256 * 1024, 0x00080000, 0x00000000), + OMAP_TAG_PARTITION_CONFIG("kernel", 2 * 1024*1024, 0x000c0000, 0x00000000), + OMAP_TAG_PARTITION_CONFIG("initfs", 2 * 1024*1024, 0x002c0000, 0x00000000), + OMAP_TAG_PARTITION_CONFIG("rootfs", 257280 * 1024, 0x004c0000, 0x00000000), OMAP_TAG_BOOT_REASON_CONFIG("pwr_key"), OMAP_TAG_VERSION_STR_CONFIG("product", "RX-51"), OMAP_TAG_VERSION_STR_CONFIG("hw-build", "2101"), diff --git a/include/configs/nokia_rx51.h b/include/configs/nokia_rx51.h index cfc4d0c1e5..a33b0a7ac8 100644 --- a/include/configs/nokia_rx51.h +++ b/include/configs/nokia_rx51.h @@ -91,48 +91,6 @@ * Board ONENAND Info. */ -#define PART1_NAME "bootloader" -#define PART1_SIZE 128 -#define PART1_MULL 1024 -#define PART1_SUFF "k" -#define PART1_OFFS 0x00000000 -#define PART1_MASK 0x00000003 - -#define PART2_NAME "config" -#define PART2_SIZE 384 -#define PART2_MULL 1024 -#define PART2_SUFF "k" -#define PART2_OFFS 0x00020000 -#define PART2_MASK 0x00000000 - -#define PART3_NAME "log" -#define PART3_SIZE 256 -#define PART3_MULL 1024 -#define PART3_SUFF "k" -#define PART3_OFFS 0x00080000 -#define PART3_MASK 0x00000000 - -#define PART4_NAME "kernel" -#define PART4_SIZE 2 -#define PART4_MULL 1024*1024 -#define PART4_SUFF "m" -#define PART4_OFFS 0x000c0000 -#define PART4_MASK 0x00000000 - -#define PART5_NAME "initfs" -#define PART5_SIZE 2 -#define PART5_MULL 1024*1024 -#define PART5_SUFF "m" -#define PART5_OFFS 0x002c0000 -#define PART5_MASK 0x00000000 - -#define PART6_NAME "rootfs" -#define PART6_SIZE 257280 -#define PART6_MULL 1024 -#define PART6_SUFF "k" -#define PART6_OFFS 0x004c0000 -#define PART6_MASK 0x00000000 - #define CONFIG_SYS_ONENAND_BASE ONENAND_MAP /* Watchdog support */ From patchwork Tue Mar 31 22:35:14 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Pali_Roh=C3=A1r?= X-Patchwork-Id: 237059 List-Id: U-Boot discussion From: pali at kernel.org (=?UTF-8?q?Pali=20Roh=C3=A1r?=) Date: Wed, 1 Apr 2020 00:35:14 +0200 Subject: [PATCH 07/11] Nokia RX-51: Remember setup_console_atag option In-Reply-To: <20200331223518.10936-1-pali@kernel.org> References: <20200331223518.10936-1-pali@kernel.org> Message-ID: <20200331223518.10936-8-pali@kernel.org> When variable setup_console_atag is unset then read default value from OMAP atags which passed NOLO bootloader to U-Boot. This would allow to boot Maemo Linux kernel from U-Boot with serial console settings configured in NOLO bootloader (which loads U-Boot). So serial console needs to be enabled only at one place, globally in NOLO. Signed-off-by: Pali Roh?r --- board/nokia/rx51/rx51.c | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/board/nokia/rx51/rx51.c b/board/nokia/rx51/rx51.c index c8ef26f940..a282fe68a6 100644 --- a/board/nokia/rx51/rx51.c +++ b/board/nokia/rx51/rx51.c @@ -87,6 +87,7 @@ static char *boot_reason_ptr; static char *hw_build_ptr; static char *nolo_version_ptr; static char *boot_mode_ptr; +static int serial_was_console_enabled; /* * Routine: init_omap_tags @@ -143,6 +144,13 @@ static void reuse_omap_atags(struct tag_omap *t) strcpy(boot_mode_ptr, version); } break; + case OMAP_TAG_UART: + if (!t->u.uart.enabled_uarts) + serial_was_console_enabled = 1; + break; + case OMAP_TAG_SERIAL_CONSOLE: + serial_was_console_enabled = 1; + break; default: break; } @@ -233,10 +241,17 @@ void setup_board_tags(struct tag **in_params) return; str = env_get("setup_console_atag"); - if (str && str[0] == '1') - setup_console_atag = 1; - else - setup_console_atag = 0; + if (str && str[0]) { + if (str[0] == '1') + setup_console_atag = 1; + else + setup_console_atag = 0; + } else { + if (serial_was_console_enabled) + setup_console_atag = 1; + else + setup_console_atag = 0; + } setup_boot_reason_atag = env_get("setup_boot_reason_atag"); setup_boot_mode_atag = env_get("setup_boot_mode_atag"); From patchwork Tue Mar 31 22:35:15 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Pali_Roh=C3=A1r?= X-Patchwork-Id: 237062 List-Id: U-Boot discussion From: pali at kernel.org (=?UTF-8?q?Pali=20Roh=C3=A1r?=) Date: Wed, 1 Apr 2020 00:35:15 +0200 Subject: [PATCH 08/11] Nokia RX-51: Enable CONFIG_CONSOLE_MUX In-Reply-To: <20200331223518.10936-1-pali@kernel.org> References: <20200331223518.10936-1-pali@kernel.org> Message-ID: <20200331223518.10936-9-pali@kernel.org> After this change both device display and serial console would contain U-Boto output automatically without any future configuration. This would allow easier debugging on real device as access to serial console is hard and also in qemu emulator where it is easier to copy+paste from serial console as from SDL framebuffer. Signed-off-by: Pali Roh?r Reviewed-by: Lokesh Vutla --- configs/nokia_rx51_defconfig | 2 +- include/configs/nokia_rx51.h | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/configs/nokia_rx51_defconfig b/configs/nokia_rx51_defconfig index 13bb6d07b7..fc92c3affc 100644 --- a/configs/nokia_rx51_defconfig +++ b/configs/nokia_rx51_defconfig @@ -7,7 +7,7 @@ CONFIG_NR_DRAM_BANKS=2 CONFIG_BOOTDELAY=30 CONFIG_USE_PREBOOT=y CONFIG_PREBOOT="run preboot" -# CONFIG_CONSOLE_MUX is not set +CONFIG_CONSOLE_MUX=y CONFIG_SYS_CONSOLE_IS_IN_ENV=y CONFIG_HUSH_PARSER=y CONFIG_SYS_PROMPT="Nokia RX-51 # " diff --git a/include/configs/nokia_rx51.h b/include/configs/nokia_rx51.h index a33b0a7ac8..4014dca54c 100644 --- a/include/configs/nokia_rx51.h +++ b/include/configs/nokia_rx51.h @@ -119,9 +119,9 @@ int rx51_kp_getc(struct stdio_dev *sdev); /* Environment information */ #define CONFIG_EXTRA_ENV_SETTINGS \ "usbtty=cdc_acm\0" \ - "stdin=vga\0" \ - "stdout=vga\0" \ - "stderr=vga\0" \ + "stdin=serial,vga\0" \ + "stdout=serial,vga\0" \ + "stderr=serial,vga\0" \ "setcon=setenv stdin ${con};" \ "setenv stdout ${con};" \ "setenv stderr ${con}\0" \ From patchwork Tue Mar 31 22:35:16 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Pali_Roh=C3=A1r?= X-Patchwork-Id: 237065 List-Id: U-Boot discussion From: pali at kernel.org (=?UTF-8?q?Pali=20Roh=C3=A1r?=) Date: Wed, 1 Apr 2020 00:35:16 +0200 Subject: [PATCH 09/11] Nokia RX-51: Disable some unused features to decrease size of u-boot binary In-Reply-To: <20200331223518.10936-1-pali@kernel.org> References: <20200331223518.10936-1-pali@kernel.org> Message-ID: <20200331223518.10936-10-pali@kernel.org> Maximal allowed size of U-Boot binary for Nokia N900 is just 262144 bytes. Signed-off-by: Pali Roh?r --- configs/nokia_rx51_defconfig | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/configs/nokia_rx51_defconfig b/configs/nokia_rx51_defconfig index fc92c3affc..41722725e6 100644 --- a/configs/nokia_rx51_defconfig +++ b/configs/nokia_rx51_defconfig @@ -26,6 +26,7 @@ CONFIG_CMD_FAT=y CONFIG_SYS_RELOC_GD_ENV_ADDR=y # CONFIG_NET is not set CONFIG_TWL4030_LED=y +# CONFIG_MMC_HW_PARTITIONING is not set CONFIG_MMC_OMAP_HS=y CONFIG_CONS_INDEX=3 CONFIG_SYS_NS16550=y @@ -46,3 +47,18 @@ CONFIG_MTD_PARTITIONS=y # CONFIG_MTD_RAW_NAND is not set CONFIG_CMD_MTD=y CONFIG_CMD_ONENAND=y +# CONFIG_BOOTM_NETBSD is not set +# CONFIG_BOOTM_PLAN9 is not set +# CONFIG_BOOTM_RTEMS is not set +# CONFIG_BOOTM_VXWORKS is not set +# CONFIG_GZIP is not set +# CONFIG_FIT is not set +# CONFIG_CMD_ELF is not set +# CONFIG_CMD_BDI is not set +# CONFIG_CMD_BOOTD is not set +# CONFIG_CMD_XIMG is not set +# CONFIG_CMD_EXPORTENV is not set +# CONFIG_CMD_IMPORTENV is not set +# CONFIG_CMD_EDITENV is not set +# CONFIG_CMD_ENV_EXISTS is not set +# CONFIG_CMD_FLASH is not set From patchwork Tue Mar 31 22:35:17 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Pali_Roh=C3=A1r?= X-Patchwork-Id: 237064 List-Id: U-Boot discussion From: pali at kernel.org (=?UTF-8?q?Pali=20Roh=C3=A1r?=) Date: Wed, 1 Apr 2020 00:35:17 +0200 Subject: [PATCH 10/11] Nokia RX-51: Update README.nokia_rx51 In-Reply-To: <20200331223518.10936-1-pali@kernel.org> References: <20200331223518.10936-1-pali@kernel.org> Message-ID: <20200331223518.10936-11-pali@kernel.org> Fix some typos, add information about setup_omap_atag, remove old suff about ONENAND_SUPPORT and update guide for UBIFS. Signed-off-by: Pali Roh?r --- doc/README.nokia_rx51 | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/doc/README.nokia_rx51 b/doc/README.nokia_rx51 index 586ed7c1cc..33c275b416 100644 --- a/doc/README.nokia_rx51 +++ b/doc/README.nokia_rx51 @@ -19,7 +19,7 @@ stored ATAGs (see boot order). There is support for hardware watchdog. Hardware watchdog is started by NOLO so u-boot must kick watchdog to prevent reboot device (but not very often, max every 2 seconds). There is also support for framebuffer display -output with ANSI espace codes and the N900 HW keyboard input. USB tty works +output with ANSI escape codes and the N900 HW keyboard input. USB tty works but is disabled because it prevents the current Maemo kernel from booting. When U-Boot is starting it enable IBE bit in Auxiliary Control Register, @@ -36,7 +36,7 @@ Boot from SD or eMMC in this order: * 1. * 1.1 find boot.scr on first fat partition - * 1.2 find uImage on first fat parition + * 1.2 find uImage on first fat partition * 1.3 same order for 2. - 4. fat partition * 2. same as 1. but for ext2/3 partition * 3. same as 1. but for ext4 partition @@ -62,21 +62,26 @@ Available additional commands/variables: * run trymmcscriptboot - Try to load and boot script ${mmcscriptfile} * run trymmckernboot - Try to load and boot kernel image ${mmckernfile} * run trymmckerninitrdboot - Try to load and boot kernel image ${mmckernfile} - with initrd image ${mmcinitrdfile} + with initrd image ${mmcinitrdfile} Additional variables for loading files from mmc: * mmc ${mmcnum} (0 - external, 1 - internal) * partition number ${mmcpart} (1 - 4) - * parition type ${mmctype} (fat, ext2) + * parition type ${mmctype} (fat, ext2, ext4) -Additional varuables for booting kernel: +Additional variables for booting kernel: * setup_omap_atag - Add OMAP table into atags structure (needs maemo kernel) * setup_console_atag - Enable serial console in OMAP table * setup_boot_reason_atag - Change boot reason in OMAP table * setup_boot_mode_atag - Change boot mode in OMAP table + Variable setup_omap_atag is automatically set when booting attached kernel. + When variable setup_omap_atag is set, variable setup_console_atag is unset + and u-boot standard output is set to serial then setup_console_atag is + automatically set to 1. So output from Maemo kernel would go to serial port. + USB TTY: Maemo kernel 2.6.28 will crash if u-boot enable usb tty. So USB TTY is disabled. @@ -85,20 +90,13 @@ USB TTY: #define CONFIG_USB_TTY -ONENAND support: - - ONENAND support is disabled because not working yet and cause linux kernel to - crash or no access to mtd. For enabling ONENAND support add this line at begin - of file include/configs/nokia_rx51.h - - #define ONENAND_SUPPORT - - UBIFS support: UBIFS support is disabled, because U-Boot image is too big and cannot be flashed with attached zImage to RX-51 kernel nand area. For enabling UBIFS - support first enable ONENAND support and then add this line at begin of file - include/configs/nokia_rx51.h + support add following lines into file configs/nokia_rx51_defconfig - #define UBIFS_SUPPORT + CONFIG_CMD_UBI=y + CONFIG_CMD_UBIFS=y + CONFIG_MTD_UBI_FASTMAP=y + CONFIG_MTD_UBI_FASTMAP_AUTOCONVERT=1 From patchwork Tue Mar 31 22:35:18 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Pali_Roh=C3=A1r?= X-Patchwork-Id: 237067 List-Id: U-Boot discussion From: pali at kernel.org (=?UTF-8?q?Pali=20Roh=C3=A1r?=) Date: Wed, 1 Apr 2020 00:35:18 +0200 Subject: [PATCH 11/11] Nokia RX-51: Add automated test for running RX-51 build in qemu In-Reply-To: <20200331223518.10936-1-pali@kernel.org> References: <20200331223518.10936-1-pali@kernel.org> Message-ID: <20200331223518.10936-12-pali@kernel.org> This patch contains a script which automatically download and compile all needed tools to build a simple MTD images for booting Maemo kernel image by U-Boot from RAM, eMMC and OneNAND. MTD images are then run in virtual n900 machine provided by qemu-linaro project. It can be used to check that U-Boot for Nokia N900 is not broken and can be successfully booted in emulator. Script is registered in to .travis.yml so it would be automatically run on Travi CI service. Signed-off-by: Pali Roh?r --- .travis.yml | 10 +++ test/rx51_test.sh | 208 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 218 insertions(+) create mode 100755 test/rx51_test.sh diff --git a/.travis.yml b/.travis.yml index c59bd7790b..d96811473c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -40,6 +40,8 @@ addons: - clang-7 - srecord - graphviz + - mtools + - mtd-utils install: # Clone uboot-test-hooks @@ -116,6 +118,11 @@ script: # Comments must be outside the command strings below, or the Travis parser # will get confused. # + # Run tests for Nokia RX-51 (aka N900) + - if [[ -n "${NOKIA_RX51}" ]]; then + test/rx51_test.sh + exit $?; + fi # From buildman, exit code 129 means warnings only. If we've been asked to # use clang only do one configuration. - if [[ "${BUILDMAN}" != "" ]]; then @@ -160,6 +167,9 @@ matrix: include: # we need to build by vendor due to 50min time limit for builds # each env setting here is a dedicated build + - name: "nokia rx51" + env: + - NOKIA_RX51=1 - name: "buildman arc" env: - BUILDMAN="arc" diff --git a/test/rx51_test.sh b/test/rx51_test.sh new file mode 100755 index 0000000000..43ecc07c08 --- /dev/null +++ b/test/rx51_test.sh @@ -0,0 +1,208 @@ +#!/bin/sh -e +# SPDX-License-Identifier: GPL-2.0+ +# (C) 2020 Pali Roh?r + +# This test script depends on external tools: +# wget git truncate tar dpkg dd mcopy (from mtools) mkfs.ubifs (from mtd-utils) ubinize (from mtd-utils) + +# Download and compile linaro version qemu which has support for n900 machine +# Last working commit is 8f8d8e0796efe1a6f34cdd83fb798f3c41217ec1 +if ! test -f qemu-system-arm; then + test -d qemu-linaro || git clone https://git.linaro.org/qemu/qemu-linaro.git + cd qemu-linaro + git checkout 8f8d8e0796efe1a6f34cdd83fb798f3c41217ec1 + ./configure --enable-system --target-list=arm-softmmu --disable-sdl --disable-gtk --disable-curses --audio-drv-list=pa,alsa --audio-card-list= --disable-werror --disable-xen --disable-xen-pci-passthrough --disable-brlapi --disable-vnc --disable-curl --disable-slirp --disable-kvm --disable-user --disable-linux-user --disable-bsd-user --disable-guest-base --disable-uuid --disable-vde --disable-linux-aio --disable-cap-ng --disable-attr --disable-blobs --disable-docs --disable-spice --disable-libiscsi --disable-smartcard-nss --disable-usb-redir --disable-guest-agent --disable-seccomp --disable-glusterfs --disable-nptl --disable-fdt + make -j4 + cd .. + ln -s qemu-linaro/arm-softmmu/qemu-system-arm . +fi + +# Download and compile dosfstools with mbr support +# Currently this support is in open pull request 95 +if ! test -f mkfs.fat; then + test -d dosfstools || git clone https://github.com/dosfstools/dosfstools.git + cd dosfstools + git fetch origin refs/pull/95/head + git checkout FETCH_HEAD + ./autogen.sh + ./configure + make -j4 + cd .. + ln -s dosfstools/src/mkfs.fat . +fi + +# Download qflasher and nolo images +# This is proprietary qemu flasher tool with first stage images, but license allows non-commercial redistribution +wget -c http://repository.maemo.org/qemu-n900/qemu-n900.tar.gz +tar -xf qemu-n900.tar.gz + +# Download Maemo script u-boot-gen-combined +if ! test -f u-boot-gen-combined; then + test -d u-boot-maemo || git clone https://github.com/pali/u-boot-maemo.git + chmod +x u-boot-maemo/debian/u-boot-gen-combined + ln -s u-boot-maemo/debian/u-boot-gen-combined . +fi + +# Download Maemo fiasco kernel +wget -c http://repository.maemo.org/pool/maemo5.0/free/k/kernel/kernel_2.6.28-20103103+0m5_armel.deb +dpkg -x kernel_2.6.28-20103103+0m5_armel.deb kernel_2.6.28 + +# Download Maemo libc +wget -c http://repository.maemo.org/pool/maemo5.0/free/g/glibc/libc6_2.5.1-1eglibc27+0m5_armel.deb +dpkg -x libc6_2.5.1-1eglibc27+0m5_armel.deb libc6_2.5.1 + +# Download Maemo busybox +wget -c http://repository.maemo.org/pool/maemo5.0/free/b/busybox/busybox_1.10.2.legal-1osso30+0m5_armel.deb +dpkg -x busybox_1.10.2.legal-1osso30+0m5_armel.deb busybox_1.10.2 + +# Generate rootfs directory +# WARNING: there is "sudo mknod" call for /dev/console +mkdir -p rootfs +mkdir -p rootfs/dev/ +mkdir -p rootfs/bin/ +mkdir -p rootfs/sbin/ +mkdir -p rootfs/lib/ +test -c rootfs/dev/console || sudo mknod rootfs/dev/console c 5 1 +cp -a busybox_1.10.2/bin/busybox rootfs/bin/ +cp -a libc6_2.5.1/lib/ld-linux.so.3 rootfs/lib/ +cp -a libc6_2.5.1/lib/ld-2.5.so rootfs/lib/ +cp -a libc6_2.5.1/lib/libc.so.6 rootfs/lib/ +cp -a libc6_2.5.1/lib/libc-2.5.so rootfs/lib/ +cp -a libc6_2.5.1/lib/libcrypt.so.1 rootfs/lib/ +cp -a libc6_2.5.1/lib/libcrypt-2.5.so rootfs/lib/ +test -f rootfs/bin/sh || ln -sf busybox rootfs/bin/sh +test -f rootfs/sbin/poweroff || ln -sf ../bin/busybox rootfs/sbin/poweroff +cat > rootfs/sbin/preinit << EOF +#!/bin/sh +echo +echo "Successfully booted" +echo +/sbin/poweroff -f +EOF +chmod +x rootfs/sbin/preinit + +# Generate bootmenu for eMMC booting +cat > bootmenu_emmc << EOF +setenv bootmenu_0 'uImage-2.6.28-omap1 from eMMC=setenv mmcnum 1; setenv mmcpart 1; setenv mmctype fat; setenv bootargs; setenv setup_omap_atag 1; setenv mmckernfile uImage-2.6.28-omap1; run trymmckernboot'; +setenv bootmenu_1; +setenv bootmenu_delay 1; +setenv bootdelay 1; +EOF +./mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n bootmenu -d bootmenu_emmc bootmenu_emmc.scr + +# Generate bootmenu for OneNAND booting +# FIXME: is address, size and offset really correct? +cat > bootmenu_nand << EOF +setenv bootmenu_0 'uImage-2.6.28-omap1 from OneNAND=mtd read initfs \${kernaddr} 0x800 0x1FF800; setenv bootargs; setenv setup_omap_atag 1; bootm \${kernaddr}'; +setenv bootmenu_1; +setenv bootmenu_delay 1; +setenv bootdelay 1; +EOF +./mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n bootmenu -d bootmenu_nand bootmenu_nand.scr + +# Generate ubi config file for ubi rootfs image +cat > ubi.ini << EOF +[rootfs] +mode=ubi +image=ubifs.img +vol_id=0 +vol_size=160MiB +vol_type=dynamic +vol_name=rootfs +vol_alignment=1 +vol_flags=autoresize +EOF + +# Generate combined image from u-boot and Maemo fiasco kernel +dd if=kernel_2.6.28/boot/zImage-2.6.28-20103103+0m5.fiasco of=zImage-2.6.28-omap1 skip=95 bs=1 +./mkimage -A arm -O linux -T kernel -C none -a 80008000 -e 80008000 -n zImage-2.6.28-omap1 -d zImage-2.6.28-omap1 uImage-2.6.28-omap1 +./u-boot-gen-combined u-boot.bin uImage-2.6.28-omap1 combined.bin + +# Generate combined hack image from u-boot and Maemo fiasco kernel (kernel starts at 2MB offset) +cp u-boot.bin combined_hack.bin +dd if=uImage-2.6.28-omap1 of=combined_hack.bin bs=1024 seek=2048 + +# Generate ubi rootfs image from rootfs directory +/usr/sbin/mkfs.ubifs -m 2048 -e 129024 -c 2047 -r rootfs ubifs.img +/usr/sbin/ubinize -o ubi.img -p 128KiB -m 2048 -s 512 ubi.ini + +# Generate FAT32 eMMC image for eMMC booting +truncate -s 50MiB emmc_emmc.img +./mkfs.fat --mbr -F32 emmc_emmc.img +mcopy uImage-2.6.28-omap1 ::/uImage-2.6.28-omap1 -i emmc_emmc.img +mcopy bootmenu_emmc.scr ::/bootmenu.scr -i emmc_emmc.img + +# Generate FAT32 eMMC image for OneNAND booting +truncate -s 50MiB emmc_nand.img +./mkfs.fat --mbr -F32 emmc_nand.img +mcopy bootmenu_nand.scr ::/bootmenu.scr -i emmc_nand.img + +# Generate MTD image for RAM booting from bootloader nolo images, compiled image and rootfs image +rm -f mtd_ram.img +./qflasher -v -x xloader-qemu.bin -s secondary-qemu.bin -k combined.bin -r ubi.img -m rx51 -o mtd_ram.img + +# Generate MTD image for eMMC booting from bootloader nolo images, u-boot image and rootfs image +rm -f mtd_emmc.img +./qflasher -v -x xloader-qemu.bin -s secondary-qemu.bin -k u-boot.bin -r ubi.img -m rx51 -o mtd_emmc.img + +# Generate MTD image for OneNAND booting from bootloader nolo images, combined hacked image and rootfs image +# Kernel image is put into initfs area, but qflasher reject to copy kernel image into initfs area because it does not have initfs signature +# This is hack to workaround this problem, tell qflasher that kernel area for u-boot is bigger and put big combined hacked image (u-boot + kernel with correct offset) +rm -f mtd_nand.img +./qflasher -v -x xloader-qemu.bin -s secondary-qemu.bin -k combined_hack.bin -r ubi.img -m rx51 -p k=4094,i=2 -o mtd_nand.img + +echo +echo +echo "All images were successfully generated" +echo "Now going to run them in qemu" +echo +echo + +# Run MTD image in qemu and wait for 300s if kernel from RAM is correctly booted +rm -f qemu_ram.log +./qemu-system-arm -M n900 -mtdblock mtd_ram.img -serial /dev/stdout -display none > qemu_ram.log & +qemu_pid=$! +tail -F qemu_ram.log & +tail_pid=$! +{ sleep 300 || true; kill -9 $qemu_pid $tail_pid 2>/dev/null || true; } & +sleep_pid=$! +wait $qemu_pid || true +kill -9 $tail_pid $sleep_pid 2>/dev/null || true + +# Run MTD image in qemu and wait for 300s if kernel from eMMC is correctly booted +rm -f qemu_emmc.log +./qemu-system-arm -M n900 -mtdblock mtd_emmc.img -sd emmc_emmc.img -serial /dev/stdout -display none > qemu_emmc.log & +qemu_pid=$! +tail -F qemu_emmc.log & +tail_pid=$! +{ sleep 300 || true; kill -9 $qemu_pid $tail_pid 2>/dev/null || true; } & +sleep_pid=$! +wait $qemu_pid || true +kill -9 $tail_pid $sleep_pid 2>/dev/null || true + +# Run MTD image in qemu and wait for 300s if kernel from OneNAND is correctly booted +rm -f qemu_nand.log +./qemu-system-arm -M n900 -mtdblock mtd_nand.img -sd emmc_nand.img -serial /dev/stdout -display none > qemu_nand.log & +qemu_pid=$! +tail -F qemu_nand.log & +tail_pid=$! +{ sleep 300 || true; kill -9 $qemu_pid $tail_pid 2>/dev/null || true; } & +sleep_pid=$! +wait $qemu_pid || true +kill -9 $tail_pid $sleep_pid 2>/dev/null || true + +echo +echo +if grep -q 'Successfully booted' qemu_ram.log; then echo "Kernel was successfully booted from RAM"; else echo "Failed to boot kernel from RAM"; fi +if grep -q 'Successfully booted' qemu_emmc.log; then echo "Kernel was successfully booted from eMMC"; else echo "Failed to boot kernel from eMMC"; fi +if grep -q 'Successfully booted' qemu_nand.log; then echo "Kernel was successfully booted from OneNAND"; else echo "Failed to boot kernel from OneNAND"; fi +echo +echo + +if grep -q 'Successfully booted' qemu_ram.log && grep -q 'Successfully booted' qemu_emmc.log && grep -q 'Successfully booted' qemu_nand.log; then + echo "All tests passed" + exit 0 +else + echo "Some tests failed" + exit 1 +fi