nios2: export fdt_blob to the environment variable
PATCH 1/1 nios2: export fdt_blob to the environment variable
Export fdt_blob to the environment variable. So that we may use it to boot Linux.
--- arch/nios2/lib/Makefile | 1 + arch/nios2/lib/misc.c | 16 ++++++++++++++++ include/configs/nios2-generic.h | 1 + 3 files changed, 18 insertions(+) create mode 100644 arch/nios2/lib/misc.c
arch/nios2/lib/Makefile +1 -0
@@ -8,3 +8,4 @@ obj-y += cache.o obj-$(CONFIG_CMD_BOOTM) += bootm.o obj-y += libgcc.o +obj-y += misc.o
arch/nios2/lib/misc.c new file +16 -0
@@ -0,0 +1,16 @@ +/* +* Copyright (C) 2015 Thomas Chou <[email protected]> +* +* SPDX-License-Identifier: GPL-2.0+ +*/ + +#include <common.h> + +DECLARE_GLOBAL_DATA_PTR ; + +int misc_init_r (void ) +{ +setenv_addr ("fdt_blob" , gd->fdt_blob); + +return 0 ; +}
include/configs/nios2-generic.h +1 -0
@@ -15,6 +15,7 @@#include "../board/altera/nios2-generic/custom_fpga.h" /* fpga parameters */ #define CONFIG_BOARD_NAME "nios2-generic"/* custom board name */ #define CONFIG_BOARD_EARLY_INIT_F /* enable early board-spec. init */ +#define CONFIG_MISC_INIT_R #define CONFIG_DISPLAY_CPUINFO #define CONFIG_DISPLAY_BOARDINFO_LATE #define CONFIG_SYS_NIOS_SYSID_BASE CONFIG_SYS_SYSID_BASE
Signature · 1 line
2.1.4
PATCH v2 1/1 nios2: export fdt_blob to the environment variable
Export fdt_blob to the environment variable. So that we may use it to boot Linux.
---
v2
move the code to per board, nios2-generic.c.
board/altera/nios2-generic/nios2-generic.c | 9 +++++++++ include/configs/nios2-generic.h | 1 + 2 files changed, 10 insertions(+)
board/altera/nios2-generic/nios2-generic.c +9 -0
@@ -14,6 +14,8 @@#include <asm/io.h> #include <asm/gpio.h> +DECLARE_GLOBAL_DATA_PTR ; +#if defined(CONFIG_ENV_IS_IN_FLASH ) && defined(CONFIG_ENV_ADDR ) && \ defined(CONFIG_CFI_FLASH_MTD )static void __early_flash_cmd_reset (void )
@@ -35,6 +37,13 @@ int board_early_init_f(void)return 0 ; } +int misc_init_r (void ) +{ +setenv_addr ("fdt_blob" , gd->fdt_blob); + +return 0 ; +} +int checkboard (void ) {#ifdef CONFIG_ALTERA_SYSID
include/configs/nios2-generic.h +1 -0
@@ -15,6 +15,7 @@#include "../board/altera/nios2-generic/custom_fpga.h" /* fpga parameters */ #define CONFIG_BOARD_NAME "nios2-generic"/* custom board name */ #define CONFIG_BOARD_EARLY_INIT_F /* enable early board-spec. init */ +#define CONFIG_MISC_INIT_R #define CONFIG_DISPLAY_CPUINFO #define CONFIG_DISPLAY_BOARDINFO_LATE #define CONFIG_SYS_NIOS_SYSID_BASE CONFIG_SYS_SYSID_BASE
Signature · 1 line
2.1.4
PATCH v2 1/1 nios2: export fdt_blob to the environment variable
Quoted 26 lines · Thomas Chou
Export
fdt_blobto the environment variable. So that we may use it to boot Linux.Signed-off-by Thomas Chou <[email protected]>---
v2
move the code to per board,nios2-generic.c.board/altera/nios2-generic/nios2-generic.c | 9 +++++++++ include/configs/nios2-generic.h | 1 + 2 files changed, 10 insertions(+)(quoted diff) +0
-0
b/board/altera/nios2-generic/nios2-generic.cindex e7fecd2..f508c00 100644board/altera/nios2-generic/nios2-generic.c +2
-0@@ -14,6 +14,8 @@#include <asm/io.h> #include <asm/gpio.h> +DECLARE_GLOBAL_DATA_PTR ; +#if defined(CONFIG_ENV_IS_IN_FLASH ) && defined(CONFIG_ENV_ADDR ) && \ defined(CONFIG_CFI_FLASH_MTD )static void __early_flash_cmd_reset (void )
board/altera/nios2-generic/nios2-generic.c int board_early_init_f(void) · line 45
Quoted 9 lines
board/altera/nios2-generic/nios2-generic.c +6
-0@@ -35,6 +37,13 @@ int board_early_init_f(void)return 0 ; } +int misc_init_r (void ) +{ +setenv_addr ("fdt_blob" , gd->fdt_blob); + +return 0 ; +}
Shouldn't this go into generic code ?
Best regards,
Marek Vasut
PATCH v3 1/1 env: export fdt_blob to the environment variable
In reply to Thomas ChouExport fdt_blob to the environment variable. So that we may use it to boot Linux.
---
v2
move the code to per board, nios2-generic.c.
v3
move the code to generic, board_r.c.
common/board_r.c | 1 + 1 file changed, 1 insertion(+)
common/board_r.c +1 -0
@@ -449,6 +449,7 @@ static int initr_env(void)env_relocate (); elseset_default_env (NULL ); +setenv_addr ("fdt_blob" , gd->fdt_blob);/* Initialize from environment */ load_addr =getenv_ulong ("loadaddr" ,16 , load_addr);
Signature · 1 line
2.1.4
PATCH v3 1/1 env: export fdt_blob to the environment variable
Hi,
Quoted 27 lines · Thomas Chou
Export
fdt_blobto the environment variable. So that we may use it to boot Linux.Signed-off-by Thomas Chou <[email protected]>---
v2
move the code to per board,nios2-generic.c.
v3
move the code to generic,board_r.c.common/board_r.c | 1 + 1 file changed, 1 insertion(+)common/board_r.c +1
-1@@ -449,6 +449,7 @@ static int initr_env(void)env_relocate (); elseset_default_env (NULL ); +setenv_addr ("fdt_blob" , gd->fdt_blob);/* Initialize from environment */ load_addr =getenv_ulong ("loadaddr" ,16 , load_addr); --
Quoted 2 lines
2.1.4
We already have fdtcontroladdr, so how about using that instead?
Also please can you add docs to README.fdt-control? Also note that it is read-only and cannot be changed. In fact changing it will be ignored.
Regards,
Simon
PATCH v4 1/1 env: export fdt_blob to the environment variable
In reply to Thomas ChouExport fdt_blob to the environment variable. So that we may use it to boot Linux.
---
v2
move the code to per board, nios2-generic.c.
v3
move the code to generic, board_r.c.
v4
use fdtcontroladdr as Simon suggested.
common/board_r.c | 3 +++ doc/README.fdt-control | 5 ++++- 2 files changed, 7 insertions(+), 1 deletion(-)
common/board_r.c +3 -0
@@ -449,6 +449,9 @@ static int initr_env(void)env_relocate (); elseset_default_env (NULL ); +#ifdef CONFIG_OF_CONTROL +setenv_addr ("fdtcontroladdr" , gd->fdt_blob); +#endif /* Initialize from environment */ load_addr =getenv_ulong ("loadaddr" ,16 , load_addr);
doc/README.fdt-control +4 -1
@@ -156,7 +156,10 @@ address of the fdt binary blob, and will override either of the options. Be aware that this environment variable is checked prior to relocation, when only the compiled-in environment is available. Therefore it is not possible to define this variable in the saved SPI/NAND flash -environment, for example (it will be ignored). +environment, for example (it will be ignored). After relocation, this +variable will be set to the address of the newly relocated fdt blob. +It is read-only and cannot be changed. It can optionally be used to +control the boot process of Linux with bootm/bootz commands. To use this, put something like this in your board header file:
Signature · 1 line
2.1.4
PATCH v4 1/1 env: export fdt_blob to the environment variable
Quoted 12 lines · Thomas Chou
Export
fdt_blobto the environment variable. So that we may use it to boot Linux.Signed-off-by Thomas Chou <[email protected]>---
v2
move the code to per board,nios2-generic.c.
v3
move the code to generic,board_r.c.
v4
use fdtcontroladdr as Simon suggested.
Quoted 3 lines
common/board_r.c | 3 +++ doc/README.fdt-control | 5 ++++- 2 files changed, 7 insertions(+), 1 deletion(-)
PATCH v4 1/1 env: export fdt_blob to the environment variable
Quoted 13 lines · Simon Glass
Quoted 12 lines · Thomas Chou
Export
fdt_blobto the environment variable. So that we may use it to boot Linux.Signed-off-by Thomas Chou <[email protected]>---
v2
move the code to per board,nios2-generic.c.
v3
move the code to generic,board_r.c.
v4
use fdtcontroladdr as Simon suggested.
Quoted 5 lines
Quoted 3 lines
common/board_r.c | 3 +++ doc/README.fdt-control | 5 ++++- 2 files changed, 7 insertions(+), 1 deletion(-)Acked-by Simon Glass <[email protected]>
Applied to u-boot-dm, thanks!