mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-11-03 21:48:15 +00:00 
			
		
		
		
	It can be useful to use the same U-Boot binary for multiple purposes, say the normal one, one for developers that allow breaking into the U-Boot shell, and one for use during bootstrapping which runs a special-purpose bootcmd. Or one can have several board variants that can share almost all boot logic, but just needs a few tweaks in the variables used by the boot script. To that end, allow the control dtb to contain a /config/enviroment node (or whatever one puts in fdt_env_path variable), whose property/value pairs are used to update the run-time environment after it has been loaded from its persistent location. The indirection via fdt_env_path is for maximum flexibility - for example, should the user wish (or board logic dictate) that the values in the DTB should no longer be applied, one simply needs to delete the fdt_env_path variable; that can even be done automatically by including a fdt_env_path = ""; property in the DTB node. Reviewed-by: Simon Glass <sjg@chromium.org> Signed-off-by: Rasmus Villemoes <rasmus.villemoes@prevas.dk> Acked-by: Joe Hershberger <joe.hershberger@ni.com>
		
			
				
	
	
		
			124 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			124 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* SPDX-License-Identifier: GPL-2.0+ */
 | 
						|
/*
 | 
						|
 * (C) Copyright 2000-2010
 | 
						|
 * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
 | 
						|
 *
 | 
						|
 * (C) Copyright 2001 Sysgo Real-Time Solutions, GmbH <www.elinos.com>
 | 
						|
 * Andreas Heppel <aheppel@sysgo.de>
 | 
						|
 */
 | 
						|
 | 
						|
#include <env_callback.h>
 | 
						|
#include <linux/stringify.h>
 | 
						|
 | 
						|
#ifdef DEFAULT_ENV_INSTANCE_EMBEDDED
 | 
						|
