[PATCH] xilinx: zynqmp: Add support for saving variables
Michal Simek
monstr at monstr.eu
Wed Sep 23 14:24:44 CEST 2020
čt 30. 7. 2020 v 14:42 odesílatel Michal Simek <michal.simek at xilinx.com> napsal:
>
> Enabling saving variables to MMC(FAT), NAND, SPI based on primary bootmode.
> Maybe that logic can be tuned for more complicated use cases and better
> tested for different bootmodes.
>
> Tested on zcu104 to SD(FAT) and JTAG(NOWHERE).
>
> Signed-off-by: Michal Simek <michal.simek at xilinx.com>
> ---
>
> SPI is not tested and tuning is required.
> ---
> board/xilinx/zynqmp/zynqmp.c | 35 ++++++++++++++++++++++++++++
> configs/xilinx_zynqmp_virt_defconfig | 6 +++++
> 2 files changed, 41 insertions(+)
>
> diff --git a/board/xilinx/zynqmp/zynqmp.c b/board/xilinx/zynqmp/zynqmp.c
> index 8a4df6fc1ab6..b11abd0e7d04 100644
> --- a/board/xilinx/zynqmp/zynqmp.c
> +++ b/board/xilinx/zynqmp/zynqmp.c
> @@ -9,6 +9,7 @@
> #include <cpu_func.h>
> #include <debug_uart.h>
> #include <env.h>
> +#include <env_internal.h>
> #include <init.h>
> #include <log.h>
> #include <net.h>
> @@ -732,3 +733,37 @@ int checkboard(void)
> puts("Board: Xilinx ZynqMP\n");
> return 0;
> }
> +
> +enum env_location env_get_location(enum env_operation op, int prio)
> +{
> + u32 bootmode = zynqmp_get_bootmode();
> +
> + if (prio)
> + return ENVL_UNKNOWN;
> +
> + switch (bootmode) {
> + case EMMC_MODE:
> + case SD_MODE:
> + case SD1_LSHFT_MODE:
> + case SD_MODE1:
> + if (IS_ENABLED(CONFIG_ENV_IS_IN_FAT))
> + return ENVL_FAT;
> + if (IS_ENABLED(CONFIG_ENV_IS_IN_EXT4))
> + return ENVL_EXT4;
> + return ENVL_UNKNOWN;
> + case NAND_MODE:
> + if (IS_ENABLED(CONFIG_ENV_IS_IN_NAND))
> + return ENVL_NAND;
> + if (IS_ENABLED(CONFIG_ENV_IS_IN_UBI))
> + return ENVL_UBI;
> + return ENVL_UNKNOWN;
> + case QSPI_MODE_24BIT:
> + case QSPI_MODE_32BIT:
> + if (IS_ENABLED(CONFIG_ENV_IS_IN_SPI_FLASH))
> + return ENVL_SPI_FLASH;
> + return ENVL_UNKNOWN;
> + case JTAG_MODE:
> + default:
> + return ENVL_NOWHERE;
> + }
> +}
> diff --git a/configs/xilinx_zynqmp_virt_defconfig b/configs/xilinx_zynqmp_virt_defconfig
> index c84bf2008a19..53cc0c3bf475 100644
> --- a/configs/xilinx_zynqmp_virt_defconfig
> +++ b/configs/xilinx_zynqmp_virt_defconfig
> @@ -57,6 +57,12 @@ CONFIG_CMD_UBI=y
> CONFIG_SPL_OF_CONTROL=y
> CONFIG_DEFAULT_DEVICE_TREE="zynqmp-zcu100-revC"
> CONFIG_OF_LIST="avnet-ultra96-rev1 zynqmp-a2197-revA zynqmp-e-a2197-00-revA zynqmp-g-a2197-00-revA zynqmp-m-a2197-01-revA zynqmp-m-a2197-02-revA zynqmp-m-a2197-03-revA zynqmp-p-a2197-00-revA zynqmp-zc1232-revA zynqmp-zc1254-revA zynqmp-zc1751-xm015-dc1 zynqmp-zc1751-xm016-dc2 zynqmp-zc1751-xm017-dc3 zynqmp-zc1751-xm018-dc4 zynqmp-zc1751-xm019-dc5 zynqmp-zcu100-revC zynqmp-zcu102-rev1.1 zynqmp-zcu102-rev1.0 zynqmp-zcu102-revA zynqmp-zcu102-revB zynqmp-zcu104-revA zynqmp-zcu104-revC zynqmp-zcu106-revA zynqmp-zcu111-revA zynqmp-zcu1275-revA zynqmp-zcu1275-revB zynqmp-zcu1285-revA zynqmp-zcu208-revA zynqmp-zcu216-revA zynqmp-topic-miamimp-xilinx-xdp-v1r1"
> +CONFIG_ENV_IS_NOWHERE=y
> +CONFIG_ENV_IS_IN_FAT=y
> +CONFIG_ENV_IS_IN_NAND=y
> +CONFIG_ENV_IS_IN_SPI_FLASH=y
> +CONFIG_ENV_EXT4_INTERFACE="mmc"
> +CONFIG_ENV_EXT4_DEVICE_AND_PART="1:auto"
> CONFIG_SYS_RELOC_GD_ENV_ADDR=y
> CONFIG_NET_RANDOM_ETHADDR=y
> CONFIG_NETCONSOLE=y
> --
> 2.27.0
>
Applied with defconfig sync up.
M
--
Michal Simek, Ing. (M.Eng), OpenPGP -> KeyID: FE3D1F91
w: www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel - Xilinx Microblaze
Maintainer of Linux kernel - Xilinx Zynq ARM and ZynqMP ARM64 SoCs
U-Boot custodian - Xilinx Microblaze/Zynq/ZynqMP/Versal SoCs
More information about the U-Boot
mailing list