#include <common.h>
#include <env.h>
#include <malloc.h>
-#include <environment.h>
+#include <env_internal.h>
#include <linux/types.h>
#include <api_public.h>
#include <fsl_qbman.h>
#ifdef CONFIG_TFABOOT
-#include <environment.h>
+#include <env_internal.h>
#ifdef CONFIG_CHAIN_OF_TRUST
#include <fsl_validate.h>
#endif
#endif
#include <fsl_immap.h>
#ifdef CONFIG_TFABOOT
-#include <environment.h>
+#include <env_internal.h>
DECLARE_GLOBAL_DATA_PTR;
#endif
*/
#include <common.h>
-#include <environment.h>
+#include <env_internal.h>
#include <asm/e820.h>
DECLARE_GLOBAL_DATA_PTR;
#include <common.h>
#include <console.h>
#include <env.h>
-#include <environment.h>
+#include <env_internal.h>
#include <ns16550.h>
#include <malloc.h>
#include <mmc.h>
#include <common.h>
#include <dm.h>
-#include <environment.h>
+#include <env_internal.h>
#include <asm/io.h>
#include <asm/arch/eth.h>
#include <cpsw.h>
#include <power/tps65217.h>
#include <power/tps65910.h>
-#include <environment.h>
+#include <env_internal.h>
#include <watchdog.h>
#include "board.h"
#include <common.h>
#include <cpsw.h>
#include <dm.h>
-#include <environment.h>
+#include <env_internal.h>
#include <errno.h>
#include <i2c.h>
#include <miiphy.h>
#include <miiphy.h>
#include <cpsw.h>
#include <power/tps65217.h>
-#include <environment.h>
+#include <env_internal.h>
#include <watchdog.h>
#include "mmc.h"
#include "board.h"
#include <common.h>
#include <env.h>
-#include <environment.h>
+#include <env_internal.h>
#include <net.h>
#include <malloc.h>
#include <netdev.h>
#include <common.h>
#include <console.h>
#include <env.h>
-#include <environment.h>
+#include <env_internal.h>
#include <asm/spl.h>
#include <malloc.h>
#include <ns16550.h>
#include <common.h>
#include <console.h>
-#include <environment.h>
+#include <env_internal.h>
#include <ns16550.h>
#include <malloc.h>
#include <mmc.h>
#include <asm/arch/soc.h>
#include <fsl_esdhc.h>
#include <hwconfig.h>
-#include <environment.h>
+#include <env_internal.h>
#include <fsl_mmdc.h>
#include <netdev.h>
#include <fsl_sec.h>
#include <ahci.h>
#include <hwconfig.h>
#include <mmc.h>
-#include <environment.h>
+#include <env_internal.h>
#include <scsi.h>
#include <fm_eth.h>
#include <fsl_esdhc.h>
#include <mmc.h>
#include <scsi.h>
#include <fsl_esdhc.h>
-#include <environment.h>
+#include <env_internal.h>
#include <fsl_mmdc.h>
#include <netdev.h>
#include <fsl_sec.h>
#include <hwconfig.h>
#include <fdt_support.h>
#include <linux/libfdt.h>
-#include <environment.h>
+#include <env_internal.h>
#include <asm/arch-fsl-layerscape/soc.h>
#include <i2c.h>
#include <asm/arch/soc.h>
#include <fdt_support.h>
#include <linux/libfdt.h>
#include <fsl-mc/fsl_mc.h>
-#include <environment.h>
+#include <env_internal.h>
#include <asm/arch-fsl-layerscape/soc.h>
#include <asm/arch/ppa.h>
#include <hwconfig.h>
#include <fdt_support.h>
#include <linux/libfdt.h>
#include <fsl-mc/fsl_mc.h>
-#include <environment.h>
+#include <env_internal.h>
#include <asm/arch/soc.h>
DECLARE_GLOBAL_DATA_PTR;
#include <fdt_support.h>
#include <linux/libfdt.h>
#include <fsl-mc/fsl_mc.h>
-#include <environment.h>
+#include <env_internal.h>
#include <i2c.h>
#include <rtc.h>
#include <asm/arch/soc.h>
#include <fdt_support.h>
#include <linux/libfdt.h>
#include <fsl-mc/fsl_mc.h>
-#include <environment.h>
+#include <env_internal.h>
#include <efi_loader.h>
#include <i2c.h>
#include <asm/arch/mmu.h>
#include <fdt_support.h>
#include <linux/libfdt.h>
#include <fsl-mc/fsl_mc.h>
-#include <environment.h>
+#include <env_internal.h>
#include <efi_loader.h>
#include <asm/arch/mmu.h>
#include <hwconfig.h>
#include <common.h>
#include <console.h>
#include <env.h>
-#include <environment.h>
+#include <env_internal.h>
#include <ns16550.h>
#include <malloc.h>
#include <mmc.h>
#include <common.h>
#include <console.h>
#include <env.h>
-#include <environment.h>
+#include <env_internal.h>
#include <ns16550.h>
#include <malloc.h>
#include <mmc.h>
#include <common.h>
#include <console.h>
#include <env.h>
-#include <environment.h>
+#include <env_internal.h>
#include <ns16550.h>
#include <malloc.h>
#include <mmc.h>
#include <common.h>
#include <console.h>
-#include <environment.h>
+#include <env_internal.h>
#include <malloc.h>
#include <ns16550.h>
#include <nand.h>
#include <common.h>
#include <console.h>
-#include <environment.h>
+#include <env_internal.h>
#include <malloc.h>
#include <ns16550.h>
#include <nand.h>
#include <common.h>
#include <console.h>
-#include <environment.h>
+#include <env_internal.h>
#include <malloc.h>
#include <ns16550.h>
#include <nand.h>
#include <common.h>
#include <console.h>
-#include <environment.h>
+#include <env_internal.h>
#include <malloc.h>
#include <ns16550.h>
#include <nand.h>
#include <common.h>
#include <console.h>
-#include <environment.h>
+#include <env_internal.h>
#include <malloc.h>
#include <ns16550.h>
#include <nand.h>
#include <common.h>
#include <console.h>
-#include <environment.h>
+#include <env_internal.h>
#include <asm/spl.h>
#include <malloc.h>
#include <ns16550.h>
#include <common.h>
#include <console.h>
-#include <environment.h>
+#include <env_internal.h>
#include <asm/spl.h>
#include <malloc.h>
#include <ns16550.h>
#include <common.h>
#include <env.h>
-#include <environment.h>
+#include <env_internal.h>
#include <led.h>
#include <net.h>
#include <spi.h>
#include <common.h>
#include <dm.h>
#include <env.h>
-#include <environment.h>
+#include <env_internal.h>
#include <i2c.h>
#include <i2c_eeprom.h>
#include <netdev.h>
#include <malloc.h>
#include <dm.h>
#include <dm/platform_data/serial_sh.h>
-#include <environment.h>
+#include <env_internal.h>
#include <asm/processor.h>
#include <asm/mach-types.h>
#include <asm/io.h>
#include <malloc.h>
#include <dm.h>
#include <dm/platform_data/serial_sh.h>
-#include <environment.h>
+#include <env_internal.h>
#include <asm/processor.h>
#include <asm/mach-types.h>
#include <asm/io.h>
#include <malloc.h>
#include <dm.h>
#include <dm/platform_data/serial_sh.h>
-#include <environment.h>
+#include <env_internal.h>
#include <asm/processor.h>
#include <asm/mach-types.h>
#include <asm/io.h>
#include <common.h>
#include <env.h>
-#include <environment.h>
+#include <env_internal.h>
#include <malloc.h>
#include <netdev.h>
#include <dm.h>
#include <malloc.h>
#include <dm.h>
#include <dm/platform_data/serial_sh.h>
-#include <environment.h>
+#include <env_internal.h>
#include <asm/processor.h>
#include <asm/mach-types.h>
#include <asm/io.h>
#include <malloc.h>
#include <dm.h>
#include <dm/platform_data/serial_sh.h>
-#include <environment.h>
+#include <env_internal.h>
#include <asm/processor.h>
#include <asm/mach-types.h>
#include <asm/io.h>
#include <netdev.h>
#include <dm.h>
#include <dm/platform_data/serial_sh.h>
-#include <environment.h>
+#include <env_internal.h>
#include <asm/processor.h>
#include <asm/mach-types.h>
#include <asm/io.h>
#include <clk.h>
#include <dm.h>
#include <env.h>
-#include <environment.h>
+#include <env_internal.h>
#include <g_dnl.h>
#include <generic-phy.h>
#include <i2c.h>
#include <asm/gpio.h>
#include <asm/io.h>
#include <u-boot/crc.h>
-#include <environment.h>
+#include <env_internal.h>
#include <linux/libfdt.h>
#include <nand.h>
#include <net.h>
#include <cpsw.h>
#include <power/tps65217.h>
#include <power/tps65910.h>
-#include <environment.h>
+#include <env_internal.h>
#include <watchdog.h>
#include "board.h"
#include <cpsw.h>
#include <power/tps65217.h>
#include <power/tps65910.h>
-#include <environment.h>
+#include <env_internal.h>
#include <watchdog.h>
#include "../common/board_detect.h"
#include "board.h"
#include <asm/io.h>
#include <asm/arch/gpio.h>
#include <asm/arch/pinmux.h>
-#include <environment.h>
+#include <env_internal.h>
#include <pci_tegra.h>
#include <power/as3722.h>
#include <power/pmic.h>
#include <command.h>
#include <console.h>
#include <env.h>
-#include <environment.h>
+#include <env_internal.h>
#include <search.h>
#include <errno.h>
#include <malloc.h>
#include <cpu.h>
#include <dm.h>
#include <env.h>
-#include <environment.h>
+#include <env_internal.h>
#include <fdtdec.h>
#include <fs.h>
#include <i2c.h>
#include <console.h>
#include <dm.h>
#include <env.h>
-#include <environment.h>
+#include <env_internal.h>
#include <fdtdec.h>
#include <ide.h>
#include <initcall.h>
#include <serial.h>
#include <stdio_dev.h>
#include <exports.h>
-#include <environment.h>
+#include <env_internal.h>
#include <watchdog.h>
DECLARE_GLOBAL_DATA_PTR;
#include <asm/io.h>
#include <asm/byteorder.h>
#include <asm/unaligned.h>
-#include <environment.h>
+#include <env_internal.h>
#include <mtd/cfi_flash.h>
#include <watchdog.h>
#include <common.h>
#include <dm.h>
-#include <environment.h>
+#include <env_internal.h>
#include <errno.h>
#include <os.h>
#include <serial.h>
*/
#include <common.h>
-#include <environment.h>
+#include <env_internal.h>
#include <serial.h>
#include <stdio_dev.h>
#include <post.h>
#include <common.h>
#include <env.h>
-#include <environment.h>
+#include <env_internal.h>
#if defined(CONFIG_NEEDS_MANUAL_RELOC)
DECLARE_GLOBAL_DATA_PTR;
#include <common.h>
#include <command.h>
#include <env.h>
-#include <environment.h>
+#include <env_internal.h>
#include <linux/stddef.h>
#include <search.h>
#include <errno.h>
#include <common.h>
#include <command.h>
#include <env.h>
-#include <environment.h>
+#include <env_internal.h>
#include <linux/stddef.h>
#if defined(CONFIG_I2C_ENV_EEPROM_BUS)
#include <i2c.h>
#define __ASM_STUB_PROCESSOR_H__ /* don't include asm/processor. */
#include <config.h>
#undef __ASSEMBLY__
-#include <environment.h>
+#include <env_internal.h>
#include <linux/stringify.h>
/* Handle HOSTS that have prepended crap on symbol names, not TARGETS. */
#include <common.h>
#include <env.h>
-#include <environment.h>
+#include <env_internal.h>
DECLARE_GLOBAL_DATA_PTR;
#include <command.h>
#include <env.h>
-#include <environment.h>
+#include <env_internal.h>
#include <linux/stddef.h>
#include <malloc.h>
#include <memalign.h>
#include <command.h>
#include <env.h>
-#include <environment.h>
+#include <env_internal.h>
#include <linux/stddef.h>
#include <malloc.h>
#include <memalign.h>
#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
#else
#include <common.h>
-#include <environment.h>
+#include <env_internal.h>
#endif
#ifdef CONFIG_CMD_NET
#include <common.h>
#include <command.h>
#include <env.h>
-#include <environment.h>
+#include <env_internal.h>
#include <linux/stddef.h>
#include <malloc.h>
#include <search.h>
#include <command.h>
#include <env.h>
-#include <environment.h>
+#include <env_internal.h>
#include <fdtdec.h>
#include <linux/stddef.h>
#include <malloc.h>
#include <common.h>
#include <command.h>
#include <env.h>
-#include <environment.h>
+#include <env_internal.h>
#include <linux/stddef.h>
#include <malloc.h>
#include <memalign.h>
#include <common.h>
#include <command.h>
#include <env.h>
-#include <environment.h>
+#include <env_internal.h>
#include <linux/stddef.h>
DECLARE_GLOBAL_DATA_PTR;
#include <common.h>
#include <command.h>
#include <env.h>
-#include <environment.h>
+#include <env_internal.h>
#include <linux/stddef.h>
#include <search.h>
#include <errno.h>
#include <common.h>
#include <command.h>
-#include <environment.h>
+#include <env_internal.h>
#include <linux/stddef.h>
#include <malloc.h>
#include <search.h>
#include <common.h>
#include <command.h>
-#include <environment.h>
+#include <env_internal.h>
#include <linux/stddef.h>
#ifdef ENV_IS_EMBEDDED
#include <command.h>
#include <env.h>
-#include <environment.h>
+#include <env_internal.h>
#include <linux/stddef.h>
#include <errno.h>
#include <memalign.h>
#include <common.h>
#include <dm.h>
#include <env.h>
-#include <environment.h>
+#include <env_internal.h>
#include <malloc.h>
#include <spi.h>
#include <spi_flash.h>
#include <command.h>
#include <env.h>
-#include <environment.h>
+#include <env_internal.h>
#include <errno.h>
#include <malloc.h>
#include <memalign.h>
/* Pull in stuff for the build system */
#ifdef DO_DEPS_ONLY
-# include <environment.h>
+# include <env_internal.h>
#endif
#endif /* __COMMON_H_ */
--- /dev/null
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Internal environment header file. This includes direct access to environment
+ * information such as its size and offset, direct access to the default
+ * environment and embedded environment (if used). It also provides environment
+ * drivers with various declarations.
+ *
+ * It should not be included by board files, drivers and code other than that
+ * related to the environment implementation.
+ *
+ * (C) Copyright 2002
+ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+ */
+
+#ifndef _ENV_INTERNAL_H_
+#define _ENV_INTERNAL_H_
+
+#include <linux/kconfig.h>
+
+/**************************************************************************
+ *
+ * The "environment" is stored as a list of '\0' terminated
+ * "name=value" strings. The end of the list is marked by a double
+ * '\0'. New entries are always added at the end. Deleting an entry
+ * shifts the remaining entries to the front. Replacing an entry is a
+ * combination of deleting the old value and adding the new one.
+ *
+ * The environment is preceded by a 32 bit CRC over the data part.
+ *
+ *************************************************************************/
+
+#if defined(CONFIG_ENV_IS_IN_FLASH)
+# ifndef CONFIG_ENV_ADDR
+# define CONFIG_ENV_ADDR (CONFIG_SYS_FLASH_BASE + CONFIG_ENV_OFFSET)
+# endif
+# ifndef CONFIG_ENV_OFFSET
+# define CONFIG_ENV_OFFSET (CONFIG_ENV_ADDR - CONFIG_SYS_FLASH_BASE)
+# endif
+# if !defined(CONFIG_ENV_ADDR_REDUND) && defined(CONFIG_ENV_OFFSET_REDUND)
+# define CONFIG_ENV_ADDR_REDUND \
+ (CONFIG_SYS_FLASH_BASE + CONFIG_ENV_OFFSET_REDUND)
+# endif
+# if defined(CONFIG_ENV_SECT_SIZE) || defined(CONFIG_ENV_SIZE)
+# ifndef CONFIG_ENV_SECT_SIZE
+# define CONFIG_ENV_SECT_SIZE CONFIG_ENV_SIZE
+# endif
+# ifndef CONFIG_ENV_SIZE
+# define CONFIG_ENV_SIZE CONFIG_ENV_SECT_SIZE
+# endif
+# else
+# error "Both CONFIG_ENV_SECT_SIZE and CONFIG_ENV_SIZE undefined"
+# endif
+# if defined(CONFIG_ENV_ADDR_REDUND) && !defined(CONFIG_ENV_SIZE_REDUND)
+# define CONFIG_ENV_SIZE_REDUND CONFIG_ENV_SIZE
+# endif
+# if (CONFIG_ENV_ADDR >= CONFIG_SYS_MONITOR_BASE) && \
+ (CONFIG_ENV_ADDR + CONFIG_ENV_SIZE) <= \
+ (CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN)
+# define ENV_IS_EMBEDDED
+# endif
+# if defined(CONFIG_ENV_ADDR_REDUND) || defined(CONFIG_ENV_OFFSET_REDUND)
+# define CONFIG_SYS_REDUNDAND_ENVIRONMENT
+# endif
+# ifdef CONFIG_ENV_IS_EMBEDDED
+# error "do not define CONFIG_ENV_IS_EMBEDDED in your board config"
+# error "it is calculated automatically for you"
+# endif
+#endif /* CONFIG_ENV_IS_IN_FLASH */
+
+#if defined(CONFIG_ENV_IS_IN_MMC)
+# ifdef CONFIG_ENV_OFFSET_REDUND
+# define CONFIG_SYS_REDUNDAND_ENVIRONMENT
+# endif
+#endif
+
+#if defined(CONFIG_ENV_IS_IN_NAND)
+# if defined(CONFIG_ENV_OFFSET_OOB)
+# ifdef CONFIG_ENV_OFFSET_REDUND
+# error "CONFIG_ENV_OFFSET_REDUND is not supported when CONFIG_ENV_OFFSET_OOB"
+# error "is set"
+# endif
+extern unsigned long nand_env_oob_offset;
+# define CONFIG_ENV_OFFSET nand_env_oob_offset
+# else
+# ifndef CONFIG_ENV_OFFSET
+# error "Need to define CONFIG_ENV_OFFSET when using CONFIG_ENV_IS_IN_NAND"
+# endif
+# ifdef CONFIG_ENV_OFFSET_REDUND
+# define CONFIG_SYS_REDUNDAND_ENVIRONMENT
+# endif
+# endif /* CONFIG_ENV_OFFSET_OOB */
+# ifndef CONFIG_ENV_SIZE
+# error "Need to define CONFIG_ENV_SIZE when using CONFIG_ENV_IS_IN_NAND"
+# endif
+#endif /* CONFIG_ENV_IS_IN_NAND */
+
+#if defined(CONFIG_ENV_IS_IN_UBI)
+# ifndef CONFIG_ENV_UBI_PART
+# error "Need to define CONFIG_ENV_UBI_PART when using CONFIG_ENV_IS_IN_UBI"
+# endif
+# ifndef CONFIG_ENV_UBI_VOLUME
+# error "Need to define CONFIG_ENV_UBI_VOLUME when using CONFIG_ENV_IS_IN_UBI"
+# endif
+# if defined(CONFIG_ENV_UBI_VOLUME_REDUND)
+# define CONFIG_SYS_REDUNDAND_ENVIRONMENT
+# endif
+# ifndef CONFIG_ENV_SIZE
+# error "Need to define CONFIG_ENV_SIZE when using CONFIG_ENV_IS_IN_UBI"
+# endif
+# ifndef CONFIG_CMD_UBI
+# error "Need to define CONFIG_CMD_UBI when using CONFIG_ENV_IS_IN_UBI"
+# endif
+#endif /* CONFIG_ENV_IS_IN_UBI */
+
+/* Embedded env is only supported for some flash types */
+#ifdef CONFIG_ENV_IS_EMBEDDED
+# if !defined(CONFIG_ENV_IS_IN_FLASH) && \
+ !defined(CONFIG_ENV_IS_IN_NAND) && \
+ !defined(CONFIG_ENV_IS_IN_ONENAND) && \
+ !defined(CONFIG_ENV_IS_IN_SPI_FLASH)
+# error "CONFIG_ENV_IS_EMBEDDED not supported for your flash type"
+# endif
+#endif
+
+/*
+ * For the flash types where embedded env is supported, but it cannot be
+ * calculated automatically (i.e. NAND), take the board opt-in.
+ */
+#if defined(CONFIG_ENV_IS_EMBEDDED) && !defined(ENV_IS_EMBEDDED)
+# define ENV_IS_EMBEDDED
+#endif
+
+/* The build system likes to know if the env is embedded */
+#ifdef DO_DEPS_ONLY
+# ifdef ENV_IS_EMBEDDED
+# ifndef CONFIG_ENV_IS_EMBEDDED
+# define CONFIG_ENV_IS_EMBEDDED
+# endif
+# endif
+#endif
+
+#include "compiler.h"
+
+#ifdef CONFIG_SYS_REDUNDAND_ENVIRONMENT
+# define ENV_HEADER_SIZE (sizeof(uint32_t) + 1)
+#else
+# define ENV_HEADER_SIZE (sizeof(uint32_t))
+#endif
+
+#define ENV_SIZE (CONFIG_ENV_SIZE - ENV_HEADER_SIZE)
+
+/*
+ * If the environment is in RAM, allocate extra space for it in the malloc
+ * region.
+ */
+#if defined(CONFIG_ENV_IS_EMBEDDED)
+#define TOTAL_MALLOC_LEN CONFIG_SYS_MALLOC_LEN
+#elif (CONFIG_ENV_ADDR + CONFIG_ENV_SIZE < CONFIG_SYS_MONITOR_BASE) || \
+ (CONFIG_ENV_ADDR >= CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN) || \
+ defined(CONFIG_ENV_IS_IN_NVRAM)
+#define TOTAL_MALLOC_LEN (CONFIG_SYS_MALLOC_LEN + CONFIG_ENV_SIZE)
+#else
+#define TOTAL_MALLOC_LEN CONFIG_SYS_MALLOC_LEN
+#endif
+
+typedef struct environment_s {
+ uint32_t crc; /* CRC32 over data bytes */
+#ifdef CONFIG_SYS_REDUNDAND_ENVIRONMENT
+ unsigned char flags; /* active/obsolete flags ENVF_REDUND_ */
+#endif
+ unsigned char data[ENV_SIZE]; /* Environment data */
+} env_t;
+
+#ifdef ENV_IS_EMBEDDED
+extern env_t embedded_environment;
+#endif /* ENV_IS_EMBEDDED */
+
+extern const unsigned char default_environment[];
+
+#ifndef DO_DEPS_ONLY
+
+#include <env_attr.h>
+#include <env_callback.h>
+#include <env_flags.h>
+#include <search.h>
+
+enum env_location {
+ ENVL_UNKNOWN,
+ ENVL_EEPROM,
+ ENVL_EXT4,
+ ENVL_FAT,
+ ENVL_FLASH,
+ ENVL_MMC,
+ ENVL_NAND,
+ ENVL_NVRAM,
+ ENVL_ONENAND,
+ ENVL_REMOTE,
+ ENVL_SPI_FLASH,
+ ENVL_UBI,
+ ENVL_NOWHERE,
+
+ ENVL_COUNT,
+};
+
+/* value for the various operations we want to perform on the env */
+enum env_operation {
+ ENVOP_GET_CHAR, /* we want to call the get_char function */
+ ENVOP_INIT, /* we want to call the init function */
+ ENVOP_LOAD, /* we want to call the load function */
+ ENVOP_SAVE, /* we want to call the save function */
+ ENVOP_ERASE, /* we want to call the erase function */
+};
+
+struct env_driver {
+ const char *name;
+ enum env_location location;
+
+ /**
+ * load() - Load the environment from storage
+ *
+ * This method is optional. If not provided, no environment will be
+ * loaded.
+ *
+ * @return 0 if OK, -ve on error
+ */
+ int (*load)(void);
+
+ /**
+ * save() - Save the environment to storage
+ *
+ * This method is required for 'saveenv' to work.
+ *
+ * @return 0 if OK, -ve on error
+ */
+ int (*save)(void);
+
+ /**
+ * erase() - Erase the environment on storage
+ *
+ * This method is optional and required for 'eraseenv' to work.
+ *
+ * @return 0 if OK, -ve on error
+ */
+ int (*erase)(void);
+
+ /**
+ * init() - Set up the initial pre-relocation environment
+ *
+ * This method is optional.
+ *
+ * @return 0 if OK, -ENOENT if no initial environment could be found,
+ * other -ve on error
+ */
+ int (*init)(void);
+};
+
+/* Declare a new environment location driver */
+#define U_BOOT_ENV_LOCATION(__name) \
+ ll_entry_declare(struct env_driver, __name, env_driver)
+
+/* Declare the name of a location */
+#ifdef CONFIG_CMD_SAVEENV
+#define ENV_NAME(_name) .name = _name,
+#else
+#define ENV_NAME(_name)
+#endif
+
+#ifdef CONFIG_CMD_SAVEENV
+#define env_save_ptr(x) x
+#else
+#define env_save_ptr(x) NULL
+#endif
+
+extern struct hsearch_data env_htab;
+
+#endif /* DO_DEPS_ONLY */
+
+#endif /* _ENV_INTERNAL_H_ */
+++ /dev/null
-/* SPDX-License-Identifier: GPL-2.0+ */
-/*
- * (C) Copyright 2002
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- */
-
-#ifndef _ENVIRONMENT_H_
-#define _ENVIRONMENT_H_
-
-#include <linux/kconfig.h>
-
-/**************************************************************************
- *
- * The "environment" is stored as a list of '\0' terminated
- * "name=value" strings. The end of the list is marked by a double
- * '\0'. New entries are always added at the end. Deleting an entry
- * shifts the remaining entries to the front. Replacing an entry is a
- * combination of deleting the old value and adding the new one.
- *
- * The environment is preceded by a 32 bit CRC over the data part.
- *
- *************************************************************************/
-
-#if defined(CONFIG_ENV_IS_IN_FLASH)
-# ifndef CONFIG_ENV_ADDR
-# define CONFIG_ENV_ADDR (CONFIG_SYS_FLASH_BASE + CONFIG_ENV_OFFSET)
-# endif
-# ifndef CONFIG_ENV_OFFSET
-# define CONFIG_ENV_OFFSET (CONFIG_ENV_ADDR - CONFIG_SYS_FLASH_BASE)
-# endif
-# if !defined(CONFIG_ENV_ADDR_REDUND) && defined(CONFIG_ENV_OFFSET_REDUND)
-# define CONFIG_ENV_ADDR_REDUND \
- (CONFIG_SYS_FLASH_BASE + CONFIG_ENV_OFFSET_REDUND)
-# endif
-# if defined(CONFIG_ENV_SECT_SIZE) || defined(CONFIG_ENV_SIZE)
-# ifndef CONFIG_ENV_SECT_SIZE
-# define CONFIG_ENV_SECT_SIZE CONFIG_ENV_SIZE
-# endif
-# ifndef CONFIG_ENV_SIZE
-# define CONFIG_ENV_SIZE CONFIG_ENV_SECT_SIZE
-# endif
-# else
-# error "Both CONFIG_ENV_SECT_SIZE and CONFIG_ENV_SIZE undefined"
-# endif
-# if defined(CONFIG_ENV_ADDR_REDUND) && !defined(CONFIG_ENV_SIZE_REDUND)
-# define CONFIG_ENV_SIZE_REDUND CONFIG_ENV_SIZE
-# endif
-# if (CONFIG_ENV_ADDR >= CONFIG_SYS_MONITOR_BASE) && \
- (CONFIG_ENV_ADDR + CONFIG_ENV_SIZE) <= \
- (CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN)
-# define ENV_IS_EMBEDDED
-# endif
-# if defined(CONFIG_ENV_ADDR_REDUND) || defined(CONFIG_ENV_OFFSET_REDUND)
-# define CONFIG_SYS_REDUNDAND_ENVIRONMENT
-# endif
-# ifdef CONFIG_ENV_IS_EMBEDDED
-# error "do not define CONFIG_ENV_IS_EMBEDDED in your board config"
-# error "it is calculated automatically for you"
-# endif
-#endif /* CONFIG_ENV_IS_IN_FLASH */
-
-#if defined(CONFIG_ENV_IS_IN_MMC)
-# ifdef CONFIG_ENV_OFFSET_REDUND
-# define CONFIG_SYS_REDUNDAND_ENVIRONMENT
-# endif
-#endif
-
-#if defined(CONFIG_ENV_IS_IN_NAND)
-# if defined(CONFIG_ENV_OFFSET_OOB)
-# ifdef CONFIG_ENV_OFFSET_REDUND
-# error "CONFIG_ENV_OFFSET_REDUND is not supported when CONFIG_ENV_OFFSET_OOB"
-# error "is set"
-# endif
-extern unsigned long nand_env_oob_offset;
-# define CONFIG_ENV_OFFSET nand_env_oob_offset
-# else
-# ifndef CONFIG_ENV_OFFSET
-# error "Need to define CONFIG_ENV_OFFSET when using CONFIG_ENV_IS_IN_NAND"
-# endif
-# ifdef CONFIG_ENV_OFFSET_REDUND
-# define CONFIG_SYS_REDUNDAND_ENVIRONMENT
-# endif
-# endif /* CONFIG_ENV_OFFSET_OOB */
-# ifndef CONFIG_ENV_SIZE
-# error "Need to define CONFIG_ENV_SIZE when using CONFIG_ENV_IS_IN_NAND"
-# endif
-#endif /* CONFIG_ENV_IS_IN_NAND */
-
-#if defined(CONFIG_ENV_IS_IN_UBI)
-# ifndef CONFIG_ENV_UBI_PART
-# error "Need to define CONFIG_ENV_UBI_PART when using CONFIG_ENV_IS_IN_UBI"
-# endif
-# ifndef CONFIG_ENV_UBI_VOLUME
-# error "Need to define CONFIG_ENV_UBI_VOLUME when using CONFIG_ENV_IS_IN_UBI"
-# endif
-# if defined(CONFIG_ENV_UBI_VOLUME_REDUND)
-# define CONFIG_SYS_REDUNDAND_ENVIRONMENT
-# endif
-# ifndef CONFIG_ENV_SIZE
-# error "Need to define CONFIG_ENV_SIZE when using CONFIG_ENV_IS_IN_UBI"
-# endif
-# ifndef CONFIG_CMD_UBI
-# error "Need to define CONFIG_CMD_UBI when using CONFIG_ENV_IS_IN_UBI"
-# endif
-#endif /* CONFIG_ENV_IS_IN_UBI */
-
-/* Embedded env is only supported for some flash types */
-#ifdef CONFIG_ENV_IS_EMBEDDED
-# if !defined(CONFIG_ENV_IS_IN_FLASH) && \
- !defined(CONFIG_ENV_IS_IN_NAND) && \
- !defined(CONFIG_ENV_IS_IN_ONENAND) && \
- !defined(CONFIG_ENV_IS_IN_SPI_FLASH)
-# error "CONFIG_ENV_IS_EMBEDDED not supported for your flash type"
-# endif
-#endif
-
-/*
- * For the flash types where embedded env is supported, but it cannot be
- * calculated automatically (i.e. NAND), take the board opt-in.
- */
-#if defined(CONFIG_ENV_IS_EMBEDDED) && !defined(ENV_IS_EMBEDDED)
-# define ENV_IS_EMBEDDED
-#endif
-
-/* The build system likes to know if the env is embedded */
-#ifdef DO_DEPS_ONLY
-# ifdef ENV_IS_EMBEDDED
-# ifndef CONFIG_ENV_IS_EMBEDDED
-# define CONFIG_ENV_IS_EMBEDDED
-# endif
-# endif
-#endif
-
-#include "compiler.h"
-
-#ifdef CONFIG_SYS_REDUNDAND_ENVIRONMENT
-# define ENV_HEADER_SIZE (sizeof(uint32_t) + 1)
-#else
-# define ENV_HEADER_SIZE (sizeof(uint32_t))
-#endif
-
-#define ENV_SIZE (CONFIG_ENV_SIZE - ENV_HEADER_SIZE)
-
-/*
- * If the environment is in RAM, allocate extra space for it in the malloc
- * region.
- */
-#if defined(CONFIG_ENV_IS_EMBEDDED)
-#define TOTAL_MALLOC_LEN CONFIG_SYS_MALLOC_LEN
-#elif (CONFIG_ENV_ADDR + CONFIG_ENV_SIZE < CONFIG_SYS_MONITOR_BASE) || \
- (CONFIG_ENV_ADDR >= CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN) || \
- defined(CONFIG_ENV_IS_IN_NVRAM)
-#define TOTAL_MALLOC_LEN (CONFIG_SYS_MALLOC_LEN + CONFIG_ENV_SIZE)
-#else
-#define TOTAL_MALLOC_LEN CONFIG_SYS_MALLOC_LEN
-#endif
-
-typedef struct environment_s {
- uint32_t crc; /* CRC32 over data bytes */
-#ifdef CONFIG_SYS_REDUNDAND_ENVIRONMENT
- unsigned char flags; /* active/obsolete flags ENVF_REDUND_ */
-#endif
- unsigned char data[ENV_SIZE]; /* Environment data */
-} env_t;
-
-#ifdef ENV_IS_EMBEDDED
-extern env_t embedded_environment;
-#endif /* ENV_IS_EMBEDDED */
-
-extern const unsigned char default_environment[];
-
-#ifndef DO_DEPS_ONLY
-
-#include <env_attr.h>
-#include <env_callback.h>
-#include <env_flags.h>
-#include <search.h>
-
-enum env_location {
- ENVL_UNKNOWN,
- ENVL_EEPROM,
- ENVL_EXT4,
- ENVL_FAT,
- ENVL_FLASH,
- ENVL_MMC,
- ENVL_NAND,
- ENVL_NVRAM,
- ENVL_ONENAND,
- ENVL_REMOTE,
- ENVL_SPI_FLASH,
- ENVL_UBI,
- ENVL_NOWHERE,
-
- ENVL_COUNT,
-};
-
-/* value for the various operations we want to perform on the env */
-enum env_operation {
- ENVOP_GET_CHAR, /* we want to call the get_char function */
- ENVOP_INIT, /* we want to call the init function */
- ENVOP_LOAD, /* we want to call the load function */
- ENVOP_SAVE, /* we want to call the save function */
- ENVOP_ERASE, /* we want to call the erase function */
-};
-
-struct env_driver {
- const char *name;
- enum env_location location;
-
- /**
- * load() - Load the environment from storage
- *
- * This method is optional. If not provided, no environment will be
- * loaded.
- *
- * @return 0 if OK, -ve on error
- */
- int (*load)(void);
-
- /**
- * save() - Save the environment to storage
- *
- * This method is required for 'saveenv' to work.
- *
- * @return 0 if OK, -ve on error
- */
- int (*save)(void);
-
- /**
- * erase() - Erase the environment on storage
- *
- * This method is optional and required for 'eraseenv' to work.
- *
- * @return 0 if OK, -ve on error
- */
- int (*erase)(void);
-
- /**
- * init() - Set up the initial pre-relocation environment
- *
- * This method is optional.
- *
- * @return 0 if OK, -ENOENT if no initial environment could be found,
- * other -ve on error
- */
- int (*init)(void);
-};
-
-/* Declare a new environment location driver */
-#define U_BOOT_ENV_LOCATION(__name) \
- ll_entry_declare(struct env_driver, __name, env_driver)
-
-/* Declare the name of a location */
-#ifdef CONFIG_CMD_SAVEENV
-#define ENV_NAME(_name) .name = _name,
-#else
-#define ENV_NAME(_name)
-#endif
-
-#ifdef CONFIG_CMD_SAVEENV
-#define env_save_ptr(x) x
-#else
-#define env_save_ptr(x) NULL
-#endif
-
-extern struct hsearch_data env_htab;
-
-#endif /* DO_DEPS_ONLY */
-
-#endif /* _ENVIRONMENT_H_ */
#include <charset.h>
#include <efi_loader.h>
#include <hexdump.h>
-#include <environment.h>
+#include <env_internal.h>
#include <search.h>
#include <uuid.h>
#include <command.h>
#include <console.h>
#include <env.h>
-#include <environment.h>
+#include <env_internal.h>
#include <errno.h>
#include <net.h>
#include <net/fastboot.h>
#ifdef CONFIG_BUILD_ENVCRC
-# include <environment.h>
+# include <env_internal.h>
extern unsigned int env_size;
extern env_t embedded_environment;
#endif /* CONFIG_BUILD_ENVCRC */