env_t embedded_environment __UBOOT_ENV_SECTION__(environment) = {
 | 
						|
	ENV_CRC,	/* CRC Sum */
 | 
						|
#ifdef CONFIG_SYS_REDUNDAND_ENVIRONMENT
 | 
						|
	1,		/* Flags: valid */
 | 
						|
#endif
 | 
						|
	{
 | 
						|
#elif defined(DEFAULT_ENV_INSTANCE_STATIC)
 | 
						|
static char default_environment[] = {
 | 
						|
#elif defined(DEFAULT_ENV_IS_RW)
 | 
						|
uchar default_environment[] = {
 | 
						|
#else
 | 
						|
const uchar default_environment[] = {
 | 
						|
#endif
 | 
						|
#ifndef CONFIG_USE_DEFAULT_ENV_FILE
 | 
						|
#ifdef	CONFIG_ENV_CALLBACK_LIST_DEFAULT
 | 
						|
	ENV_CALLBACK_VAR "=" CONFIG_ENV_CALLBACK_LIST_DEFAULT "\0"
 | 
						|
#endif
 | 
						|
#ifdef	CONFIG_ENV_FLAGS_LIST_DEFAULT
 | 
						|
	ENV_FLAGS_VAR "=" CONFIG_ENV_FLAGS_LIST_DEFAULT "\0"
 | 
						|
#endif
 | 
						|
#ifdef	CONFIG_USE_BOOTARGS
 | 
						|
	"bootargs="	CONFIG_BOOTARGS			"\0"
 | 
						|
#endif
 | 
						|
#ifdef	CONFIG_BOOTCOMMAND
 | 
						|
	"bootcmd="	CONFIG_BOOTCOMMAND		"\0"
 | 
						|
#endif
 | 
						|
#ifdef	CONFIG_RAMBOOTCOMMAND
 | 
						|
	"ramboot="	CONFIG_RAMBOOTCOMMAND		"\0"
 | 
						|
#endif
 | 
						|
#ifdef	CONFIG_NFSBOOTCOMMAND
 | 
						|
	"nfsboot="	CONFIG_NFSBOOTCOMMAND		"\0"
 | 
						|
#endif
 | 
						|
#if defined(CONFIG_BOOTDELAY)
 | 
						|
	"bootdelay="	__stringify(CONFIG_BOOTDELAY)	"\0"
 | 
						|
#endif
 | 
						|
#if defined(CONFIG_BAUDRATE) && (CONFIG_BAUDRATE >= 0)
 | 
						|
	"baudrate="	__stringify(CONFIG_BAUDRATE)	"\0"
 | 
						|
#endif
 | 
						|
#ifdef	CONFIG_LOADS_ECHO
 | 
						|
	"loads_echo="	__stringify(CONFIG_LOADS_ECHO)	"\0"
 | 
						|
#endif
 | 
						|
#ifdef	CONFIG_ETHPRIME
 | 
						|
	"ethprime="	CONFIG_ETHPRIME			"\0"
 | 
						|
#endif
 | 
						|
#ifdef	CONFIG_IPADDR
 | 
						|
	"ipaddr="	__stringify(CONFIG_IPADDR)	"\0"
 | 
						|
#endif
 | 
						|
#ifdef	CONFIG_SERVERIP
 | 
						|
	"serverip="	__stringify(CONFIG_SERVERIP)	"\0"
 | 
						|
#endif
 | 
						|
#ifdef	CONFIG_SYS_AUTOLOAD
 | 
						|
	"autoload="	CONFIG_SYS_AUTOLOAD		"\0"
 | 
						|
#endif
 | 
						|
#ifdef	CONFIG_PREBOOT
 | 
						|
	"preboot="	CONFIG_PREBOOT			"\0"
 | 
						|
#endif
 | 
						|
#ifdef	CONFIG_ROOTPATH
 | 
						|
	"rootpath="	CONFIG_ROOTPATH			"\0"
 | 
						|
#endif
 | 
						|
#ifdef	CONFIG_GATEWAYIP
 | 
						|
	"gatewayip="	__stringify(CONFIG_GATEWAYIP)	"\0"
 | 
						|
#endif
 | 
						|
#ifdef	CONFIG_NETMASK
 | 
						|
	"netmask="	__stringify(CONFIG_NETMASK)	"\0"
 | 
						|
#endif
 | 
						|
#ifdef	CONFIG_HOSTNAME
 | 
						|
	"hostname="	CONFIG_HOSTNAME	"\0"
 | 
						|
#endif
 | 
						|
#ifdef	CONFIG_BOOTFILE
 | 
						|
	"bootfile="	CONFIG_BOOTFILE			"\0"
 | 
						|
#endif
 | 
						|
#ifdef	CONFIG_LOADADDR
 | 
						|
	"loadaddr="	__stringify(CONFIG_LOADADDR)	"\0"
 | 
						|
#endif
 | 
						|
#if defined(CONFIG_PCI_BOOTDELAY) && (CONFIG_PCI_BOOTDELAY > 0)
 | 
						|
	"pcidelay="	__stringify(CONFIG_PCI_BOOTDELAY)"\0"
 | 
						|
#endif
 | 
						|
#ifdef	CONFIG_ENV_VARS_UBOOT_CONFIG
 | 
						|
	"arch="		CONFIG_SYS_ARCH			"\0"
 | 
						|
#ifdef CONFIG_SYS_CPU
 | 
						|
	"cpu="		CONFIG_SYS_CPU			"\0"
 | 
						|
#endif
 | 
						|
#ifdef CONFIG_SYS_BOARD
 | 
						|
	"board="	CONFIG_SYS_BOARD		"\0"
 | 
						|
	"board_name="	CONFIG_SYS_BOARD		"\0"
 | 
						|
#endif
 | 
						|
#ifdef CONFIG_SYS_VENDOR
 | 
						|
	"vendor="	CONFIG_SYS_VENDOR		"\0"
 | 
						|
#endif
 | 
						|
#ifdef CONFIG_SYS_SOC
 | 
						|
	"soc="		CONFIG_SYS_SOC			"\0"
 | 
						|
#endif
 | 
						|
#ifdef CONFIG_ENV_IMPORT_FDT
 | 
						|
	"env_fdt_path="	CONFIG_ENV_FDT_PATH		"\0"
 | 
						|
#endif
 | 
						|
#endif
 | 
						|
#if defined(CONFIG_BOOTCOUNT_BOOTLIMIT) && (CONFIG_BOOTCOUNT_BOOTLIMIT > 0)
 | 
						|
	"bootlimit="	__stringify(CONFIG_BOOTCOUNT_BOOTLIMIT)"\0"
 | 
						|
#endif
 | 
						|
#ifdef	CONFIG_EXTRA_ENV_SETTINGS
 | 
						|
	CONFIG_EXTRA_ENV_SETTINGS
 | 
						|
#endif
 | 
						|
	"\0"
 | 
						|
#else /* CONFIG_USE_DEFAULT_ENV_FILE */
 | 
						|
#include "generated/defaultenv_autogenerated.h"
 | 
						|
#endif
 | 
						|
#ifdef DEFAULT_ENV_INSTANCE_EMBEDDED
 | 
						|
	}
 | 
						|
#endif
 | 
						|
};
 |